view dmd/expression/Ushr.d @ 114:e28b18c23469

added a module dmd.common for commonly used stuff it currently holds code for consistency checking of predefined versions also added a VisualD project file
author Trass3r
date Wed, 01 Sep 2010 18:21:58 +0200
parents 10317f0c89a5
children
line wrap: on
line source

module dmd.expression.Ushr;

import dmd.common;
import dmd.Type;
import dmd.Expression;
import dmd.Loc;
import dmd.TY;
import dmd.IntegerExp;

Expression Ushr(Type type, Expression e1, Expression e2)
{   
	Expression e;
    Loc loc = e1.loc;
    uint count;
    ulong value;

    value = e1.toInteger();
    count = cast(uint)e2.toInteger();

	switch (e1.type.toBasetype().ty)
    {
		case Tint8:
		case Tuns8:
			assert(0);		// no way to trigger this
			value = (value & 0xFF) >> count;
			break;

		case Tint16:
		case Tuns16:
			assert(0);		// no way to trigger this
			value = (value & 0xFFFF) >> count;
			break;

		case Tint32:
		case Tuns32:
			value = (value & 0xFFFFFFFF) >> count;
			break;

		case Tint64:
		case Tuns64:
			value = cast(ulong)(value) >> count;
			break;

		default:
			assert(0);
    }

    e = new IntegerExp(loc, value, type);

    return e;
}