[llvm] [LoongArch] Record the special AMO operand constraint with TableGen (PR #114398)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 5 23:02:03 PST 2024
================
@@ -710,15 +710,22 @@ class STORE_2RI14<bits<32> op>
"$rd, $rj, $imm14">;
} // hasSideEffects = 0, mayLoad = 0, mayStore = 1
-let hasSideEffects = 0, mayLoad = 1, mayStore = 1, Constraints = "@earlyclobber $rd" in
+let hasSideEffects = 0, mayLoad = 1, mayStore = 1,
+ IsSubjectToAMORdConstraint = 1 in {
class AM_3R<bits<32> op>
: Fmt3R<op, (outs GPR:$rd), (ins GPR:$rk, GPRMemAtomic:$rj),
- "$rd, $rk, $rj">;
+ "$rd, $rk, $rj"> {
+ let Constraints = "@earlyclobber $rd";
+}
-let hasSideEffects = 0, mayLoad = 1, mayStore = 1, Constraints = "$rd = $rd_wb" in
class AMCAS_3R<bits<32> op>
: Fmt3R<op, (outs GPR:$rd_wb), (ins GPR:$rd, GPR:$rk, GPRMemAtomic:$rj),
- "$rd, $rk, $rj">;
+ "$rd, $rk, $rj"> {
+ let Constraints = "$rd = $rd_wb";
----------------
heiher wrote:
Is `"@earlyclobber $rd"` needed here? (Expected value == Memory address?)
https://github.com/llvm/llvm-project/pull/114398
More information about the llvm-commits
mailing list