1# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX12 %s 2 3--- 4# GFX12-LABEL: name: image_sample_l_merged_v1v3 5# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 6# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 7# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 8 9name: image_sample_l_merged_v1v3 10body: | 11 bb.0.entry: 12 %0:sgpr_64 = COPY $sgpr0_sgpr1 13 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 14 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 15 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 16 %4:vgpr_32 = COPY %2.sub3 17 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 18 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 19 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 20... 21--- 22# GFX12-LABEL: name: image_sample_l_merged_v1v3_reversed 23# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4) 24# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub3 25# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub0_sub1_sub2 26 27name: image_sample_l_merged_v1v3_reversed 28body: | 29 bb.0.entry: 30 %0:sgpr_64 = COPY $sgpr0_sgpr1 31 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 32 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 33 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 34 %4:vgpr_32 = COPY %2.sub3 35 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 36 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 37 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 38... 39--- 40 41# GFX12-LABEL: name: image_sample_l_merged_v2v2 42# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4) 43# GFX12: %{{[0-9]+}}:vreg_64 = COPY %8.sub0_sub1 44# GFX12: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub2_sub3 45 46name: image_sample_l_merged_v2v2 47body: | 48 bb.0.entry: 49 %0:sgpr_64 = COPY $sgpr0_sgpr1 50 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 51 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 52 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 53 %4:vgpr_32 = COPY %2.sub3 54 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 55 %6:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 3, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4) 56 %7:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 12, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4) 57... 58--- 59 60# GFX12-LABEL: name: image_sample_l_merged_v2v2_reversed 61# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4) 62# GFX12: %{{[0-9]+}}:vreg_64 = COPY %8.sub2_sub3 63# GFX12: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub0_sub1 64 65name: image_sample_l_merged_v2v2_reversed 66body: | 67 bb.0.entry: 68 %0:sgpr_64 = COPY $sgpr0_sgpr1 69 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 70 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 71 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 72 %4:vgpr_32 = COPY %2.sub3 73 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 74 %6:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 12, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4) 75 %7:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 3, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4) 76... 77--- 78 79# GFX12-LABEL: name: image_sample_l_merged_v3v1 80# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4) 81# GFX12: %{{[0-9]+}}:vreg_96 = COPY %8.sub0_sub1_sub2 82# GFX12: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub3 83 84name: image_sample_l_merged_v3v1 85body: | 86 bb.0.entry: 87 %0:sgpr_64 = COPY $sgpr0_sgpr1 88 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 89 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 90 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 91 %4:vgpr_32 = COPY %2.sub3 92 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 93 %6:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 94 %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 95... 96--- 97 98# GFX12-LABEL: name: image_sample_l_merged_v3v1_reversed 99# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 100# GFX12: %{{[0-9]+}}:vreg_96 = COPY %8.sub1_sub2_sub3 101# GFX12: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub0 102 103name: image_sample_l_merged_v3v1_reversed 104body: | 105 bb.0.entry: 106 %0:sgpr_64 = COPY $sgpr0_sgpr1 107 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 108 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 109 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 110 %4:vgpr_32 = COPY %2.sub3 111 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 112 %6:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 113 %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 114... 115--- 116 117# GFX12-LABEL: name: image_sample_l_divided_merged 118# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4) 119 120name: image_sample_l_divided_merged 121body: | 122 bb.0.entry: 123 %0:sgpr_64 = COPY $sgpr0_sgpr1 124 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 125 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 126 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 127 %4:vgpr_32 = COPY %2.sub3 128 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 129 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 130 %7:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 131 %8:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 132 %9:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %7:vgpr_32, %7:vgpr_32, %7:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 133 %10:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 134 %11:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 135... 136--- 137 138# GFX12-LABEL: name: image_sample_l_divided_not_merged 139# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 140# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 141 142name: image_sample_l_divided_not_merged 143body: | 144 bb.0.entry: 145 %0:sgpr_64 = COPY $sgpr0_sgpr1 146 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 147 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 148 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 149 %4:vreg_128 = COPY %2 150 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 151 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 152 IMAGE_STORE_V4_V2_gfx12 %4:vreg_128, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, 15, 1, 0, 0, 0, 0, 0, implicit $exec :: (store 16) 153 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 154... 155--- 156 157# GFX12-LABEL: name: image_sample_l_dmask_overlapped_not_merged 158# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 159# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 160 161name: image_sample_l_dmask_overlapped_not_merged 162body: | 163 bb.0.entry: 164 %0:sgpr_64 = COPY $sgpr0_sgpr1 165 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 166 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 167 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 168 %4:vgpr_32 = COPY %2.sub3 169 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 170 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 171 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 172... 173--- 174 175# GFX12-LABEL: name: image_sample_l_dmask_not_disjoint_not_merged 176# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 177# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 11, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 178 179name: image_sample_l_dmask_not_disjoint_not_merged 180body: | 181 bb.0.entry: 182 %0:sgpr_64 = COPY $sgpr0_sgpr1 183 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 184 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 185 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 186 %4:vgpr_32 = COPY %2.sub3 187 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 188 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 189 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 11, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 190... 191--- 192 193# GFX12-LABEL: name: image_sample_l_not_merged_0 194# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 195# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 196 197name: image_sample_l_not_merged_0 198body: | 199 bb.0.entry: 200 %0:sgpr_64 = COPY $sgpr0_sgpr1 201 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 202 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 203 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 204 %4:vgpr_32 = COPY %2.sub3 205 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 206 %6:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 1, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 207 %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 208 %8:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 209... 210--- 211 212# GFX12-LABEL: name: image_sample_l_not_merged_1 213# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %6, %6, %6, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 214# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %4, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 215 216name: image_sample_l_not_merged_1 217body: | 218 bb.0.entry: 219 %0:sgpr_64 = COPY $sgpr0_sgpr1 220 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 221 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 222 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 223 %4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 224 %5:vgpr_32 = COPY %2.sub3 225 %6:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 226 %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %6, %6, %6, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 227 %8:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %4, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 228... 229--- 230 231# GFX12-LABEL: name: image_sample_l_not_merged_2 232# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %6, %6, %6, %4, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 233# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %4, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 234 235name: image_sample_l_not_merged_2 236body: | 237 bb.0.entry: 238 %0:sgpr_64 = COPY $sgpr0_sgpr1 239 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 240 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 241 %3:sgpr_128 = COPY $sgpr92_sgpr93_sgpr94_sgpr95 242 %4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 243 %5:vgpr_32 = COPY %2.sub3 244 %6:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 245 %7:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %6, %6, %6, %4, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 246 %8:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %6, %6, %6, %4, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 247... 248--- 249 250# GFX12-LABEL: name: image_sample_l_not_merged_3 251# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 252# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 253 254name: image_sample_l_not_merged_3 255body: | 256 bb.0.entry: 257 %0:sgpr_64 = COPY $sgpr0_sgpr1 258 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 259 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 260 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 261 %4:vgpr_32 = COPY %2.sub3 262 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 263 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 264 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 265... 266--- 267 268# GFX12-LABEL: name: image_sample_l_not_merged_4 269# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 270# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 271 272name: image_sample_l_not_merged_4 273body: | 274 bb.0.entry: 275 %0:sgpr_64 = COPY $sgpr0_sgpr1 276 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 277 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 278 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 279 %4:vgpr_32 = COPY %2.sub3 280 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 281 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 282 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 283... 284--- 285 286# GFX12-LABEL: name: image_sample_l_not_merged_5 287# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 288# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 289 290name: image_sample_l_not_merged_5 291body: | 292 bb.0.entry: 293 %0:sgpr_64 = COPY $sgpr0_sgpr1 294 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 295 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 296 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 297 %4:vgpr_32 = COPY %2.sub3 298 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 299 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 300 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 301... 302--- 303 304# GFX12-LABEL: name: image_sample_l_not_merged_6 305# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 306# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 307 308name: image_sample_l_not_merged_6 309body: | 310 bb.0.entry: 311 %0:sgpr_64 = COPY $sgpr0_sgpr1 312 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 313 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 314 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 315 %4:vgpr_32 = COPY %2.sub3 316 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 317 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 318 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 319... 320--- 321 322# GFX12-LABEL: name: image_sample_l_not_merged_7 323# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V2_gfx12 %5, %5, %3, %2, 8, 1, -1, 0, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 324# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 325 326name: image_sample_l_not_merged_7 327body: | 328 bb.0.entry: 329 %0:sgpr_64 = COPY $sgpr0_sgpr1 330 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 331 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 332 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 333 %4:vgpr_32 = COPY %2.sub3 334 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 335 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V2_gfx12 %5, %5, %3, %2, 8, 1, -1, 0, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 336 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 337... 338--- 339 340# GFX12-LABEL: name: image_sample_l_not_merged_8 341# GFX12: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 1, 0, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4) 342# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 343 344name: image_sample_l_not_merged_8 345body: | 346 bb.0.entry: 347 %0:sgpr_64 = COPY $sgpr0_sgpr1 348 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 349 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 350 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 351 %4:vgpr_32 = COPY %2.sub3 352 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 353 %6:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 1, 0, 0, implicit $exec :: (dereferenceable load 8, addrspace 4) 354 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 355... 356--- 357 358# GFX12-LABEL: name: image_sample_l_not_merged_9 359# GFX12: %{{[0-9]+}}:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 1, 0, implicit $exec :: (dereferenceable load (s64), addrspace 4) 360# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 361 362name: image_sample_l_not_merged_9 363body: | 364 bb.0.entry: 365 %0:sgpr_64 = COPY $sgpr0_sgpr1 366 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 367 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 368 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 369 %4:vgpr_32 = COPY %2.sub3 370 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 371 %6:vreg_64 = IMAGE_SAMPLE_L_V2_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 1, 0, implicit $exec :: (dereferenceable load 8, addrspace 4) 372 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 373... 374--- 375 376# GFX12-LABEL: name: image_sample_l_not_merged_10 377# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4) 378# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4) 379 380name: image_sample_l_not_merged_10 381body: | 382 bb.0.entry: 383 %0:sgpr_64 = COPY $sgpr0_sgpr1 384 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 385 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 386 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 387 %4:vgpr_32 = COPY %2.sub3 388 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 389 %6:vgpr_32 = IMAGE_SAMPLE_L_V1_V3_gfx12 %5, %5, %5, %3, %2, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 390 %7:vreg_96 = IMAGE_SAMPLE_L_V3_V3_gfx12 %5, %5, %5, %3, %2, 7, 1, -1, 0, 0, 0, 0, 0, 1, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 391... 392--- 393 394# GFX12-LABEL: name: image_sample_merged_v1v3 395# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_V4_V2_gfx12 %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 396# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 397# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 398 399name: image_sample_merged_v1v3 400body: | 401 bb.0.entry: 402 %0:sgpr_64 = COPY $sgpr0_sgpr1 403 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 404 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 405 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 406 %4:vgpr_32 = COPY %2.sub3 407 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 408 %6:vgpr_32 = IMAGE_SAMPLE_V1_V2_gfx12 %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 409 %7:vreg_96 = IMAGE_SAMPLE_V3_V2_gfx12 %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 410... 411--- 412 413# GFX12-LABEL: name: image_sample_b_merged_v1v3 414# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 415# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 416# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 417 418name: image_sample_b_merged_v1v3 419body: | 420 bb.0.entry: 421 %0:sgpr_64 = COPY $sgpr0_sgpr1 422 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 423 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 424 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 425 %4:vgpr_32 = COPY %2.sub3 426 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 427 %6:vgpr_32 = IMAGE_SAMPLE_B_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 428 %7:vreg_96 = IMAGE_SAMPLE_B_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 429... 430--- 431 432# GFX12-LABEL: name: image_sample_b_cl_merged_v1v3 433# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 434# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 435# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 436 437name: image_sample_b_cl_merged_v1v3 438body: | 439 bb.0.entry: 440 %0:sgpr_64 = COPY $sgpr0_sgpr1 441 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 442 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 443 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 444 %4:vgpr_32 = COPY %2.sub3 445 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 446 %6:vgpr_32 = IMAGE_SAMPLE_B_CL_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 447 %7:vreg_96 = IMAGE_SAMPLE_B_CL_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 448... 449--- 450 451# GFX12-LABEL: name: image_sample_b_cl_o_merged_v1v3 452# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_CL_O_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 453# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 454# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 455 456name: image_sample_b_cl_o_merged_v1v3 457body: | 458 bb.0.entry: 459 %0:sgpr_64 = COPY $sgpr0_sgpr1 460 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 461 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 462 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 463 %4:vgpr_32 = COPY %2.sub3 464 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 465 %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1 466 %7:vgpr_32 = IMAGE_SAMPLE_B_CL_O_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 467 %8:vreg_96 = IMAGE_SAMPLE_B_CL_O_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 468... 469--- 470 471# GFX12-LABEL: name: image_sample_b_o_merged_v1v3 472# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_B_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 473# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 474# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 475 476name: image_sample_b_o_merged_v1v3 477body: | 478 bb.0.entry: 479 %0:sgpr_64 = COPY $sgpr0_sgpr1 480 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 481 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 482 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 483 %4:vgpr_32 = COPY %2.sub3 484 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 485 %6:vgpr_32 = IMAGE_SAMPLE_B_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 486 %7:vreg_96 = IMAGE_SAMPLE_B_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 487... 488--- 489 490# GFX12-LABEL: name: image_sample_c_merged_v1v3 491# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 492# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 493# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 494 495name: image_sample_c_merged_v1v3 496body: | 497 bb.0.entry: 498 %0:sgpr_64 = COPY $sgpr0_sgpr1 499 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 500 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 501 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 502 %4:vgpr_32 = COPY %2.sub3 503 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 504 %6:vgpr_32 = IMAGE_SAMPLE_C_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 505 %7:vreg_96 = IMAGE_SAMPLE_C_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 506... 507--- 508 509# GFX12-LABEL: name: image_sample_cl_merged_v1v3 510# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 511# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 512# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 513 514name: image_sample_cl_merged_v1v3 515body: | 516 bb.0.entry: 517 %0:sgpr_64 = COPY $sgpr0_sgpr1 518 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 519 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 520 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 521 %4:vgpr_32 = COPY %2.sub3 522 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 523 %6:vgpr_32 = IMAGE_SAMPLE_CL_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 524 %7:vreg_96 = IMAGE_SAMPLE_CL_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 525... 526--- 527 528# GFX12-LABEL: name: image_sample_cl_o_merged_v1v3 529# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_CL_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 530# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 531# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 532 533name: image_sample_cl_o_merged_v1v3 534body: | 535 bb.0.entry: 536 %0:sgpr_64 = COPY $sgpr0_sgpr1 537 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 538 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 539 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 540 %4:vgpr_32 = COPY %2.sub3 541 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 542 %6:vgpr_32 = IMAGE_SAMPLE_CL_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 543 %7:vreg_96 = IMAGE_SAMPLE_CL_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 544... 545--- 546 547# GFX12-LABEL: name: image_sample_c_b_merged_v1v3 548# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 549# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 550# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 551 552name: image_sample_c_b_merged_v1v3 553body: | 554 bb.0.entry: 555 %0:sgpr_64 = COPY $sgpr0_sgpr1 556 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 557 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 558 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 559 %4:vgpr_32 = COPY %2.sub3 560 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 561 %6:vgpr_32 = IMAGE_SAMPLE_C_B_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 562 %7:vreg_96 = IMAGE_SAMPLE_C_B_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 563... 564--- 565 566# GFX12-LABEL: name: image_sample_c_b_cl_merged_v1v3 567# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 568# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 569# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 570 571name: image_sample_c_b_cl_merged_v1v3 572body: | 573 bb.0.entry: 574 %0:sgpr_64 = COPY $sgpr0_sgpr1 575 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 576 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 577 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 578 %4:vgpr_32 = COPY %2.sub3 579 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 580 %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1 581 %7:vgpr_32 = IMAGE_SAMPLE_C_B_CL_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 582 %8:vreg_96 = IMAGE_SAMPLE_C_B_CL_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 583... 584--- 585 586# GFX12-LABEL: name: image_sample_c_b_cl_o_merged_v1v3 587# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_CL_O_V4_V6_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 588# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 589# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 590 591name: image_sample_c_b_cl_o_merged_v1v3 592body: | 593 bb.0.entry: 594 %0:sgpr_64 = COPY $sgpr0_sgpr1 595 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 596 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 597 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 598 %4:vgpr_32 = COPY %2.sub3 599 %5:vgpr_32 = IMPLICIT_DEF 600 %6:vreg_96 = IMPLICIT_DEF 601 %7:vgpr_32 = IMAGE_SAMPLE_C_B_CL_O_V1_V6_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_96, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 602 %8:vreg_96 = IMAGE_SAMPLE_C_B_CL_O_V3_V6_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_96, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 603... 604--- 605 606# GFX12-LABEL: name: image_sample_c_b_o_merged_v1v3 607# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_B_O_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 608# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 609# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 610 611name: image_sample_c_b_o_merged_v1v3 612body: | 613 bb.0.entry: 614 %0:sgpr_64 = COPY $sgpr0_sgpr1 615 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 616 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 617 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 618 %4:vgpr_32 = COPY %2.sub3 619 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 620 %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1 621 %7:vgpr_32 = IMAGE_SAMPLE_C_B_O_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 622 %8:vreg_96 = IMAGE_SAMPLE_C_B_O_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 623... 624--- 625 626# GFX12-LABEL: name: image_sample_c_cl_merged_v1v3 627# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 628# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 629# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 630 631name: image_sample_c_cl_merged_v1v3 632body: | 633 bb.0.entry: 634 %0:sgpr_64 = COPY $sgpr0_sgpr1 635 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 636 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 637 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 638 %4:vgpr_32 = COPY %2.sub3 639 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 640 %6:vgpr_32 = IMAGE_SAMPLE_C_CL_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 641 %7:vreg_96 = IMAGE_SAMPLE_C_CL_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 642... 643--- 644 645# GFX12-LABEL: name: image_sample_c_cl_o_merged_v1v3 646# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_CL_O_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 647# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 648# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 649 650name: image_sample_c_cl_o_merged_v1v3 651body: | 652 bb.0.entry: 653 %0:sgpr_64 = COPY $sgpr0_sgpr1 654 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 655 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 656 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 657 %4:vgpr_32 = COPY %2.sub3 658 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 659 %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1 660 %7:vgpr_32 = IMAGE_SAMPLE_C_CL_O_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 661 %8:vreg_96 = IMAGE_SAMPLE_C_CL_O_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 662... 663--- 664 665# GFX12-LABEL: name: image_sample_c_d_merged_v1v3 666# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_V4_V7_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 667# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 668# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 669 670name: image_sample_c_d_merged_v1v3 671body: | 672 bb.0.entry: 673 %0:sgpr_64 = COPY $sgpr0_sgpr1 674 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 675 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 676 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 677 %4:vgpr_32 = COPY %2.sub3 678 %5:vgpr_32 = IMPLICIT_DEF 679 %6:vreg_128 = IMPLICIT_DEF 680 %7:vgpr_32 = IMAGE_SAMPLE_C_D_V1_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 681 %8:vreg_96 = IMAGE_SAMPLE_C_D_V3_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 682... 683--- 684 685# GFX12-LABEL: name: image_sample_c_d_cl_merged_v1v3 686# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_V4_V8_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 687# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 688# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 689 690name: image_sample_c_d_cl_merged_v1v3 691body: | 692 bb.0.entry: 693 %0:sgpr_64 = COPY $sgpr0_sgpr1 694 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 695 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 696 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 697 %4:vgpr_32 = COPY %2.sub3 698 %5:vgpr_32 = IMPLICIT_DEF 699 %6:vreg_160 = IMPLICIT_DEF 700 %7:vgpr_32 = IMAGE_SAMPLE_C_D_CL_V1_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 701 %8:vreg_96 = IMAGE_SAMPLE_C_D_CL_V3_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 702... 703--- 704 705# GFX12-LABEL: name: image_sample_c_d_cl_o_merged_v1v3 706# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_CL_O_V4_V9_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 707# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 708# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 709 710name: image_sample_c_d_cl_o_merged_v1v3 711body: | 712 bb.0.entry: 713 %0:sgpr_64 = COPY $sgpr0_sgpr1 714 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 715 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 716 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 717 %4:vgpr_32 = COPY %2.sub3 718 %5:vgpr_32 = IMPLICIT_DEF 719 %6:vreg_192 = IMPLICIT_DEF 720 %7:vgpr_32 = IMAGE_SAMPLE_C_D_CL_O_V1_V9_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_192, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 721 %8:vreg_96 = IMAGE_SAMPLE_C_D_CL_O_V3_V9_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_192, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 722... 723--- 724 725# GFX12-LABEL: name: image_sample_c_d_o_merged_v1v3 726# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_D_O_V4_V8_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 727# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 728# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 729 730name: image_sample_c_d_o_merged_v1v3 731body: | 732 bb.0.entry: 733 %0:sgpr_64 = COPY $sgpr0_sgpr1 734 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 735 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 736 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 737 %4:vgpr_32 = COPY %2.sub3 738 %5:vgpr_32 = IMPLICIT_DEF 739 %6:vreg_160 = IMPLICIT_DEF 740 %7:vgpr_32 = IMAGE_SAMPLE_C_D_O_V1_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 741 %8:vreg_96 = IMAGE_SAMPLE_C_D_O_V3_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 742... 743--- 744 745# GFX12-LABEL: name: image_sample_c_l_merged_v1v3 746# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 747# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 748# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 749 750name: image_sample_c_l_merged_v1v3 751body: | 752 bb.0.entry: 753 %0:sgpr_64 = COPY $sgpr0_sgpr1 754 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 755 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 756 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 757 %4:vgpr_32 = COPY %2.sub3 758 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 759 %6:vgpr_32 = IMAGE_SAMPLE_C_L_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 760 %7:vreg_96 = IMAGE_SAMPLE_C_L_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 761... 762--- 763 764# GFX12-LABEL: name: image_sample_c_lz_merged_v1v3 765# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 766# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 767# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 768 769name: image_sample_c_lz_merged_v1v3 770body: | 771 bb.0.entry: 772 %0:sgpr_64 = COPY $sgpr0_sgpr1 773 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 774 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 775 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 776 %4:vgpr_32 = COPY %2.sub3 777 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 778 %6:vgpr_32 = IMAGE_SAMPLE_C_LZ_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 779 %7:vreg_96 = IMAGE_SAMPLE_C_LZ_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 780... 781--- 782 783# GFX12-LABEL: name: image_sample_c_lz_o_merged_v1v3 784# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_LZ_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 785# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 786# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 787 788name: image_sample_c_lz_o_merged_v1v3 789body: | 790 bb.0.entry: 791 %0:sgpr_64 = COPY $sgpr0_sgpr1 792 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 793 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 794 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 795 %4:vgpr_32 = COPY %2.sub3 796 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 797 %6:vgpr_32 = IMAGE_SAMPLE_C_LZ_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 798 %7:vreg_96 = IMAGE_SAMPLE_C_LZ_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 799... 800--- 801 802# GFX12-LABEL: name: image_sample_c_l_o_merged_v1v3 803# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_L_O_V4_V5_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 804# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 805# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 806 807name: image_sample_c_l_o_merged_v1v3 808body: | 809 bb.0.entry: 810 %0:sgpr_64 = COPY $sgpr0_sgpr1 811 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 812 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 813 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 814 %4:vgpr_32 = COPY %2.sub3 815 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 816 %6:vreg_64 = REG_SEQUENCE %5:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1 817 %7:vgpr_32 = IMAGE_SAMPLE_C_L_O_V1_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 818 %8:vreg_96 = IMAGE_SAMPLE_C_L_O_V3_V5_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_64, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 819... 820--- 821 822# GFX12-LABEL: name: image_sample_c_o_merged_v1v3 823# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_C_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 824# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 825# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 826 827name: image_sample_c_o_merged_v1v3 828body: | 829 bb.0.entry: 830 %0:sgpr_64 = COPY $sgpr0_sgpr1 831 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 832 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 833 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 834 %4:vgpr_32 = COPY %2.sub3 835 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 836 %6:vgpr_32 = IMAGE_SAMPLE_C_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 837 %7:vreg_96 = IMAGE_SAMPLE_C_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 838... 839--- 840 841# GFX12-LABEL: name: image_sample_d_merged_v1v3 842# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_V4_V6_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 843# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 844# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 845 846name: image_sample_d_merged_v1v3 847body: | 848 bb.0.entry: 849 %0:sgpr_64 = COPY $sgpr0_sgpr1 850 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 851 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 852 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 853 %4:vgpr_32 = COPY %2.sub3 854 %5:vgpr_32 = IMPLICIT_DEF 855 %6:vreg_96 = IMPLICIT_DEF 856 %7:vgpr_32 = IMAGE_SAMPLE_D_V1_V6_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_96, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 857 %8:vreg_96 = IMAGE_SAMPLE_D_V3_V6_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_96, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 858... 859--- 860 861# GFX12-LABEL: name: image_sample_d_cl_merged_v1v3 862# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_V4_V7_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 863# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 864# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 865 866name: image_sample_d_cl_merged_v1v3 867body: | 868 bb.0.entry: 869 %0:sgpr_64 = COPY $sgpr0_sgpr1 870 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 871 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 872 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 873 %4:vgpr_32 = COPY %2.sub3 874 %5:vgpr_32 = IMPLICIT_DEF 875 %6:vreg_128 = IMPLICIT_DEF 876 %7:vgpr_32 = IMAGE_SAMPLE_D_CL_V1_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 877 %8:vreg_96 = IMAGE_SAMPLE_D_CL_V3_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 878... 879--- 880 881# GFX12-LABEL: name: image_sample_d_cl_o_merged_v1v3 882# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_CL_O_V4_V8_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 883# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 884# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 885 886name: image_sample_d_cl_o_merged_v1v3 887body: | 888 bb.0.entry: 889 %0:sgpr_64 = COPY $sgpr0_sgpr1 890 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 891 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 892 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 893 %4:vgpr_32 = COPY %2.sub3 894 %5:vgpr_32 = IMPLICIT_DEF 895 %6:vreg_160 = IMPLICIT_DEF 896 %7:vgpr_32 = IMAGE_SAMPLE_D_CL_O_V1_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 897 %8:vreg_96 = IMAGE_SAMPLE_D_CL_O_V3_V8_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_160, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 898... 899--- 900 901# GFX12-LABEL: name: image_sample_d_o_merged_v1v3 902# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_D_O_V4_V7_gfx12 %5, %5, %5, %6, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 903# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %9.sub0 904# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %9.sub1_sub2_sub3 905 906name: image_sample_d_o_merged_v1v3 907body: | 908 bb.0.entry: 909 %0:sgpr_64 = COPY $sgpr0_sgpr1 910 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 911 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 912 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 913 %4:vgpr_32 = COPY %2.sub3 914 %5:vgpr_32 = IMPLICIT_DEF 915 %6:vreg_128 = IMPLICIT_DEF 916 %7:vgpr_32 = IMAGE_SAMPLE_D_O_V1_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 917 %8:vreg_96 = IMAGE_SAMPLE_D_O_V3_V7_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %6:vreg_128, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 918... 919--- 920 921# GFX12-LABEL: name: image_sample_lz_merged_v1v3 922# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_V4_V2_gfx12 %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 923# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 924# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 925 926name: image_sample_lz_merged_v1v3 927body: | 928 bb.0.entry: 929 %0:sgpr_64 = COPY $sgpr0_sgpr1 930 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 931 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 932 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 933 %4:vgpr_32 = COPY %2.sub3 934 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 935 %6:vgpr_32 = IMAGE_SAMPLE_LZ_V1_V2_gfx12 %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 936 %7:vreg_96 = IMAGE_SAMPLE_LZ_V3_V2_gfx12 %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 937... 938--- 939 940# GFX12-LABEL: name: image_sample_lz_o_merged_v1v3 941# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_LZ_O_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 942# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 943# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 944 945name: image_sample_lz_o_merged_v1v3 946body: | 947 bb.0.entry: 948 %0:sgpr_64 = COPY $sgpr0_sgpr1 949 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 950 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 951 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 952 %4:vgpr_32 = COPY %2.sub3 953 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 954 %6:vgpr_32 = IMAGE_SAMPLE_LZ_O_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 955 %7:vreg_96 = IMAGE_SAMPLE_LZ_O_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 956... 957--- 958 959# GFX12-LABEL: name: image_sample_l_o_merged_v1v3 960# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_L_O_V4_V4_gfx12 %5, %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 961# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 962# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 963 964name: image_sample_l_o_merged_v1v3 965body: | 966 bb.0.entry: 967 %0:sgpr_64 = COPY $sgpr0_sgpr1 968 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 969 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 970 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 971 %4:vgpr_32 = COPY %2.sub3 972 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 973 %6:vgpr_32 = IMAGE_SAMPLE_L_O_V1_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 974 %7:vreg_96 = IMAGE_SAMPLE_L_O_V3_V4_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 975... 976--- 977 978# GFX12-LABEL: name: image_sample_o_merged_v1v3 979# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_SAMPLE_O_V4_V3_gfx12 %5, %5, %5, %3, %2, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4) 980# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0 981# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3 982 983name: image_sample_o_merged_v1v3 984body: | 985 bb.0.entry: 986 %0:sgpr_64 = COPY $sgpr0_sgpr1 987 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0 988 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99 989 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0 990 %4:vgpr_32 = COPY %2.sub3 991 %5:vgpr_32 = BUFFER_LOAD_DWORD_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16) 992 %6:vgpr_32 = IMAGE_SAMPLE_O_V1_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4) 993 %7:vreg_96 = IMAGE_SAMPLE_O_V3_V3_gfx12 %5:vgpr_32, %5:vgpr_32, %5:vgpr_32, %3:sgpr_256, %2:sgpr_128, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4) 994... 995--- 996