brintos

brintos / llvm-project-archived public Read only

0
0
Text · 27.2 KiB · aab99c9 Raw
488 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX9 %s2 3# GFX9-LABEL: name: image_load_merged_v1v34# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)5# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub06# GFX9: %{{[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_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))17    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5:vreg_128, %3:sgpr_256, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)18    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5:vreg_128, %3:sgpr_256, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)19...20---21 22# GFX9-LABEL: name: image_load_merged_v1v3_reversed23# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)24# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub325# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub0_sub1_sub226 27name: image_load_merged_v1v3_reversed28body:             |29  bb.0.entry:30    %0:sgpr_64 = COPY $sgpr0_sgpr131    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 032    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9933    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 034    %4:vgpr_32 = COPY %2.sub335    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))36    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5:vreg_128, %3:sgpr_256, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)37    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5:vreg_128, %3:sgpr_256, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)38...39---40 41# GFX9-LABEL: name: image_load_merged_v2v242# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)43# GFX9: %{{[0-9]+}}:vreg_64 = COPY %8.sub0_sub144# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub2_sub345 46name: image_load_merged_v2v247body:             |48  bb.0.entry:49    %0:sgpr_64 = COPY $sgpr0_sgpr150    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 051    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9952    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 053    %4:vgpr_32 = COPY %2.sub354    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))55    %6:vreg_64 = IMAGE_LOAD_V2_V4 %5:vreg_128, %3:sgpr_256, 3, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)56    %7:vreg_64 = IMAGE_LOAD_V2_V4 %5:vreg_128, %3:sgpr_256, 12, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)57...58---59 60# GFX9-LABEL: name: image_load_merged_v2v2_reversed61# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)62# GFX9: %{{[0-9]+}}:vreg_64 = COPY %8.sub2_sub363# GFX9: %{{[0-9]+}}:vreg_64 = COPY killed %8.sub0_sub164 65name: image_load_merged_v2v2_reversed66body:             |67  bb.0.entry:68    %0:sgpr_64 = COPY $sgpr0_sgpr169    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 070    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9971    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 072    %4:vgpr_32 = COPY %2.sub373    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))74    %6:vreg_64 = IMAGE_LOAD_V2_V4 %5:vreg_128, %3:sgpr_256, 12, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)75    %7:vreg_64 = IMAGE_LOAD_V2_V4 %5:vreg_128, %3:sgpr_256, 3, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)76...77---78 79# GFX9-LABEL: name: image_load_merged_v3v180# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)81# GFX9: %{{[0-9]+}}:vreg_96 = COPY %8.sub0_sub1_sub282# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub383 84name: image_load_merged_v3v185body:             |86  bb.0.entry:87    %0:sgpr_64 = COPY $sgpr0_sgpr188    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 089    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr9990    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 091    %4:vgpr_32 = COPY %2.sub392    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))93    %6:vreg_96 = IMAGE_LOAD_V3_V4 %5:vreg_128, %3:sgpr_256, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)94    %7:vgpr_32 = IMAGE_LOAD_V1_V4 %5:vreg_128, %3:sgpr_256, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)95...96---97 98# GFX9-LABEL: name: image_load_merged_v3v1_reversed99# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)100# GFX9: %{{[0-9]+}}:vreg_96 = COPY %8.sub1_sub2_sub3101# GFX9: %{{[0-9]+}}:vgpr_32 = COPY killed %8.sub0102 103name: image_load_merged_v3v1_reversed104body:             |105  bb.0.entry:106    %0:sgpr_64 = COPY $sgpr0_sgpr1107    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0108    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99109    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0110    %4:vgpr_32 = COPY %2.sub3111    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))112    %6:vreg_96 = IMAGE_LOAD_V3_V4 %5:vreg_128, %3:sgpr_256, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)113    %7:vgpr_32 = IMAGE_LOAD_V1_V4 %5:vreg_128, %3:sgpr_256, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)114...115---116 117# GFX9-LABEL: name: image_load_divided_merged118# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), addrspace 4)119 120name: image_load_divided_merged121body:             |122  bb.0.entry:123    %0:sgpr_64 = COPY $sgpr0_sgpr1124    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0125    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99126    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0127    %4:vgpr_32 = COPY %2.sub3128    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))129    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5:vreg_128, %3:sgpr_256, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)130    %7:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))131    %8:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))132    %9:vreg_96 = IMAGE_LOAD_V3_V4 %7:vreg_128, %3:sgpr_256, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)133    %10:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))134    %11:vreg_96 = IMAGE_LOAD_V3_V4 %5:vreg_128, %3:sgpr_256, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)135...136---137 138# GFX9-LABEL: name: image_load_divided_not_merged139# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)140# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)141 142name: image_load_divided_not_merged143body:             |144  bb.0.entry:145    %0:sgpr_64 = COPY $sgpr0_sgpr1146    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0147    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99148    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0149    %4:vreg_128 = COPY %2150    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))151    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5:vreg_128, %3:sgpr_256, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)152    IMAGE_STORE_V4_V4 %4:vreg_128, %5:vreg_128, %3:sgpr_256, 15, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (store (s128))153    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5:vreg_128, %3:sgpr_256, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)154...155---156 157# GFX9-LABEL: name: image_load_dmask_overlapped_not_merged158# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)159# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)160 161name: image_load_dmask_overlapped_not_merged162body:             |163  bb.0.entry:164    %0:sgpr_64 = COPY $sgpr0_sgpr1165    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0166    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99167    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0168    %4:vgpr_32 = COPY %2.sub3169    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))170    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5:vreg_128, %3:sgpr_256, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)171    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5:vreg_128, %3:sgpr_256, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)172...173---174 175# GFX9-LABEL: name: image_load_dmask_zero_not_merged176# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)177# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)178 179name: image_load_dmask_zero_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_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))188    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5:vreg_128, %3:sgpr_256, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)189    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5:vreg_128, %3:sgpr_256, 0, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)190...191---192 193# GFX9-LABEL: name: image_load_dmask_not_disjoint_not_merged194# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)195# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 11, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)196 197name: image_load_dmask_not_disjoint_not_merged198body:             |199  bb.0.entry:200    %0:sgpr_64 = COPY $sgpr0_sgpr1201    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0202    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99203    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0204    %4:vgpr_32 = COPY %2.sub3205    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))206    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5:vreg_128, %3:sgpr_256, 4, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)207    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5:vreg_128, %3:sgpr_256, 11, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)208...209---210 211# GFX9-LABEL: name: image_load_not_merged_0212# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)213# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %6, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)214 215name: image_load_not_merged_0216body:             |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:vgpr_32 = COPY %2.sub3223    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))224    %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 1, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))225    %7:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)226    %8:vreg_96 = IMAGE_LOAD_V3_V4 %6, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)227...228---229 230# GFX9-LABEL: name: image_load_not_merged_1231# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %6, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)232# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %6, %4, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)233 234name: image_load_not_merged_1235body:             |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:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0242    %5:vgpr_32 = COPY %2.sub3243    %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))244    %7:vgpr_32 = IMAGE_LOAD_V1_V4 %6, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)245    %8:vreg_96 = IMAGE_LOAD_V3_V4 %6, %4, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)246...247---248 249# GFX9-LABEL: name: image_load_not_merged_10250# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)251# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, -1, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)252 253name: image_load_not_merged_10254body:             |255  bb.0.entry:256    %0:sgpr_64 = COPY $sgpr0_sgpr1257    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0258    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99259    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0260    %4:vgpr_32 = COPY %2.sub3261    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))262    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)263    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, -1, 1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)264...265---266 267# GFX9-LABEL: name: image_load_not_merged_3268# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)269# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)270 271name: image_load_not_merged_3272body:             |273  bb.0.entry:274    %0:sgpr_64 = COPY $sgpr0_sgpr1275    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0276    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99277    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0278    %4:vgpr_32 = COPY %2.sub3279    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))280    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)281    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)282...283---284 285# GFX9-LABEL: name: image_load_not_merged_4286# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)287# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)288 289name: image_load_not_merged_4290body:             |291  bb.0.entry:292    %0:sgpr_64 = COPY $sgpr0_sgpr1293    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0294    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99295    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0296    %4:vgpr_32 = COPY %2.sub3297    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))298    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)299    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 1, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)300...301---302 303# GFX9-LABEL: name: image_load_not_merged_5304# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)305# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)306 307name: image_load_not_merged_5308body:             |309  bb.0.entry:310    %0:sgpr_64 = COPY $sgpr0_sgpr1311    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0312    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99313    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0314    %4:vgpr_32 = COPY %2.sub3315    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))316    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)317    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 1, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)318...319---320 321# GFX9-LABEL: name: image_load_not_merged_6322# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)323# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)324 325name: image_load_not_merged_6326body:             |327  bb.0.entry:328    %0:sgpr_64 = COPY $sgpr0_sgpr1329    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0330    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99331    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0332    %4:vgpr_32 = COPY %2.sub3333    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))334    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)335    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 1, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)336...337---338 339# GFX9-LABEL: name: image_load_not_merged_7340# GFX9: %{{[0-9]+}}:vreg_64 = IMAGE_LOAD_V2_V4 %5, %3, 8, 0, 0, 0, 1, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)341# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)342 343name: image_load_not_merged_7344body:             |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_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))352    %6:vreg_64 = IMAGE_LOAD_V2_V4 %5, %3, 8, 0, 0, 0, 1, 0, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)353    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)354...355---356 357# GFX9-LABEL: name: image_load_not_merged_8358# GFX9: %{{[0-9]+}}:vreg_64 = IMAGE_LOAD_V2_V4 %5, %3, 8, 0, 0, 0, 0, 1, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)359# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)360 361name: image_load_not_merged_8362body:             |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_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))370    %6:vreg_64 = IMAGE_LOAD_V2_V4 %5, %3, 8, 0, 0, 0, 0, 1, -1, 0, implicit $exec :: (dereferenceable load (s64), align 16, addrspace 4)371    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)372...373---374 375# GFX9-LABEL: name: image_load_not_merged_9376# GFX9: %{{[0-9]+}}:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)377# GFX9: %{{[0-9]+}}:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)378 379name: image_load_not_merged_9380body:             |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_128 = BUFFER_LOAD_DWORDX4_OFFSET %2, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))388    %6:vgpr_32 = IMAGE_LOAD_V1_V4 %5, %3, 8, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)389    %7:vreg_96 = IMAGE_LOAD_V3_V4 %5, %3, 7, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)390...391---392 393# GFX9-LABEL: name: image_load_mip_merged_v1v3394# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_MIP_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, 0, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)395# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0396# GFX9: %{{[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_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))407    %6:vgpr_32 = IMAGE_LOAD_MIP_V1_V4 %5:vreg_128, %3:sgpr_256, 1, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s32), addrspace 4)408    %7:vreg_96 = IMAGE_LOAD_MIP_V3_V4 %5:vreg_128, %3:sgpr_256, 14, 0, 0, 0, 0, 0, -1, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)409...410---411 412# GFX9-LABEL: name: image_load_mip_pck_merged_v1v3413# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_MIP_PCK_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)414# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0415# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3416 417name: image_load_mip_pck_merged_v1v3418body:             |419  bb.0.entry:420    %0:sgpr_64 = COPY $sgpr0_sgpr1421    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0422    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99423    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0424    %4:vgpr_32 = COPY %2.sub3425    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))426    %6:vgpr_32 = IMAGE_LOAD_MIP_PCK_V1_V4 %5:vreg_128, %3:sgpr_256, 1, 0, 0, 0, 0, 0, -1, implicit $exec :: (dereferenceable load (s32), addrspace 4)427    %7:vreg_96 = IMAGE_LOAD_MIP_PCK_V3_V4 %5:vreg_128, %3:sgpr_256, 14, 0, 0, 0, 0, 0, -1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)428...429---430 431# GFX9-LABEL: name: image_load_mip_pck_sgn_merged_v1v3432# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_MIP_PCK_SGN_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)433# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0434# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3435 436name: image_load_mip_pck_sgn_merged_v1v3437body:             |438  bb.0.entry:439    %0:sgpr_64 = COPY $sgpr0_sgpr1440    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0441    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99442    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0443    %4:vgpr_32 = COPY %2.sub3444    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))445    %6:vgpr_32 = IMAGE_LOAD_MIP_PCK_SGN_V1_V4 %5:vreg_128, %3:sgpr_256, 1, 0, 0, 0, 0, 0, -1, implicit $exec :: (dereferenceable load (s32), addrspace 4)446    %7:vreg_96 = IMAGE_LOAD_MIP_PCK_SGN_V3_V4 %5:vreg_128, %3:sgpr_256, 14, 0, 0, 0, 0, 0, -1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)447...448---449 450# GFX9-LABEL: name: image_load_pck_merged_v1v3451# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_PCK_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)452# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0453# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3454 455name: image_load_pck_merged_v1v3456body:             |457  bb.0.entry:458    %0:sgpr_64 = COPY $sgpr0_sgpr1459    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0460    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99461    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0462    %4:vgpr_32 = COPY %2.sub3463    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))464    %6:vgpr_32 = IMAGE_LOAD_PCK_V1_V4 %5:vreg_128, %3:sgpr_256, 1, 0, 0, 0, 0, 0, -1, implicit $exec :: (dereferenceable load (s32), addrspace 4)465    %7:vreg_96 = IMAGE_LOAD_PCK_V3_V4 %5:vreg_128, %3:sgpr_256, 14, 0, 0, 0, 0, 0, -1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)466...467---468 469# GFX9-LABEL: name: image_load_pck_sgn_merged_v1v3470# GFX9: %{{[0-9]+}}:vreg_128 = IMAGE_LOAD_PCK_SGN_V4_V4 %5, %3, 15, 0, 0, 0, 0, 0, -1, implicit $exec, implicit $exec :: (dereferenceable load (s128), align 4, addrspace 4)471# GFX9: %{{[0-9]+}}:vgpr_32 = COPY %8.sub0472# GFX9: %{{[0-9]+}}:vreg_96 = COPY killed %8.sub1_sub2_sub3473 474name: image_load_pck_sgn_merged_v1v3475body:             |476  bb.0.entry:477    %0:sgpr_64 = COPY $sgpr0_sgpr1478    %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM %0, 36, 0479    %2:sgpr_128 = COPY $sgpr96_sgpr97_sgpr98_sgpr99480    %3:sgpr_256 = S_LOAD_DWORDX8_IMM %1, 208, 0481    %4:vgpr_32 = COPY %2.sub3482    %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %2:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable invariant load (s128))483    %6:vgpr_32 = IMAGE_LOAD_PCK_SGN_V1_V4 %5:vreg_128, %3:sgpr_256, 1, 0, 0, 0, 0, 0, -1, implicit $exec :: (dereferenceable load (s32), addrspace 4)484    %7:vreg_96 = IMAGE_LOAD_PCK_SGN_V3_V4 %5:vreg_128, %3:sgpr_256, 14, 0, 0, 0, 0, 0, -1, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 4)485...486---487 488