491 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX11 %s2 3# GFX11-LABEL: name: image_load_merged_v1v34# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)5# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %8.sub06# GFX11: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub37 8name: image_load_merged_v1v39body: |10 bb.0.entry:11 %0:sgpr_64 = COPY $sgpr0_sgpr112 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 013 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9914 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 015 %4:vgpr_32 = COPY %2.sub316 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)17 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)18 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)19...20---21# GFX11-LABEL: name: image_load_merged_v1v3_reversed22# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)23# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %8.sub324# GFX11: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub0_sub1_sub225 26name: image_load_merged_v1v3_reversed27body: |28 bb.0.entry:29 %0:sgpr_64 = COPY $sgpr0_sgpr130 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 031 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9932 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 033 %4:vgpr_32 = COPY %2.sub334 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)35 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)36 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)37...38---39 40# GFX11-LABEL: name: image_load_merged_v2v241# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)42# GFX11: %{{[0-9]+}}:vreg_64 = COPY %8.sub0_sub143# GFX11: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub2_sub344 45name: image_load_merged_v2v246body: |47 bb.0.entry:48 %0:sgpr_64 = COPY $sgpr0_sgpr149 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 050 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9951 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 052 %4:vgpr_32 = COPY %2.sub353 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)54 %6:vreg_64 = IMAGE_LOAD_V2_V2_gfx11 %5:vreg_64, %3:sgpr_256, 3, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)55 %7:vreg_64 = IMAGE_LOAD_V2_V2_gfx11 %5:vreg_64, %3:sgpr_256, 12, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)56...57---58 59# GFX11-LABEL: name: image_load_merged_v2v2_reversed60# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)61# GFX11: %{{[0-9]+}}:vreg_64 = COPY %8.sub2_sub362# GFX11: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub0_sub163 64name: image_load_merged_v2v2_reversed65body: |66 bb.0.entry:67 %0:sgpr_64 = COPY $sgpr0_sgpr168 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 069 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9970 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 071 %4:vgpr_32 = COPY %2.sub372 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)73 %6:vreg_64 = IMAGE_LOAD_V2_V2_gfx11 %5:vreg_64, %3:sgpr_256, 12, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)74 %7:vreg_64 = IMAGE_LOAD_V2_V2_gfx11 %5:vreg_64, %3:sgpr_256, 3, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)75...76---77 78# GFX11-LABEL: name: image_load_merged_v3v179# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)80# GFX11: %{{[0-9]+}}:vreg_96 = COPY %8.sub0_sub1_sub281# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub382 83name: image_load_merged_v3v184body: |85 bb.0.entry:86 %0:sgpr_64 = COPY $sgpr0_sgpr187 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 088 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9989 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 090 %4:vgpr_32 = COPY %2.sub391 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)92 %6:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)93 %7:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)94...95---96 97# GFX11-LABEL: name: image_load_merged_v3v1_reversed98# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)99# GFX11: %{{[0-9]+}}:vreg_96 = COPY %8.sub1_sub2_sub3100# GFX11: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub0101 102name: image_load_merged_v3v1_reversed103body: |104 bb.0.entry:105 %0:sgpr_64 = COPY $sgpr0_sgpr1106 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0107 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99108 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0109 %4:vgpr_32 = COPY %2.sub3110 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)111 %6:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)112 %7:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)113...114---115 116# GFX11-LABEL: name: image_load_divided_merged117# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)118 119name: image_load_divided_merged120body: |121 bb.0.entry:122 %0:sgpr_64 = COPY $sgpr0_sgpr1123 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0124 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99125 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0126 %4:vgpr_32 = COPY %2.sub3127 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)128 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)129 %7:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)130 %8:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)131 %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %7:vreg_64, %3:sgpr_256, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)132 %10:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)133 %11:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)134...135---136 137# GFX11-LABEL: name: image_load_divided_not_merged138# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)139# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)140 141name: image_load_divided_not_merged142body: |143 bb.0.entry:144 %0:sgpr_64 = COPY $sgpr0_sgpr1145 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0146 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99147 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0148 %4:vreg_128 = COPY %2149 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)150 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)151 IMAGE_STORE_V4_V2 %4:vreg_128, %5:vreg_64, %3:sgpr_256, 15, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (store 16)152 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)153...154---155 156# GFX11-LABEL: name: image_load_dmask_overlapped_not_merged157# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)158# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)159 160name: image_load_dmask_overlapped_not_merged161body: |162 bb.0.entry:163 %0:sgpr_64 = COPY $sgpr0_sgpr1164 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0165 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99166 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0167 %4:vgpr_32 = COPY %2.sub3168 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)169 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)170 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)171...172---173 174# GFX11-LABEL: name: image_load_dmask_not_disjoint_not_merged175# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)176# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 11, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)177 178name: image_load_dmask_not_disjoint_not_merged179body: |180 bb.0.entry:181 %0:sgpr_64 = COPY $sgpr0_sgpr1182 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0183 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99184 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0185 %4:vgpr_32 = COPY %2.sub3186 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)187 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)188 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 11, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)189...190---191 192# GFX11-LABEL: name: image_load_not_merged_0193# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)194# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %6, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)195 196name: image_load_not_merged_0197body: |198 bb.0.entry:199 %0:sgpr_64 = COPY $sgpr0_sgpr1200 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0201 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99202 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0203 %4:vgpr_32 = COPY %2.sub3204 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)205 %6:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 1, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)206 %7:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)207 %8:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %6, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)208...209---210 211# GFX11-LABEL: name: image_load_not_merged_1212# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %6, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)213# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %6, %4, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)214 215name: image_load_not_merged_1216body: |217 bb.0.entry:218 %0:sgpr_64 = COPY $sgpr0_sgpr1219 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0220 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99221 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0222 %4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0223 %5:vgpr_32 = COPY %2.sub3224 %6:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)225 %7:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %6, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)226 %8:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %6, %4, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)227...228---229 230# GFX11-LABEL: name: image_load_not_merged_3231# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)232# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)233 234name: image_load_not_merged_3235body: |236 bb.0.entry:237 %0:sgpr_64 = COPY $sgpr0_sgpr1238 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0239 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99240 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0241 %4:vgpr_32 = COPY %2.sub3242 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)243 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)244 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)245...246---247 248# GFX11-LABEL: name: image_load_not_merged_4249# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)250# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)251 252name: image_load_not_merged_4253body: |254 bb.0.entry:255 %0:sgpr_64 = COPY $sgpr0_sgpr1256 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0257 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99258 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0259 %4:vgpr_32 = COPY %2.sub3260 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)261 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)262 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)263...264---265 266# GFX11-LABEL: name: image_load_not_merged_5267# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)268# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)269 270name: image_load_not_merged_5271body: |272 bb.0.entry:273 %0:sgpr_64 = COPY $sgpr0_sgpr1274 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0275 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99276 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0277 %4:vgpr_32 = COPY %2.sub3278 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)279 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)280 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)281...282---283 284# GFX11-LABEL: name: image_load_not_merged_6285# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)286# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)287 288name: image_load_not_merged_6289body: |290 bb.0.entry:291 %0:sgpr_64 = COPY $sgpr0_sgpr1292 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0293 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99294 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0295 %4:vgpr_32 = COPY %2.sub3296 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)297 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)298 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)299...300---301 302# GFX11-LABEL: name: image_load_not_merged_7303# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)304# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)305 306name: image_load_not_merged_7307body: |308 bb.0.entry:309 %0:sgpr_64 = COPY $sgpr0_sgpr1310 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0311 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99312 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0313 %4:vgpr_32 = COPY %2.sub3314 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)315 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)316 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)317...318---319 320# GFX11-LABEL: name: image_load_not_merged_8321# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V1_gfx11 %6, %3, 8, 1, -1, 0, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)322# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)323 324name: image_load_not_merged_8325body: |326 bb.0.entry:327 %0:sgpr_64 = COPY $sgpr0_sgpr1328 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0329 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99330 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0331 %4:vgpr_32 = COPY %2.sub3332 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)333 %6:vgpr_32 = COPY %5.sub0334 %7:vgpr_32 = IMAGE_LOAD_V1_V1_gfx11 %6, %3, 8, 1, -1, 0, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)335 %8:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)336...337---338 339# GFX11-LABEL: name: image_load_not_merged_9340# GFX11: %{{[0-9]+}}:vreg_64 = IMAGE_LOAD_V2_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 1, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)341# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)342 343name: image_load_not_merged_9344body: |345 bb.0.entry:346 %0:sgpr_64 = COPY $sgpr0_sgpr1347 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0348 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99349 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0350 %4:vgpr_32 = COPY %2.sub3351 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)352 %6:vreg_64 = IMAGE_LOAD_V2_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 1, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)353 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)354...355---356 357# GFX11-LABEL: name: image_load_not_merged_10358# GFX11: %{{[0-9]+}}:vreg_64 = IMAGE_LOAD_V2_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)359# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)360 361name: image_load_not_merged_10362body: |363 bb.0.entry:364 %0:sgpr_64 = COPY $sgpr0_sgpr1365 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0366 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99367 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0368 %4:vgpr_32 = COPY %2.sub3369 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)370 %6:vreg_64 = IMAGE_LOAD_V2_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)371 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)372...373---374 375# GFX11-LABEL: name: image_load_not_merged_11376# GFX11: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), addrspace 4)377# GFX11: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)378 379name: image_load_not_merged_11380body: |381 bb.0.entry:382 %0:sgpr_64 = COPY $sgpr0_sgpr1383 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0384 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99385 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0386 %4:vgpr_32 = COPY %2.sub3387 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)388 %6:vgpr_32 = IMAGE_LOAD_V1_V2_gfx11 %5, %3, 8, 1, -1, 0, 0, 0, 0, 0, 1, implicit $exec :: (dereferenceable load 4, addrspace 4)389 %7:vreg_96 = IMAGE_LOAD_V3_V2_gfx11 %5, %3, 7, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)390...391---392 393# GFX11-LABEL: name: image_load_mip_merged_v1v3394# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_MIP_V4_V3_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)395# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0396# GFX11: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3397 398name: image_load_mip_merged_v1v3399body: |400 bb.0.entry:401 %0:sgpr_64 = COPY $sgpr0_sgpr1402 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0403 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99404 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0405 %4:vgpr_32 = COPY %2.sub3406 %5:vreg_96 = BUFFER_LOAD_DWORDX3_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)407 %6:vgpr_32 = IMAGE_LOAD_MIP_V1_V3_gfx11 %5:vreg_96, %3:sgpr_256, 1, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)408 %7:vreg_96 = IMAGE_LOAD_MIP_V3_V3_gfx11 %5:vreg_96, %3:sgpr_256, 14, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)409...410---411 412 413 414# GFX11-LABEL: name: image_load_mip_pck_merged_v1v3415# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_MIP_PCK_V4_V3_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)416# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0417# GFX11: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3418 419name: image_load_mip_pck_merged_v1v3420body: |421 bb.0.entry:422 %0:sgpr_64 = COPY $sgpr0_sgpr1423 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0424 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99425 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0426 %4:vgpr_32 = COPY %2.sub3427 %5:vreg_96 = BUFFER_LOAD_DWORDX3_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)428 %6:vgpr_32 = IMAGE_LOAD_MIP_PCK_V1_V3_gfx11 %5:vreg_96, %3:sgpr_256, 1, 1, -1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)429 %7:vreg_96 = IMAGE_LOAD_MIP_PCK_V3_V3_gfx11 %5:vreg_96, %3:sgpr_256, 14, 1, -1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)430...431---432 433 434 435# GFX11-LABEL: name: image_load_mip_pck_sgn_merged_v1v3436# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_MIP_PCK_SGN_V4_V3_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)437# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0438# GFX11: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3439 440name: image_load_mip_pck_sgn_merged_v1v3441body: |442 bb.0.entry:443 %0:sgpr_64 = COPY $sgpr0_sgpr1444 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0445 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99446 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0447 %4:vgpr_32 = COPY %2.sub3448 %5:vreg_96 = BUFFER_LOAD_DWORDX3_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)449 %6:vgpr_32 = IMAGE_LOAD_MIP_PCK_SGN_V1_V3_gfx11 %5:vreg_96, %3:sgpr_256, 1, 1, -1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)450 %7:vreg_96 = IMAGE_LOAD_MIP_PCK_SGN_V3_V3_gfx11 %5:vreg_96, %3:sgpr_256, 14, 1, -1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)451...452---453 454# GFX11-LABEL: name: image_load_pck_merged_v1v3455# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_PCK_V4_V2_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)456# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0457# GFX11: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3458 459name: image_load_pck_merged_v1v3460body: |461 bb.0.entry:462 %0:sgpr_64 = COPY $sgpr0_sgpr1463 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0464 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99465 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0466 %4:vgpr_32 = COPY %2.sub3467 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)468 %6:vgpr_32 = IMAGE_LOAD_PCK_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 1, 1, -1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)469 %7:vreg_96 = IMAGE_LOAD_PCK_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 14, 1, -1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)470...471---472 473# GFX11-LABEL: name: image_load_pck_sgn_merged_v1v3474# GFX11: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_PCK_SGN_V4_V2_gfx11 %5, %3, 15, 1, -1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)475# GFX11: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0476# GFX11: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3477 478name: image_load_pck_sgn_merged_v1v3479body: |480 bb.0.entry:481 %0:sgpr_64 = COPY $sgpr0_sgpr1482 %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0483 %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99484 %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0485 %4:vgpr_32 = COPY %2.sub3486 %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)487 %6:vgpr_32 = IMAGE_LOAD_PCK_SGN_V1_V2_gfx11 %5:vreg_64, %3:sgpr_256, 1, 1, -1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)488 %7:vreg_96 = IMAGE_LOAD_PCK_SGN_V3_V2_gfx11 %5:vreg_64, %3:sgpr_256, 14, 1, -1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)489...490---491