예제 #1
0
        public void VpSliceSeq()
        {
            var t1 = m.Temp(PrimitiveType.Word16, "t1");
            var t2 = m.Temp(PrimitiveType.Word32, "t2");
            var t3 = m.Temp(PrimitiveType.Word16, "t3");

            m.Assign(t2, m.Seq(t1, m.Mem16(m.Word32(0x00123400))));
            m.Assign(t3, m.Slice(PrimitiveType.Word16, t2, 16));

            RunValuePropagator();

            var sExp =
                #region Expected
                @"t1: orig: t1
    uses: t2 = SEQ(t1, Mem3[0x123400<32>:word16])
          t3 = t1
t2: orig: t2
    def:  t2 = SEQ(t1, Mem3[0x123400<32>:word16])
t3: orig: t3
    def:  t3 = t1
Mem3: orig: Mem0
    uses: t2 = SEQ(t1, Mem3[0x123400<32>:word16])
// SsaProcedureBuilder
// Return size: 0
define SsaProcedureBuilder
SsaProcedureBuilder_entry:
	// succ:  l1
l1:
	t2 = SEQ(t1, Mem3[0x123400<32>:word16])
	t3 = t1
SsaProcedureBuilder_exit:
";

            #endregion
            AssertStringsEqual(sExp, m.Ssa);
        }