diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-06-22 16:07:10 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-06-22 16:07:10 +0000 |
commit | f228c95f872fd229b551ebaf194313935d0e8bda (patch) | |
tree | dd573f0f61b6e392a933721bb14fa08055d86e5c /llvm/lib/Target/Hexagon/HexagonISelLowering.cpp | |
parent | 1ab7eac84bf2a63a6cdc9788f12c2c44a84abb6c (diff) | |
download | bcm5719-llvm-f228c95f872fd229b551ebaf194313935d0e8bda.tar.gz bcm5719-llvm-f228c95f872fd229b551ebaf194313935d0e8bda.zip |
[Hexagon] Handle expansion of cmpxchg
llvm-svn: 273432
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonISelLowering.cpp')
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonISelLowering.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp index b29a43d8aae..42feffc3201 100644 --- a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp +++ b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -1715,6 +1715,9 @@ HexagonTargetLowering::HexagonTargetLowering(const TargetMachine &TM, setMinFunctionAlignment(2); setStackPointerRegisterToSaveRestore(HRI.getStackRegister()); + setMaxAtomicSizeInBitsSupported(64); + setMinCmpXchgSizeInBits(32); + if (EnableHexSDNodeSched) setSchedulingPreference(Sched::VLIW); else @@ -3121,3 +3124,10 @@ bool HexagonTargetLowering::shouldExpandAtomicStoreInIR(StoreInst *SI) const { // Do not expand loads and stores that don't exceed 64 bits. return SI->getValueOperand()->getType()->getPrimitiveSizeInBits() > 64; } + +bool HexagonTargetLowering::shouldExpandAtomicCmpXchgInIR( + AtomicCmpXchgInst *AI) const { + const DataLayout &DL = AI->getModule()->getDataLayout(); + unsigned Size = DL.getTypeStoreSize(AI->getCompareOperand()->getType()); + return Size >= 4 && Size <= 8; +} |