| Index: unittest/AssemblerX8664/XmmArith.cpp
|
| diff --git a/unittest/AssemblerX8664/XmmArith.cpp b/unittest/AssemblerX8664/XmmArith.cpp
|
| index e43413aec4d84fa958f7aa8db3b49d83e461d33a..6a0d9f5b40430699d2acac4e0b7b3514fb8d3caa 100644
|
| --- a/unittest/AssemblerX8664/XmmArith.cpp
|
| +++ b/unittest/AssemblerX8664/XmmArith.cpp
|
| @@ -395,7 +395,7 @@ TEST_F(AssemblerX8664Test, PArith) {
|
| }
|
|
|
| TEST_F(AssemblerX8664Test, ArithPS) {
|
| -#define TestArithPSXmmXmm(Dst, Value0, Src, Value1, Inst, Op, Type) \
|
| +#define TestArithPSXmmXmm(FloatSize, Dst, Value0, Src, Value1, Inst, Op, Type) \
|
| do { \
|
| static constexpr char TestString[] = \
|
| "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Inst ", " #Op \
|
| @@ -466,7 +466,7 @@ TEST_F(AssemblerX8664Test, ArithPS) {
|
| reset(); \
|
| } while (0)
|
|
|
| -#define TestMinMaxPS(Dst, Value0, Src, Value1, Inst, Type) \
|
| +#define TestMinMaxPS(FloatSize, Dst, Value0, Src, Value1, Inst, Type) \
|
| do { \
|
| static constexpr char TestString[] = \
|
| "(" #Dst ", " #Value0 ", " #Src ", " #Value1 ", " #Inst ", " #Type \
|
| @@ -478,7 +478,7 @@ TEST_F(AssemblerX8664Test, ArithPS) {
|
| \
|
| __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \
|
| __ movups(Encoded_Xmm_##Src(), dwordAddress(T1)); \
|
| - __ Inst(Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \
|
| + __ Inst(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src()); \
|
| \
|
| AssembledTest test = assemble(); \
|
| test.setDqwordTo(T0, V0); \
|
| @@ -490,7 +490,7 @@ TEST_F(AssemblerX8664Test, ArithPS) {
|
| reset(); \
|
| } while (0)
|
|
|
| -#define TestArithPSXmmAddr(Dst, Value0, Value1, Inst, Op, Type) \
|
| +#define TestArithPSXmmAddr(FloatSize, Dst, Value0, Value1, Inst, Op, Type) \
|
| do { \
|
| static constexpr char TestString[] = \
|
| "(" #Dst ", " #Value0 ", Addr, " #Value1 ", " #Inst ", " #Op \
|
| @@ -501,7 +501,7 @@ TEST_F(AssemblerX8664Test, ArithPS) {
|
| const Dqword V1 Value1; \
|
| \
|
| __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \
|
| - __ Inst(IceType_f32, Encoded_Xmm_##Dst(), dwordAddress(T1)); \
|
| + __ Inst(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1)); \
|
| \
|
| AssembledTest test = assemble(); \
|
| test.setDqwordTo(T0, V0); \
|
| @@ -515,48 +515,48 @@ TEST_F(AssemblerX8664Test, ArithPS) {
|
|
|
| #define TestArithPS(Dst, Src) \
|
| do { \
|
| - TestArithPSXmmXmm(Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| + TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| (0.55, 0.43, 0.23, 1.21), addps, +, float); \
|
| - TestArithPSXmmAddr(Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| + TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| (0.55, 0.43, 0.23, 1.21), addps, +, float); \
|
| - TestArithPSXmmXmm(Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| + TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| (0.55, 0.43, 0.23, 1.21), subps, -, float); \
|
| - TestArithPSXmmAddr(Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| + TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| (0.55, 0.43, 0.23, 1.21), subps, -, float); \
|
| - TestArithPSXmmXmm(Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| + TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| (0.55, 0.43, 0.23, 1.21), mulps, *, float); \
|
| - TestArithPSXmmAddr(Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| + TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| (0.55, 0.43, 0.23, 1.21), mulps, *, float); \
|
| - TestArithPSXmmXmm(Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| + TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| (0.55, 0.43, 0.23, 1.21), divps, /, float); \
|
| - TestArithPSXmmAddr(Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| + TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| (0.55, 0.43, 0.23, 1.21), divps, /, float); \
|
| - TestArithPSXmmXmmUntyped(Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| - (0.55, 0.43, 0.23, 1.21), andps, &, float); \
|
| - TestArithPSXmmAddrUntyped(Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| - (0.55, 0.43, 0.23, 1.21), andps, &, float); \
|
| - TestArithPSXmmXmmUntyped(Dst, (1.0, -1000.0), Src, (0.55, 1.21), andpd, &, \
|
| - double); \
|
| - TestArithPSXmmAddrUntyped(Dst, (1.0, -1000.0), (0.55, 1.21), andpd, &, \
|
| - double); \
|
| - TestArithPSXmmXmmUntyped(Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| - (0.55, 0.43, 0.23, 1.21), orps, |, float); \
|
| - TestArithPSXmmXmmUntyped(Dst, (1.0, -1000.0), Src, (0.55, 1.21), orpd, |, \
|
| - double); \
|
| - TestMinMaxPS(Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| + TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| + (0.55, 0.43, 0.23, 1.21), andps, &, float); \
|
| + TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| + (0.55, 0.43, 0.23, 1.21), andps, &, float); \
|
| + TestArithPSXmmXmm(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), andps, &, \
|
| + double); \
|
| + TestArithPSXmmAddr(64, Dst, (1.0, -1000.0), (0.55, 1.21), andps, &, \
|
| + double); \
|
| + TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| + (0.55, 0.43, 0.23, 1.21), orps, |, float); \
|
| + TestArithPSXmmXmm(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), orps, |, \
|
| + double); \
|
| + TestMinMaxPS(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| (0.55, 0.43, 0.23, 1.21), minps, float); \
|
| - TestMinMaxPS(Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| + TestMinMaxPS(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| (0.55, 0.43, 0.23, 1.21), maxps, float); \
|
| - TestMinMaxPS(Dst, (1.0, -1000.0), Src, (0.55, 1.21), minpd, double); \
|
| - TestMinMaxPS(Dst, (1.0, -1000.0), Src, (0.55, 1.21), maxpd, double); \
|
| - TestArithPSXmmXmmUntyped(Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| - (0.55, 0.43, 0.23, 1.21), xorps, ^, float); \
|
| - TestArithPSXmmAddrUntyped(Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| - (0.55, 0.43, 0.23, 1.21), xorps, ^, float); \
|
| - TestArithPSXmmXmmUntyped(Dst, (1.0, -1000.0), Src, (0.55, 1.21), xorpd, ^, \
|
| - double); \
|
| - TestArithPSXmmAddrUntyped(Dst, (1.0, -1000.0), (0.55, 1.21), xorpd, ^, \
|
| - double); \
|
| + TestMinMaxPS(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), minps, double); \
|
| + TestMinMaxPS(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), maxps, double); \
|
| + TestArithPSXmmXmm(32, Dst, (1.0, 100.0, -1000.0, 20.0), Src, \
|
| + (0.55, 0.43, 0.23, 1.21), xorps, ^, float); \
|
| + TestArithPSXmmAddr(32, Dst, (1.0, 100.0, -1000.0, 20.0), \
|
| + (0.55, 0.43, 0.23, 1.21), xorps, ^, float); \
|
| + TestArithPSXmmXmm(64, Dst, (1.0, -1000.0), Src, (0.55, 1.21), xorps, ^, \
|
| + double); \
|
| + TestArithPSXmmAddr(64, Dst, (1.0, -1000.0), (0.55, 1.21), xorps, ^, \
|
| + double); \
|
| } while (0)
|
|
|
| TestArithPS(xmm0, xmm1);
|
| @@ -690,51 +690,53 @@ TEST_F(AssemblerX8664Test, Blending) {
|
| }
|
|
|
| TEST_F(AssemblerX8664Test, Cmpps) {
|
| -#define TestCmppsXmmXmm(Dst, Src, C, Op) \
|
| +#define TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, C, Op, Type) \
|
| do { \
|
| static constexpr char TestString[] = \
|
| "(" #Src ", " #Dst ", " #C ", " #Op ")"; \
|
| const uint32_t T0 = allocateDqword(); \
|
| - const Dqword V0(-1.0, 1.0, 3.14, 1024.5); \
|
| + const Dqword V0 Value0; \
|
| const uint32_t T1 = allocateDqword(); \
|
| - const Dqword V1(-1.0, 1.0, 3.14, 1024.5); \
|
| + const Dqword V1 Value1; \
|
| \
|
| __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \
|
| __ movups(Encoded_Xmm_##Src(), dwordAddress(T1)); \
|
| - __ cmpps(Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), Cond::Cmpps_##C); \
|
| + __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \
|
| + Cond::Cmpps_##C); \
|
| \
|
| AssembledTest test = assemble(); \
|
| test.setDqwordTo(T0, V0); \
|
| test.setDqwordTo(T1, V1); \
|
| test.run(); \
|
| \
|
| - ASSERT_EQ(packedAs<float>(V0) Op V1, test.Dst<Dqword>()) << TestString; \
|
| + ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \
|
| ; \
|
| reset(); \
|
| } while (0)
|
|
|
| -#define TestCmppsXmmAddr(Dst, C, Op) \
|
| +#define TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, C, Op, Type) \
|
| do { \
|
| static constexpr char TestString[] = "(" #Dst ", Addr, " #C ", " #Op ")"; \
|
| const uint32_t T0 = allocateDqword(); \
|
| - const Dqword V0(-1.0, 1.0, 3.14, 1024.5); \
|
| + const Dqword V0 Value0; \
|
| const uint32_t T1 = allocateDqword(); \
|
| - const Dqword V1(-1.0, 1.0, 3.14, 1024.5); \
|
| + const Dqword V1 Value1; \
|
| \
|
| __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \
|
| - __ cmpps(Encoded_Xmm_##Dst(), dwordAddress(T1), Cond::Cmpps_##C); \
|
| + __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1), \
|
| + Cond::Cmpps_##C); \
|
| \
|
| AssembledTest test = assemble(); \
|
| test.setDqwordTo(T0, V0); \
|
| test.setDqwordTo(T1, V1); \
|
| test.run(); \
|
| \
|
| - ASSERT_EQ(packedAs<float>(V0) Op V1, test.Dst<Dqword>()) << TestString; \
|
| + ASSERT_EQ(packedAs<Type>(V0) Op V1, test.Dst<Dqword>()) << TestString; \
|
| ; \
|
| reset(); \
|
| } while (0)
|
|
|
| -#define TestCmppsOrdUnordXmmXmm(Dst, Src, C) \
|
| +#define TestCmppsOrdUnordXmmXmm(FloatSize, Dst, Value0, Src, Value1, C, Type) \
|
| do { \
|
| static constexpr char TestString[] = "(" #Src ", " #Dst ", " #C ")"; \
|
| const uint32_t T0 = allocateDqword(); \
|
| @@ -746,19 +748,20 @@ TEST_F(AssemblerX8664Test, Cmpps) {
|
| \
|
| __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \
|
| __ movups(Encoded_Xmm_##Src(), dwordAddress(T1)); \
|
| - __ cmpps(Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), Cond::Cmpps_##C); \
|
| + __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), Encoded_Xmm_##Src(), \
|
| + Cond::Cmpps_##C); \
|
| \
|
| AssembledTest test = assemble(); \
|
| test.setDqwordTo(T0, V0); \
|
| test.setDqwordTo(T1, V1); \
|
| test.run(); \
|
| \
|
| - ASSERT_EQ(packedAs<float>(V0).C(V1), test.Dst<Dqword>()) << TestString; \
|
| + ASSERT_EQ(packedAs<Type>(V0).C(V1), test.Dst<Dqword>()) << TestString; \
|
| ; \
|
| reset(); \
|
| } while (0)
|
|
|
| -#define TestCmppsOrdUnordXmmAddr(Dst, C) \
|
| +#define TestCmppsOrdUnordXmmAddr(FloatSize, Dst, Value0, Value1, C, Type) \
|
| do { \
|
| static constexpr char TestString[] = "(" #Dst ", " #C ")"; \
|
| const uint32_t T0 = allocateDqword(); \
|
| @@ -769,54 +772,91 @@ TEST_F(AssemblerX8664Test, Cmpps) {
|
| std::numeric_limits<float>::quiet_NaN()); \
|
| \
|
| __ movups(Encoded_Xmm_##Dst(), dwordAddress(T0)); \
|
| - __ cmpps(Encoded_Xmm_##Dst(), dwordAddress(T1), Cond::Cmpps_##C); \
|
| + __ cmpps(IceType_f##FloatSize, Encoded_Xmm_##Dst(), dwordAddress(T1), \
|
| + Cond::Cmpps_##C); \
|
| \
|
| AssembledTest test = assemble(); \
|
| test.setDqwordTo(T0, V0); \
|
| test.setDqwordTo(T1, V1); \
|
| test.run(); \
|
| \
|
| - ASSERT_EQ(packedAs<float>(V0).C(V1), test.Dst<Dqword>()) << TestString; \
|
| + ASSERT_EQ(packedAs<Type>(V0).C(V1), test.Dst<Dqword>()) << TestString; \
|
| ; \
|
| reset(); \
|
| } while (0)
|
|
|
| -#define TestCmpps(Dst, Src) \
|
| - do { \
|
| - TestCmppsXmmXmm(Dst, Src, eq, == ); \
|
| - TestCmppsXmmAddr(Dst, eq, == ); \
|
| - TestCmppsXmmXmm(Dst, Src, eq, == ); \
|
| - TestCmppsXmmAddr(Dst, eq, == ); \
|
| - TestCmppsXmmXmm(Dst, Src, eq, == ); \
|
| - TestCmppsXmmAddr(Dst, eq, == ); \
|
| - TestCmppsOrdUnordXmmXmm(Dst, Src, unord); \
|
| - TestCmppsOrdUnordXmmAddr(Dst, unord); \
|
| - TestCmppsXmmXmm(Dst, Src, eq, == ); \
|
| - TestCmppsXmmAddr(Dst, eq, == ); \
|
| - TestCmppsXmmXmm(Dst, Src, eq, == ); \
|
| - TestCmppsXmmAddr(Dst, eq, == ); \
|
| - TestCmppsXmmXmm(Dst, Src, eq, == ); \
|
| - TestCmppsXmmAddr(Dst, eq, == ); \
|
| - TestCmppsOrdUnordXmmXmm(Dst, Src, unord); \
|
| - TestCmppsOrdUnordXmmAddr(Dst, unord); \
|
| - } while (0)
|
| -
|
| - TestCmpps(xmm0, xmm1);
|
| - TestCmpps(xmm1, xmm2);
|
| - TestCmpps(xmm2, xmm3);
|
| - TestCmpps(xmm3, xmm4);
|
| - TestCmpps(xmm4, xmm5);
|
| - TestCmpps(xmm5, xmm6);
|
| - TestCmpps(xmm6, xmm7);
|
| - TestCmpps(xmm7, xmm8);
|
| - TestCmpps(xmm8, xmm9);
|
| - TestCmpps(xmm9, xmm10);
|
| - TestCmpps(xmm10, xmm11);
|
| - TestCmpps(xmm11, xmm12);
|
| - TestCmpps(xmm12, xmm13);
|
| - TestCmpps(xmm13, xmm14);
|
| - TestCmpps(xmm14, xmm15);
|
| - TestCmpps(xmm15, xmm0);
|
| +#define TestCmpps(FloatSize, Dst, Value0, Src, Value1, Type) \
|
| + do { \
|
| + TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \
|
| + TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \
|
| + TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \
|
| + TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \
|
| + TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \
|
| + TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \
|
| + TestCmppsOrdUnordXmmXmm(FloatSize, Dst, Value0, Src, Value1, unord, Type); \
|
| + TestCmppsOrdUnordXmmAddr(FloatSize, Dst, Value0, Value1, unord, Type); \
|
| + TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \
|
| + TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \
|
| + TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \
|
| + TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \
|
| + TestCmppsXmmXmm(FloatSize, Dst, Value0, Src, Value1, eq, ==, Type); \
|
| + TestCmppsXmmAddr(FloatSize, Dst, Value0, Value1, eq, ==, Type); \
|
| + if (FloatSize == 32) { \
|
| + TestCmppsOrdUnordXmmXmm( \
|
| + 32, Dst, (1.0, 1.0, std::numeric_limits<float>::quiet_NaN(), \
|
| + std::numeric_limits<float>::quiet_NaN()), \
|
| + Src, (1.0, std::numeric_limits<float>::quiet_NaN(), 1.0, \
|
| + std::numeric_limits<float>::quiet_NaN()), \
|
| + unord, Type); \
|
| + TestCmppsOrdUnordXmmAddr( \
|
| + 32, Dst, (1.0, 1.0, std::numeric_limits<float>::quiet_NaN(), \
|
| + std::numeric_limits<float>::quiet_NaN()), \
|
| + (1.0, std::numeric_limits<float>::quiet_NaN(), 1.0, \
|
| + std::numeric_limits<float>::quiet_NaN()), \
|
| + unord, Type); \
|
| + } else { \
|
| + TestCmppsOrdUnordXmmXmm(64, Dst, \
|
| + (1.0, std::numeric_limits<double>::quiet_NaN()), \
|
| + Src, (std::numeric_limits<double>::quiet_NaN(), \
|
| + std::numeric_limits<double>::quiet_NaN()), \
|
| + unord, Type); \
|
| + TestCmppsOrdUnordXmmXmm(64, Dst, (1.0, 1.0), Src, \
|
| + (1.0, std::numeric_limits<double>::quiet_NaN()), \
|
| + unord, Type); \
|
| + TestCmppsOrdUnordXmmAddr( \
|
| + 64, Dst, (1.0, std::numeric_limits<double>::quiet_NaN()), \
|
| + (std::numeric_limits<double>::quiet_NaN(), \
|
| + std::numeric_limits<double>::quiet_NaN()), \
|
| + unord, Type); \
|
| + TestCmppsOrdUnordXmmAddr( \
|
| + 64, Dst, (1.0, 1.0), \
|
| + (1.0, std::numeric_limits<double>::quiet_NaN()), unord, Type); \
|
| + } \
|
| + } while (0)
|
| +
|
| +#define TestCmppsSize(FloatSize, Value0, Value1, Type) \
|
| + do { \
|
| + TestCmpps(FloatSize, xmm0, Value0, xmm1, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm1, Value0, xmm2, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm2, Value0, xmm3, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm3, Value0, xmm4, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm4, Value0, xmm5, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm5, Value0, xmm6, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm6, Value0, xmm7, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm7, Value0, xmm8, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm8, Value0, xmm9, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm9, Value0, xmm10, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm10, Value0, xmm11, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm11, Value0, xmm12, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm12, Value0, xmm13, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm13, Value0, xmm14, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm14, Value0, xmm15, Value1, Type); \
|
| + TestCmpps(FloatSize, xmm15, Value0, xmm0, Value1, Type); \
|
| + } while (0)
|
| +
|
| + TestCmppsSize(32, (-1.0, 1.0, 3.14, 1024.5), (-1.0, 1.0, 3.14, 1024.5),
|
| + float);
|
| + TestCmppsSize(64, (1.0, -1000.0), (1.0, -1000.0), double);
|
|
|
| #undef TestCmpps
|
| #undef TestCmppsOrdUnordXmmAddr
|
|
|