Skip to content

Commit e84503e

Browse files
arsenmsvkeerthy
authored andcommitted
AMDGPU: Make llvm.amdgcn.make.buffer.rsrc propagate poison (#141913)
1 parent 2fccbb4 commit e84503e

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1527,6 +1527,12 @@ GCNTTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const {
15271527
return IC.replaceInstUsesWith(II, ConstantInt::getFalse(II.getType()));
15281528
break;
15291529
}
1530+
case Intrinsic::amdgcn_make_buffer_rsrc: {
1531+
Value *Src = II.getArgOperand(0);
1532+
if (isa<PoisonValue>(Src))
1533+
return IC.replaceInstUsesWith(II, PoisonValue::get(II.getType()));
1534+
return std::nullopt;
1535+
}
15301536
case Intrinsic::amdgcn_raw_buffer_store_format:
15311537
case Intrinsic::amdgcn_struct_buffer_store_format:
15321538
case Intrinsic::amdgcn_raw_tbuffer_store:

llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6520,3 +6520,24 @@ define amdgpu_kernel void @ds_bpermute_uniform_lane(ptr addrspace(1) %out, i32 %
65206520
store i32 %v, ptr addrspace(1) %out
65216521
ret void
65226522
}
6523+
6524+
; --------------------------------------------------------------------
6525+
; llvm.amdgcn.make.buffer.rsrc.p8
6526+
; --------------------------------------------------------------------
6527+
6528+
define ptr addrspace(8) @make_buffer_rsrc_poison() {
6529+
; CHECK-LABEL: @make_buffer_rsrc_poison(
6530+
; CHECK-NEXT: ret ptr addrspace(8) poison
6531+
;
6532+
%rsrc = call ptr addrspace(8) @llvm.amdgcn.make.buffer.rsrc.p8.p1(ptr addrspace(1) poison, i16 0, i32 1234, i32 5678)
6533+
ret ptr addrspace(8) %rsrc
6534+
}
6535+
6536+
define ptr addrspace(8) @make_buffer_rsrc_undef() {
6537+
; CHECK-LABEL: @make_buffer_rsrc_undef(
6538+
; CHECK-NEXT: [[RSRC:%.*]] = call ptr addrspace(8) @llvm.amdgcn.make.buffer.rsrc.p8.p1(ptr addrspace(1) undef, i16 0, i32 1234, i32 5678)
6539+
; CHECK-NEXT: ret ptr addrspace(8) [[RSRC]]
6540+
;
6541+
%rsrc = call ptr addrspace(8) @llvm.amdgcn.make.buffer.rsrc.p8.p1(ptr addrspace(1) undef, i16 0, i32 1234, i32 5678)
6542+
ret ptr addrspace(8) %rsrc
6543+
}

0 commit comments

Comments
 (0)