[llvm] [AMDGPU] Accept extractelement of a widening cast when folding image ops to a16 (PR #208207)
Barbara Mitic via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 9 07:00:24 PDT 2026
================
@@ -4018,6 +4018,55 @@ define amdgpu_kernel void @image_load_a16_mip_2d_const_noopt(ptr addrspace(1) %o
ret void
}
+define amdgpu_kernel void @image_load_a16_mip_2d_sext_vec(ptr addrspace(1) %out, <8 x i32> inreg %rsrc, <2 x i16> %coord) {
+; CHECK-LABEL: @image_load_a16_mip_2d_sext_vec(
+; CHECK-NEXT: [[TMP1:%.*]] = extractelement <2 x i16> [[COORD:%.*]], i64 0
+; CHECK-NEXT: [[TMP2:%.*]] = extractelement <2 x i16> [[COORD]], i64 1
+; CHECK-NEXT: [[RES:%.*]] = call <4 x float> @llvm.amdgcn.image.load.2d.v4f32.i16.v8i32(i32 15, i16 [[TMP1]], i16 [[TMP2]], <8 x i32> [[RSRC:%.*]], i32 0, i32 0)
+; CHECK-NEXT: store <4 x float> [[RES]], ptr addrspace(1) [[OUT:%.*]], align 16
+; CHECK-NEXT: ret void
+;
+ %coord32 = sext <2 x i16> %coord to <2 x i32>
----------------
barbara-amd wrote:
Yes - sext/zext only differ for a negative i16 (encoding ≥ 0x8000), which is always OOB since max image dim ≤ 0x8000, so both fold identically.
https://github.com/llvm/llvm-project/pull/208207
More information about the llvm-commits
mailing list