[llvm] [GlobalIsel] Combine G_UNMERGE_VALUES from opaque vectors into scalars (PR #113040)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 19 07:35:52 PDT 2024


================
@@ -34,10 +34,14 @@ define amdgpu_ps <4 x float> @sample_d_1d_g16_a16(<8 x i32> inreg %rsrc, <4 x i3
   ; GFX10-NEXT:   [[BUILD_VECTOR4:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC2]](s16), [[DEF]](s16)
   ; GFX10-NEXT:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.1d), 15, [[BUILD_VECTOR2]](<2 x s16>), [[BUILD_VECTOR3]](<2 x s16>), [[BUILD_VECTOR4]](<2 x s16>), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>), addrspace 8)
   ; GFX10-NEXT:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
-  ; GFX10-NEXT:   $vgpr0 = COPY [[UV]](s32)
-  ; GFX10-NEXT:   $vgpr1 = COPY [[UV1]](s32)
-  ; GFX10-NEXT:   $vgpr2 = COPY [[UV2]](s32)
-  ; GFX10-NEXT:   $vgpr3 = COPY [[UV3]](s32)
+  ; GFX10-NEXT:   [[COPY15:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
+  ; GFX10-NEXT:   [[COPY16:%[0-9]+]]:_(s32) = COPY [[UV1]](s32)
+  ; GFX10-NEXT:   [[COPY17:%[0-9]+]]:_(s32) = COPY [[UV2]](s32)
+  ; GFX10-NEXT:   [[COPY18:%[0-9]+]]:_(s32) = COPY [[UV3]](s32)
+  ; GFX10-NEXT:   $vgpr0 = COPY [[COPY15]](s32)
+  ; GFX10-NEXT:   $vgpr1 = COPY [[COPY16]](s32)
+  ; GFX10-NEXT:   $vgpr2 = COPY [[COPY17]](s32)
+  ; GFX10-NEXT:   $vgpr3 = COPY [[COPY18]](s32)
----------------
arsenm wrote:

Ugly avoid able copy 

https://github.com/llvm/llvm-project/pull/113040


More information about the llvm-commits mailing list