[llvm] [BOLT][RISCV] Fix atomic-add operand order (PR #215493)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 11 01:47:03 PDT 2026
https://github.com/Thrrreeee updated https://github.com/llvm/llvm-project/pull/215493
>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 1/2] [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,
>From e3cfcfc4a8bfbe482357ea44a176432076300a41 Mon Sep 17 00:00:00 2001
From: Thrrreeeee <1379998393 at qq.com>
Date: Tue, 11 Aug 2026 16:46:40 +0800
Subject: [PATCH 2/2] add test
---
bolt/test/runtime/RISCV/basic-instrumentation.s | 3 +++
1 file changed, 3 insertions(+)
diff --git a/bolt/test/runtime/RISCV/basic-instrumentation.s b/bolt/test/runtime/RISCV/basic-instrumentation.s
index e926f98cef43b..4b7b5189f741a 100644
--- a/bolt/test/runtime/RISCV/basic-instrumentation.s
+++ b/bolt/test/runtime/RISCV/basic-instrumentation.s
@@ -2,6 +2,9 @@
# RUN: %clang %cflags -Wl,-q -o %t.exe %s
# RUN: llvm-bolt --instrument --instrumentation-file=%t.fdata -o %t.instr %t.exe
+# RUN: llvm-objdump -d --no-show-raw-insn --disassemble-symbols=main %t.instr \
+# RUN: | FileCheck %s --check-prefix=INSTR
+# INSTR: amoadd.d zero, a1, (a0)
## Run the profiled binary and check that the profile reports at least that `f`
## has been called.
More information about the llvm-commits
mailing list