[wasm-relaxed-simd-arm] Prototype relaxed lane select
With the previous change to using the mask as the first input to the node, the lane select ARM codegen is equivalent to V128Select. Also enable cctests to run on ARM. Bug: v8:12284 Change-Id: I5572f4845307ff20cc2a0a58d3ccf162caa436b5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3500655 Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#79352}
This commit is contained in:
parent
3561874da1
commit
eda743d06b
@ -2891,6 +2891,22 @@ void InstructionSelector::VisitS128Select(Node* node) {
|
||||
g.UseRegister(node->InputAt(2)));
|
||||
}
|
||||
|
||||
void InstructionSelector::VisitI8x16RelaxedLaneSelect(Node* node) {
|
||||
VisitS128Select(node);
|
||||
}
|
||||
|
||||
void InstructionSelector::VisitI16x8RelaxedLaneSelect(Node* node) {
|
||||
VisitS128Select(node);
|
||||
}
|
||||
|
||||
void InstructionSelector::VisitI32x4RelaxedLaneSelect(Node* node) {
|
||||
VisitS128Select(node);
|
||||
}
|
||||
|
||||
void InstructionSelector::VisitI64x2RelaxedLaneSelect(Node* node) {
|
||||
VisitS128Select(node);
|
||||
}
|
||||
|
||||
#if V8_ENABLE_WEBASSEMBLY
|
||||
namespace {
|
||||
|
||||
|
@ -2796,7 +2796,7 @@ void InstructionSelector::VisitF32x4Qfms(Node* node) { UNIMPLEMENTED(); }
|
||||
// !V8_TARGET_ARCH_RISCV64
|
||||
|
||||
#if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM64 && \
|
||||
!V8_TARGET_ARCH_RISCV64
|
||||
!V8_TARGET_ARCH_RISCV64 && !V8_TARGET_ARCH_ARM
|
||||
void InstructionSelector::VisitI8x16RelaxedLaneSelect(Node* node) {
|
||||
UNIMPLEMENTED();
|
||||
}
|
||||
@ -2809,6 +2809,11 @@ void InstructionSelector::VisitI32x4RelaxedLaneSelect(Node* node) {
|
||||
void InstructionSelector::VisitI64x2RelaxedLaneSelect(Node* node) {
|
||||
UNIMPLEMENTED();
|
||||
}
|
||||
#endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM64
|
||||
// && !V8_TARGET_ARCH_RISCV64 && !V8_TARGET_ARM
|
||||
|
||||
#if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM64 && \
|
||||
!V8_TARGET_ARCH_RISCV64
|
||||
void InstructionSelector::VisitF32x4RelaxedMin(Node* node) { UNIMPLEMENTED(); }
|
||||
void InstructionSelector::VisitF32x4RelaxedMax(Node* node) { UNIMPLEMENTED(); }
|
||||
void InstructionSelector::VisitF64x2RelaxedMin(Node* node) { UNIMPLEMENTED(); }
|
||||
|
@ -235,7 +235,7 @@ WASM_RELAXED_SIMD_TEST(F32x4RecipSqrtApprox) {
|
||||
}
|
||||
|
||||
#if V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 || \
|
||||
V8_TARGET_ARCH_RISCV64
|
||||
V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_RISCV64
|
||||
namespace {
|
||||
// Helper to convert an array of T into an array of uint8_t to be used a v128
|
||||
// constants.
|
||||
@ -314,7 +314,11 @@ WASM_RELAXED_SIMD_TEST(I64x2RelaxedLaneSelect) {
|
||||
RelaxedLaneSelectTest<uint64_t, kElems>(execution_tier, v1, v2, s, expected,
|
||||
kExprI64x2RelaxedLaneSelect);
|
||||
}
|
||||
#endif // V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 ||
|
||||
// V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_RISCV64
|
||||
|
||||
#if V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 || \
|
||||
V8_TARGET_ARCH_RISCV64
|
||||
WASM_RELAXED_SIMD_TEST(F32x4RelaxedMin) {
|
||||
RunF32x4BinOpTest(execution_tier, kExprF32x4RelaxedMin, Minimum);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user