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?