| OLD | NEW |
| 1 //===- subzero/unittest/AssemblerX8664/GPRArith.cpp -----------------------===// | 1 //===- subzero/unittest/AssemblerX8664/GPRArith.cpp -----------------------===// |
| 2 // | 2 // |
| 3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 #include "AssemblerX8664/TestUtil.h" | 9 #include "AssemblerX8664/TestUtil.h" |
| 10 | 10 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 do { \ | 34 do { \ |
| 35 static constexpr char TestString[] = \ | 35 static constexpr char TestString[] = \ |
| 36 "(" #C ", " #Dest ", " #IsTrue ", " #Src0 ", " #Value0 ", " #Src1 \ | 36 "(" #C ", " #Dest ", " #IsTrue ", " #Src0 ", " #Value0 ", " #Src1 \ |
| 37 ", " #Value1 ")"; \ | 37 ", " #Value1 ")"; \ |
| 38 const uint32_t T0 = allocateDword(); \ | 38 const uint32_t T0 = allocateDword(); \ |
| 39 constexpr uint32_t V0 = 0xF00F00; \ | 39 constexpr uint32_t V0 = 0xF00F00; \ |
| 40 __ mov(IceType_i32, Encoded_GPR_##Src0(), Immediate(Value0)); \ | 40 __ mov(IceType_i32, Encoded_GPR_##Src0(), Immediate(Value0)); \ |
| 41 __ mov(IceType_i32, Encoded_GPR_##Src1(), Immediate(Value1)); \ | 41 __ mov(IceType_i32, Encoded_GPR_##Src1(), Immediate(Value1)); \ |
| 42 __ cmp(IceType_i32, Encoded_GPR_##Src0(), Encoded_GPR_##Src1()); \ | 42 __ cmp(IceType_i32, Encoded_GPR_##Src0(), Encoded_GPR_##Src1()); \ |
| 43 __ mov(IceType_i32, Encoded_GPR_##Dest(), Immediate(0)); \ | 43 __ mov(IceType_i32, Encoded_GPR_##Dest(), Immediate(0)); \ |
| 44 __ setcc(Cond::Br_##C, RegX8664::getEncodedByteReg(Encoded_GPR_##Dest())); \ | 44 __ setcc(Cond::Br_##C, RegX8664::getEncodedGPR(Encoded_GPR_##Dest())); \ |
| 45 __ setcc(Cond::Br_##C, dwordAddress(T0)); \ | 45 __ setcc(Cond::Br_##C, dwordAddress(T0)); \ |
| 46 \ | 46 \ |
| 47 AssembledTest test = assemble(); \ | 47 AssembledTest test = assemble(); \ |
| 48 test.setDwordTo(T0, V0); \ | 48 test.setDwordTo(T0, V0); \ |
| 49 \ | 49 \ |
| 50 test.run(); \ | 50 test.run(); \ |
| 51 \ | 51 \ |
| 52 ASSERT_EQ(IsTrue, test.Dest()) << TestString; \ | 52 ASSERT_EQ(IsTrue, test.Dest()) << TestString; \ |
| 53 ASSERT_EQ((0xF00F00 | IsTrue), test.contentsOfDword(T0)) << TestString; \ | 53 ASSERT_EQ((0xF00F00 | IsTrue), test.contentsOfDword(T0)) << TestString; \ |
| 54 reset(); \ | 54 reset(); \ |
| (...skipping 1693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1748 TEST_F(AssemblerX8664Test, Bt) { | 1748 TEST_F(AssemblerX8664Test, Bt) { |
| 1749 #define TestImpl(Dst, Value0, Src, Value1) \ | 1749 #define TestImpl(Dst, Value0, Src, Value1) \ |
| 1750 do { \ | 1750 do { \ |
| 1751 static constexpr char TestString[] = \ | 1751 static constexpr char TestString[] = \ |
| 1752 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ")"; \ | 1752 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ")"; \ |
| 1753 static constexpr uint32_t Expected = ((Value0) & (1u << (Value1))) != 0; \ | 1753 static constexpr uint32_t Expected = ((Value0) & (1u << (Value1))) != 0; \ |
| 1754 \ | 1754 \ |
| 1755 __ mov(IceType_i32, Encoded_GPR_##Dst(), Immediate(Value0)); \ | 1755 __ mov(IceType_i32, Encoded_GPR_##Dst(), Immediate(Value0)); \ |
| 1756 __ mov(IceType_i32, Encoded_GPR_##Src(), Immediate(Value1)); \ | 1756 __ mov(IceType_i32, Encoded_GPR_##Src(), Immediate(Value1)); \ |
| 1757 __ bt(Encoded_GPR_##Dst(), Encoded_GPR_##Src()); \ | 1757 __ bt(Encoded_GPR_##Dst(), Encoded_GPR_##Src()); \ |
| 1758 __ setcc(Cond::Br_b, ByteRegister::Encoded_Reg_al); \ | 1758 __ setcc(Cond::Br_b, GPRRegister::Encoded_Reg_al); \ |
| 1759 __ And(IceType_i32, Encoded_GPR_eax(), Immediate(0xFFu)); \ | 1759 __ And(IceType_i32, Encoded_GPR_eax(), Immediate(0xFFu)); \ |
| 1760 \ | 1760 \ |
| 1761 AssembledTest test = assemble(); \ | 1761 AssembledTest test = assemble(); \ |
| 1762 test.run(); \ | 1762 test.run(); \ |
| 1763 \ | 1763 \ |
| 1764 ASSERT_EQ(Expected, test.eax()) << TestString; \ | 1764 ASSERT_EQ(Expected, test.eax()) << TestString; \ |
| 1765 reset(); \ | 1765 reset(); \ |
| 1766 } while (0) | 1766 } while (0) |
| 1767 | 1767 |
| 1768 TestImpl(r1, 0x08000000, r2, 27u); | 1768 TestImpl(r1, 0x08000000, r2, 27u); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1896 #undef TestImplValue | 1896 #undef TestImplValue |
| 1897 #undef TestImplSize | 1897 #undef TestImplSize |
| 1898 #undef TestImplRegAddr | 1898 #undef TestImplRegAddr |
| 1899 #undef TestImplRegReg | 1899 #undef TestImplRegReg |
| 1900 } | 1900 } |
| 1901 | 1901 |
| 1902 } // end of anonymous namespace | 1902 } // end of anonymous namespace |
| 1903 } // end of namespace Test | 1903 } // end of namespace Test |
| 1904 } // end of namespace X8664 | 1904 } // end of namespace X8664 |
| 1905 } // end of namespace Ice | 1905 } // end of namespace Ice |
| OLD | NEW |