1*06cfbe3cSDavid Stuttard# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2 2*06cfbe3cSDavid Stuttard# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefixes=GFX12 %s 3*06cfbe3cSDavid Stuttard 4*06cfbe3cSDavid Stuttard--- 5*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3 6*06cfbe3cSDavid Stuttardbody: | 7*06cfbe3cSDavid Stuttard bb.0.entry: 8*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx3 9*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 10*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 11*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 12*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 13*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 14*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4) 15*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub0 16*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub1_sub2_sub3 17*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 18*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 19*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 20*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 21*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 22*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 23*06cfbe3cSDavid Stuttard %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4) 24*06cfbe3cSDavid Stuttard... 25*06cfbe3cSDavid Stuttard--- 26*06cfbe3cSDavid Stuttard 27*06cfbe3cSDavid Stuttardname: buffer_load_dwordx3_dword 28*06cfbe3cSDavid Stuttardbody: | 29*06cfbe3cSDavid Stuttard bb.0.entry: 30*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx3_dword 31*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 32*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 33*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 34*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 35*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 36*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4) 37*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_96 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub0_sub1_sub2 38*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub3 39*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 40*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 41*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 42*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 43*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 44*06cfbe3cSDavid Stuttard %7:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4) 45*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 46*06cfbe3cSDavid Stuttard... 47*06cfbe3cSDavid Stuttard--- 48*06cfbe3cSDavid Stuttard 49*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2 50*06cfbe3cSDavid Stuttardbody: | 51*06cfbe3cSDavid Stuttard bb.0.entry: 52*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2 53*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 54*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 55*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 56*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 57*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 58*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4) 59*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub0_sub1 60*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub2_sub3 61*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 62*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 63*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 64*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 65*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 66*06cfbe3cSDavid Stuttard %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 67*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 68*06cfbe3cSDavid Stuttard... 69*06cfbe3cSDavid Stuttard--- 70*06cfbe3cSDavid Stuttard 71*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2 72*06cfbe3cSDavid Stuttardbody: | 73*06cfbe3cSDavid Stuttard bb.0.entry: 74*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx2 75*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 76*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 77*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 78*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 79*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 80*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4) 81*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub0 82*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub1_sub2 83*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 84*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 85*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 86*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 87*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 88*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 89*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 90*06cfbe3cSDavid Stuttard... 91*06cfbe3cSDavid Stuttard--- 92*06cfbe3cSDavid Stuttard 93*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dword 94*06cfbe3cSDavid Stuttardbody: | 95*06cfbe3cSDavid Stuttard bb.0.entry: 96*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dword 97*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 98*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 99*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 100*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 101*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 102*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4) 103*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub0_sub1 104*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub2 105*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 106*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 107*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 108*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 109*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 110*06cfbe3cSDavid Stuttard %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 111*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 112*06cfbe3cSDavid Stuttard... 113*06cfbe3cSDavid Stuttard--- 114*06cfbe3cSDavid Stuttard 115*06cfbe3cSDavid Stuttard 116*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword 117*06cfbe3cSDavid Stuttardbody: | 118*06cfbe3cSDavid Stuttard bb.0.entry: 119*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dword 120*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 121*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 122*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 123*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 124*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 125*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 126*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub0 127*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub1 128*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 129*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 130*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 131*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 132*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 133*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 134*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 135*06cfbe3cSDavid Stuttard... 136*06cfbe3cSDavid Stuttard--- 137*06cfbe3cSDavid Stuttard 138*06cfbe3cSDavid Stuttardname: buffer_load_dword_32 139*06cfbe3cSDavid Stuttardbody: | 140*06cfbe3cSDavid Stuttard bb.0.entry: 141*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_32 142*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 143*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 144*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 145*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 146*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 147*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 148*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub0 149*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub1 150*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 4) 151*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub0_sub1_sub2 152*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_OFFSET]].sub3 153*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY8:%[0-9]+]]:vreg_64 = COPY [[COPY6]].sub0_sub1 154*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY9:%[0-9]+]]:vgpr_32 = COPY killed [[COPY6]].sub2 155*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY10:%[0-9]+]]:vgpr_32 = COPY [[COPY8]].sub0 156*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY11:%[0-9]+]]:vgpr_32 = COPY killed [[COPY8]].sub1 157*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 36, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4) 158*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY12:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub0_sub1 159*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY13:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_OFFSET]].sub2 160*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY14:%[0-9]+]]:vgpr_32 = COPY [[COPY12]].sub0 161*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY15:%[0-9]+]]:vgpr_32 = COPY killed [[COPY12]].sub1 162*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 163*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 164*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 165*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 166*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 167*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 168*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 169*06cfbe3cSDavid Stuttard %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 170*06cfbe3cSDavid Stuttard %10:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 20, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 171*06cfbe3cSDavid Stuttard %11:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 24, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 172*06cfbe3cSDavid Stuttard %12:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 28, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 173*06cfbe3cSDavid Stuttard %13:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 36, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 174*06cfbe3cSDavid Stuttard %14:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 40, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 175*06cfbe3cSDavid Stuttard %15:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 44, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 176*06cfbe3cSDavid Stuttard... 177*06cfbe3cSDavid Stuttard--- 178*06cfbe3cSDavid Stuttard 179*06cfbe3cSDavid Stuttard# 180*06cfbe3cSDavid Stuttard# buffer_store_dword 181*06cfbe3cSDavid Stuttard# 182*06cfbe3cSDavid Stuttard 183*06cfbe3cSDavid Stuttardname: buffer_store_dword_xyz 184*06cfbe3cSDavid Stuttardbody: | 185*06cfbe3cSDavid Stuttard bb.0.entry: 186*06cfbe3cSDavid Stuttard liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 187*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_store_dword_xyz 188*06cfbe3cSDavid Stuttard ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 189*06cfbe3cSDavid Stuttard ; GFX12-NEXT: {{ $}} 190*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3 191*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 192*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1 193*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0 194*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3 195*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2 196*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1 197*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0 198*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3 199*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY1]], %subreg.sub2 200*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[REG_SEQUENCE1]], %subreg.sub1_sub2_sub3 201*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORDX4_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE2]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4) 202*06cfbe3cSDavid Stuttard %7:vgpr_32 = COPY $vgpr3 203*06cfbe3cSDavid Stuttard %6:vgpr_32 = COPY $vgpr2 204*06cfbe3cSDavid Stuttard %5:vgpr_32 = COPY $vgpr1 205*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 206*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 207*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 208*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 209*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 210*06cfbe3cSDavid Stuttard %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 211*06cfbe3cSDavid Stuttard %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2 212*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 213*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact %14:vreg_96, %13:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4) 214*06cfbe3cSDavid Stuttard... 215*06cfbe3cSDavid Stuttard--- 216*06cfbe3cSDavid Stuttard 217*06cfbe3cSDavid Stuttardname: buffer_store_dwordx3_dword 218*06cfbe3cSDavid Stuttardbody: | 219*06cfbe3cSDavid Stuttard bb.0.entry: 220*06cfbe3cSDavid Stuttard liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 221*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_store_dwordx3_dword 222*06cfbe3cSDavid Stuttard ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 223*06cfbe3cSDavid Stuttard ; GFX12-NEXT: {{ $}} 224*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3 225*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 226*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1 227*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0 228*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3 229*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2 230*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1 231*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0 232*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3 233*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY1]], %subreg.sub2 234*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[REG_SEQUENCE1]], %subreg.sub0_sub1_sub2, [[COPY]], %subreg.sub3 235*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORDX4_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE2]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4) 236*06cfbe3cSDavid Stuttard %7:vgpr_32 = COPY $vgpr3 237*06cfbe3cSDavid Stuttard %6:vgpr_32 = COPY $vgpr2 238*06cfbe3cSDavid Stuttard %5:vgpr_32 = COPY $vgpr1 239*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 240*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 241*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 242*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 243*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 244*06cfbe3cSDavid Stuttard %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 245*06cfbe3cSDavid Stuttard %14:vreg_96 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1, %6:vgpr_32, %subreg.sub2 246*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact %14:vreg_96, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4) 247*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 248*06cfbe3cSDavid Stuttard... 249*06cfbe3cSDavid Stuttard--- 250*06cfbe3cSDavid Stuttard 251*06cfbe3cSDavid Stuttardname: buffer_store_dwordx2_dwordx2 252*06cfbe3cSDavid Stuttardbody: | 253*06cfbe3cSDavid Stuttard bb.0.entry: 254*06cfbe3cSDavid Stuttard liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 255*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_store_dwordx2_dwordx2 256*06cfbe3cSDavid Stuttard ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 257*06cfbe3cSDavid Stuttard ; GFX12-NEXT: {{ $}} 258*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3 259*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 260*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1 261*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0 262*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3 263*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2 264*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1 265*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0 266*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3 267*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1 268*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY]], %subreg.sub1 269*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE3:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[REG_SEQUENCE1]], %subreg.sub0_sub1, [[REG_SEQUENCE2]], %subreg.sub2_sub3 270*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORDX4_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE3]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4) 271*06cfbe3cSDavid Stuttard %7:vgpr_32 = COPY $vgpr3 272*06cfbe3cSDavid Stuttard %6:vgpr_32 = COPY $vgpr2 273*06cfbe3cSDavid Stuttard %5:vgpr_32 = COPY $vgpr1 274*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 275*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 276*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 277*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 278*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 279*06cfbe3cSDavid Stuttard %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 280*06cfbe3cSDavid Stuttard %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1 281*06cfbe3cSDavid Stuttard %15:vreg_64 = REG_SEQUENCE %6:vgpr_32, %subreg.sub0, %7:vgpr_32, %subreg.sub1 282*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact %14:vreg_64, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4) 283*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact %15:vreg_64, %13:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4) 284*06cfbe3cSDavid Stuttard... 285*06cfbe3cSDavid Stuttard--- 286*06cfbe3cSDavid Stuttard 287*06cfbe3cSDavid Stuttardname: buffer_store_dword_dwordx2 288*06cfbe3cSDavid Stuttardbody: | 289*06cfbe3cSDavid Stuttard bb.0.entry: 290*06cfbe3cSDavid Stuttard liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 291*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_store_dword_dwordx2 292*06cfbe3cSDavid Stuttard ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 293*06cfbe3cSDavid Stuttard ; GFX12-NEXT: {{ $}} 294*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3 295*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 296*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1 297*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0 298*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3 299*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2 300*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1 301*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0 302*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3 303*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1 304*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, %10:vreg_64, %subreg.sub1_sub2 305*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE2]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4) 306*06cfbe3cSDavid Stuttard %7:vgpr_32 = COPY $vgpr3 307*06cfbe3cSDavid Stuttard %6:vgpr_32 = COPY $vgpr2 308*06cfbe3cSDavid Stuttard %5:vgpr_32 = COPY $vgpr1 309*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 310*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 311*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 312*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 313*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 314*06cfbe3cSDavid Stuttard %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 315*06cfbe3cSDavid Stuttard %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1 316*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 317*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact %15:vreg_64, %13:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4) 318*06cfbe3cSDavid Stuttard... 319*06cfbe3cSDavid Stuttard--- 320*06cfbe3cSDavid Stuttard 321*06cfbe3cSDavid Stuttardname: buffer_store_dwordx2_dword 322*06cfbe3cSDavid Stuttardbody: | 323*06cfbe3cSDavid Stuttard bb.0.entry: 324*06cfbe3cSDavid Stuttard liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 325*06cfbe3cSDavid Stuttard liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 326*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_store_dwordx2_dword 327*06cfbe3cSDavid Stuttard ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 328*06cfbe3cSDavid Stuttard ; GFX12-NEXT: {{ $}} 329*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3 330*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 331*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1 332*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0 333*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3 334*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2 335*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1 336*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0 337*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3 338*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1 339*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[REG_SEQUENCE1]], %subreg.sub0_sub1, [[COPY]], %subreg.sub2 340*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE2]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4) 341*06cfbe3cSDavid Stuttard %7:vgpr_32 = COPY $vgpr3 342*06cfbe3cSDavid Stuttard %6:vgpr_32 = COPY $vgpr2 343*06cfbe3cSDavid Stuttard %5:vgpr_32 = COPY $vgpr1 344*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 345*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 346*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 347*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 348*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 349*06cfbe3cSDavid Stuttard %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 350*06cfbe3cSDavid Stuttard %14:vreg_64 = REG_SEQUENCE %4:vgpr_32, %subreg.sub0, %5:vgpr_32, %subreg.sub1 351*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact %14:vreg_64, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4) 352*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 353*06cfbe3cSDavid Stuttard... 354*06cfbe3cSDavid Stuttard--- 355*06cfbe3cSDavid Stuttard 356*06cfbe3cSDavid Stuttardname: buffer_store_dword_dword 357*06cfbe3cSDavid Stuttardbody: | 358*06cfbe3cSDavid Stuttard bb.0.entry: 359*06cfbe3cSDavid Stuttard liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 360*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_store_dword_dword 361*06cfbe3cSDavid Stuttard ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3 362*06cfbe3cSDavid Stuttard ; GFX12-NEXT: {{ $}} 363*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3 364*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 365*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1 366*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0 367*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr3 368*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:sgpr_32 = COPY $sgpr2 369*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:sgpr_32 = COPY $sgpr1 370*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:sgpr_32 = COPY $sgpr0 371*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY7]], %subreg.sub0, [[COPY6]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[COPY4]], %subreg.sub3 372*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY]], %subreg.sub1 373*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE1]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4) 374*06cfbe3cSDavid Stuttard %7:vgpr_32 = COPY $vgpr3 375*06cfbe3cSDavid Stuttard %6:vgpr_32 = COPY $vgpr2 376*06cfbe3cSDavid Stuttard %5:vgpr_32 = COPY $vgpr1 377*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 378*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 379*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 380*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 381*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 382*06cfbe3cSDavid Stuttard %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 383*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %6:vgpr_32, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 384*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 385*06cfbe3cSDavid Stuttard... 386*06cfbe3cSDavid Stuttard--- 387*06cfbe3cSDavid Stuttard 388*06cfbe3cSDavid Stuttardname: buffer_store_dword_32 389*06cfbe3cSDavid Stuttardbody: | 390*06cfbe3cSDavid Stuttard bb.0.entry: 391*06cfbe3cSDavid Stuttard liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8 392*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_store_dword_32 393*06cfbe3cSDavid Stuttard ; GFX12: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8 394*06cfbe3cSDavid Stuttard ; GFX12-NEXT: {{ $}} 395*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr8 396*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr7 397*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr6 398*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr5 399*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4 400*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr3 401*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2 402*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY $vgpr1 403*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY $vgpr0 404*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY9:%[0-9]+]]:sgpr_32 = COPY $sgpr3 405*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY10:%[0-9]+]]:sgpr_32 = COPY $sgpr2 406*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY11:%[0-9]+]]:sgpr_32 = COPY $sgpr1 407*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY12:%[0-9]+]]:sgpr_32 = COPY $sgpr0 408*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY12]], %subreg.sub0, [[COPY11]], %subreg.sub1, [[COPY10]], %subreg.sub2, [[COPY9]], %subreg.sub3 409*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY8]], %subreg.sub0, [[COPY7]], %subreg.sub1 410*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORDX2_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE1]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 4) 411*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY6]], %subreg.sub0, [[COPY5]], %subreg.sub1 412*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE3:%[0-9]+]]:vreg_96 = REG_SEQUENCE killed [[REG_SEQUENCE2]], %subreg.sub0_sub1, [[COPY4]], %subreg.sub2 413*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE4:%[0-9]+]]:vreg_128 = REG_SEQUENCE killed [[REG_SEQUENCE3]], %subreg.sub0_sub1_sub2, [[COPY3]], %subreg.sub3 414*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORDX4_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE4]], [[REG_SEQUENCE]], $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 4) 415*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE5:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY2]], %subreg.sub0, [[COPY1]], %subreg.sub1 416*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE6:%[0-9]+]]:vreg_96 = REG_SEQUENCE killed [[REG_SEQUENCE5]], %subreg.sub0_sub1, [[COPY]], %subreg.sub2 417*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORDX3_VBUFFER_OFFSET_exact killed [[REG_SEQUENCE6]], [[REG_SEQUENCE]], $sgpr_null, 36, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 4) 418*06cfbe3cSDavid Stuttard %12:vgpr_32 = COPY $vgpr8 419*06cfbe3cSDavid Stuttard %11:vgpr_32 = COPY $vgpr7 420*06cfbe3cSDavid Stuttard %10:vgpr_32 = COPY $vgpr6 421*06cfbe3cSDavid Stuttard %9:vgpr_32 = COPY $vgpr5 422*06cfbe3cSDavid Stuttard %8:vgpr_32 = COPY $vgpr4 423*06cfbe3cSDavid Stuttard %7:vgpr_32 = COPY $vgpr3 424*06cfbe3cSDavid Stuttard %6:vgpr_32 = COPY $vgpr2 425*06cfbe3cSDavid Stuttard %5:vgpr_32 = COPY $vgpr1 426*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 427*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 428*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 429*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 430*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 431*06cfbe3cSDavid Stuttard %13:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 432*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %4:vgpr_32, %13:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 433*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %5:vgpr_32, %13:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 434*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %6:vgpr_32, %13:sgpr_128, $sgpr_null, 16, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 435*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %7:vgpr_32, %13:sgpr_128, $sgpr_null, 20, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 436*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %8:vgpr_32, %13:sgpr_128, $sgpr_null, 24, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 437*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %9:vgpr_32, %13:sgpr_128, $sgpr_null, 28, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 438*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %10:vgpr_32, %13:sgpr_128, $sgpr_null, 36, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 439*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %11:vgpr_32, %13:sgpr_128, $sgpr_null, 40, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 440*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %12:vgpr_32, %13:sgpr_128, $sgpr_null, 44, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 441*06cfbe3cSDavid Stuttard... 442*06cfbe3cSDavid Stuttard--- 443*06cfbe3cSDavid Stuttard 444*06cfbe3cSDavid Stuttardname: buffer_load_dword_not_merged_swizzled_0 445*06cfbe3cSDavid Stuttardbody: | 446*06cfbe3cSDavid Stuttard bb.0.entry: 447*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_not_merged_swizzled_0 448*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 449*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 450*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 451*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 452*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 453*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 454*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET1:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 455*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 456*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 457*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 458*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 459*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 460*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 461*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 462*06cfbe3cSDavid Stuttard... 463*06cfbe3cSDavid Stuttard--- 464*06cfbe3cSDavid Stuttard 465*06cfbe3cSDavid Stuttardname: buffer_load_dword_not_merged_swizzled_1 466*06cfbe3cSDavid Stuttardbody: | 467*06cfbe3cSDavid Stuttard bb.0.entry: 468*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_not_merged_swizzled_1 469*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 470*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 471*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 472*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 473*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 474*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 475*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET1:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 8, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 476*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 477*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 478*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 479*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 480*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 481*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 482*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 483*06cfbe3cSDavid Stuttard... 484*06cfbe3cSDavid Stuttard--- 485*06cfbe3cSDavid Stuttard 486*06cfbe3cSDavid Stuttardname: buffer_load_dword_merge_across_swizzle 487*06cfbe3cSDavid Stuttardbody: | 488*06cfbe3cSDavid Stuttard bb.0.entry: 489*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_merge_across_swizzle 490*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 491*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 492*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 493*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 494*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 495*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 496*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub0 497*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub1 498*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 12, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 499*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 500*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 501*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 502*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 503*06cfbe3cSDavid Stuttard %4:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 504*06cfbe3cSDavid Stuttard %5:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %4:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 505*06cfbe3cSDavid Stuttard %6:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %4:sgpr_128, $sgpr_null, 12, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 506*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %4:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 507*06cfbe3cSDavid Stuttard... 508*06cfbe3cSDavid Stuttard--- 509*06cfbe3cSDavid Stuttard 510*06cfbe3cSDavid Stuttardname: buffer_load_dword_not_merge_across_swizzled_store 511*06cfbe3cSDavid Stuttardbody: | 512*06cfbe3cSDavid Stuttard bb.0.entry: 513*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_not_merge_across_swizzled_store 514*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 515*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 516*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 517*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 518*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 519*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 520*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 521*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 6, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 522*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_OFFSET1:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 523*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 524*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 525*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 526*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 527*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 528*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 529*06cfbe3cSDavid Stuttard %6:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 530*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %4:vgpr_32, %5:sgpr_128, $sgpr_null, 6, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 531*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 532*06cfbe3cSDavid Stuttard... 533*06cfbe3cSDavid Stuttard--- 534*06cfbe3cSDavid Stuttard 535*06cfbe3cSDavid Stuttardname: buffer_load_dword_merge_across_swizzled_store 536*06cfbe3cSDavid Stuttardbody: | 537*06cfbe3cSDavid Stuttard bb.0.entry: 538*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_merge_across_swizzled_store 539*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 540*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 541*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 542*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 543*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 544*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 545*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 546*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub0 547*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_OFFSET]].sub1 548*06cfbe3cSDavid Stuttard ; GFX12-NEXT: BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 12, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 549*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 550*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 551*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 552*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 553*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 554*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 555*06cfbe3cSDavid Stuttard %6:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 556*06cfbe3cSDavid Stuttard BUFFER_STORE_DWORD_VBUFFER_OFFSET_exact %4:vgpr_32, %5:sgpr_128, $sgpr_null, 12, 0, 1, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 4) 557*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_OFFSET %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 558*06cfbe3cSDavid Stuttard... 559*06cfbe3cSDavid Stuttard--- 560*06cfbe3cSDavid Stuttard 561*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_idxen 562*06cfbe3cSDavid Stuttardbody: | 563*06cfbe3cSDavid Stuttard bb.0.entry: 564*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dword_idxen 565*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 566*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 567*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 568*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 569*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 570*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 571*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 572*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN]].sub0 573*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN]].sub1 574*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 575*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 576*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 577*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 578*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 579*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 580*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 581*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 582*06cfbe3cSDavid Stuttard... 583*06cfbe3cSDavid Stuttard--- 584*06cfbe3cSDavid Stuttard 585*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2_idxen 586*06cfbe3cSDavid Stuttardbody: | 587*06cfbe3cSDavid Stuttard bb.0.entry: 588*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx2_idxen 589*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 590*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 591*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 592*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 593*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 594*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 595*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 596*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN]].sub0 597*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN]].sub1_sub2 598*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 599*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 600*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 601*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 602*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 603*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 604*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 605*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 606*06cfbe3cSDavid Stuttard... 607*06cfbe3cSDavid Stuttard--- 608*06cfbe3cSDavid Stuttard 609*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_idxen 610*06cfbe3cSDavid Stuttardbody: | 611*06cfbe3cSDavid Stuttard bb.0.entry: 612*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_idxen 613*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 614*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 615*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 616*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 617*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 618*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 619*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 620*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN]].sub0_sub1 621*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN]].sub2_sub3 622*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 623*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 624*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 625*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 626*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 627*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 628*06cfbe3cSDavid Stuttard %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 629*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 630*06cfbe3cSDavid Stuttard... 631*06cfbe3cSDavid Stuttard--- 632*06cfbe3cSDavid Stuttard 633*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3_idxen 634*06cfbe3cSDavid Stuttardbody: | 635*06cfbe3cSDavid Stuttard bb.0.entry: 636*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx3_idxen 637*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 638*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 639*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 640*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 641*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 642*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 643*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 644*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN]].sub0 645*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN]].sub1_sub2_sub3 646*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 647*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 648*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 649*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 650*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 651*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 652*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 653*06cfbe3cSDavid Stuttard %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 654*06cfbe3cSDavid Stuttard... 655*06cfbe3cSDavid Stuttard--- 656*06cfbe3cSDavid Stuttard 657*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_bothen 658*06cfbe3cSDavid Stuttardbody: | 659*06cfbe3cSDavid Stuttard bb.0.entry: 660*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dword_bothen 661*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 662*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 663*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 664*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 665*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 666*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 667*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 668*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN]].sub0 669*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN]].sub1 670*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 671*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 672*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 673*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 674*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 675*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 676*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 677*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 678*06cfbe3cSDavid Stuttard... 679*06cfbe3cSDavid Stuttard--- 680*06cfbe3cSDavid Stuttard 681*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2_bothen 682*06cfbe3cSDavid Stuttardbody: | 683*06cfbe3cSDavid Stuttard bb.0.entry: 684*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx2_bothen 685*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 686*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 687*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 688*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 689*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 690*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 691*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 692*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN]].sub0 693*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN]].sub1_sub2 694*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 695*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 696*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 697*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 698*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 699*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 700*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 701*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 702*06cfbe3cSDavid Stuttard... 703*06cfbe3cSDavid Stuttard--- 704*06cfbe3cSDavid Stuttard 705*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_bothen 706*06cfbe3cSDavid Stuttardbody: | 707*06cfbe3cSDavid Stuttard bb.0.entry: 708*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_bothen 709*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 710*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 711*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 712*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 713*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 714*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 715*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 716*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN]].sub0_sub1 717*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN]].sub2_sub3 718*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 719*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 720*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 721*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 722*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 723*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 724*06cfbe3cSDavid Stuttard %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 725*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 726*06cfbe3cSDavid Stuttard... 727*06cfbe3cSDavid Stuttard--- 728*06cfbe3cSDavid Stuttard 729*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3_bothen 730*06cfbe3cSDavid Stuttardbody: | 731*06cfbe3cSDavid Stuttard bb.0.entry: 732*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx3_bothen 733*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 734*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 735*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 736*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 737*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 738*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 739*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 740*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN]].sub0 741*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN]].sub1_sub2_sub3 742*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 743*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 744*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 745*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 746*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 747*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 748*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 749*06cfbe3cSDavid Stuttard %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 750*06cfbe3cSDavid Stuttard... 751*06cfbe3cSDavid Stuttard--- 752*06cfbe3cSDavid Stuttard 753*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_idxen_exact 754*06cfbe3cSDavid Stuttardbody: | 755*06cfbe3cSDavid Stuttard bb.0.entry: 756*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dword_idxen_exact 757*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 758*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 759*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 760*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 761*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 762*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 763*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 764*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact]].sub0 765*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact]].sub1 766*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 767*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 768*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 769*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 770*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 771*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 772*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 773*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 774*06cfbe3cSDavid Stuttard... 775*06cfbe3cSDavid Stuttard--- 776*06cfbe3cSDavid Stuttard 777*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2_idxen_exact 778*06cfbe3cSDavid Stuttardbody: | 779*06cfbe3cSDavid Stuttard bb.0.entry: 780*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx2_idxen_exact 781*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 782*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 783*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 784*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 785*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 786*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 787*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 788*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact]].sub0 789*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact]].sub1_sub2 790*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 791*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 792*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 793*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 794*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 795*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 796*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 797*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 798*06cfbe3cSDavid Stuttard... 799*06cfbe3cSDavid Stuttard--- 800*06cfbe3cSDavid Stuttard 801*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_idxen_exact 802*06cfbe3cSDavid Stuttardbody: | 803*06cfbe3cSDavid Stuttard bb.0.entry: 804*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_idxen_exact 805*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 806*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 807*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 808*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 809*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 810*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 811*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 812*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact]].sub0_sub1 813*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact]].sub2_sub3 814*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 815*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 816*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 817*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 818*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 819*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 820*06cfbe3cSDavid Stuttard %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 821*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 822*06cfbe3cSDavid Stuttard... 823*06cfbe3cSDavid Stuttard--- 824*06cfbe3cSDavid Stuttard 825*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3_idxen_exact 826*06cfbe3cSDavid Stuttardbody: | 827*06cfbe3cSDavid Stuttard bb.0.entry: 828*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx3_idxen_exact 829*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 830*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 831*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 832*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 833*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 834*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 835*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 836*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact]].sub0 837*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_IDXEN_exact]].sub1_sub2_sub3 838*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 839*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 840*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 841*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 842*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 843*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 844*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 845*06cfbe3cSDavid Stuttard %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 846*06cfbe3cSDavid Stuttard... 847*06cfbe3cSDavid Stuttard--- 848*06cfbe3cSDavid Stuttard 849*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_dword_idxen_exact 850*06cfbe3cSDavid Stuttardbody: | 851*06cfbe3cSDavid Stuttard bb.0.entry: 852*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dword_dword_idxen_exact 853*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 854*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 855*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 856*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 857*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 858*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 859*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4) 860*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact]].sub0_sub1 861*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_IDXEN_exact]].sub2 862*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[COPY5]].sub0 863*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY killed [[COPY5]].sub1 864*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 865*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 866*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 867*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 868*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 869*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 870*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 871*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 872*06cfbe3cSDavid Stuttard %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 873*06cfbe3cSDavid Stuttard... 874*06cfbe3cSDavid Stuttard--- 875*06cfbe3cSDavid Stuttard 876*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_dword_idxen_exact_swizzled_0 877*06cfbe3cSDavid Stuttardbody: | 878*06cfbe3cSDavid Stuttard bb.0.entry: 879*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dword_dword_idxen_exact_swizzled_0 880*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 881*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 882*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 883*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 884*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 885*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 886*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 887*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 888*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact]].sub0 889*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact]].sub1 890*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 891*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 892*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 893*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 894*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 895*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 896*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 897*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 898*06cfbe3cSDavid Stuttard %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_IDXEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 899*06cfbe3cSDavid Stuttard... 900*06cfbe3cSDavid Stuttard--- 901*06cfbe3cSDavid Stuttard 902*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_bothen_exact 903*06cfbe3cSDavid Stuttardbody: | 904*06cfbe3cSDavid Stuttard bb.0.entry: 905*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dword_bothen_exact 906*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 907*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 908*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 909*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 910*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 911*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 912*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 913*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact]].sub0 914*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact]].sub1 915*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 916*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 917*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 918*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 919*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 920*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 921*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 922*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 923*06cfbe3cSDavid Stuttard... 924*06cfbe3cSDavid Stuttard--- 925*06cfbe3cSDavid Stuttard 926*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx2_bothen_exact 927*06cfbe3cSDavid Stuttardbody: | 928*06cfbe3cSDavid Stuttard bb.0.entry: 929*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx2_bothen_exact 930*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 931*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 932*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 933*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 934*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 935*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 936*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 937*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact]].sub0 938*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact]].sub1_sub2 939*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 940*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 941*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 942*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 943*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 944*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 945*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 946*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 947*06cfbe3cSDavid Stuttard... 948*06cfbe3cSDavid Stuttard--- 949*06cfbe3cSDavid Stuttard 950*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_bothen_exact 951*06cfbe3cSDavid Stuttardbody: | 952*06cfbe3cSDavid Stuttard bb.0.entry: 953*06cfbe3cSDavid Stuttard 954*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_bothen_exact 955*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 956*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 957*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 958*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 959*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 960*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 961*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 962*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact]].sub0_sub1 963*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact]].sub2_sub3 964*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 965*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 966*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 967*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 968*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 969*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 970*06cfbe3cSDavid Stuttard %7:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 971*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 972*06cfbe3cSDavid Stuttard... 973*06cfbe3cSDavid Stuttard--- 974*06cfbe3cSDavid Stuttard 975*06cfbe3cSDavid Stuttardname: buffer_load_dword_dwordx3_bothen_exact 976*06cfbe3cSDavid Stuttardbody: | 977*06cfbe3cSDavid Stuttard bb.0.entry: 978*06cfbe3cSDavid Stuttard 979*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dwordx3_bothen_exact 980*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 981*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 982*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 983*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 984*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 985*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 986*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 987*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact]].sub0 988*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vreg_96 = COPY killed [[BUFFER_LOAD_DWORDX4_VBUFFER_BOTHEN_exact]].sub1_sub2_sub3 989*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 990*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 991*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 992*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 993*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 994*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 995*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 996*06cfbe3cSDavid Stuttard %8:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 997*06cfbe3cSDavid Stuttard... 998*06cfbe3cSDavid Stuttard--- 999*06cfbe3cSDavid Stuttard 1000*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_dword_bothen_exact 1001*06cfbe3cSDavid Stuttardbody: | 1002*06cfbe3cSDavid Stuttard bb.0.entry: 1003*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dword_dword_bothen_exact 1004*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 1005*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 1006*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 1007*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 1008*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 1009*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 1010*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 4) 1011*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact]].sub0_sub1 1012*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX3_VBUFFER_BOTHEN_exact]].sub2 1013*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[COPY5]].sub0 1014*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY killed [[COPY5]].sub1 1015*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 1016*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 1017*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 1018*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 1019*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 1020*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 1021*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1022*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1023*06cfbe3cSDavid Stuttard %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1024*06cfbe3cSDavid Stuttard... 1025*06cfbe3cSDavid Stuttard--- 1026*06cfbe3cSDavid Stuttard 1027*06cfbe3cSDavid Stuttardname: buffer_load_dword_dword_dword_bothen_exact_swizzled_0 1028*06cfbe3cSDavid Stuttardbody: | 1029*06cfbe3cSDavid Stuttard bb.0.entry: 1030*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dword_dword_dword_bothen_exact_swizzled_0 1031*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 1032*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 1033*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 1034*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 1035*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 1036*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 1037*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1038*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 4) 1039*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact]].sub0 1040*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY killed [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact]].sub1 1041*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 1042*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 1043*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 1044*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 1045*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 1046*06cfbe3cSDavid Stuttard %5:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 1047*06cfbe3cSDavid Stuttard %7:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 4, 0, 1, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1048*06cfbe3cSDavid Stuttard %8:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 8, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1049*06cfbe3cSDavid Stuttard %9:vgpr_32 = BUFFER_LOAD_DWORD_VBUFFER_BOTHEN_exact %4, %5:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1050*06cfbe3cSDavid Stuttard... 1051*06cfbe3cSDavid Stuttard--- 1052*06cfbe3cSDavid Stuttard 1053*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_bothen_exact_diff_vaddr 1054*06cfbe3cSDavid Stuttardbody: | 1055*06cfbe3cSDavid Stuttard bb.0.entry: 1056*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_bothen_exact_diff_vaddr 1057*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 1058*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 1059*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 1060*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 1061*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr0 1062*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr1 1063*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 1064*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1065*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact1:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY5]], [[REG_SEQUENCE]], $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1066*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 1067*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 1068*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 1069*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 1070*06cfbe3cSDavid Stuttard %4:vreg_64 = COPY $vgpr0 1071*06cfbe3cSDavid Stuttard %5:vreg_64 = COPY $vgpr1 1072*06cfbe3cSDavid Stuttard %6:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 1073*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %4, %6:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1074*06cfbe3cSDavid Stuttard %9:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %5, %6:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1075*06cfbe3cSDavid Stuttard... 1076*06cfbe3cSDavid Stuttard--- 1077*06cfbe3cSDavid Stuttard 1078*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_bothen_exact_diff_srsrc 1079*06cfbe3cSDavid Stuttardbody: | 1080*06cfbe3cSDavid Stuttard bb.0.entry: 1081*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_bothen_exact_diff_srsrc 1082*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 1083*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 1084*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 1085*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 1086*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr4 1087*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr0 1088*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 1089*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 1090*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY5]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1091*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact1:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact [[COPY5]], [[REG_SEQUENCE1]], $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1092*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 1093*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 1094*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 1095*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 1096*06cfbe3cSDavid Stuttard %4:sgpr_32 = COPY $sgpr4 1097*06cfbe3cSDavid Stuttard %5:vreg_64 = COPY $vgpr0 1098*06cfbe3cSDavid Stuttard %6:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 1099*06cfbe3cSDavid Stuttard %7:sgpr_128 = REG_SEQUENCE %1:sgpr_32, %subreg.sub0, %2:sgpr_32, %subreg.sub1, %3:sgpr_32, %subreg.sub2, %4:sgpr_32, %subreg.sub3 1100*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %5, %6:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1101*06cfbe3cSDavid Stuttard %9:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_BOTHEN_exact %5, %7:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1102*06cfbe3cSDavid Stuttard... 1103*06cfbe3cSDavid Stuttard--- 1104*06cfbe3cSDavid Stuttard 1105*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_idxen_exact_diff_vaddr 1106*06cfbe3cSDavid Stuttardbody: | 1107*06cfbe3cSDavid Stuttard bb.0.entry: 1108*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_idxen_exact_diff_vaddr 1109*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 1110*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 1111*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 1112*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 1113*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1114*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 1115*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 1116*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY4]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1117*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact1:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY5]], [[REG_SEQUENCE]], $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1118*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 1119*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 1120*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 1121*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 1122*06cfbe3cSDavid Stuttard %4:vgpr_32 = COPY $vgpr0 1123*06cfbe3cSDavid Stuttard %5:vgpr_32 = COPY $vgpr1 1124*06cfbe3cSDavid Stuttard %6:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 1125*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %4, %6:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1126*06cfbe3cSDavid Stuttard %9:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %5, %6:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1127*06cfbe3cSDavid Stuttard... 1128*06cfbe3cSDavid Stuttard--- 1129*06cfbe3cSDavid Stuttard 1130*06cfbe3cSDavid Stuttardname: buffer_load_dwordx2_dwordx2_idxen_exact_diff_srsrc 1131*06cfbe3cSDavid Stuttardbody: | 1132*06cfbe3cSDavid Stuttard bb.0.entry: 1133*06cfbe3cSDavid Stuttard ; GFX12-LABEL: name: buffer_load_dwordx2_dwordx2_idxen_exact_diff_srsrc 1134*06cfbe3cSDavid Stuttard ; GFX12: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr0 1135*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr1 1136*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY2:%[0-9]+]]:sgpr_32 = COPY $sgpr2 1137*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY3:%[0-9]+]]:sgpr_32 = COPY $sgpr3 1138*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY4:%[0-9]+]]:sgpr_32 = COPY $sgpr4 1139*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr0 1140*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 1141*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY1]], %subreg.sub0, [[COPY2]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY4]], %subreg.sub3 1142*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY5]], [[REG_SEQUENCE]], $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1143*06cfbe3cSDavid Stuttard ; GFX12-NEXT: [[BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact1:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact [[COPY5]], [[REG_SEQUENCE1]], $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1144*06cfbe3cSDavid Stuttard %0:sgpr_32 = COPY $sgpr0 1145*06cfbe3cSDavid Stuttard %1:sgpr_32 = COPY $sgpr1 1146*06cfbe3cSDavid Stuttard %2:sgpr_32 = COPY $sgpr2 1147*06cfbe3cSDavid Stuttard %3:sgpr_32 = COPY $sgpr3 1148*06cfbe3cSDavid Stuttard %4:sgpr_32 = COPY $sgpr4 1149*06cfbe3cSDavid Stuttard %5:vgpr_32 = COPY $vgpr0 1150*06cfbe3cSDavid Stuttard %6:sgpr_128 = REG_SEQUENCE %0:sgpr_32, %subreg.sub0, %1:sgpr_32, %subreg.sub1, %2:sgpr_32, %subreg.sub2, %3:sgpr_32, %subreg.sub3 1151*06cfbe3cSDavid Stuttard %7:sgpr_128 = REG_SEQUENCE %1:sgpr_32, %subreg.sub0, %2:sgpr_32, %subreg.sub1, %3:sgpr_32, %subreg.sub2, %4:sgpr_32, %subreg.sub3 1152*06cfbe3cSDavid Stuttard %8:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %5, %6:sgpr_128, $sgpr_null, 4, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1153*06cfbe3cSDavid Stuttard %9:vreg_64 = BUFFER_LOAD_DWORDX2_VBUFFER_IDXEN_exact %5, %7:sgpr_128, $sgpr_null, 12, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 4) 1154*06cfbe3cSDavid Stuttard... 1155