commit 5b63e963ea7196f6a8c46c375154e2b84f1564ba
parent 00386ce9150a46471be616262c2f06deaeb1d818
Author: Rong "Mantle" Bao <webmaster@csmantle.top>
Date: Fri, 12 Dec 2025 14:17:57 +0000
Bug 2004879 - [riscv64] Part 2: Rearrange parameters order of MacroAssemblerRiscv64::CalculateOffset. r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D275568
Diffstat:
2 files changed, 19 insertions(+), 20 deletions(-)
diff --git a/js/src/jit/riscv64/MacroAssembler-riscv64.cpp b/js/src/jit/riscv64/MacroAssembler-riscv64.cpp
@@ -4819,8 +4819,8 @@ int32_t MacroAssemblerRiscv64::GetOffset(int32_t offset, Label* L,
return offset;
}
-bool MacroAssemblerRiscv64::CalculateOffset(Label* L, int32_t* offset,
- OffsetSize bits) {
+bool MacroAssemblerRiscv64::CalculateOffset(Label* L, OffsetSize bits,
+ int32_t* offset) {
if (!is_near(L, bits)) return false;
*offset = GetOffset(*offset, L, bits);
return true;
@@ -4855,16 +4855,16 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L,
BlockTrampolinePoolScope block_trampoline_pool(this, 2, 1);
switch (cond) {
case Always:
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false;
Assembler::j(offset);
break;
case Equal:
// rs == rt
if (rt.is_reg() && rs == rt.rm()) {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false;
Assembler::j(offset);
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
Assembler::beq(rs, scratch, offset);
}
break;
@@ -4873,7 +4873,7 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L,
if (rt.is_reg() && rs == rt.rm()) {
break; // No code needs to be emitted
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
Assembler::bne(rs, scratch, offset);
}
break;
@@ -4884,17 +4884,17 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L,
if (rt.is_reg() && rs == rt.rm()) {
break; // No code needs to be emitted.
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
Assembler::bgt(rs, scratch, offset);
}
break;
case GreaterThanOrEqual:
// rs >= rt
if (rt.is_reg() && rs == rt.rm()) {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false;
Assembler::j(offset);
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
Assembler::bge(rs, scratch, offset);
}
break;
@@ -4903,17 +4903,17 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L,
if (rt.is_reg() && rs == rt.rm()) {
break; // No code needs to be emitted.
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
Assembler::blt(rs, scratch, offset);
}
break;
case LessThanOrEqual:
// rs <= rt
if (rt.is_reg() && rs == rt.rm()) {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false;
Assembler::j(offset);
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
Assembler::ble(rs, scratch, offset);
}
break;
@@ -4924,17 +4924,17 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L,
if (rt.is_reg() && rs == rt.rm()) {
break; // No code needs to be emitted.
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
Assembler::bgtu(rs, scratch, offset);
}
break;
case AboveOrEqual:
// rs >= rt
if (rt.is_reg() && rs == rt.rm()) {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false;
Assembler::j(offset);
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
Assembler::bgeu(rs, scratch, offset);
}
break;
@@ -4943,17 +4943,17 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L,
if (rt.is_reg() && rs == rt.rm()) {
break; // No code needs to be emitted.
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
bltu(rs, scratch, offset);
}
break;
case BelowOrEqual:
// rs <= rt
if (rt.is_reg() && rs == rt.rm()) {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false;
Assembler::j(offset);
} else {
- if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false;
+ if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false;
Assembler::bleu(rs, scratch, offset);
}
break;
diff --git a/js/src/jit/riscv64/MacroAssembler-riscv64.h b/js/src/jit/riscv64/MacroAssembler-riscv64.h
@@ -117,8 +117,7 @@ class MacroAssemblerRiscv64 : public Assembler {
nopAlign(alignment);
}
- // TODO(RISCV) Reorder parameters so out parameters come last.
- bool CalculateOffset(Label* L, int32_t* offset, OffsetSize bits);
+ bool CalculateOffset(Label* L, OffsetSize bits, int32_t* offset);
int32_t GetOffset(int32_t offset, Label* L, OffsetSize bits);
inline void GenPCRelativeJump(Register rd, int32_t imm32) {