summaryrefslogtreecommitdiffstats
path: root/llvm/include/llvm/Target/GenericOpcodes.td
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/include/llvm/Target/GenericOpcodes.td')
-rw-r--r--llvm/include/llvm/Target/GenericOpcodes.td22
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/include/llvm/Target/GenericOpcodes.td b/llvm/include/llvm/Target/GenericOpcodes.td
index 489b569d990..76e672a37af 100644
--- a/llvm/include/llvm/Target/GenericOpcodes.td
+++ b/llvm/include/llvm/Target/GenericOpcodes.td
@@ -482,6 +482,28 @@ def G_STORE : Instruction {
let mayStore = 1;
}
+// Generic atomic load. Expects a MachineMemOperand in addition to explicit
+// operands. Technically, we could have handled this as a G_LOAD, however we
+// decided to keep it separate on the basis that atomic loads tend to have
+// very different handling to non-atomic loads.
+def G_ATOMIC_LOAD : Instruction {
+ let OutOperandList = (outs type0:$dst);
+ let InOperandList = (ins ptype1:$addr);
+ let hasSideEffects = 0;
+ let mayLoad = 1;
+}
+
+// Generic atomic store. Expects a MachineMemOperand in addition to explicit
+// operands. Technically, we could have handled this as a G_STORE, however we
+// decided to keep it separate on the basis that atomic stores tend to have
+// very different handling to non-atomic stores.
+def G_ATOMIC_STORE : Instruction {
+ let OutOperandList = (outs);
+ let InOperandList = (ins type0:$src, ptype1:$addr);
+ let hasSideEffects = 0;
+ let mayStore = 1;
+}
+
// Generic atomic cmpxchg with internal success check. Expects a
// MachineMemOperand in addition to explicit operands.
def G_ATOMIC_CMPXCHG_WITH_SUCCESS : Instruction {
OpenPOWER on IntegriCloud