Chromium Code Reviews| Index: crosstest/test_arith_main.cpp |
| diff --git a/crosstest/test_arith_main.cpp b/crosstest/test_arith_main.cpp |
| index b032a5fcc06a0c4705f9b437ba11b704f8ee090f..fbcb1524a594716a9788daec31e888ccf88f2e8a 100644 |
| --- a/crosstest/test_arith_main.cpp |
| +++ b/crosstest/test_arith_main.cpp |
| @@ -61,12 +61,12 @@ void testsInt(size_t &TotalTests, size_t &Passes, size_t &Failures) { |
| FuncTypeSigned FuncSzSigned; |
| bool ExcludeDivExceptions; // for divide related tests |
| } Funcs[] = { |
| -#define X(inst, op, isdiv) \ |
| +#define X(inst, op, isdiv, isshift) \ |
| { STR(inst), test##inst, Subzero_::test##inst, NULL, NULL, isdiv } \ |
| , |
| UINTOP_TABLE |
| #undef X |
| -#define X(inst, op, isdiv) \ |
| +#define X(inst, op, isdiv, isshift) \ |
| { STR(inst), NULL, NULL, test##inst, Subzero_::test##inst, isdiv } \ |
| , |
| SINTOP_TABLE |
| @@ -172,17 +172,18 @@ void testsVecInt(size_t &TotalTests, size_t &Passes, size_t &Failures) { |
| FuncTypeSigned FuncLlcSigned; |
| FuncTypeSigned FuncSzSigned; |
| bool ExcludeDivExceptions; // for divide related tests |
| + bool MaskShiftOperations; // for shift related tests |
| } Funcs[] = { |
| -#define X(inst, op, isdiv) \ |
| +#define X(inst, op, isdiv, isshift) \ |
| { \ |
| - STR(inst), test##inst, Subzero_::test##inst, NULL, NULL, isdiv \ |
| + STR(inst), test##inst, Subzero_::test##inst, NULL, NULL, isdiv, isshift \ |
| } \ |
| , |
| UINTOP_TABLE |
| #undef X |
| -#define X(inst, op, isdiv) \ |
| +#define X(inst, op, isdiv, isshift) \ |
| { \ |
| - STR(inst), NULL, NULL, test##inst, Subzero_::test##inst, isdiv \ |
| + STR(inst), NULL, NULL, test##inst, Subzero_::test##inst, isdiv, isshift \ |
| } \ |
| , |
| SINTOP_TABLE |
| @@ -201,6 +202,11 @@ void testsVecInt(size_t &TotalTests, size_t &Passes, size_t &Failures) { |
| if (Funcs[f].ExcludeDivExceptions && |
| inputsMayTriggerException<ElementTypeSigned>(Element1, Element2)) |
| continue; |
| + if (Funcs[f].MaskShiftOperations) { |
| + unsigned Mask = CHAR_BIT * sizeof(ElementTypeUnsigned) - 1; |
| + Element1 &= Mask; |
|
Jim Stichnoth
2014/08/07 19:58:10
You only want to mask Element2, right?
wala
2014/08/07 20:30:35
Woops, done.
|
| + Element2 &= Mask; |
| + } |
| Value1[j] = Element1; |
| Value2[j] = Element2; |
| ++j; |
| @@ -360,37 +366,3 @@ int main(int argc, char **argv) { |
| return Failures; |
| } |
| -extern "C" { |
| -// Subzero helpers |
|
Jim Stichnoth
2014/08/07 19:58:10
Cool!
wala
2014/08/07 20:30:35
Thanks!
|
| - v4si32 Sz_shl_v4i32(v4si32 a, v4si32 b) { return a << b; } |
| - v4si32 Sz_ashr_v4i32(v4si32 a, v4si32 b) { return a >> b; } |
| - v4ui32 Sz_lshr_v4i32(v4ui32 a, v4ui32 b) { return a >> b; } |
| - v4si32 Sz_sdiv_v4i32(v4si32 a, v4si32 b) { return a / b; } |
| - v4ui32 Sz_udiv_v4i32(v4ui32 a, v4ui32 b) { return a / b; } |
| - v4si32 Sz_srem_v4i32(v4si32 a, v4si32 b) { return a % b; } |
| - v4ui32 Sz_urem_v4i32(v4ui32 a, v4ui32 b) { return a % b; } |
| - |
| - v8si16 Sz_shl_v8i16(v8si16 a, v8si16 b) { return a << b; } |
| - v8si16 Sz_ashr_v8i16(v8si16 a, v8si16 b) { return a >> b; } |
| - v8ui16 Sz_lshr_v8i16(v8ui16 a, v8ui16 b) { return a >> b; } |
| - v8si16 Sz_sdiv_v8i16(v8si16 a, v8si16 b) { return a / b; } |
| - v8ui16 Sz_udiv_v8i16(v8ui16 a, v8ui16 b) { return a / b; } |
| - v8si16 Sz_srem_v8i16(v8si16 a, v8si16 b) { return a % b; } |
| - v8ui16 Sz_urem_v8i16(v8ui16 a, v8ui16 b) { return a % b; } |
| - |
| - v16ui8 Sz_mul_v16i8(v16ui8 a, v16ui8 b) { return a * b; } |
| - v16si8 Sz_shl_v16i8(v16si8 a, v16si8 b) { return a << b; } |
| - v16si8 Sz_ashr_v16i8(v16si8 a, v16si8 b) { return a >> b; } |
| - v16ui8 Sz_lshr_v16i8(v16ui8 a, v16ui8 b) { return a >> b; } |
| - v16si8 Sz_sdiv_v16i8(v16si8 a, v16si8 b) { return a / b; } |
| - v16ui8 Sz_udiv_v16i8(v16ui8 a, v16ui8 b) { return a / b; } |
| - v16si8 Sz_srem_v16i8(v16si8 a, v16si8 b) { return a % b; } |
| - v16ui8 Sz_urem_v16i8(v16ui8 a, v16ui8 b) { return a % b; } |
| - |
| - v4f32 Sz_frem_v4f32(v4f32 a, v4f32 b) { |
| - v4f32 Result; |
| - for (int i = 0; i < 4; ++i) |
| - Result[i] = fmodf(a[i], b[i]); |
| - return Result; |
| - } |
| -} |