Skip to content

Commit 31154a5

Browse files
committed
deps: V8: cherry-pick 516b5d3f9cfe
Original commit message: Merged: [wasm-simd][x64] Check for register when emitting shuffles Some shuffles take have either register or memory operand for second input, but the codegen incorrectly assumes that it is always a register. Bug: v8:10824 (cherry picked from commit ddf30bea13902829eeb71aa0ec747155e27e5a68) Change-Id: I897c4290a8b91ff2ab839e98b16a9696c0bae511 No-Try: true No-Presubmit: true No-Tree-Checks: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2391280 Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/branch-heads/8.6@{#6} Cr-Branched-From: a64aed2333abf49e494d2a5ce24bbd14fff19f60-refs/heads/8.6.395@{#1} Cr-Branched-From: a626bc036236c9bf92ac7b87dc40c9e538b087e3-refs/heads/master@{#69472} Refs: v8/v8@516b5d3 PR-URL: #38275 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Shelley Vohr <codebytere@gmail.com>
1 parent de654bf commit 31154a5

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed

common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Reset this number to 0 on major V8 upgrades.
3838
# Increment by one for each non-official patch applied to deps/v8.
39-
'v8_embedder_string': '-node.29',
39+
'v8_embedder_string': '-node.30',
4040

4141
##### V8 defaults for Node.js #####
4242

deps/v8/src/codegen/x64/assembler-x64.h

+4
Original file line numberDiff line numberDiff line change
@@ -1562,6 +1562,10 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase {
15621562
vinstr(0x0F, dst, src1, src2, k66, k0F3A, kWIG);
15631563
emit(imm8);
15641564
}
1565+
void vpalignr(XMMRegister dst, XMMRegister src1, Operand src2, uint8_t imm8) {
1566+
vinstr(0x0F, dst, src1, src2, k66, k0F3A, kWIG);
1567+
emit(imm8);
1568+
}
15651569

15661570
void vps(byte op, XMMRegister dst, XMMRegister src1, XMMRegister src2);
15671571
void vps(byte op, XMMRegister dst, XMMRegister src1, Operand src2);

deps/v8/src/compiler/backend/x64/code-generator-x64.cc

+8-4
Original file line numberDiff line numberDiff line change
@@ -579,10 +579,14 @@ void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen,
579579
ASSEMBLE_SIMD_INSTR(opcode, dst, input_index); \
580580
} while (false)
581581

582-
#define ASSEMBLE_SIMD_IMM_SHUFFLE(opcode, imm) \
583-
do { \
584-
DCHECK_EQ(i.OutputSimd128Register(), i.InputSimd128Register(0)); \
585-
__ opcode(i.OutputSimd128Register(), i.InputSimd128Register(1), imm); \
582+
#define ASSEMBLE_SIMD_IMM_SHUFFLE(opcode, imm) \
583+
do { \
584+
DCHECK_EQ(i.OutputSimd128Register(), i.InputSimd128Register(0)); \
585+
if (instr->InputAt(1)->IsSimd128Register()) { \
586+
__ opcode(i.OutputSimd128Register(), i.InputSimd128Register(1), imm); \
587+
} else { \
588+
__ opcode(i.OutputSimd128Register(), i.InputOperand(1), imm); \
589+
} \
586590
} while (false)
587591

588592
#define ASSEMBLE_SIMD_ALL_TRUE(opcode) \

deps/v8/test/cctest/test-disasm-x64.cc

+1
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,7 @@ TEST(DisasmX64) {
813813
__ vpblendw(xmm1, xmm2, xmm3, 23);
814814
__ vpblendw(xmm1, xmm2, Operand(rbx, rcx, times_4, 10000), 23);
815815
__ vpalignr(xmm1, xmm2, xmm3, 4);
816+
__ vpalignr(xmm1, xmm2, Operand(rbx, rcx, times_4, 10000), 4);
816817

817818
__ vblendvpd(xmm1, xmm2, xmm3, xmm4);
818819

0 commit comments

Comments
 (0)