Index: test/cctest/wasm/test-run-wasm-simd.cc |
diff --git a/test/cctest/wasm/test-run-wasm-simd.cc b/test/cctest/wasm/test-run-wasm-simd.cc |
index e2ec9e40928f26276f8ec72534ff234f883c7d60..a959e20121286b70ae2dba9650d67c46d1205035 100644 |
--- a/test/cctest/wasm/test-run-wasm-simd.cc |
+++ b/test/cctest/wasm/test-run-wasm-simd.cc |
@@ -28,12 +28,27 @@ typedef int8_t (*Int8UnOp)(int8_t); |
typedef int8_t (*Int8BinOp)(int8_t, int8_t); |
typedef int8_t (*Int8ShiftOp)(int8_t, int); |
-#if V8_TARGET_ARCH_ARM |
-// Floating point specific value functions, only used by ARM so far. |
+#if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_X64 |
+#define SIMD_LOWERING_TARGET 1 |
+#else |
+#define SIMD_LOWERING_TARGET 0 |
+#endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_X64 |
+ |
+#if V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET |
int32_t Equal(float a, float b) { return a == b ? 1 : 0; } |
int32_t NotEqual(float a, float b) { return a != b ? 1 : 0; } |
-#endif // V8_TARGET_ARCH_ARM |
+#endif // V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET |
+ |
+#if SIMD_LOWERING_TARGET |
+int32_t Less(float a, float b) { return a < b ? 1 : 0; } |
+ |
+int32_t LessEqual(float a, float b) { return a <= b ? 1 : 0; } |
+ |
+int32_t Greater(float a, float b) { return a > b ? 1 : 0; } |
+ |
+int32_t GreaterEqual(float a, float b) { return a >= b ? 1 : 0; } |
+#endif // SIMD_LOWERING_TARGET |
// Generic expected value functions. |
template <typename T> |
@@ -224,12 +239,6 @@ T Sqrt(T a) { |
} // namespace |
-#if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_X64 |
-#define SIMD_LOWERING_TARGET 1 |
-#else |
-#define SIMD_LOWERING_TARGET 0 |
-#endif // !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_X64 |
- |
#define WASM_SIMD_CHECK_LANE(TYPE, value, LANE_TYPE, lane_value, lane_index) \ |
WASM_IF(WASM_##LANE_TYPE##_NE(WASM_GET_LOCAL(lane_value), \ |
WASM_SIMD_##TYPE##_EXTRACT_LANE( \ |
@@ -492,7 +501,7 @@ WASM_EXEC_COMPILED_TEST(Simd_F32x4_Max) { |
} |
#endif // SIMD_LOWERING_TARGET |
-#if V8_TARGET_ARCH_ARM |
+#if V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET |
void RunF32x4CompareOpTest(WasmOpcode simd_op, FloatCompareOp expected_op) { |
FLAG_wasm_simd_prototype = true; |
WasmRunner<int32_t, float, float, int32_t> r(kExecuteCompiled); |
@@ -527,7 +536,22 @@ WASM_EXEC_COMPILED_TEST(F32x4Equal) { |
WASM_EXEC_COMPILED_TEST(F32x4NotEqual) { |
RunF32x4CompareOpTest(kExprF32x4Ne, NotEqual); |
} |
-#endif // V8_TARGET_ARCH_ARM |
+#endif // V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET |
+ |
+#if SIMD_LOWERING_TARGET |
+WASM_EXEC_COMPILED_TEST(F32x4LessThan) { |
+ RunF32x4CompareOpTest(kExprF32x4Lt, Less); |
+} |
+WASM_EXEC_COMPILED_TEST(F32x4LessThanOrEqual) { |
+ RunF32x4CompareOpTest(kExprF32x4Le, LessEqual); |
+} |
+WASM_EXEC_COMPILED_TEST(F32x4GreaterThan) { |
+ RunF32x4CompareOpTest(kExprF32x4Gt, Greater); |
+} |
+WASM_EXEC_COMPILED_TEST(F32x4GreaterThanOrEqual) { |
+ RunF32x4CompareOpTest(kExprF32x4Ge, GreaterEqual); |
+} |
+#endif // SIMD_LOWERING_TARGET |
WASM_EXEC_COMPILED_TEST(I32x4Splat) { |
FLAG_wasm_simd_prototype = true; |
@@ -894,9 +918,7 @@ WASM_EXEC_COMPILED_TEST(Ui32x4Min) { |
WASM_EXEC_COMPILED_TEST(Ui32x4Max) { |
RunI32x4BinOpTest(kExprI32x4MaxU, UnsignedMaximum); |
} |
-#endif // V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET |
-#if V8_TARGET_ARCH_ARM |
void RunI32x4CompareOpTest(WasmOpcode simd_op, Int32BinOp expected_op) { |
FLAG_wasm_simd_prototype = true; |
WasmRunner<int32_t, int32_t, int32_t, int32_t> r(kExecuteCompiled); |
@@ -957,9 +979,7 @@ WASM_EXEC_COMPILED_TEST(Ui32x4Less) { |
WASM_EXEC_COMPILED_TEST(Ui32x4LessEqual) { |
RunI32x4CompareOpTest(kExprI32x4LeU, UnsignedLessEqual); |
} |
-#endif // V8_TARGET_ARCH_ARM |
-#if V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET |
void RunI32x4ShiftOpTest(WasmOpcode simd_op, Int32ShiftOp expected_op, |
int shift) { |
FLAG_wasm_simd_prototype = true; |