diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-03-30 22:21:40 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-03-30 22:21:40 +0000 |
commit | 79f837c25462c9f80e243c7eebc8643d3b0b44e5 (patch) | |
tree | 7e2ebafd9887825b10bdc8009d0f964fbcec1ec0 /llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp | |
parent | 3a40a397c32ba2b7a2a12d065f4a9db7bdca15e0 (diff) | |
download | bcm5719-llvm-79f837c25462c9f80e243c7eebc8643d3b0b44e5.tar.gz bcm5719-llvm-79f837c25462c9f80e243c7eebc8643d3b0b44e5.zip |
AMDGPU: Add all atomicrmw fields to atomic.inc/dec
Add scope, order, isVolatile
llvm-svn: 299122
Diffstat (limited to 'llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp b/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp index 96da4bf2e0d..5d8701431a2 100644 --- a/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp +++ b/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp @@ -230,9 +230,15 @@ bool InferAddressSpaces::rewriteIntrinsicOperands(IntrinsicInst *II, Module *M = II->getParent()->getParent()->getParent(); switch (II->getIntrinsicID()) { - case Intrinsic::objectsize: case Intrinsic::amdgcn_atomic_inc: - case Intrinsic::amdgcn_atomic_dec: { + case Intrinsic::amdgcn_atomic_dec:{ + const ConstantInt *IsVolatile = dyn_cast<ConstantInt>(II->getArgOperand(4)); + if (!IsVolatile || !IsVolatile->isNullValue()) + return false; + + LLVM_FALLTHROUGH; + } + case Intrinsic::objectsize: { Type *DestTy = II->getType(); Type *SrcTy = NewV->getType(); Function *NewDecl = |