diff options
author | Daniil Fukalov <daniil.fukalov@amd.com> | 2018-01-17 14:05:05 +0000 |
---|---|---|
committer | Daniil Fukalov <daniil.fukalov@amd.com> | 2018-01-17 14:05:05 +0000 |
commit | d5fca554e2384fe99d4cc89829955fa0222d0b5f (patch) | |
tree | c90ba3b14de30ab717bb1bfef889707e19bab6a2 /llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp | |
parent | 6b65f7c3805ea1e49ee3354802ec6ecc9ca0de21 (diff) | |
download | bcm5719-llvm-d5fca554e2384fe99d4cc89829955fa0222d0b5f.tar.gz bcm5719-llvm-d5fca554e2384fe99d4cc89829955fa0222d0b5f.zip |
[AMDGPU] add LDS f32 intrinsics
added llvm.amdgcn.atomic.{add|min|max}.f32 intrinsics
to allow generate ds_{add|min|max}[_rtn]_f32 instructions
needed for OpenCL float atomics in LDS
Reviewed by: arsenm
Differential Revision: https://reviews.llvm.org/D37985
llvm-svn: 322656
Diffstat (limited to 'llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp b/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp index 7d66c0f7382..e4591649038 100644 --- a/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp +++ b/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp @@ -260,7 +260,10 @@ bool InferAddressSpaces::rewriteIntrinsicOperands(IntrinsicInst *II, switch (II->getIntrinsicID()) { case Intrinsic::amdgcn_atomic_inc: - case Intrinsic::amdgcn_atomic_dec:{ + case Intrinsic::amdgcn_atomic_dec: + case Intrinsic::amdgcn_atomic_fadd: + case Intrinsic::amdgcn_atomic_fmin: + case Intrinsic::amdgcn_atomic_fmax: { const ConstantInt *IsVolatile = dyn_cast<ConstantInt>(II->getArgOperand(4)); if (!IsVolatile || !IsVolatile->isZero()) return false; @@ -289,6 +292,9 @@ void InferAddressSpaces::collectRewritableIntrinsicOperands( case Intrinsic::objectsize: case Intrinsic::amdgcn_atomic_inc: case Intrinsic::amdgcn_atomic_dec: + case Intrinsic::amdgcn_atomic_fadd: + case Intrinsic::amdgcn_atomic_fmin: + case Intrinsic::amdgcn_atomic_fmax: appendsFlatAddressExpressionToPostorderStack(II->getArgOperand(0), PostorderStack, Visited); break; |