[llvm] [SPARC] Weaken emitted barriers for atomic ops (PR #154950)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 27 21:22:20 PDT 2025
================
@@ -261,6 +263,26 @@ void SparcAsmPrinter::LowerGETPCXAndEmitMCInsts(const MachineInstr *MI,
EmitADD(*OutStreamer, MCRegOP, RegO7, MCRegOP, STI);
}
+void SparcAsmPrinter::LowerV8Bar(const MachineInstr *MI,
+ const MCSubtargetInfo &STI) {
+ assert(!STI.hasFeature(Sparc::FeatureV9) &&
+ "V8BAR should not be emitted on V9 processors!");
+
+ MCInst STBARInst;
+ MCInst LDSTUBInst;
+
+ // Emit stbar; ldstub [%sp-1], %g0
+ // The sequence acts as a full barrier on V8 systems.
+ STBARInst.setOpcode(SP::STBAR);
+ LDSTUBInst.setOpcode(SP::LDSTUBri);
+ LDSTUBInst.addOperand(MCOperand::createReg(SP::G0));
+ LDSTUBInst.addOperand(MCOperand::createReg(SP::O6));
+ LDSTUBInst.addOperand(MCOperand::createImm(-1));
+
+ OutStreamer->emitInstruction(STBARInst, STI);
+ OutStreamer->emitInstruction(LDSTUBInst, STI);
----------------
arsenm wrote:
(that's assuming these actually need to be kept immediately sequential)
https://github.com/llvm/llvm-project/pull/154950
More information about the llvm-commits
mailing list