diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp b/llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp index 5f6ab24182d5e..16f27533a0c19 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp @@ -1527,6 +1527,12 @@ GCNTTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const { return IC.replaceInstUsesWith(II, ConstantInt::getFalse(II.getType())); break; } + case Intrinsic::amdgcn_make_buffer_rsrc: { + Value *Src = II.getArgOperand(0); + if (isa(Src)) + return IC.replaceInstUsesWith(II, PoisonValue::get(II.getType())); + return std::nullopt; + } case Intrinsic::amdgcn_raw_buffer_store_format: case Intrinsic::amdgcn_struct_buffer_store_format: case Intrinsic::amdgcn_raw_tbuffer_store: diff --git a/llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll b/llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll index 89c73c2161e35..9375d56e900e0 100644 --- a/llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll +++ b/llvm/test/Transforms/InstCombine/AMDGPU/amdgcn-intrinsics.ll @@ -6520,3 +6520,24 @@ define amdgpu_kernel void @ds_bpermute_uniform_lane(ptr addrspace(1) %out, i32 % store i32 %v, ptr addrspace(1) %out ret void } + +; -------------------------------------------------------------------- +; llvm.amdgcn.make.buffer.rsrc.p8 +; -------------------------------------------------------------------- + +define ptr addrspace(8) @make_buffer_rsrc_poison() { +; CHECK-LABEL: @make_buffer_rsrc_poison( +; CHECK-NEXT: ret ptr addrspace(8) poison +; + %rsrc = call ptr addrspace(8) @llvm.amdgcn.make.buffer.rsrc.p8.p1(ptr addrspace(1) poison, i16 0, i32 1234, i32 5678) + ret ptr addrspace(8) %rsrc +} + +define ptr addrspace(8) @make_buffer_rsrc_undef() { +; CHECK-LABEL: @make_buffer_rsrc_undef( +; CHECK-NEXT: [[RSRC:%.*]] = call ptr addrspace(8) @llvm.amdgcn.make.buffer.rsrc.p8.p1(ptr addrspace(1) undef, i16 0, i32 1234, i32 5678) +; CHECK-NEXT: ret ptr addrspace(8) [[RSRC]] +; + %rsrc = call ptr addrspace(8) @llvm.amdgcn.make.buffer.rsrc.p8.p1(ptr addrspace(1) undef, i16 0, i32 1234, i32 5678) + ret ptr addrspace(8) %rsrc +}