Skip to content

Commit 2abc613

Browse files
miladfarcaV8 LUCI CQ
authored andcommitted
Fix scratch registers passed to mtvsrdd
`ra` cannot be r0 as it will be interpreted as Operand(0) Change-Id: Idce58191f9d3578dc91dc4aa3872a0bf2939d8b3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6936113 Commit-Queue: Milad Farazmand <[email protected]> Reviewed-by: Junliang Yan <[email protected]> Cr-Commit-Position: refs/heads/main@{#102388}
1 parent 25cf691 commit 2abc613

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

src/codegen/ppc/macro-assembler-ppc.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4000,6 +4000,7 @@ void MacroAssembler::I64x2Mul(Simd128Register dst, Simd128Register src1,
40004000
if (CpuFeatures::IsSupported(PPC_10_PLUS)) {
40014001
vmulld(dst, src1, src2);
40024002
} else {
4003+
DCHECK(scratch1 != r0);
40034004
Register scratch_1 = scratch1;
40044005
Register scratch_2 = scratch2;
40054006
for (int i = 0; i < 2; i++) {
@@ -4352,6 +4353,7 @@ void MacroAssembler::I8x16BitMask(Register dst, Simd128Register src,
43524353
if (CpuFeatures::IsSupported(PPC_10_PLUS)) {
43534354
vextractbm(dst, src);
43544355
} else {
4356+
DCHECK(scratch1 != r0);
43554357
mov(scratch1, Operand(0x8101820283038));
43564358
mov(scratch2, Operand(0x4048505860687078));
43574359
mtvsrdd(scratch3, scratch1, scratch2);
@@ -4404,6 +4406,7 @@ void MacroAssembler::I8x16Shuffle(Simd128Register dst, Simd128Register src1,
44044406
Simd128Register src2, uint64_t high,
44054407
uint64_t low, Register scratch1,
44064408
Register scratch2, Simd128Register scratch3) {
4409+
DCHECK(scratch2 != r0);
44074410
mov(scratch1, Operand(low));
44084411
mov(scratch2, Operand(high));
44094412
mtvsrdd(scratch3, scratch2, scratch1);
@@ -4692,6 +4695,7 @@ void MacroAssembler::S128Not(Simd128Register dst, Simd128Register src) {
46924695

46934696
void MacroAssembler::S128Const(Simd128Register dst, uint64_t high, uint64_t low,
46944697
Register scratch1, Register scratch2) {
4698+
DCHECK(scratch2 != r0);
46954699
mov(scratch1, Operand(low));
46964700
mov(scratch2, Operand(high));
46974701
mtvsrdd(dst, scratch2, scratch1);

src/compiler/backend/ppc/code-generator-ppc.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2789,7 +2789,7 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
27892789
break;
27902790
}
27912791
case kPPC_I8x16BitMask: {
2792-
__ I8x16BitMask(i.OutputRegister(), i.InputSimd128Register(0), r0, ip,
2792+
__ I8x16BitMask(i.OutputRegister(), i.InputSimd128Register(0), ip, r0,
27932793
kScratchSimd128Reg);
27942794
break;
27952795
}

src/wasm/baseline/ppc/liftoff-assembler-ppc-inl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2869,7 +2869,7 @@ void LiftoffAssembler::emit_v128_anytrue(LiftoffRegister dst,
28692869

28702870
void LiftoffAssembler::emit_i8x16_bitmask(LiftoffRegister dst,
28712871
LiftoffRegister src) {
2872-
I8x16BitMask(dst.gp(), src.fp().toSimd(), r0, ip, kScratchSimd128Reg);
2872+
I8x16BitMask(dst.gp(), src.fp().toSimd(), ip, r0, kScratchSimd128Reg);
28732873
}
28742874

28752875
void LiftoffAssembler::emit_s128_const(LiftoffRegister dst,

0 commit comments

Comments
 (0)