Commit 87098192 authored by Deepti Gandluri's avatar Deepti Gandluri Committed by V8 LUCI CQ

[wasm-simd][Arm]Prototype Relaxed Rounding Q-format Multiplication

Bug: v8:12284
Change-Id: I9d8f9da8ed736d5119e7af4354e1ddd8a255713d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3640925
Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/main@{#80497}
parent 83f03eef
...@@ -2692,6 +2692,7 @@ void InstructionSelector::VisitWord32AtomicPairCompareExchange(Node* node) { ...@@ -2692,6 +2692,7 @@ void InstructionSelector::VisitWord32AtomicPairCompareExchange(Node* node) {
V(I16x8GeU, kArmI16x8GeU) \ V(I16x8GeU, kArmI16x8GeU) \
V(I16x8RoundingAverageU, kArmI16x8RoundingAverageU) \ V(I16x8RoundingAverageU, kArmI16x8RoundingAverageU) \
V(I16x8Q15MulRSatS, kArmI16x8Q15MulRSatS) \ V(I16x8Q15MulRSatS, kArmI16x8Q15MulRSatS) \
V(I16x8RelaxedQ15MulRS, kArmI16x8Q15MulRSatS) \
V(I8x16SConvertI16x8, kArmI8x16SConvertI16x8) \ V(I8x16SConvertI16x8, kArmI8x16SConvertI16x8) \
V(I8x16Add, kArmI8x16Add) \ V(I8x16Add, kArmI8x16Add) \
V(I8x16AddSatS, kArmI8x16AddSatS) \ V(I8x16AddSatS, kArmI8x16AddSatS) \
......
...@@ -2824,11 +2824,11 @@ void InstructionSelector::VisitI32x4RelaxedTruncF32x4U(Node* node) { ...@@ -2824,11 +2824,11 @@ void InstructionSelector::VisitI32x4RelaxedTruncF32x4U(Node* node) {
#endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM64 #endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM64
// && !V8_TARGET_ARCH_RISCV64 && !V8_TARGET_ARM // && !V8_TARGET_ARCH_RISCV64 && !V8_TARGET_ARM
#if !V8_TARGET_ARCH_ARM64 #if !V8_TARGET_ARCH_ARM64 && !V8_TARGET_ARCH_ARM
void InstructionSelector::VisitI16x8RelaxedQ15MulRS(Node* node) { void InstructionSelector::VisitI16x8RelaxedQ15MulRS(Node* node) {
UNIMPLEMENTED(); UNIMPLEMENTED();
} }
#endif // !V8_TARGET_ARCH_ARM64 #endif // !V8_TARGET_ARCH_ARM6 && !V8_TARGET_ARCH_ARM
void InstructionSelector::VisitFinishRegion(Node* node) { EmitIdentity(node); } void InstructionSelector::VisitFinishRegion(Node* node) { EmitIdentity(node); }
......
...@@ -3456,7 +3456,9 @@ void LiftoffAssembler::emit_i16x8_q15mulr_sat_s(LiftoffRegister dst, ...@@ -3456,7 +3456,9 @@ void LiftoffAssembler::emit_i16x8_q15mulr_sat_s(LiftoffRegister dst,
void LiftoffAssembler::emit_relaxed_i16x8_q15mulr_s(LiftoffRegister dst, void LiftoffAssembler::emit_relaxed_i16x8_q15mulr_s(LiftoffRegister dst,
LiftoffRegister src1, LiftoffRegister src1,
LiftoffRegister src2) { LiftoffRegister src2) {
bailout(kSimd, "emit_relaxed_i16x8_q15mulr_s"); vqrdmulh(NeonS16, liftoff::GetSimd128Register(dst),
liftoff::GetSimd128Register(src1),
liftoff::GetSimd128Register(src2));
} }
void LiftoffAssembler::emit_i8x16_shuffle(LiftoffRegister dst, void LiftoffAssembler::emit_i8x16_shuffle(LiftoffRegister dst,
......
...@@ -410,12 +410,12 @@ WASM_RELAXED_SIMD_TEST(I8x16RelaxedSwizzle) { ...@@ -410,12 +410,12 @@ WASM_RELAXED_SIMD_TEST(I8x16RelaxedSwizzle) {
#endif // V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 || #endif // V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 ||
// V8_TARGET_ARCH_RISCV64 // V8_TARGET_ARCH_RISCV64
#if V8_TARGET_ARCH_ARM64 #if V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_ARM
WASM_RELAXED_SIMD_TEST(I16x8RelaxedQ15MulRS) { WASM_RELAXED_SIMD_TEST(I16x8RelaxedQ15MulRS) {
RunI16x8BinOpTest<int16_t>(execution_tier, kExprI16x8RelaxedQ15MulRS, RunI16x8BinOpTest<int16_t>(execution_tier, kExprI16x8RelaxedQ15MulRS,
SaturateRoundingQMul<int16_t>); SaturateRoundingQMul<int16_t>);
} }
#endif // V8_TARGET_ARCH_ARM64 #endif // V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_ARM
#undef WASM_RELAXED_SIMD_TEST #undef WASM_RELAXED_SIMD_TEST
} // namespace test_run_wasm_relaxed_simd } // namespace test_run_wasm_relaxed_simd
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment