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()
251 Dst, \ in TEST_F()
255 Dst, \ in TEST_F()
259 Dst, \ in TEST_F()
263 Dst, \ in TEST_F()
267 Dst, \ in TEST_F()
271 Dst, \ in TEST_F()
275 Dst, \ in TEST_F()
279 Dst, \ in TEST_F()
284 Dst, \ in TEST_F()
290 Dst, \ in TEST_F()
296 Dst, \ in TEST_F()
303 Dst, \ in TEST_F()
311 Dst, \ in TEST_F()
317 Dst, \ in TEST_F()
322 Dst, \ in TEST_F()
328 Dst, \ in TEST_F()
333 Dst, \ in TEST_F()
339 Dst, \ in TEST_F()
345 Dst, \ in TEST_F()
351 Dst, \ in TEST_F()
357 Dst, \ in TEST_F()
363 Dst, \ in TEST_F()
368 Dst, \ in TEST_F()
374 Dst, \ in TEST_F()
380 #define TestPArith(Src, Dst) \ in TEST_F() argument
382 TestPArithSize(Src, Dst, 8); \ in TEST_F()
383 TestPArithSize(Src, Dst, 16); \ in TEST_F()
384 TestPArithSize(Src, Dst, 32); \ in TEST_F()
414 #define TestArithPSXmmXmm(FloatSize, Dst, Value0, Src, Value1, Inst, Op, Type) \ in TEST_F() argument
417 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Inst ", " #Op \ in TEST_F()
424 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
426 __ Inst(IceType_f32, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
433 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
438 #define TestArithPSXmmXmmUntyped(Dst, Value0, Src, Value1, Inst, Op, Type) \ in TEST_F() argument
441 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Inst ", " #Op \ in TEST_F()
448 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
450 __ Inst(Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
457 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
462 #define TestArithPSXmmAddrUntyped(Dst, Value0, Value1, Inst, Op, Type) \ in TEST_F() argument
465 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Inst ", " #Op \ in TEST_F()
472 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
473 __ Inst(Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
480 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
485 #define TestMinMaxPS(FloatSize, Dst, Value0, Src, Value1, Inst, Type) \ in TEST_F() argument
488 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Inst ", " #Type \ in TEST_F()
495 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
497 __ Inst(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
504 ASSERT_EQ(packedAs<Type>(V0).Inst(V1), test.Dst<Dqword>()) << TestString; \ in TEST_F()
509 #define TestArithPSXmmAddr(FloatSize, Dst, Value0, Value1, Inst, Op, Type) \ in TEST_F() argument
512 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Inst ", " #Op \ in TEST_F()
519 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
520 __ Inst(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
527 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
532 #define TestArithPS(Dst, Src) \ in TEST_F() argument
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(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
540 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
542 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
544 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
546 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
548 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
550 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
552 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
554 TestArithPSXmmXmm(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), andps, &, \ in TEST_F()
556 TestArithPSXmmAddr(64, Dst, (1.0, -1000.0), (0.55, 1.21), andps, &, \ in TEST_F()
558 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
560 TestArithPSXmmXmm(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), orps, |, \ in TEST_F()
562 TestMinMaxPS(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
564 TestMinMaxPS(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
566 TestMinMaxPS(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), minps, double); \ in TEST_F()
567 TestMinMaxPS(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), maxps, double); \ in TEST_F()
568 TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \ in TEST_F()
570 TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \ in TEST_F()
572 TestArithPSXmmXmm(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), xorps, ^, \ in TEST_F()
574 TestArithPSXmmAddr(64, Dst, (1.0, -1000.0), (0.55, 1.21), xorps, ^, \ in TEST_F()
606 #define TestBlendingXmmXmm(Dst, Value0, Src, Value1, M /*ask*/, Inst, Type) \ in TEST_F() argument
609 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #M ", " #Inst \ in TEST_F()
619 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
621 __ Inst(IceType_##Type, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
629 ASSERT_EQ(packedAs<Type>(V0).blendWith(V1, MaskValue), test.Dst<Dqword>()) \ in TEST_F()
634 #define TestBlendingXmmAddr(Dst, Value0, Value1, M /*ask*/, Inst, Type) \ in TEST_F() argument
637 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #M ", " #Inst ", " #Type \ in TEST_F()
647 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
648 __ Inst(IceType_##Type, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
656 ASSERT_EQ(packedAs<Type>(V0).blendWith(V1, MaskValue), test.Dst<Dqword>()) \ in TEST_F()
661 #define TestBlending(Src, Dst) \ in TEST_F() argument
664 Dst, (1.0, 2.0, 1.0, 2.0), Src, (-1.0, -2.0, -1.0, -2.0), \ in TEST_F()
668 Dst, (1.0, 2.0, 1.0, 2.0), (-1.0, -2.0, -1.0, -2.0), \ in TEST_F()
672 Dst, \ in TEST_F()
679 Dst, \ in TEST_F()
709 #define TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, C, Op, Type) \ in TEST_F() argument
712 "(" #Src ", " #Dst ", " #C ", " #Op ")"; \ in TEST_F()
718 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
720 __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
728 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
733 #define TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, C, Op, Type) \ in TEST_F() argument
735 static constexpr char TestString[] = "(" #Dst ", Addr, " #C ", " #Op ")"; \ in TEST_F()
741 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
742 __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
750 ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \ in TEST_F()
755 #define TestCmppsOrdUnordXmmXmm(FloatSize, Dst, Value0, Src, Value1, C, Type) \ in TEST_F() argument
757 static constexpr char TestString[] = "(" #Src ", " #Dst ", " #C ")"; \ in TEST_F()
765 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
767 __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
775 ASSERT_EQ(packedAs<Type>(V0).C(V1), test.Dst<Dqword>()) << TestString; \ in TEST_F()
780 #define TestCmppsOrdUnordXmmAddr(FloatSize, Dst, Value0, Value1, C, Type) \ in TEST_F() argument
782 static constexpr char TestString[] = "(" #Dst ", " #C ")"; \ in TEST_F()
790 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
791 __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
799 ASSERT_EQ(packedAs<Type>(V0).C(V1), test.Dst<Dqword>()) << TestString; \ in TEST_F()
804 #define TestCmpps(FloatSize, Dst, Value0, Src, Value1, Type) \ in TEST_F() argument
806 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
807 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
808 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
809 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
810 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
811 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
812 TestCmppsOrdUnordXmmXmm(FloatSize, Dst, Value0, Src, Value1, unord, Type); \ in TEST_F()
813 TestCmppsOrdUnordXmmAddr(FloatSize, Dst, Value0, Value1, unord, Type); \ in TEST_F()
814 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
815 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
816 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
817 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
818 TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \ in TEST_F()
819 TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \ in TEST_F()
821 TestCmppsOrdUnordXmmXmm(32, Dst, \ in TEST_F()
829 TestCmppsOrdUnordXmmAddr(32, Dst, \ in TEST_F()
838 64, Dst, (1.0, std::numeric_limits<double>::quiet_NaN()), Src, \ in TEST_F()
842 TestCmppsOrdUnordXmmXmm(64, Dst, (1.0, 1.0), Src, \ in TEST_F()
846 64, Dst, (1.0, std::numeric_limits<double>::quiet_NaN()), \ in TEST_F()
851 64, Dst, (1.0, 1.0), \ in TEST_F()
888 #define TestImplSingle(Dst, Inst, Expect) \ in TEST_F() argument
890 static constexpr char TestString[] = "(" #Dst ", " #Inst ")"; \ in TEST_F()
894 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
895 __ Inst(Encoded_Xmm_##Dst()); \ in TEST_F()
900 ASSERT_EQ(Dqword Expect, test.Dst<Dqword>()) << TestString; \ in TEST_F()
904 #define TestImpl(Dst) \ in TEST_F() argument
907 Dst, sqrtps, \ in TEST_F()
910 Dst, rsqrtps, \ in TEST_F()
913 Dst, reciprocalps, \ in TEST_F()
917 Dst, sqrtpd, \ in TEST_F()
957 #define TestImplSingle(Dst, Src, Inst) \ in TEST_F() argument
959 static constexpr char TestString[] = "(" #Dst ", " #Src ", " #Inst ")"; \ in TEST_F()
963 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
965 __ Inst(Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
972 ASSERT_EQ(Inst##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
976 #define TestImpl(Dst, Src) \ in TEST_F() argument
978 TestImplSingle(Dst, Src, unpcklps); \ in TEST_F()
979 TestImplSingle(Dst, Src, unpcklpd); \ in TEST_F()
980 TestImplSingle(Dst, Src, unpckhps); \ in TEST_F()
981 TestImplSingle(Dst, Src, unpckhpd); \ in TEST_F()
1019 #define TestImplSingleXmmXmm(Dst, Src, Inst) \ in TEST_F() argument
1021 static constexpr char TestString[] = "(" #Dst ", " #Src ", " #Inst ")"; \ in TEST_F()
1025 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1027 __ Inst(IceType_f32, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
1035 ASSERT_EQ(Inst##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1039 #define TestImplSingleXmmAddr(Dst, Inst) \ in TEST_F() argument
1041 static constexpr char TestString[] = "(" #Dst ", Addr, " #Inst ")"; \ in TEST_F()
1045 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1046 __ Inst(IceType_f32, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
1054 ASSERT_EQ(Inst##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1058 #define TestImplSingleXmmXmmUntyped(Dst, Src, Inst) \ in TEST_F() argument
1061 "(" #Dst ", " #Src ", " #Inst ", Untyped)"; \ in TEST_F()
1065 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1067 __ Inst(Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), Immediate(Inst##Imm)); \ in TEST_F()
1074 ASSERT_EQ(Inst##UntypedExpected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1078 #define TestImpl(Dst, Src) \ in TEST_F() argument
1080 TestImplSingleXmmXmm(Dst, Src, pshufd); \ in TEST_F()
1081 TestImplSingleXmmAddr(Dst, pshufd); \ in TEST_F()
1082 TestImplSingleXmmXmm(Dst, Src, shufps); \ in TEST_F()
1083 TestImplSingleXmmAddr(Dst, shufps); \ in TEST_F()
1131 #define TestImplXmmXmm(Dst, Src, Inst, Ty) \ in TEST_F() argument
1134 "(" #Dst ", " #Src ", " #Inst ", " #Ty ")"; \ in TEST_F()
1138 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1140 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, \ in TEST_F()
1148 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1152 #define TestImplXmmAddr(Dst, Inst, Ty) \ in TEST_F() argument
1155 "(" #Dst ", Addr, " #Inst ", " #Ty ")"; \ in TEST_F()
1159 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1160 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, dwordAddress(T1)); \ in TEST_F()
1167 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1171 #define TestImpl(Dst, Src) \ in TEST_F() argument
1173 TestImplXmmXmm(Dst, Src, punpckl, v4i32); \ in TEST_F()
1174 TestImplXmmAddr(Dst, punpckl, v4i32); \ in TEST_F()
1175 TestImplXmmXmm(Dst, Src, punpckl, v8i16); \ in TEST_F()
1176 TestImplXmmAddr(Dst, punpckl, v8i16); \ in TEST_F()
1177 TestImplXmmXmm(Dst, Src, punpckl, v16i8); \ in TEST_F()
1178 TestImplXmmAddr(Dst, punpckl, v16i8); \ in TEST_F()
1210 #define TestImplXmmXmm(Dst, Src, Inst, Ty) \ in TEST_F() argument
1213 "(" #Dst ", " #Src ", " #Inst ", " #Ty ")"; \ in TEST_F()
1217 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1219 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, \ in TEST_F()
1227 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1231 #define TestImplXmmAddr(Dst, Inst, Ty) \ in TEST_F() argument
1234 "(" #Dst ", Addr, " #Inst ", " #Ty ")"; \ in TEST_F()
1238 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1239 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, dwordAddress(T1)); \ in TEST_F()
1246 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1250 #define TestImpl(Dst, Src) \ in TEST_F() argument
1252 TestImplXmmXmm(Dst, Src, packss, v4i32); \ in TEST_F()
1253 TestImplXmmAddr(Dst, packss, v4i32); \ in TEST_F()
1254 TestImplXmmXmm(Dst, Src, packss, v8i16); \ in TEST_F()
1255 TestImplXmmAddr(Dst, packss, v8i16); \ in TEST_F()
1287 #define TestImplXmmXmm(Dst, Src, Inst, Ty) \ in TEST_F() argument
1290 "(" #Dst ", " #Src ", " #Inst ", " #Ty ")"; \ in TEST_F()
1294 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1296 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, \ in TEST_F()
1304 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1308 #define TestImplXmmAddr(Dst, Inst, Ty) \ in TEST_F() argument
1311 "(" #Dst ", Addr, " #Inst ", " #Ty ")"; \ in TEST_F()
1315 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1316 __ Inst(IceType_##Ty, XmmRegister::Encoded_Reg_##Dst, dwordAddress(T1)); \ in TEST_F()
1323 ASSERT_EQ(Expected_##Ty, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1327 #define TestImpl(Dst, Src) \ in TEST_F() argument
1329 TestImplXmmXmm(Dst, Src, packus, v4i32); \ in TEST_F()
1330 TestImplXmmAddr(Dst, packus, v4i32); \ in TEST_F()
1331 TestImplXmmXmm(Dst, Src, packus, v8i16); \ in TEST_F()
1332 TestImplXmmAddr(Dst, packus, v8i16); \ in TEST_F()
1358 #define TestImplXmmXmm(Dst, Src, Inst) \ in TEST_F() argument
1360 static constexpr char TestString[] = "(" #Dst ", " #Src ", " #Inst ")"; \ in TEST_F()
1364 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1366 __ Inst(IceType_void, XmmRegister::Encoded_Reg_##Dst, \ in TEST_F()
1374 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1378 #define TestImplXmmAddr(Dst, Inst) \ in TEST_F() argument
1380 static constexpr char TestString[] = "(" #Dst ", Addr, " #Inst ")"; \ in TEST_F()
1384 __ movups(XmmRegister::Encoded_Reg_##Dst, dwordAddress(T0)); \ in TEST_F()
1385 __ Inst(IceType_void, XmmRegister::Encoded_Reg_##Dst, dwordAddress(T1)); \ in TEST_F()
1392 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1396 #define TestImpl(Dst, Src) \ in TEST_F() argument
1398 TestImplXmmXmm(Dst, Src, pshufb); \ in TEST_F()
1399 TestImplXmmAddr(Dst, pshufb); \ in TEST_F()
1465 #define TestImplPXmmXmm(Dst, Src, Inst, Size) \ in TEST_F() argument
1468 "(" #Dst ", " #Src ", cvt" #Inst ", f" #Size ")"; \ in TEST_F()
1472 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1474 __ cvt##Inst(IceType_f##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
1481 ASSERT_EQ(Inst##Size##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1485 #define TestImplSXmmReg(Dst, GPR, Inst, Size, IntType) \ in TEST_F() argument
1488 "(" #Dst ", " #GPR ", cvt" #Inst ", " #IntType ", f" #Size ")"; \ in TEST_F()
1491 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1493 __ cvt##Inst(IceType_f##Size, Encoded_Xmm_##Dst(), IntType, \ in TEST_F()
1500 ASSERT_EQ(Inst##Size##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1525 #define TestImplPXmmAddr(Dst, Inst, Size) \ in TEST_F() argument
1528 "(" #Dst ", Addr, cvt" #Inst ", f" #Size ")"; \ in TEST_F()
1532 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1533 __ cvt##Inst(IceType_f##Size, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
1540 ASSERT_EQ(Inst##Size##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1544 #define TestImplSXmmAddr(Dst, Inst, Size, IntType) \ in TEST_F() argument
1547 "(" #Dst ", Addr, cvt" #Inst ", f" #Size ", " #IntType ")"; \ in TEST_F()
1551 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1552 __ cvt##Inst(IceType_f##Size, Encoded_Xmm_##Dst(), IntType, \ in TEST_F()
1560 ASSERT_EQ(Inst##Size##Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1584 #define TestImplSize(Dst, Src, GPR, Size) \ in TEST_F() argument
1586 TestImplPXmmXmm(Dst, Src, dq2ps, Size); \ in TEST_F()
1588 TestImplPXmmXmm(Dst, Src, tps2dq, Size); \ in TEST_F()
1590 TestImplSXmmReg(Dst, GPR, si2ss, Size, IceType_i32); \ in TEST_F()
1591 TestImplSXmmReg(Dst, GPR, si2ss, Size, IceType_i64); \ in TEST_F()
1592 TestImplSXmmAddr(Dst, si2ss, Size, IceType_i32); \ in TEST_F()
1593 TestImplSXmmAddr(Dst, si2ss, Size, IceType_i64); \ in TEST_F()
1598 TestImplPXmmXmm(Dst, Src, float2float, Size); \ in TEST_F()
1602 #define TestImpl(Dst, Src, GPR) \ in TEST_F() argument
1604 TestImplSize(Dst, Src, GPR, 32); \ in TEST_F()
1605 TestImplSize(Dst, Src, GPR, 64); \ in TEST_F()
1645 #define TestImplXmmXmm(Dst, Value0, Src, Value1, Size, CompType, BParity, \ in TEST_F() argument
1650 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Size ", " #CompType \ in TEST_F()
1659 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1662 __ ucomiss(IceType_f##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
1678 #define TestImplXmmAddr(Dst, Value0, Value1, Size, CompType, BParity, BOther) \ in TEST_F() argument
1682 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Size ", " #CompType \ in TEST_F()
1691 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1693 __ ucomiss(IceType_f##Size, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
1709 #define TestImplCond(Dst, Value0, Src, Value1, Size, CompType, BParity, \ in TEST_F() argument
1712 TestImplXmmXmm(Dst, Value0, Src, Value1, Size, CompType, BParity, BOther); \ in TEST_F()
1713 TestImplXmmAddr(Dst, Value0, Value1, Size, CompType, BParity, BOther); \ in TEST_F()
1716 #define TestImplSize(Dst, Src, Size) \ in TEST_F() argument
1718 TestImplCond(Dst, 1.0, Src, 1.0, Size, isEq, p, ne); \ in TEST_F()
1719 TestImplCond(Dst, 1.0, Src, 2.0, Size, isNe, p, e); \ in TEST_F()
1720 TestImplCond(Dst, 1.0, Src, 2.0, Size, isLe, p, a); \ in TEST_F()
1721 TestImplCond(Dst, 1.0, Src, 1.0, Size, isLe, p, a); \ in TEST_F()
1722 TestImplCond(Dst, 1.0, Src, 2.0, Size, isLt, p, ae); \ in TEST_F()
1723 TestImplCond(Dst, 2.0, Src, 1.0, Size, isGe, p, b); \ in TEST_F()
1724 TestImplCond(Dst, 1.0, Src, 1.0, Size, isGe, p, b); \ in TEST_F()
1725 TestImplCond(Dst, 2.0, Src, 1.0, Size, isGt, p, be); \ in TEST_F()
1726 TestImplCond(Dst, qnan##Size, Src, 1.0, Size, isUnord, np, o); \ in TEST_F()
1727 TestImplCond(Dst, 1.0, Src, qnan##Size, Size, isUnord, np, s); \ in TEST_F()
1728 TestImplCond(Dst, qnan##Size, Src, qnan##Size, Size, isUnord, np, s); \ in TEST_F()
1731 #define TestImpl(Dst, Src) \ in TEST_F() argument
1733 TestImplSize(Dst, Src, 32); \ in TEST_F()
1734 TestImplSize(Dst, Src, 64); \ in TEST_F()
1768 #define TestSqrtssXmmXmm(Dst, Src, Value1, Result, Size) \ in TEST_F() argument
1771 "(" #Dst ", " #Src ", " #Value1 ", " #Result ", " #Size ")"; \ in TEST_F()
1777 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
1778 __ sqrt(IceType_f##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
1787 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1791 #define TestSqrtssXmmAddr(Dst, Value1, Result, Size) \ in TEST_F() argument
1794 "(" #Dst ", Addr, " #Value1 ", " #Result ", " #Size ")"; \ in TEST_F()
1799 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
1800 __ sqrt(IceType_f##Size, Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1809 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1813 #define TestSqrtssSize(Dst, Src, Size) \ in TEST_F() argument
1815 TestSqrtssXmmXmm(Dst, Src, 4.0, 2.0, Size); \ in TEST_F()
1816 TestSqrtssXmmAddr(Dst, 4.0, 2.0, Size); \ in TEST_F()
1817 TestSqrtssXmmXmm(Dst, Src, 9.0, 3.0, Size); \ in TEST_F()
1818 TestSqrtssXmmAddr(Dst, 9.0, 3.0, Size); \ in TEST_F()
1819 TestSqrtssXmmXmm(Dst, Src, 100.0, 10.0, Size); \ in TEST_F()
1820 TestSqrtssXmmAddr(Dst, 100.0, 10.0, Size); \ in TEST_F()
1823 #define TestSqrtss(Dst, Src) \ in TEST_F() argument
1825 TestSqrtssSize(Dst, Src, 32); \ in TEST_F()
1826 TestSqrtssSize(Dst, Src, 64); \ in TEST_F()
1853 #define TestInsertpsXmmXmmImm(Dst, Value0, Src, Value1, Imm, Expected) \ in TEST_F() argument
1856 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Imm ", " #Expected \ in TEST_F()
1863 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1865 __ insertps(IceType_v4f32, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
1873 ASSERT_EQ(Dqword Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1877 #define TestInsertpsXmmAddrImm(Dst, Value0, Value1, Imm, Expected) \ in TEST_F() argument
1880 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Imm ", " #Expected ")"; \ in TEST_F()
1886 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1887 __ insertps(IceType_v4f32, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
1895 ASSERT_EQ(Dqword Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1899 #define TestInsertps(Dst, Src) \ in TEST_F() argument
1902 Dst, (uint64_t(-1), uint64_t(-1)), Src, \ in TEST_F()
1907 Dst, (uint64_t(-1), uint64_t(-1)), \ in TEST_F()
1912 Dst, (uint64_t(-1), uint64_t(-1)), Src, \ in TEST_F()
1917 Dst, (uint64_t(-1), uint64_t(-1)), \ in TEST_F()
1950 #define TestPinsrXmmGPRImm(Dst, Value0, GPR, Value1, Imm, Size) \ in TEST_F() argument
1953 "(" #Dst ", " #Value0 ", " #GPR ", " #Value1 ", " #Imm ", " #Size ")"; \ in TEST_F()
1957 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1959 __ pinsr(IceType_i##Size, Encoded_Xmm_##Dst(), Encoded_GPR_##GPR(), \ in TEST_F()
1969 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1973 #define TestPinsrXmmAddrImm(Dst, Value0, Value1, Imm, Size) \ in TEST_F() argument
1976 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Imm ", " #Size ")"; \ in TEST_F()
1982 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
1983 __ pinsr(IceType_i##Size, Encoded_Xmm_##Dst(), dwordAddress(T1), \ in TEST_F()
1994 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
1998 #define TestPinsrSize(Dst, GPR, Value1, Imm, Size) \ in TEST_F() argument
2001 Dst, \ in TEST_F()
2005 Dst, \ in TEST_F()
2010 #define TestPinsr(Src, Dst) \ in TEST_F() argument
2012 TestPinsrSize(Src, Dst, 0xEE, 0x03, 8); \ in TEST_F()
2013 TestPinsrSize(Src, Dst, 0xFFEE, 0x03, 16); \ in TEST_F()
2014 TestPinsrSize(Src, Dst, 0xC0FFEE, 0x03, 32); \ in TEST_F()
2073 #define TestPextr(Src, Dst) \ in TEST_F() argument
2075 TestPextrSize(Src, Dst, 0xEE, 0x03, 8); \ in TEST_F()
2076 TestPextrSize(Src, Dst, 0xFFEE, 0x03, 16); \ in TEST_F()
2077 TestPextrSize(Src, Dst, 0xC0FFEE, 0x03, 32); \ in TEST_F()
2103 #define TestPcmpXmmXmm(Dst, Value0, Src, Value1, Size, Inst, Op) \ in TEST_F() argument
2106 "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Size ", " #Op ")"; \ in TEST_F()
2112 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
2114 __ Inst(IceType_i##Size, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \ in TEST_F()
2127 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
2131 #define TestPcmpXmmAddr(Dst, Value0, Value1, Size, Inst, Op) \ in TEST_F() argument
2134 "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Size ", " #Op ")"; \ in TEST_F()
2140 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
2141 __ Inst(IceType_i##Size, Encoded_Xmm_##Dst(), dwordAddress(T1)); \ in TEST_F()
2154 ASSERT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
2158 #define TestPcmpValues(Dst, Value0, Src, Value1, Size) \ in TEST_F() argument
2160 TestPcmpXmmXmm(Dst, Value0, Src, Value1, Size, pcmpeq, ==); \ in TEST_F()
2161 TestPcmpXmmAddr(Dst, Value0, Value1, Size, pcmpeq, ==); \ in TEST_F()
2162 TestPcmpXmmXmm(Dst, Value0, Src, Value1, Size, pcmpgt, <); \ in TEST_F()
2163 TestPcmpXmmAddr(Dst, Value0, Value1, Size, pcmpgt, <); \ in TEST_F()
2166 #define TestPcmpSize(Dst, Src, Size) \ in TEST_F() argument
2169 Dst, \ in TEST_F()
2175 Dst, \ in TEST_F()
2182 #define TestPcmp(Dst, Src) \ in TEST_F() argument
2214 #define TestRoundsdXmmXmm(Dst, Src, Mode, Input, RN) \ in TEST_F() argument
2217 "(" #Dst ", " #Src ", " #Mode ", " #Input ", " #RN ")"; \ in TEST_F()
2223 __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \ in TEST_F()
2225 __ round(IceType_f64, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \ in TEST_F()
2234 EXPECT_EQ(Expected, test.Dst<Dqword>()) << TestString; \ in TEST_F()
2238 #define TestRoundsd(Dst, Src) \ in TEST_F() argument
2240 TestRoundsdXmmXmm(Dst, Src, RoundToNearest, 5.51, 6); \ in TEST_F()
2241 TestRoundsdXmmXmm(Dst, Src, RoundToNearest, 5.49, 5); \ in TEST_F()
2242 TestRoundsdXmmXmm(Dst, Src, RoundDown, 5.51, 5); \ in TEST_F()
2243 TestRoundsdXmmXmm(Dst, Src, RoundUp, 5.49, 6); \ in TEST_F()
2244 TestRoundsdXmmXmm(Dst, Src, RoundToZero, 5.49, 5); \ in TEST_F()
2245 TestRoundsdXmmXmm(Dst, Src, RoundToZero, 5.51, 5); \ in TEST_F()