• Home
  • Raw
  • Download

Lines Matching refs:Dst

17 #define TestArithSSXmmXmm(FloatSize, Src, Value0, Dst, Value1, Inst, Op)       \  in TEST_F()  argument
22 "(" #FloatSize ", " #Src ", " #Value0 ", " #Dst ", " #Value1 \ in TEST_F()
31 __ movss(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
33 __ Inst(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
46 ASSERT_DOUBLE_EQ(V0 Op V1, test.Dst<Type>()) << TestString; \ in TEST_F()
50 #define TestArithSSXmmAddr(FloatSize, Value0, Dst, Value1, Inst, Op) \ in TEST_F() argument
55 "(" #FloatSize ", Addr, " #Value0 ", " #Dst ", " #Value1 ", " #Inst \ in TEST_F()
64 __ movss(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
65 __ Inst(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
78 ASSERT_DOUBLE_EQ(V0 Op V1, test.Dst<Type>()) << TestString; \ in TEST_F()
124 #define TestPArithXmmXmm(Dst, Value0, Src, Value1, Inst, Op, Type, Size) \ in TEST_F() argument
127 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Inst ", " #Op \ in TEST_F()
135 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
137 __ Inst(IceType_i##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
144 ASSERT_EQ(packedAs<Type##Size##_t>(V0) Op V1, test.Dst<Dqword>()) \ in TEST_F()
149 #define TestPArithXmmAddr(Dst, Value0, Value1, Inst, Op, Type, Size) \ in TEST_F() argument
152 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Inst ", " #Op \ in TEST_F()
160 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
161 __ Inst(IceType_i##Size, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
168 ASSERT_EQ(packedAs<Type##Size##_t>(V0) Op V1, test.Dst<Dqword>()) \ in TEST_F()
173 #define TestPArithXmmImm(Dst, Value0, Imm, Inst, Op, Type, Size) \ in TEST_F() argument
176 "(" #Dst ", " #Value0 ", " #Imm ", " #Inst ", " #Op ", " #Type \ in TEST_F()
181 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
182 __ Inst(IceType_i##Size, Encoded_Xmm_##Dst(), Immediate(Imm)); \ in TEST_F()
188 ASSERT_EQ(packedAs<Type##Size##_t>(V0) Op Imm, test.Dst<Dqword>()) \ in TEST_F()
193 #define TestPAndnXmmXmm(Dst, Value0, Src, Value1, Type, Size) \ in TEST_F() argument
196 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", pandn, " #Type \ in TEST_F()
204 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
206 __ pandn(IceType_i##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
213 ASSERT_EQ(~(packedAs<Type##Size##_t>(V0)) & V1, test.Dst<Dqword>()) \ in TEST_F()
218 #define TestPAndnXmmAddr(Dst, Value0, Value1, Type, Size) \ in TEST_F() argument
221 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", pandn, " #Type ", " #Size \ in TEST_F()
229 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
230 __ pandn(IceType_i##Size, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
237 ASSERT_EQ((~packedAs<Type##Size##_t>(V0)) & V1, test.Dst<Dqword>()) \ in TEST_F()
242 #define TestPArithSize(Dst, Src, Size) \ in TEST_F() argument
247 Dst, \ in TEST_F()
250 TestPArithXmmAddr(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
253 TestPArithXmmImm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
257 Dst, \ in TEST_F()
260 TestPArithXmmAddr(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
263 TestPArithXmmImm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
267 Dst, \ in TEST_F()
270 TestPArithXmmAddr(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
273 TestPArithXmmImm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
277 TestPArithXmmXmm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
283 Dst, \ in TEST_F()
288 TestPArithXmmXmm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
294 Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
300 TestPArithXmmXmm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
306 Dst, \ in TEST_F()
310 TestPArithXmmXmm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
316 Dst, \ in TEST_F()
320 TestPArithXmmXmm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
326 Dst, \ in TEST_F()
331 TestPAndnXmmXmm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
337 Dst, \ in TEST_F()
342 TestPArithXmmXmm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
348 Dst, \ in TEST_F()
352 TestPArithXmmXmm(Dst, (uint64_t(0x8040201008040201ull), \ in TEST_F()
358 Dst, \ in TEST_F()
364 #define TestPArith(Src, Dst) \ in TEST_F() argument
366 TestPArithSize(Src, Dst, 8); \ in TEST_F()
367 TestPArithSize(Src, Dst, 16); \ in TEST_F()
368 TestPArithSize(Src, Dst, 32); \ in TEST_F()
398 #define TestArithPSXmmXmm(FloatSize, Dst, Value0, Src, Value1, Inst, Op, Type) \ in TEST_F() argument
401 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Inst ", " #Op \ in TEST_F()
408 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
410 __ Inst(IceType_f32, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
417 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
422 #define TestArithPSXmmXmmUntyped(Dst, Value0, Src, Value1, Inst, Op, Type) \ in TEST_F() argument
425 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Inst ", " #Op \ in TEST_F()
432 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
434 __ Inst(Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
441 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
446 #define TestArithPSXmmAddrUntyped(Dst, Value0, Value1, Inst, Op, Type) \ in TEST_F() argument
449 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Inst ", " #Op \ in TEST_F()
456 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
457 __ Inst(Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
464 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
469 #define TestMinMaxPS(FloatSize, Dst, Value0, Src, Value1, Inst, Type) \ in TEST_F() argument
472 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Inst ", " #Type \ in TEST_F()
479 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
481 __ Inst(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
488 ASSERT_EQ(packedAs<Type>(V0).Inst(V1), test.Dst<Dqword>()) << TestString; \ in TEST_F()
493 #define TestArithPSXmmAddr(FloatSize, Dst, Value0, Value1, Inst, Op, Type) \ in TEST_F() argument
496 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Inst ", " #Op \ in TEST_F()
503 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
504 __ Inst(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
511 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
516 #define TestArithPS(Dst, Src) \ in TEST_F() argument
518 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
520 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
522 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
524 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
526 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
528 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
530 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
532 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
534 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
536 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
538 TestArithPSXmmXmm(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), andps, &, \ in TEST_F()
540 TestArithPSXmmAddr(64, Dst, (1.0, -1000.0), (0.55, 1.21), andps, &, \ in TEST_F()
542 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
544 TestArithPSXmmXmm(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), orps, |, \ in TEST_F()
546 TestMinMaxPS(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
548 TestMinMaxPS(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
550 TestMinMaxPS(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), minps, double); \ in TEST_F()
551 TestMinMaxPS(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), maxps, double); \ in TEST_F()
552 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
554 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
556 TestArithPSXmmXmm(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), xorps, ^, \ in TEST_F()
558 TestArithPSXmmAddr(64, Dst, (1.0, -1000.0), (0.55, 1.21), xorps, ^, \ in TEST_F()
590 #define TestBlendingXmmXmm(Dst, Value0, Src, Value1, M /*ask*/, Inst, Type) \ in TEST_F() argument
593 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #M ", " #Inst \ in TEST_F()
603 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
605 __ Inst(IceType_##Type, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
613 ASSERT_EQ(packedAs<Type>(V0).blendWith(V1, MaskValue), test.Dst<Dqword>()) \ in TEST_F()
618 #define TestBlendingXmmAddr(Dst, Value0, Value1, M /*ask*/, Inst, Type) \ in TEST_F() argument
621 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #M ", " #Inst ", " #Type \ in TEST_F()
631 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
632 __ Inst(IceType_##Type, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
640 ASSERT_EQ(packedAs<Type>(V0).blendWith(V1, MaskValue), test.Dst<Dqword>()) \ in TEST_F()
645 #define TestBlending(Src, Dst) \ in TEST_F() argument
648 Dst, (1.0, 2.0, 1.0, 2.0), Src, (-1.0, -2.0, -1.0, -2.0), \ in TEST_F()
652 Dst, (1.0, 2.0, 1.0, 2.0), (-1.0, -2.0, -1.0, -2.0), \ in TEST_F()
656 Dst, \ in TEST_F()
663 Dst, \ in TEST_F()
693 #define TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, C, Op, Type) \ in TEST_F() argument
696 "(" #Src ", " #Dst ", " #C ", " #Op ")"; \ in TEST_F()
702 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
704 __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
712 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
717 #define TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, C, Op, Type) \ in TEST_F() argument
719 static constexpr char TestString[] = "(" #Dst ", Addr, " #C ", " #Op ")"; \ in TEST_F()
725 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
726 __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
734 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
739 #define TestCmppsOrdUnordXmmXmm(FloatSize, Dst, Value0, Src, Value1, C, Type) \ in TEST_F() argument
741 static constexpr char TestString[] = "(" #Src ", " #Dst ", " #C ")"; \ in TEST_F()
749 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
751 __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
759 ASSERT_EQ(packedAs<Type>(V0).C(V1), test.Dst<Dqword>()) << TestString; \ in TEST_F()
764 #define TestCmppsOrdUnordXmmAddr(FloatSize, Dst, Value0, Value1, C, Type) \ in TEST_F() argument
766 static constexpr char TestString[] = "(" #Dst ", " #C ")"; \ in TEST_F()
774 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
775 __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
783 ASSERT_EQ(packedAs<Type>(V0).C(V1), test.Dst<Dqword>()) << TestString; \ in TEST_F()
788 #define TestCmpps(FloatSize, Dst, Value0, Src, Value1, Type) \ in TEST_F() argument
790 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
791 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
792 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
793 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
794 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
795 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
796 TestCmppsOrdUnordXmmXmm(FloatSize, Dst, Value0, Src, Value1, unord, Type); \ in TEST_F()
797 TestCmppsOrdUnordXmmAddr(FloatSize, Dst, Value0, Value1, unord, Type); \ in TEST_F()
798 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
799 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
800 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
801 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
802 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
803 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
806 32, Dst, (1.0, 1.0, std::numeric_limits<float>::quiet_NaN(), \ in TEST_F()
812 32, Dst, (1.0, 1.0, std::numeric_limits<float>::quiet_NaN(), \ in TEST_F()
818 TestCmppsOrdUnordXmmXmm(64, Dst, \ in TEST_F()
823 TestCmppsOrdUnordXmmXmm(64, Dst, (1.0, 1.0), Src, \ in TEST_F()
827 64, Dst, (1.0, std::numeric_limits<double>::quiet_NaN()), \ in TEST_F()
832 64, Dst, (1.0, 1.0), \ in TEST_F()
869 #define TestImplSingle(Dst, Inst, Expect) \ in TEST_F() argument
871 static constexpr char TestString[] = "(" #Dst ", " #Inst ")"; \ in TEST_F()
875 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
876 __ Inst(Encoded_Xmm_##Dst()); \ in TEST_F()
881 ASSERT_EQ(Dqword Expect, test.Dst<Dqword>()) << TestString; \ in TEST_F()
885 #define TestImpl(Dst) \ in TEST_F() argument
887 TestImplSingle(Dst, sqrtps, (uint64_t(0x400000003F800000ull), \ in TEST_F()
889 TestImplSingle(Dst, rsqrtps, (uint64_t(0x3EFFF0003F7FF000ull), \ in TEST_F()
891 TestImplSingle(Dst, reciprocalps, (uint64_t(0x3E7FF0003F7FF000ull), \ in TEST_F()
894 TestImplSingle(Dst, sqrtpd, (uint64_t(0x4036A09E9365F5F3ull), \ in TEST_F()
934 #define TestImplSingle(Dst, Src, Inst) \ in TEST_F() argument
936 static constexpr char TestString[] = "(" #Dst ", " #Src ", " #Inst ")"; \ in TEST_F()
940 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
942 __ Inst(Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
949 ASSERT_EQ(Inst##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
953 #define TestImpl(Dst, Src) \ in TEST_F() argument
955 TestImplSingle(Dst, Src, unpcklps); \ in TEST_F()
956 TestImplSingle(Dst, Src, unpcklpd); \ in TEST_F()
957 TestImplSingle(Dst, Src, unpckhps); \ in TEST_F()
958 TestImplSingle(Dst, Src, unpckhpd); \ in TEST_F()
996 #define TestImplSingleXmmXmm(Dst, Src, Inst) \ in TEST_F() argument
998 static constexpr char TestString[] = "(" #Dst ", " #Src ", " #Inst ")"; \ in TEST_F()
1002 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1004 __ Inst(IceType_f32, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
1012 ASSERT_EQ(Inst##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1016 #define TestImplSingleXmmAddr(Dst, Inst) \ in TEST_F() argument
1018 static constexpr char TestString[] = "(" #Dst ", Addr, " #Inst ")"; \ in TEST_F()
1022 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1023 __ Inst(IceType_f32, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
1031 ASSERT_EQ(Inst##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1035 #define TestImplSingleXmmXmmUntyped(Dst, Src, Inst) \ in TEST_F() argument
1038 "(" #Dst ", " #Src ", " #Inst ", Untyped)"; \ in TEST_F()
1042 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1044 __ Inst(Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), Immediate(Inst##Imm)); \ in TEST_F()
1051 ASSERT_EQ(Inst##UntypedExpected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1055 #define TestImpl(Dst, Src) \ in TEST_F() argument
1057 TestImplSingleXmmXmm(Dst, Src, pshufd); \ in TEST_F()
1058 TestImplSingleXmmAddr(Dst, pshufd); \ in TEST_F()
1059 TestImplSingleXmmXmm(Dst, Src, shufps); \ in TEST_F()
1060 TestImplSingleXmmAddr(Dst, shufps); \ in TEST_F()
1108 #define TestImplXmmXmm(Dst, Src, Inst, Ty) \ in TEST_F() argument
1111 "(" #Dst ", " #Src ", " #Inst ", " #Ty ")"; \ in TEST_F()
1115 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1117 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, \ in TEST_F()
1125 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1129 #define TestImplXmmAddr(Dst, Inst, Ty) \ in TEST_F() argument
1132 "(" #Dst ", Addr, " #Inst ", " #Ty ")"; \ in TEST_F()
1136 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1137 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, dwordAddress(T1)); \ in TEST_F()
1144 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1148 #define TestImpl(Dst, Src) \ in TEST_F() argument
1150 TestImplXmmXmm(Dst, Src, punpckl, v4i32); \ in TEST_F()
1151 TestImplXmmAddr(Dst, punpckl, v4i32); \ in TEST_F()
1152 TestImplXmmXmm(Dst, Src, punpckl, v8i16); \ in TEST_F()
1153 TestImplXmmAddr(Dst, punpckl, v8i16); \ in TEST_F()
1154 TestImplXmmXmm(Dst, Src, punpckl, v16i8); \ in TEST_F()
1155 TestImplXmmAddr(Dst, punpckl, v16i8); \ in TEST_F()
1187 #define TestImplXmmXmm(Dst, Src, Inst, Ty) \ in TEST_F() argument
1190 "(" #Dst ", " #Src ", " #Inst ", " #Ty ")"; \ in TEST_F()
1194 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1196 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, \ in TEST_F()
1204 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1208 #define TestImplXmmAddr(Dst, Inst, Ty) \ in TEST_F() argument
1211 "(" #Dst ", Addr, " #Inst ", " #Ty ")"; \ in TEST_F()
1215 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1216 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, dwordAddress(T1)); \ in TEST_F()
1223 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1227 #define TestImpl(Dst, Src) \ in TEST_F() argument
1229 TestImplXmmXmm(Dst, Src, packss, v4i32); \ in TEST_F()
1230 TestImplXmmAddr(Dst, packss, v4i32); \ in TEST_F()
1231 TestImplXmmXmm(Dst, Src, packss, v8i16); \ in TEST_F()
1232 TestImplXmmAddr(Dst, packss, v8i16); \ in TEST_F()
1264 #define TestImplXmmXmm(Dst, Src, Inst, Ty) \ in TEST_F() argument
1267 "(" #Dst ", " #Src ", " #Inst ", " #Ty ")"; \ in TEST_F()
1271 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1273 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, \ in TEST_F()
1281 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1285 #define TestImplXmmAddr(Dst, Inst, Ty) \ in TEST_F() argument
1288 "(" #Dst ", Addr, " #Inst ", " #Ty ")"; \ in TEST_F()
1292 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1293 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, dwordAddress(T1)); \ in TEST_F()
1300 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1304 #define TestImpl(Dst, Src) \ in TEST_F() argument
1306 TestImplXmmXmm(Dst, Src, packus, v4i32); \ in TEST_F()
1307 TestImplXmmAddr(Dst, packus, v4i32); \ in TEST_F()
1308 TestImplXmmXmm(Dst, Src, packus, v8i16); \ in TEST_F()
1309 TestImplXmmAddr(Dst, packus, v8i16); \ in TEST_F()
1335 #define TestImplXmmXmm(Dst, Src, Inst) \ in TEST_F() argument
1337 static constexpr char TestString[] = "(" #Dst ", " #Src ", " #Inst ")"; \ in TEST_F()
1341 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1343 __ Inst(IceType_void, XmmRegister::Encoded_Reg_##Dst, \ in TEST_F()
1351 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1355 #define TestImplXmmAddr(Dst, Inst) \ in TEST_F() argument
1357 static constexpr char TestString[] = "(" #Dst ", Addr, " #Inst ")"; \ in TEST_F()
1361 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1362 __ Inst(IceType_void, XmmRegister::Encoded_Reg_##Dst, dwordAddress(T1)); \ in TEST_F()
1369 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1373 #define TestImpl(Dst, Src) \ in TEST_F() argument
1375 TestImplXmmXmm(Dst, Src, pshufb); \ in TEST_F()
1376 TestImplXmmAddr(Dst, pshufb); \ in TEST_F()
1442 #define TestImplPXmmXmm(Dst, Src, Inst, Size) \ in TEST_F() argument
1445 "(" #Dst ", " #Src ", cvt" #Inst ", f" #Size ")"; \ in TEST_F()
1449 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1451 __ cvt##Inst(IceType_f##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
1458 ASSERT_EQ(Inst##Size##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1462 #define TestImplSXmmReg(Dst, GPR, Inst, Size, IntType) \ in TEST_F() argument
1465 "(" #Dst ", " #GPR ", cvt" #Inst ", " #IntType ", f" #Size ")"; \ in TEST_F()
1468 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1470 __ cvt##Inst(IceType_f##Size, Encoded_Xmm_##Dst(), IntType, \ in TEST_F()
1477 ASSERT_EQ(Inst##Size##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1502 #define TestImplPXmmAddr(Dst, Inst, Size) \ in TEST_F() argument
1505 "(" #Dst ", Addr, cvt" #Inst ", f" #Size ")"; \ in TEST_F()
1509 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1510 __ cvt##Inst(IceType_f##Size, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
1517 ASSERT_EQ(Inst##Size##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1521 #define TestImplSXmmAddr(Dst, Inst, Size, IntType) \ in TEST_F() argument
1524 "(" #Dst ", Addr, cvt" #Inst ", f" #Size ", " #IntType ")"; \ in TEST_F()
1528 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1529 __ cvt##Inst(IceType_f##Size, Encoded_Xmm_##Dst(), IntType, \ in TEST_F()
1537 ASSERT_EQ(Inst##Size##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1561 #define TestImplSize(Dst, Src, GPR, Size) \ in TEST_F() argument
1563 TestImplPXmmXmm(Dst, Src, dq2ps, Size); \ in TEST_F()
1565 TestImplPXmmXmm(Dst, Src, tps2dq, Size); \ in TEST_F()
1567 TestImplSXmmReg(Dst, GPR, si2ss, Size, IceType_i32); \ in TEST_F()
1568 TestImplSXmmReg(Dst, GPR, si2ss, Size, IceType_i64); \ in TEST_F()
1569 TestImplSXmmAddr(Dst, si2ss, Size, IceType_i32); \ in TEST_F()
1570 TestImplSXmmAddr(Dst, si2ss, Size, IceType_i64); \ in TEST_F()
1575 TestImplPXmmXmm(Dst, Src, float2float, Size); \ in TEST_F()
1579 #define TestImpl(Dst, Src, GPR) \ in TEST_F() argument
1581 TestImplSize(Dst, Src, GPR, 32); \ in TEST_F()
1582 TestImplSize(Dst, Src, GPR, 64); \ in TEST_F()
1622 #define TestImplXmmXmm(Dst, Value0, Src, Value1, Size, CompType, BParity, \ in TEST_F() argument
1627 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Size ", " #CompType \ in TEST_F()
1636 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1639 __ ucomiss(IceType_f##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
1655 #define TestImplXmmAddr(Dst, Value0, Value1, Size, CompType, BParity, BOther) \ in TEST_F() argument
1659 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Size ", " #CompType \ in TEST_F()
1668 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1670 __ ucomiss(IceType_f##Size, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
1686 #define TestImplCond(Dst, Value0, Src, Value1, Size, CompType, BParity, \ in TEST_F() argument
1689 TestImplXmmXmm(Dst, Value0, Src, Value1, Size, CompType, BParity, BOther); \ in TEST_F()
1690 TestImplXmmAddr(Dst, Value0, Value1, Size, CompType, BParity, BOther); \ in TEST_F()
1693 #define TestImplSize(Dst, Src, Size) \ in TEST_F() argument
1695 TestImplCond(Dst, 1.0, Src, 1.0, Size, isEq, p, ne); \ in TEST_F()
1696 TestImplCond(Dst, 1.0, Src, 2.0, Size, isNe, p, e); \ in TEST_F()
1697 TestImplCond(Dst, 1.0, Src, 2.0, Size, isLe, p, a); \ in TEST_F()
1698 TestImplCond(Dst, 1.0, Src, 1.0, Size, isLe, p, a); \ in TEST_F()
1699 TestImplCond(Dst, 1.0, Src, 2.0, Size, isLt, p, ae); \ in TEST_F()
1700 TestImplCond(Dst, 2.0, Src, 1.0, Size, isGe, p, b); \ in TEST_F()
1701 TestImplCond(Dst, 1.0, Src, 1.0, Size, isGe, p, b); \ in TEST_F()
1702 TestImplCond(Dst, 2.0, Src, 1.0, Size, isGt, p, be); \ in TEST_F()
1703 TestImplCond(Dst, qnan##Size, Src, 1.0, Size, isUnord, np, o); \ in TEST_F()
1704 TestImplCond(Dst, 1.0, Src, qnan##Size, Size, isUnord, np, s); \ in TEST_F()
1705 TestImplCond(Dst, qnan##Size, Src, qnan##Size, Size, isUnord, np, s); \ in TEST_F()
1708 #define TestImpl(Dst, Src) \ in TEST_F() argument
1710 TestImplSize(Dst, Src, 32); \ in TEST_F()
1711 TestImplSize(Dst, Src, 64); \ in TEST_F()
1745 #define TestSqrtssXmmXmm(Dst, Src, Value1, Result, Size) \ in TEST_F() argument
1748 "(" #Dst ", " #Src ", " #Value1 ", " #Result ", " #Size ")"; \ in TEST_F()
1754 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
1755 __ sqrt(IceType_f##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
1764 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1768 #define TestSqrtssXmmAddr(Dst, Value1, Result, Size) \ in TEST_F() argument
1771 "(" #Dst ", Addr, " #Value1 ", " #Result ", " #Size ")"; \ in TEST_F()
1776 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
1777 __ sqrt(IceType_f##Size, Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1786 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1790 #define TestSqrtssSize(Dst, Src, Size) \ in TEST_F() argument
1792 TestSqrtssXmmXmm(Dst, Src, 4.0, 2.0, Size); \ in TEST_F()
1793 TestSqrtssXmmAddr(Dst, 4.0, 2.0, Size); \ in TEST_F()
1794 TestSqrtssXmmXmm(Dst, Src, 9.0, 3.0, Size); \ in TEST_F()
1795 TestSqrtssXmmAddr(Dst, 9.0, 3.0, Size); \ in TEST_F()
1796 TestSqrtssXmmXmm(Dst, Src, 100.0, 10.0, Size); \ in TEST_F()
1797 TestSqrtssXmmAddr(Dst, 100.0, 10.0, Size); \ in TEST_F()
1800 #define TestSqrtss(Dst, Src) \ in TEST_F() argument
1802 TestSqrtssSize(Dst, Src, 32); \ in TEST_F()
1803 TestSqrtssSize(Dst, Src, 64); \ in TEST_F()
1830 #define TestInsertpsXmmXmmImm(Dst, Value0, Src, Value1, Imm, Expected) \ in TEST_F() argument
1833 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Imm ", " #Expected \ in TEST_F()
1840 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1842 __ insertps(IceType_v4f32, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
1850 ASSERT_EQ(Dqword Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1854 #define TestInsertpsXmmAddrImm(Dst, Value0, Value1, Imm, Expected) \ in TEST_F() argument
1857 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Imm ", " #Expected ")"; \ in TEST_F()
1863 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1864 __ insertps(IceType_v4f32, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
1872 ASSERT_EQ(Dqword Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1876 #define TestInsertps(Dst, Src) \ in TEST_F() argument
1879 Dst, (uint64_t(-1), uint64_t(-1)), Src, \ in TEST_F()
1884 Dst, (uint64_t(-1), uint64_t(-1)), \ in TEST_F()
1889 Dst, (uint64_t(-1), uint64_t(-1)), Src, \ in TEST_F()
1894 Dst, (uint64_t(-1), uint64_t(-1)), \ in TEST_F()
1927 #define TestPinsrXmmGPRImm(Dst, Value0, GPR, Value1, Imm, Size) \ in TEST_F() argument
1930 "(" #Dst ", " #Value0 ", " #GPR ", " #Value1 ", " #Imm ", " #Size ")"; \ in TEST_F()
1934 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1936 __ pinsr(IceType_i##Size, Encoded_Xmm_##Dst(), Encoded_GPR_##GPR(), \ in TEST_F()
1946 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1950 #define TestPinsrXmmAddrImm(Dst, Value0, Value1, Imm, Size) \ in TEST_F() argument
1953 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Imm ", " #Size ")"; \ in TEST_F()
1959 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1960 __ pinsr(IceType_i##Size, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
1971 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1975 #define TestPinsrSize(Dst, GPR, Value1, Imm, Size) \ in TEST_F() argument
1977 TestPinsrXmmGPRImm(Dst, (uint64_t(0xAAAAAAAABBBBBBBBull), \ in TEST_F()
1980 TestPinsrXmmAddrImm(Dst, (uint64_t(0xAAAAAAAABBBBBBBBull), \ in TEST_F()
1985 #define TestPinsr(Src, Dst) \ in TEST_F() argument
1987 TestPinsrSize(Src, Dst, 0xEE, 0x03, 8); \ in TEST_F()
1988 TestPinsrSize(Src, Dst, 0xFFEE, 0x03, 16); \ in TEST_F()
1989 TestPinsrSize(Src, Dst, 0xC0FFEE, 0x03, 32); \ in TEST_F()
2047 #define TestPextr(Src, Dst) \ in TEST_F() argument
2049 TestPextrSize(Src, Dst, 0xEE, 0x03, 8); \ in TEST_F()
2050 TestPextrSize(Src, Dst, 0xFFEE, 0x03, 16); \ in TEST_F()
2051 TestPextrSize(Src, Dst, 0xC0FFEE, 0x03, 32); \ in TEST_F()
2077 #define TestPcmpXmmXmm(Dst, Value0, Src, Value1, Size, Inst, Op) \ in TEST_F() argument
2080 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Size ", " #Op ")"; \ in TEST_F()
2086 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
2088 __ Inst(IceType_i##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
2101 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
2105 #define TestPcmpXmmAddr(Dst, Value0, Value1, Size, Inst, Op) \ in TEST_F() argument
2108 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Size ", " #Op ")"; \ in TEST_F()
2114 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
2115 __ Inst(IceType_i##Size, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
2128 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
2132 #define TestPcmpValues(Dst, Value0, Src, Value1, Size) \ in TEST_F() argument
2134 TestPcmpXmmXmm(Dst, Value0, Src, Value1, Size, pcmpeq, == ); \ in TEST_F()
2135 TestPcmpXmmAddr(Dst, Value0, Value1, Size, pcmpeq, == ); \ in TEST_F()
2136 TestPcmpXmmXmm(Dst, Value0, Src, Value1, Size, pcmpgt, < ); \ in TEST_F()
2137 TestPcmpXmmAddr(Dst, Value0, Value1, Size, pcmpgt, < ); \ in TEST_F()
2140 #define TestPcmpSize(Dst, Src, Size) \ in TEST_F() argument
2142 TestPcmpValues(Dst, (uint64_t(0x8888888888888888ull), \ in TEST_F()
2147 TestPcmpValues(Dst, (uint64_t(0x123567ABAB55DE01ull), \ in TEST_F()
2154 #define TestPcmp(Dst, Src) \ in TEST_F() argument
2186 #define TestRoundsdXmmXmm(Dst, Src, Mode, Input, RN) \ in TEST_F() argument
2189 "(" #Dst ", " #Src ", " #Mode ", " #Input ", " #RN ")"; \ in TEST_F()
2195 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
2197 __ round(IceType_f64, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
2206 EXPECT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
2210 #define TestRoundsd(Dst, Src) \ in TEST_F() argument
2212 TestRoundsdXmmXmm(Dst, Src, RoundToNearest, 5.51, 6); \ in TEST_F()
2213 TestRoundsdXmmXmm(Dst, Src, RoundToNearest, 5.49, 5); \ in TEST_F()
2214 TestRoundsdXmmXmm(Dst, Src, RoundDown, 5.51, 5); \ in TEST_F()
2215 TestRoundsdXmmXmm(Dst, Src, RoundUp, 5.49, 6); \ in TEST_F()
2216 TestRoundsdXmmXmm(Dst, Src, RoundToZero, 5.49, 5); \ in TEST_F()
2217 TestRoundsdXmmXmm(Dst, Src, RoundToZero, 5.51, 5); \ in TEST_F()