[llvm] [BOLT][RISCV] Fix atomic-add operand order (PR #215493)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 11 01:21:26 PDT 2026
https://github.com/Thrrreeee created https://github.com/llvm/llvm-project/pull/215493
Since https://github.com/llvm/llvm-project/pull/162411 changed the internal AMO operand order to rd, rs2 (value), rs1 (address), BOLT should construct the instruction as RegAtomic, RegCnt, RegTo.
>From 5599723aaf8ae114cca05d5a4abe6e1cdcf2e480 Mon Sep 17 00:00:00 2001
From: Thrrreeeee <1379998393 at qq.com>
Date: Wed, 5 Aug 2026 11:08:49 +0800
Subject: [PATCH] [BOLT][RISCV] Fix atomic-add operand order
---
bolt/lib/Target/RISCV/RISCVMCPlusBuilder.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/bolt/lib/Target/RISCV/RISCVMCPlusBuilder.cpp b/bolt/lib/Target/RISCV/RISCVMCPlusBuilder.cpp
index d1a0572277874..e2de69fa1875c 100644
--- a/bolt/lib/Target/RISCV/RISCVMCPlusBuilder.cpp
+++ b/bolt/lib/Target/RISCV/RISCVMCPlusBuilder.cpp
@@ -555,10 +555,11 @@ class RISCVMCPlusBuilder : public MCPlusBuilder {
void atomicAdd(MCInst &Inst, MCPhysReg RegAtomic, MCPhysReg RegTo,
MCPhysReg RegCnt) const {
+ // AMO operands are ordered as rd, rs2 (value), rs1 (address).
Inst = MCInstBuilder(atomicAddOpc())
.addReg(RegAtomic)
- .addReg(RegTo)
- .addReg(RegCnt);
+ .addReg(RegCnt)
+ .addReg(RegTo);
}
InstructionListType createRegCmpJE(MCPhysReg RegNo, const MCSymbol *Target,
More information about the llvm-commits
mailing list