Beispiel #1
0
        public static ShaderIrNode ExtendTo32(ShaderIrNode node, bool signed, ShaderIrNode size)
        {
            ShaderIrOperImm wordSize = new ShaderIrOperImm(32);

            ShaderIrOp shift = new ShaderIrOp(ShaderIrInst.Sub, wordSize, size);

            ShaderIrInst rightShift = signed
                ? ShaderIrInst.Asr
                : ShaderIrInst.Lsr;

            node = new ShaderIrOp(ShaderIrInst.Lsl, node, shift);
            node = new ShaderIrOp(rightShift, node, shift);

            return(node);
        }
Beispiel #2
0
        public static ShaderIrNode ExtendTo32(ShaderIrNode Node, bool Signed, ShaderIrNode Size)
        {
            ShaderIrOperImm WordSize = new ShaderIrOperImm(32);

            ShaderIrOp Shift = new ShaderIrOp(ShaderIrInst.Sub, WordSize, Size);

            ShaderIrInst RightShift = Signed
                ? ShaderIrInst.Asr
                : ShaderIrInst.Lsr;

            Node = new ShaderIrOp(ShaderIrInst.Lsl, Node, Shift);
            Node = new ShaderIrOp(RightShift, Node, Shift);

            return(Node);
        }