[AMDGPU] New llvm.amdgcn.ballot intrinsic
authorSebastian Neubauer <sebastian.neubauer@amd.com>
Thu, 5 Mar 2020 13:23:59 +0000 (14:23 +0100)
committerSebastian Neubauer <sebastian.neubauer@amd.com>
Tue, 31 Mar 2020 08:35:39 +0000 (10:35 +0200)
commit5d3a69feca127618d99c262d3805bd5a9a6ca09b
treee4435a0b150c8fc62e3fc7a080b30b0bf213d489
parent0b6f40da4582c74bf6b000f676d3376177761e4d
[AMDGPU] New llvm.amdgcn.ballot intrinsic

Add a new llvm.amdgcn.ballot intrinsic modeled on the ballot function
in GLSL and other shader languages. It returns a bitfield containing the
result of its boolean argument in all active lanes, and zero in all
inactive lanes.

This is intended to replace the existing llvm.amdgcn.icmp and
llvm.amdgcn.fcmp intrinsics after a suitable transition period.

Use the new intrinsic in the atomic optimizer pass.

Differential Revision: https://reviews.llvm.org/D65088
15 files changed:
llvm/include/llvm/IR/IntrinsicsAMDGPU.td
llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp
llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
llvm/lib/Target/AMDGPU/SIISelLowering.cpp
llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
llvm/test/Analysis/DivergenceAnalysis/AMDGPU/always_uniform.ll
llvm/test/CodeGen/AMDGPU/atomic_optimizations_buffer.ll
llvm/test/CodeGen/AMDGPU/atomic_optimizations_global_pointer.ll
llvm/test/CodeGen/AMDGPU/atomic_optimizations_local_pointer.ll
llvm/test/CodeGen/AMDGPU/atomic_optimizations_pixelshader.ll
llvm/test/CodeGen/AMDGPU/atomic_optimizations_raw_buffer.ll
llvm/test/CodeGen/AMDGPU/atomic_optimizations_struct_buffer.ll
llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ballot.i32.ll [new file with mode: 0644]
llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ballot.i64.ll [new file with mode: 0644]
llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll