Details
- Reviewers
rampitec
Diff Detail
Unit Tests
Time | Test | |
---|---|---|
70 ms | x64 debian > LLVM.Bindings/Go::go.test |
Event Timeline
llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp | ||
---|---|---|
900 | Why cannot we have a shared or private null pointer? |
llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp | ||
---|---|---|
900 | The query is for whether the particular address points into the aperture. The null pointer doesn't point at anything, so therefore it doesn't point into the shared/private segment |
llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp | ||
---|---|---|
900 | You can have a flat pointer pointing exactly into the address zero of LDS or private. Aren't these addresses also null? |
llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp | ||
---|---|---|
900 | I believe this is not correct and clearly change in behavior: define i1 @test(i32 addrspace(1)* %res) { %cast = addrspacecast i8 addrspace(5)* null to i8* %is_private = tail call i1 @llvm.amdgcn.is.private(i8* %cast) ret i1 %is_private } declare i1 @llvm.amdgcn.is.private(i8* nocapture) Right now it is true: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) v_mov_b32_e32 v0, 1 s_setpc_b64 s[30:31] |
LGTM
llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp | ||
---|---|---|
900 | Ah, OK. Checked definition of is_private and is_shared. They only take flat pointers, and flat null is not the same as private or shared null. |
Why cannot we have a shared or private null pointer?