diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-11-13 22:55:05 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-11-13 22:55:05 +0000 |
| commit | 4eea3f3da34d174efa0ff5e50db8add4f132c852 (patch) | |
| tree | 58881ec703488c23af586182fda361cd25247318 /llvm/lib/Target/AMDGPU | |
| parent | a5888a730dfb4c11e4386ee56c65df65d706cf7e (diff) | |
| download | bcm5719-llvm-4eea3f3da34d174efa0ff5e50db8add4f132c852.tar.gz bcm5719-llvm-4eea3f3da34d174efa0ff5e50db8add4f132c852.zip | |
AMDGPU: Implement computeKnownBitsForTargetNode for mbcnt
llvm-svn: 318100
Diffstat (limited to 'llvm/lib/Target/AMDGPU')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp | 14 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h | 4 |
2 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp index bb08fd2f54a..0ec338e2e12 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp @@ -4084,6 +4084,20 @@ void AMDGPUTargetLowering::computeKnownBitsForTargetNode( Known.Zero.setHighBits(32 - MaxValBits); break; } + case ISD::INTRINSIC_WO_CHAIN: { + unsigned IID = cast<ConstantSDNode>(Op.getOperand(0))->getZExtValue(); + switch (IID) { + case Intrinsic::amdgcn_mbcnt_lo: + case Intrinsic::amdgcn_mbcnt_hi: { + // These return at most the wavefront size - 1. + unsigned Size = Op.getValueType().getSizeInBits(); + Known.Zero.setHighBits(Size - Subtarget->getWavefrontSizeLog2()); + break; + } + default: + break; + } + } } } diff --git a/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h b/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h index 2cc48a7f9f2..460ff82efc5 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h @@ -228,6 +228,10 @@ public: return WavefrontSize; } + unsigned getWavefrontSizeLog2() const { + return Log2_32(WavefrontSize); + } + int getLocalMemorySize() const { return LocalMemorySize; } |

