view dmd/expression/Ushr.d @ 192:eb38fdcb3e62 default tip

updated to compile with dmd2.062
author korDen
date Sat, 02 Mar 2013 01:25:52 -0800
parents e28b18c23469
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;
}