tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 0e78108a322692ec0de832b331742adee9271ec0
parent 56c5cc20609ed6ff5c4c3af310755770b42ee6fc
Author: André Bargull <andre.bargull@gmail.com>
Date:   Mon, 20 Oct 2025 08:20:22 +0000

Bug 1993951 - Part 2: Use MacroAssembler::copySign{Float32,Double} on riscv64. r=spidermonkey-reviewers,iain

Differential Revision: https://phabricator.services.mozilla.com/D268367

Diffstat:
Mjs/src/jit/MacroAssembler.h | 3++-
Mjs/src/jit/riscv64/CodeGenerator-riscv64.cpp | 4++--
Mjs/src/jit/riscv64/Lowering-riscv64.cpp | 3---
Mjs/src/jit/riscv64/MacroAssembler-riscv64.cpp | 4++++
4 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/js/src/jit/MacroAssembler.h b/js/src/jit/MacroAssembler.h @@ -1328,7 +1328,8 @@ class MacroAssembler : public MacroAssemblerSpecific { void copySignDouble(FloatRegister lhs, FloatRegister rhs, FloatRegister output) PER_SHARED_ARCH; void copySignFloat32(FloatRegister lhs, FloatRegister rhs, - FloatRegister output) DEFINED_ON(arm, arm64, x86_shared); + FloatRegister output) + DEFINED_ON(arm, arm64, riscv64, x86_shared); // Returns a random double in range [0, 1) in |dest|. The |rng| register must // hold a pointer to a mozilla::non_crypto::XorShift128PlusRNG. diff --git a/js/src/jit/riscv64/CodeGenerator-riscv64.cpp b/js/src/jit/riscv64/CodeGenerator-riscv64.cpp @@ -1674,7 +1674,7 @@ void CodeGenerator::visitCopySignF(LCopySignF* ins) { FloatRegister rhs = ToFloatRegister(ins->rhs()); FloatRegister output = ToFloatRegister(ins->output()); - masm.fsgnj_s(output, lhs, rhs); + masm.copySignFloat32(lhs, rhs, output); } void CodeGenerator::visitCopySignD(LCopySignD* ins) { @@ -1682,7 +1682,7 @@ void CodeGenerator::visitCopySignD(LCopySignD* ins) { FloatRegister rhs = ToFloatRegister(ins->rhs()); FloatRegister output = ToFloatRegister(ins->output()); - masm.fsgnj_d(output, lhs, rhs); + masm.copySignDouble(lhs, rhs, output); } void CodeGenerator::visitTestDAndBranch(LTestDAndBranch* test) { diff --git a/js/src/jit/riscv64/Lowering-riscv64.cpp b/js/src/jit/riscv64/Lowering-riscv64.cpp @@ -552,9 +552,6 @@ void LIRGenerator::visitCopySign(MCopySign* ins) { lir = new (alloc()) LCopySignF(); } - lir->setTemp(0, temp()); - lir->setTemp(1, temp()); - lir->setOperand(0, useRegisterAtStart(lhs)); lir->setOperand(1, useRegister(rhs)); defineReuseInput(lir, ins, 0); diff --git a/js/src/jit/riscv64/MacroAssembler-riscv64.cpp b/js/src/jit/riscv64/MacroAssembler-riscv64.cpp @@ -3521,6 +3521,10 @@ void MacroAssembler::copySignDouble(FloatRegister lhs, FloatRegister rhs, FloatRegister output) { fsgnj_d(output, lhs, rhs); } +void MacroAssembler::copySignFloat32(FloatRegister lhs, FloatRegister rhs, + FloatRegister output) { + fsgnj_s(output, lhs, rhs); +} void MacroAssembler::enterFakeExitFrameForWasm(Register cxreg, Register scratch, ExitFrameType type) { enterFakeExitFrame(cxreg, scratch, type);