brintos

brintos / llvm-project-archived public Read only

0
0
Text · 27.4 KiB · 1b4ea96 Raw
506 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX12 %s2 3---4# GFX12-LABEL: name: image_load_merged_v1v35# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx12 %6, %7, %3, 15, 1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)6# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %10.sub07# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %10.sub1_sub2_sub38 9name: image_load_merged_v1v310body:             |11  bb.0.entry:12    %0:sgpr_64 = COPY $sgpr0_sgpr113    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 014    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9915    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 016    %4:vgpr_32 = COPY %2.sub317    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)18    %6:vgpr_32 = COPY %5.sub019    %7:vgpr_32 = COPY %5.sub120    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)21    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 14, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)22...23---24# GFX12-LABEL: name: image_load_merged_v1v3_reversed25# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx12 %6, %7, %3, 15, 1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)26# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %10.sub327# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %10.sub0_sub1_sub228 29name: image_load_merged_v1v3_reversed30body:             |31  bb.0.entry:32    %0:sgpr_64 = COPY $sgpr0_sgpr133    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 034    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9935    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 036    %4:vgpr_32 = COPY %2.sub337    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)38    %6:vgpr_32 = COPY %5.sub039    %7:vgpr_32 = COPY %5.sub140    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)41    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)42...43---44 45# GFX12-LABEL: name: image_load_merged_v2v246# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx12 %6, %7, %3, 15, 1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)47# GFX12: %{{[0-9]+}}:vreg_64 = COPY %10.sub0_sub148# GFX12: %{{[0-9]+}}:vreg_64 = COPY killed %10.sub2_sub349 50name: image_load_merged_v2v251body:             |52  bb.0.entry:53    %0:sgpr_64 = COPY $sgpr0_sgpr154    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 055    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9956    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 057    %4:vgpr_32 = COPY %2.sub358    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)59    %6:vgpr_32 = COPY %5.sub060    %7:vgpr_32 = COPY %5.sub161    %8:vreg_64 = IMAGE_LOAD_V2_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 3, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)62    %9:vreg_64 = IMAGE_LOAD_V2_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 12, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)63...64---65 66# GFX12-LABEL: name: image_load_merged_v2v2_reversed67# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx12 %6, %7, %3, 15, 1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)68# GFX12: %{{[0-9]+}}:vreg_64 = COPY %10.sub2_sub369# GFX12: %{{[0-9]+}}:vreg_64 = COPY killed %10.sub0_sub170 71name: image_load_merged_v2v2_reversed72body:             |73  bb.0.entry:74    %0:sgpr_64 = COPY $sgpr0_sgpr175    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 076    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9977    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 078    %4:vgpr_32 = COPY %2.sub379    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)80    %6:vgpr_32 = COPY %5.sub081    %7:vgpr_32 = COPY %5.sub182    %8:vreg_64 = IMAGE_LOAD_V2_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 12, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)83    %9:vreg_64 = IMAGE_LOAD_V2_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 3, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)84...85---86 87# GFX12-LABEL: name: image_load_merged_v3v188# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx12 %6, %7, %3, 15, 1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)89# GFX12: %{{[0-9]+}}:vreg_96 = COPY %10.sub0_sub1_sub290# GFX12: %{{[0-9]+}}:vgpr_32 = COPY killed %10.sub391 92name: image_load_merged_v3v193body:             |94  bb.0.entry:95    %0:sgpr_64 = COPY $sgpr0_sgpr196    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 097    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9998    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 099    %4:vgpr_32 = COPY %2.sub3100    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)101    %6:vgpr_32 = COPY %5.sub0102    %7:vgpr_32 = COPY %5.sub1103    %8:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)104    %9:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)105...106---107 108# GFX12-LABEL: name: image_load_merged_v3v1_reversed109# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx12 %6, %7, %3, 15, 1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)110# GFX12: %{{[0-9]+}}:vreg_96 = COPY %10.sub1_sub2_sub3111# GFX12: %{{[0-9]+}}:vgpr_32 = COPY killed %10.sub0112 113name: image_load_merged_v3v1_reversed114body:             |115  bb.0.entry:116    %0:sgpr_64 = COPY $sgpr0_sgpr1117    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0118    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99119    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0120    %4:vgpr_32 = COPY %2.sub3121    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)122    %6:vgpr_32 = COPY %5.sub0123    %7:vgpr_32 = COPY %5.sub1124    %8:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 14, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)125    %9:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)126...127---128 129# GFX12-LABEL: name: image_load_divided_merged130# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V2_gfx12 %6, %7, %3, 15, 1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)131 132name: image_load_divided_merged133body:             |134  bb.0.entry:135    %0:sgpr_64 = COPY $sgpr0_sgpr1136    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0137    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99138    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0139    %4:vgpr_32 = COPY %2.sub3140    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)141    %6:vgpr_32 = COPY %5.sub0142    %7:vgpr_32 = COPY %5.sub1143    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)144    %9:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)145    %10:vgpr_32 = COPY %9.sub0146    %11:vgpr_32 = COPY %9.sub1147    %12:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)148    %13:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %10:vgpr_32, %11:vgpr_32, %3:sgpr_256, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)149    %14:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)150    %15:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)151...152---153 154# GFX12-LABEL: name: image_load_divided_not_merged155# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)156# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)157 158name: image_load_divided_not_merged159body:             |160  bb.0.entry:161    %0:sgpr_64 = COPY $sgpr0_sgpr1162    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0163    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99164    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0165    %4:vreg_128 = COPY %2166    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)167    %6:vgpr_32 = COPY %5.sub0168    %7:vgpr_32 = COPY %5.sub1169    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)170    IMAGE_STORE_V4_V2_gfx12 %4:vreg_128, %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 15, 1, 0, 0, 0, 0, 0, implicit $exec :: (store 16)171    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)172...173---174 175# GFX12-LABEL: name: image_load_dmask_overlapped_not_merged176# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 4, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)177# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)178 179name: image_load_dmask_overlapped_not_merged180body:             |181  bb.0.entry:182    %0:sgpr_64 = COPY $sgpr0_sgpr1183    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0184    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99185    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0186    %4:vgpr_32 = COPY %2.sub3187    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)188    %6:vgpr_32 = COPY %5.sub0189    %7:vgpr_32 = COPY %5.sub1190    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 4, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)191    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)192...193---194 195# GFX12-LABEL: name: image_load_dmask_not_disjoint_not_merged196# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 4, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)197# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 11, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)198 199name: image_load_dmask_not_disjoint_not_merged200body:             |201  bb.0.entry:202    %0:sgpr_64 = COPY $sgpr0_sgpr1203    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0204    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99205    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0206    %4:vgpr_32 = COPY %2.sub3207    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)208    %6:vgpr_32 = COPY %5.sub0209    %7:vgpr_32 = COPY %5.sub1210    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 4, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)211    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 11, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)212...213---214 215# GFX12-LABEL: name: image_load_not_merged_0216# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)217# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %9, %10, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)218 219name: image_load_not_merged_0220body:             |221  bb.0.entry:222    %0:sgpr_64 = COPY $sgpr0_sgpr1223    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0224    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99225    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0226    %4:vgpr_32 = COPY %2.sub3227    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)228    %6:vgpr_32 = COPY %5.sub0229    %7:vgpr_32 = COPY %5.sub1230    %8:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 1, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)231    %9:vgpr_32 = COPY %8.sub0232    %10:vgpr_32 = COPY %8.sub1233    %11:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)234    %12:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %9, %10, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)235...236---237 238# GFX12-LABEL: name: image_load_not_merged_1239# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %7, %8, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)240# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %7, %8, %4, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)241 242name: image_load_not_merged_1243body:             |244  bb.0.entry:245    %0:sgpr_64 = COPY $sgpr0_sgpr1246    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0247    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99248    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0249    %4:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0250    %5:vgpr_32 = COPY %2.sub3251    %6:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)252    %7:vgpr_32 = COPY %6.sub0253    %8:vgpr_32 = COPY %6.sub1254    %9:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %7, %8, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)255    %10:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %7, %8, %4, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)256...257---258 259# GFX12-LABEL: name: image_load_not_merged_4260# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)261# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)262 263name: image_load_not_merged_4264body:             |265  bb.0.entry:266    %0:sgpr_64 = COPY $sgpr0_sgpr1267    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0268    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99269    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0270    %4:vgpr_32 = COPY %2.sub3271    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)272    %6:vgpr_32 = COPY %5.sub0273    %7:vgpr_32 = COPY %5.sub1274    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)275    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)276...277---278 279# GFX12-LABEL: name: image_load_not_merged_5280# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)281# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)282 283name: image_load_not_merged_5284body:             |285  bb.0.entry:286    %0:sgpr_64 = COPY $sgpr0_sgpr1287    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0288    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99289    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0290    %4:vgpr_32 = COPY %2.sub3291    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)292    %6:vgpr_32 = COPY %5.sub0293    %7:vgpr_32 = COPY %5.sub1294    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)295    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)296...297---298 299# GFX12-LABEL: name: image_load_not_merged_6300# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)301# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)302 303name: image_load_not_merged_6304body:             |305  bb.0.entry:306    %0:sgpr_64 = COPY $sgpr0_sgpr1307    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0308    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99309    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0310    %4:vgpr_32 = COPY %2.sub3311    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)312    %6:vgpr_32 = COPY %5.sub0313    %7:vgpr_32 = COPY %5.sub1314    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)315    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)316...317---318 319# GFX12-LABEL: name: image_load_not_merged_7320# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)321# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)322 323name: image_load_not_merged_7324body:             |325  bb.0.entry:326    %0:sgpr_64 = COPY $sgpr0_sgpr1327    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0328    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99329    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0330    %4:vgpr_32 = COPY %2.sub3331    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)332    %6:vgpr_32 = COPY %5.sub0333    %7:vgpr_32 = COPY %5.sub1334    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)335    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 1, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)336...337---338 339# GFX12-LABEL: name: image_load_not_merged_8340# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V1_gfx12 %6, %3, 8, 1, 0, 0, 1, 0, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)341# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)342 343name: image_load_not_merged_8344body:             |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:vgpr_32 = COPY %5.sub0353    %7:vgpr_32 = COPY %5.sub1354    %8:vgpr_32 = IMAGE_LOAD_V1_V1_gfx12 %6, %3, 8, 1, 0, 0, 1, 0, 0, implicit $exec :: (dereferenceable load 8, align 16, addrspace 4)355    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)356...357---358 359# GFX12-LABEL: name: image_load_not_merged_9360# GFX12: %{{[0-9]+}}:vreg_64 = IMAGE_LOAD_V2_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)361# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)362 363name: image_load_not_merged_9364body:             |365  bb.0.entry:366    %0:sgpr_64 = COPY $sgpr0_sgpr1367    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0368    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99369    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0370    %4:vgpr_32 = COPY %2.sub3371    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)372    %6:vgpr_32 = COPY %5.sub0373    %7:vgpr_32 = COPY %5.sub1374    %8:vreg_64 = IMAGE_LOAD_V2_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 1, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)375    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)376...377---378 379# GFX12-LABEL: name: image_load_not_merged_11380# GFX12: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 1, implicit $exec :: (dereferenceable load (s32), addrspace 4)381# GFX12: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)382 383name: image_load_not_merged_11384body:             |385  bb.0.entry:386    %0:sgpr_64 = COPY $sgpr0_sgpr1387    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0388    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99389    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0390    %4:vgpr_32 = COPY %2.sub3391    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)392    %6:vgpr_32 = COPY %5.sub0393    %7:vgpr_32 = COPY %5.sub1394    %8:vgpr_32 = IMAGE_LOAD_V1_V2_gfx12 %6, %7, %3, 8, 1, 0, 0, 0, 0, 1, implicit $exec :: (dereferenceable load 4, addrspace 4)395    %9:vreg_96 = IMAGE_LOAD_V3_V2_gfx12 %6, %7, %3, 7, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)396...397---398 399# GFX12-LABEL: name: image_load_mip_merged_v1v3400# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_MIP_V4_V3_gfx12 %6, %7, %8, %3, 15, 1, 0, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)401# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %11.sub0402# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %11.sub1_sub2_sub3403 404name: image_load_mip_merged_v1v3405body:             |406  bb.0.entry:407    %0:sgpr_64 = COPY $sgpr0_sgpr1408    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0409    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99410    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0411    %4:vgpr_32 = COPY %2.sub3412    %5:vreg_96 = BUFFER_LOAD_DWORDX3_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)413    %6:vgpr_32 = COPY %5.sub0414    %7:vgpr_32 = COPY %5.sub1415    %8:vgpr_32 = COPY %5.sub2416    %9:vgpr_32 = IMAGE_LOAD_MIP_V1_V3_gfx12 %6:vgpr_32, %7:vgpr_32, %8:vgpr_32, %3:sgpr_256, 1, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)417    %10:vreg_96 = IMAGE_LOAD_MIP_V3_V3_gfx12 %6:vgpr_32, %7:vgpr_32, %8:vgpr_32, %3:sgpr_256, 14, 1, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)418...419---420 421# GFX12-LABEL: name: image_load_mip_pck_merged_v1v3422# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_MIP_PCK_V4_V3_gfx12 %6, %7, %8, %3, 15, 1, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)423# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %11.sub0424# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %11.sub1_sub2_sub3425 426name: image_load_mip_pck_merged_v1v3427body:             |428  bb.0.entry:429    %0:sgpr_64 = COPY $sgpr0_sgpr1430    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0431    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99432    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0433    %4:vgpr_32 = COPY %2.sub3434    %5:vreg_96 = BUFFER_LOAD_DWORDX3_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)435    %6:vgpr_32 = COPY %5.sub0436    %7:vgpr_32 = COPY %5.sub1437    %8:vgpr_32 = COPY %5.sub2438    %9:vgpr_32 = IMAGE_LOAD_MIP_PCK_V1_V3_gfx12 %6:vgpr_32, %7:vgpr_32, %8:vgpr_32, %3:sgpr_256, 1, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)439    %10:vreg_96 = IMAGE_LOAD_MIP_PCK_V3_V3_gfx12 %6:vgpr_32, %7:vgpr_32, %8:vgpr_32, %3:sgpr_256, 14, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)440...441---442 443# GFX12-LABEL: name: image_load_mip_pck_sgn_merged_v1v3444# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_MIP_PCK_SGN_V4_V3_gfx12 %6, %7, %8, %3, 15, 1, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)445# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %11.sub0446# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %11.sub1_sub2_sub3447 448name: image_load_mip_pck_sgn_merged_v1v3449body:             |450  bb.0.entry:451    %0:sgpr_64 = COPY $sgpr0_sgpr1452    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0453    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99454    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0455    %4:vgpr_32 = COPY %2.sub3456    %5:vreg_96 = BUFFER_LOAD_DWORDX3_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)457    %6:vgpr_32 = COPY %5.sub0458    %7:vgpr_32 = COPY %5.sub1459    %8:vgpr_32 = COPY %5.sub2460    %9:vgpr_32 = IMAGE_LOAD_MIP_PCK_SGN_V1_V3_gfx12 %6:vgpr_32, %7:vgpr_32, %8:vgpr_32, %3:sgpr_256, 1, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)461    %10:vreg_96 = IMAGE_LOAD_MIP_PCK_SGN_V3_V3_gfx12 %6:vgpr_32, %7:vgpr_32, %8:vgpr_32, %3:sgpr_256, 14, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)462...463---464 465# GFX12-LABEL: name: image_load_pck_merged_v1v3466# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_PCK_V4_V2_gfx12 %6, %7, %3, 15, 1, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)467# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %10.sub0468# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %10.sub1_sub2_sub3469 470name: image_load_pck_merged_v1v3471body:             |472  bb.0.entry:473    %0:sgpr_64 = COPY $sgpr0_sgpr1474    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0475    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99476    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0477    %4:vgpr_32 = COPY %2.sub3478    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)479    %6:vgpr_32 = COPY %5.sub0480    %7:vgpr_32 = COPY %5.sub1481    %8:vgpr_32 = IMAGE_LOAD_PCK_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 1, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)482    %9:vreg_96 = IMAGE_LOAD_PCK_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 14, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)483...484---485 486# GFX12-LABEL: name: image_load_pck_sgn_merged_v1v3487# GFX12: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_PCK_SGN_V4_V2_gfx12 %6, %7, %3, 15, 1, 0, 0, 0, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)488# GFX12: %{{[0-9]+}}:vgpr_32 = COPY %10.sub0489# GFX12: %{{[0-9]+}}:vreg_96 = COPY killed %10.sub1_sub2_sub3490 491name: image_load_pck_sgn_merged_v1v3492body:             |493  bb.0.entry:494    %0:sgpr_64 = COPY $sgpr0_sgpr1495    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0496    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99497    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0498    %4:vgpr_32 = COPY %2.sub3499    %5:vreg_64 = BUFFER_LOAD_DWORDX2_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load 16)500    %6:vgpr_32 = COPY %5.sub0501    %7:vgpr_32 = COPY %5.sub1502    %8:vgpr_32 = IMAGE_LOAD_PCK_SGN_V1_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 1, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4, addrspace 4)503    %9:vreg_96 = IMAGE_LOAD_PCK_SGN_V3_V2_gfx12 %6:vgpr_32, %7:vgpr_32, %3:sgpr_256, 14, 1, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 12, align 16, addrspace 4)504...505---506