summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2017-02-13 22:14:16 +0000
committerTim Northover <tnorthover@apple.com>2017-02-13 22:14:16 +0000
commit48dfa1a6ed81f0d0d52b8172f823bbaab27f11ed (patch)
tree49914b290eda0f5ab3fa7b8c6b1eeae5fe8dc09a /llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp
parentb73e309071e9289d4069fc059fae6a7131def805 (diff)
downloadbcm5719-llvm-48dfa1a6ed81f0d0d52b8172f823bbaab27f11ed.tar.gz
bcm5719-llvm-48dfa1a6ed81f0d0d52b8172f823bbaab27f11ed.zip
GlobalISel: represent atomic loads & stores via the MachineMemOperand.
Also make sure the AArch64 backend doesn't try to convert them into normal loads and stores. llvm-svn: 294993
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp')
-rw-r--r--llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp b/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp
index 42b4daf2318..6bced17d09d 100644
--- a/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp
+++ b/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp
@@ -691,6 +691,12 @@ bool AArch64InstructionSelector::select(MachineInstr &I) const {
return false;
}
+ auto &MemOp = **I.memoperands_begin();
+ if (MemOp.getOrdering() != AtomicOrdering::NotAtomic) {
+ DEBUG(dbgs() << "Atomic load/store not supported yet\n");
+ return false;
+ }
+
#ifndef NDEBUG
// Sanity-check the pointer register.
const unsigned PtrReg = I.getOperand(1).getReg();
OpenPOWER on IntegriCloud