brintos

brintos / llvm-project-archived public Read only

0
0
Text · 27.7 KiB · e62bd1e Raw
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