| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py |
| # RUN: llc -march=amdgcn -verify-regalloc -run-pass=greedy %s -o - | FileCheck %s |
| |
| --- |
| name: zextload_global_v64i16_to_v64i64 |
| tracksRegLiveness: true |
| machineFunctionInfo: |
| scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99' |
| stackPtrOffsetReg: '$sgpr32' |
| body: | |
| bb.0: |
| liveins: $sgpr0_sgpr1 |
| |
| ; CHECK-LABEL: name: zextload_global_v64i16_to_v64i64 |
| ; CHECK: liveins: $sgpr0_sgpr1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr0_sgpr1 |
| ; CHECK-NEXT: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]](p4), 9, 0 :: (dereferenceable invariant load (s128), align 4, addrspace 4) |
| ; CHECK-NEXT: undef %2.sub3:sgpr_128 = S_MOV_B32 61440 |
| ; CHECK-NEXT: %2.sub2:sgpr_128 = S_MOV_B32 -1 |
| ; CHECK-NEXT: %2.sub0:sgpr_128 = COPY [[S_LOAD_DWORDX4_IMM]].sub0 |
| ; CHECK-NEXT: %2.sub1:sgpr_128 = COPY [[S_LOAD_DWORDX4_IMM]].sub1 |
| ; CHECK-NEXT: undef %3.sub0:sgpr_128 = COPY [[S_LOAD_DWORDX4_IMM]].sub2 |
| ; CHECK-NEXT: %3.sub1:sgpr_128 = COPY [[S_LOAD_DWORDX4_IMM]].sub3 |
| ; CHECK-NEXT: %3.sub2:sgpr_128 = COPY %2.sub2 |
| ; CHECK-NEXT: %3.sub3:sgpr_128 = COPY %2.sub3 |
| ; CHECK-NEXT: early-clobber %4:vreg_128, early-clobber %5:vreg_128, early-clobber %6:vreg_128, early-clobber %7:vreg_128 = BUNDLE %3, implicit $exec { |
| ; CHECK-NEXT: [[BUFFER_LOAD_DWORDX4_OFFSET:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 0, 0, 0, implicit $exec :: (load (s128), align 128, addrspace 1) |
| ; CHECK-NEXT: [[BUFFER_LOAD_DWORDX4_OFFSET1:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 16, 0, 0, implicit $exec :: (load (s128), addrspace 1) |
| ; CHECK-NEXT: [[BUFFER_LOAD_DWORDX4_OFFSET2:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 32, 0, 0, implicit $exec :: (load (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: [[BUFFER_LOAD_DWORDX4_OFFSET3:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 48, 0, 0, implicit $exec :: (load (s128), addrspace 1) |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %47.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %55.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %63.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %71.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %79.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET1]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %87.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET1]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %95.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET1]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %101.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET1]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %107.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET2]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %113.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET2]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %154.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET2]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %209.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET2]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %188.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET3]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %123.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET3]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %129.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET3]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %135.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET3]].sub2, implicit $exec |
| ; CHECK-NEXT: [[BUFFER_LOAD_DWORDX4_OFFSET4:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 64, 0, 0, implicit $exec :: (load (s128), align 64, addrspace 1) |
| ; CHECK-NEXT: undef %141.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET4]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %147.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET4]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %159.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET4]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %165.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET4]].sub2, implicit $exec |
| ; CHECK-NEXT: [[BUFFER_LOAD_DWORDX4_OFFSET5:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 80, 0, 0, implicit $exec :: (load (s128), addrspace 1) |
| ; CHECK-NEXT: [[BUFFER_LOAD_DWORDX4_OFFSET6:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 96, 0, 0, implicit $exec :: (load (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: undef %36.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET6]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %37.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET6]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %38.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET6]].sub2, implicit $exec |
| ; CHECK-NEXT: [[BUFFER_LOAD_DWORDX4_OFFSET7:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 112, 0, 0, implicit $exec :: (load (s128), addrspace 1) |
| ; CHECK-NEXT: undef %40.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET7]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %41.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET7]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %42.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET7]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %43.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET7]].sub2, implicit $exec |
| ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 65535 |
| ; CHECK-NEXT: undef %48.sub2:vreg_128 = COPY %47.sub2 |
| ; CHECK-NEXT: %48.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %51.sub0:vreg_128 = COPY %48.sub0 { |
| ; CHECK-NEXT: internal %51.sub2:vreg_128 = COPY %48.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %51, %stack.0, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.0, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %56.sub2:vreg_128 = COPY %55.sub2 |
| ; CHECK-NEXT: %56.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %59.sub0:vreg_128 = COPY %56.sub0 { |
| ; CHECK-NEXT: internal %59.sub2:vreg_128 = COPY %56.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %59, %stack.1, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.1, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %64.sub2:vreg_128 = COPY %63.sub2 |
| ; CHECK-NEXT: %64.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %67.sub0:vreg_128 = COPY %64.sub0 { |
| ; CHECK-NEXT: internal %67.sub2:vreg_128 = COPY %64.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %67, %stack.2, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.2, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %72.sub2:vreg_128 = COPY %71.sub2 |
| ; CHECK-NEXT: %72.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %75.sub0:vreg_128 = COPY %72.sub0 { |
| ; CHECK-NEXT: internal %75.sub2:vreg_128 = COPY %72.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %75, %stack.3, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.3, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %80.sub2:vreg_128 = COPY %79.sub2 |
| ; CHECK-NEXT: %80.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET1]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %83.sub0:vreg_128 = COPY %80.sub0 { |
| ; CHECK-NEXT: internal %83.sub2:vreg_128 = COPY %80.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %83, %stack.4, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.4, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %88.sub2:vreg_128 = COPY %87.sub2 |
| ; CHECK-NEXT: %88.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET1]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %91.sub0:vreg_128 = COPY %88.sub0 { |
| ; CHECK-NEXT: internal %91.sub2:vreg_128 = COPY %88.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %91, %stack.5, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.5, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %96.sub2:vreg_128 = COPY %95.sub2 |
| ; CHECK-NEXT: %96.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET1]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %155.sub0:vreg_128 = COPY %96.sub0 { |
| ; CHECK-NEXT: internal %155.sub2:vreg_128 = COPY %96.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %155, %stack.7, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.7, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %102.sub2:vreg_128 = COPY %101.sub2 |
| ; CHECK-NEXT: %102.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET1]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %117.sub0:vreg_128 = COPY %102.sub0 { |
| ; CHECK-NEXT: internal %117.sub2:vreg_128 = COPY %102.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %117, %stack.6, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.6, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %108.sub2:vreg_128 = COPY %107.sub2 |
| ; CHECK-NEXT: %108.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET2]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %110.sub0:vreg_128 = COPY %108.sub0 { |
| ; CHECK-NEXT: internal %110.sub2:vreg_128 = COPY %108.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %114.sub2:vreg_128 = COPY %113.sub2 |
| ; CHECK-NEXT: %114.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET2]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %116.sub0:vreg_128 = COPY %114.sub0 { |
| ; CHECK-NEXT: internal %116.sub2:vreg_128 = COPY %114.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %154.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET2]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %177.sub0:vreg_128 = COPY %154.sub0 { |
| ; CHECK-NEXT: internal %177.sub2:vreg_128 = COPY %154.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %179.sub0:vreg_128 = COPY %177.sub0 { |
| ; CHECK-NEXT: internal %179.sub2:vreg_128 = COPY %177.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %179, %stack.8, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.8, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %210.sub2:vreg_128 = COPY %209.sub2 |
| ; CHECK-NEXT: %210.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET2]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %213.sub0:vreg_128 = COPY %210.sub0 { |
| ; CHECK-NEXT: internal %213.sub2:vreg_128 = COPY %210.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %213, %stack.11, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.11, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %189.sub2:vreg_128 = COPY %188.sub2 |
| ; CHECK-NEXT: %189.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET3]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %192.sub0:vreg_128 = COPY %189.sub0 { |
| ; CHECK-NEXT: internal %192.sub2:vreg_128 = COPY %189.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %192, %stack.9, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.9, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %124.sub2:vreg_128 = COPY %123.sub2 |
| ; CHECK-NEXT: %124.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET3]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %126.sub0:vreg_128 = COPY %124.sub0 { |
| ; CHECK-NEXT: internal %126.sub2:vreg_128 = COPY %124.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %130.sub2:vreg_128 = COPY %129.sub2 |
| ; CHECK-NEXT: %130.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET3]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %205.sub0:vreg_128 = COPY %130.sub0 { |
| ; CHECK-NEXT: internal %205.sub2:vreg_128 = COPY %130.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: SI_SPILL_V128_SAVE %205, %stack.10, $sgpr32, 0, implicit $exec :: (store (s128) into %stack.10, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %136.sub2:vreg_128 = COPY %135.sub2 |
| ; CHECK-NEXT: %136.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET3]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %138.sub0:vreg_128 = COPY %136.sub0 { |
| ; CHECK-NEXT: internal %138.sub2:vreg_128 = COPY %136.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %142.sub2:vreg_128 = COPY %141.sub2 |
| ; CHECK-NEXT: %142.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET4]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %144.sub0:vreg_128 = COPY %142.sub0 { |
| ; CHECK-NEXT: internal %144.sub2:vreg_128 = COPY %142.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %148.sub2:vreg_128 = COPY %147.sub2 |
| ; CHECK-NEXT: %148.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET4]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %150.sub0:vreg_128 = COPY %148.sub0 { |
| ; CHECK-NEXT: internal %150.sub2:vreg_128 = COPY %148.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %160.sub2:vreg_128 = COPY %159.sub2 |
| ; CHECK-NEXT: %160.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET4]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %162.sub0:vreg_128 = COPY %160.sub0 { |
| ; CHECK-NEXT: internal %162.sub2:vreg_128 = COPY %160.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %166.sub2:vreg_128 = COPY %165.sub2 |
| ; CHECK-NEXT: %166.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET4]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %168.sub0:vreg_128 = COPY %166.sub0 { |
| ; CHECK-NEXT: internal %168.sub2:vreg_128 = COPY %166.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %175.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET5]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %172.sub2:vreg_128 = COPY %175.sub2 |
| ; CHECK-NEXT: %172.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET5]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %174.sub0:vreg_128 = COPY %172.sub0 { |
| ; CHECK-NEXT: internal %174.sub2:vreg_128 = COPY %172.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %187.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET5]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %184.sub2:vreg_128 = COPY %187.sub2 |
| ; CHECK-NEXT: %184.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET5]].sub0, implicit $exec |
| ; CHECK-NEXT: undef %186.sub0:vreg_128 = COPY %184.sub0 { |
| ; CHECK-NEXT: internal %186.sub2:vreg_128 = COPY %184.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %200.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET5]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %197.sub2:vreg_128 = COPY %200.sub2 |
| ; CHECK-NEXT: %197.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET5]].sub3, implicit $exec |
| ; CHECK-NEXT: undef %199.sub0:vreg_128 = COPY %197.sub0 { |
| ; CHECK-NEXT: internal %199.sub2:vreg_128 = COPY %197.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %220.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET5]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %204.sub2:vreg_128 = COPY %220.sub2 |
| ; CHECK-NEXT: %204.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET5]].sub2, implicit $exec |
| ; CHECK-NEXT: undef %219.sub2:vreg_128 = V_LSHRREV_B32_e32 16, [[BUFFER_LOAD_DWORDX4_OFFSET6]].sub1, implicit $exec |
| ; CHECK-NEXT: undef %218.sub2:vreg_128 = COPY %219.sub2 |
| ; CHECK-NEXT: %218.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET6]].sub1, implicit $exec |
| ; CHECK-NEXT: %36.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET6]].sub0, implicit $exec |
| ; CHECK-NEXT: %37.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET6]].sub3, implicit $exec |
| ; CHECK-NEXT: %38.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET6]].sub2, implicit $exec |
| ; CHECK-NEXT: %40.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET7]].sub1, implicit $exec |
| ; CHECK-NEXT: %41.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET7]].sub0, implicit $exec |
| ; CHECK-NEXT: %42.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET7]].sub3, implicit $exec |
| ; CHECK-NEXT: %43.sub0:vreg_128 = V_AND_B32_e32 [[S_MOV_B32_]], [[BUFFER_LOAD_DWORDX4_OFFSET7]].sub2, implicit $exec |
| ; CHECK-NEXT: %43.sub1:vreg_128 = V_MOV_B32_e32 0, implicit $exec |
| ; CHECK-NEXT: %43.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %43, %2, 0, 480, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: %42.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %42.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %42, %2, 0, 496, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: %41.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %41.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %41, %2, 0, 448, 0, 0, implicit $exec :: (store (s128), align 64, addrspace 1) |
| ; CHECK-NEXT: %40.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %40.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %40, %2, 0, 464, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: %38.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %38.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %38, %2, 0, 416, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: %37.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %37.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %37, %2, 0, 432, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: %36.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %36.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %36, %2, 0, 384, 0, 0, implicit $exec :: (store (s128), align 128, addrspace 1) |
| ; CHECK-NEXT: undef %216.sub0:vreg_128 = COPY %218.sub0 { |
| ; CHECK-NEXT: internal %216.sub2:vreg_128 = COPY %218.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %216.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %216.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %216, %2, 0, 400, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: undef %202.sub0:vreg_128 = COPY %204.sub0 { |
| ; CHECK-NEXT: internal %202.sub2:vreg_128 = COPY %204.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %202.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %202.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %202, %2, 0, 352, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: undef %198.sub0:vreg_128 = COPY %199.sub0 { |
| ; CHECK-NEXT: internal %198.sub2:vreg_128 = COPY %199.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %195.sub0:vreg_128 = COPY %198.sub0 { |
| ; CHECK-NEXT: internal %195.sub2:vreg_128 = COPY %198.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %195.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %195.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %195, %2, 0, 368, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: undef %185.sub0:vreg_128 = COPY %186.sub0 { |
| ; CHECK-NEXT: internal %185.sub2:vreg_128 = COPY %186.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %182.sub0:vreg_128 = COPY %185.sub0 { |
| ; CHECK-NEXT: internal %182.sub2:vreg_128 = COPY %185.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %182.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %182.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %182, %2, 0, 320, 0, 0, implicit $exec :: (store (s128), align 64, addrspace 1) |
| ; CHECK-NEXT: undef %173.sub0:vreg_128 = COPY %174.sub0 { |
| ; CHECK-NEXT: internal %173.sub2:vreg_128 = COPY %174.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %170.sub0:vreg_128 = COPY %173.sub0 { |
| ; CHECK-NEXT: internal %170.sub2:vreg_128 = COPY %173.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %170.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %170.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %170, %2, 0, 336, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: undef %167.sub0:vreg_128 = COPY %168.sub0 { |
| ; CHECK-NEXT: internal %167.sub2:vreg_128 = COPY %168.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %164.sub0:vreg_128 = COPY %167.sub0 { |
| ; CHECK-NEXT: internal %164.sub2:vreg_128 = COPY %167.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %164.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %164.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %164, %2, 0, 288, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: undef %161.sub0:vreg_128 = COPY %162.sub0 { |
| ; CHECK-NEXT: internal %161.sub2:vreg_128 = COPY %162.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %158.sub0:vreg_128 = COPY %161.sub0 { |
| ; CHECK-NEXT: internal %158.sub2:vreg_128 = COPY %161.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %158.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %158.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %158, %2, 0, 304, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: undef %149.sub0:vreg_128 = COPY %150.sub0 { |
| ; CHECK-NEXT: internal %149.sub2:vreg_128 = COPY %150.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %146.sub0:vreg_128 = COPY %149.sub0 { |
| ; CHECK-NEXT: internal %146.sub2:vreg_128 = COPY %149.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %146.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %146.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %146, %2, 0, 256, 0, 0, implicit $exec :: (store (s128), align 256, addrspace 1) |
| ; CHECK-NEXT: undef %143.sub0:vreg_128 = COPY %144.sub0 { |
| ; CHECK-NEXT: internal %143.sub2:vreg_128 = COPY %144.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %140.sub0:vreg_128 = COPY %143.sub0 { |
| ; CHECK-NEXT: internal %140.sub2:vreg_128 = COPY %143.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %140.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %140.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %140, %2, 0, 272, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: undef %137.sub0:vreg_128 = COPY %138.sub0 { |
| ; CHECK-NEXT: internal %137.sub2:vreg_128 = COPY %138.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %134.sub0:vreg_128 = COPY %137.sub0 { |
| ; CHECK-NEXT: internal %134.sub2:vreg_128 = COPY %137.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %134.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %134.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %134, %2, 0, 224, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.10, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.10, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %131.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE]].sub0 { |
| ; CHECK-NEXT: internal %131.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %128.sub0:vreg_128 = COPY %131.sub0 { |
| ; CHECK-NEXT: internal %128.sub2:vreg_128 = COPY %131.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %128.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %128.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %128, %2, 0, 240, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: undef %125.sub0:vreg_128 = COPY %126.sub0 { |
| ; CHECK-NEXT: internal %125.sub2:vreg_128 = COPY %126.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %122.sub0:vreg_128 = COPY %125.sub0 { |
| ; CHECK-NEXT: internal %122.sub2:vreg_128 = COPY %125.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %122.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %122.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %122, %2, 0, 192, 0, 0, implicit $exec :: (store (s128), align 64, addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE1:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.9, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.9, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %190.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE1]].sub0 { |
| ; CHECK-NEXT: internal %190.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE1]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %120.sub0:vreg_128 = COPY %190.sub0 { |
| ; CHECK-NEXT: internal %120.sub2:vreg_128 = COPY %190.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %120.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %120.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %120, %2, 0, 208, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE2:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.11, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.11, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %211.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE2]].sub0 { |
| ; CHECK-NEXT: internal %211.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE2]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %208.sub0:vreg_128 = COPY %211.sub0 { |
| ; CHECK-NEXT: internal %208.sub2:vreg_128 = COPY %211.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %208.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %208.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %208, %2, 0, 160, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE3:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.8, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.8, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %178.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE3]].sub0 { |
| ; CHECK-NEXT: internal %178.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE3]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %152.sub0:vreg_128 = COPY %178.sub0 { |
| ; CHECK-NEXT: internal %152.sub2:vreg_128 = COPY %178.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %152.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %152.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %152, %2, 0, 176, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: undef %115.sub0:vreg_128 = COPY %116.sub0 { |
| ; CHECK-NEXT: internal %115.sub2:vreg_128 = COPY %116.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %112.sub0:vreg_128 = COPY %115.sub0 { |
| ; CHECK-NEXT: internal %112.sub2:vreg_128 = COPY %115.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %112.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %112.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %112, %2, 0, 128, 0, 0, implicit $exec :: (store (s128), align 128, addrspace 1) |
| ; CHECK-NEXT: undef %109.sub0:vreg_128 = COPY %110.sub0 { |
| ; CHECK-NEXT: internal %109.sub2:vreg_128 = COPY %110.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %106.sub0:vreg_128 = COPY %109.sub0 { |
| ; CHECK-NEXT: internal %106.sub2:vreg_128 = COPY %109.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %106.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %106.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %106, %2, 0, 144, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE4:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.6, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.6, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %103.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE4]].sub0 { |
| ; CHECK-NEXT: internal %103.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE4]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %100.sub0:vreg_128 = COPY %103.sub0 { |
| ; CHECK-NEXT: internal %100.sub2:vreg_128 = COPY %103.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %100.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %100.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %100, %2, 0, 96, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE5:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.7, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.7, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %97.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE5]].sub0 { |
| ; CHECK-NEXT: internal %97.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE5]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %94.sub0:vreg_128 = COPY %97.sub0 { |
| ; CHECK-NEXT: internal %94.sub2:vreg_128 = COPY %97.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %94.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %94.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %94, %2, 0, 112, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE6:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.5, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.5, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %89.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE6]].sub0 { |
| ; CHECK-NEXT: internal %89.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE6]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %86.sub0:vreg_128 = COPY %89.sub0 { |
| ; CHECK-NEXT: internal %86.sub2:vreg_128 = COPY %89.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %86.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %86.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %86, %2, 0, 64, 0, 0, implicit $exec :: (store (s128), align 64, addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE7:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.4, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.4, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %81.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE7]].sub0 { |
| ; CHECK-NEXT: internal %81.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE7]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %78.sub0:vreg_128 = COPY %81.sub0 { |
| ; CHECK-NEXT: internal %78.sub2:vreg_128 = COPY %81.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %78.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %78.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %78, %2, 0, 80, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE8:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.3, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.3, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %73.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE8]].sub0 { |
| ; CHECK-NEXT: internal %73.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE8]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %70.sub0:vreg_128 = COPY %73.sub0 { |
| ; CHECK-NEXT: internal %70.sub2:vreg_128 = COPY %73.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %70.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %70.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %70, %2, 0, 32, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE9:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.2, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.2, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %65.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE9]].sub0 { |
| ; CHECK-NEXT: internal %65.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE9]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %62.sub0:vreg_128 = COPY %65.sub0 { |
| ; CHECK-NEXT: internal %62.sub2:vreg_128 = COPY %65.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %62.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %62.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %62, %2, 0, 48, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE10:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.1, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %57.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE10]].sub0 { |
| ; CHECK-NEXT: internal %57.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE10]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %54.sub0:vreg_128 = COPY %57.sub0 { |
| ; CHECK-NEXT: internal %54.sub2:vreg_128 = COPY %57.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %54.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %54.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %54, %2, 0, 0, 0, 0, implicit $exec :: (store (s128), align 512, addrspace 1) |
| ; CHECK-NEXT: [[SI_SPILL_V128_RESTORE11:%[0-9]+]]:vreg_128 = SI_SPILL_V128_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s128) from %stack.0, align 4, addrspace 5) |
| ; CHECK-NEXT: undef %49.sub0:vreg_128 = COPY [[SI_SPILL_V128_RESTORE11]].sub0 { |
| ; CHECK-NEXT: internal %49.sub2:vreg_128 = COPY [[SI_SPILL_V128_RESTORE11]].sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: undef %46.sub0:vreg_128 = COPY %49.sub0 { |
| ; CHECK-NEXT: internal %46.sub2:vreg_128 = COPY %49.sub2 |
| ; CHECK-NEXT: } |
| ; CHECK-NEXT: %46.sub1:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: %46.sub3:vreg_128 = COPY %43.sub1 |
| ; CHECK-NEXT: BUFFER_STORE_DWORDX4_OFFSET %46, %2, 0, 16, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| ; CHECK-NEXT: S_ENDPGM 0 |
| %0:sgpr_64(p4) = COPY $sgpr0_sgpr1 |
| %1:sgpr_128 = S_LOAD_DWORDX4_IMM %0(p4), 9, 0 :: (dereferenceable invariant load (s128), align 4, addrspace 4) |
| undef %2.sub3:sgpr_128 = S_MOV_B32 61440 |
| %2.sub2:sgpr_128 = S_MOV_B32 -1 |
| %2.sub0:sgpr_128 = COPY %1.sub0 |
| %2.sub1:sgpr_128 = COPY %1.sub1 |
| undef %3.sub0:sgpr_128 = COPY %1.sub2 |
| %3.sub1:sgpr_128 = COPY %1.sub3 |
| %3.sub2:sgpr_128 = COPY %2.sub2 |
| %3.sub3:sgpr_128 = COPY %2.sub3 |
| early-clobber %4:vreg_128, early-clobber %5:vreg_128, early-clobber %6:vreg_128, early-clobber %7:vreg_128 = BUNDLE %3, implicit $exec { |
| %7:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 0, 0, 0, implicit $exec :: (load (s128), align 128, addrspace 1) |
| %5:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 16, 0, 0, implicit $exec :: (load (s128), addrspace 1) |
| %4:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 32, 0, 0, implicit $exec :: (load (s128), align 32, addrspace 1) |
| %6:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 48, 0, 0, implicit $exec :: (load (s128), addrspace 1) |
| } |
| undef %8.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %7.sub1, implicit $exec |
| undef %9.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %7.sub0, implicit $exec |
| undef %10.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %7.sub3, implicit $exec |
| undef %11.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %7.sub2, implicit $exec |
| undef %12.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %5.sub1, implicit $exec |
| undef %13.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %5.sub0, implicit $exec |
| undef %14.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %5.sub3, implicit $exec |
| undef %15.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %5.sub2, implicit $exec |
| undef %16.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %4.sub1, implicit $exec |
| undef %17.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %4.sub0, implicit $exec |
| undef %18.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %4.sub3, implicit $exec |
| undef %19.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %4.sub2, implicit $exec |
| undef %20.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %6.sub1, implicit $exec |
| undef %21.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %6.sub0, implicit $exec |
| undef %22.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %6.sub3, implicit $exec |
| undef %23.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %6.sub2, implicit $exec |
| %24:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 64, 0, 0, implicit $exec :: (load (s128), align 64, addrspace 1) |
| undef %25.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %24.sub1, implicit $exec |
| undef %26.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %24.sub0, implicit $exec |
| undef %27.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %24.sub3, implicit $exec |
| undef %28.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %24.sub2, implicit $exec |
| %29:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 80, 0, 0, implicit $exec :: (load (s128), addrspace 1) |
| undef %30.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %29.sub1, implicit $exec |
| undef %31.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %29.sub0, implicit $exec |
| undef %32.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %29.sub3, implicit $exec |
| undef %33.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %29.sub2, implicit $exec |
| %34:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 96, 0, 0, implicit $exec :: (load (s128), align 32, addrspace 1) |
| undef %35.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %34.sub1, implicit $exec |
| undef %36.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %34.sub0, implicit $exec |
| undef %37.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %34.sub3, implicit $exec |
| undef %38.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %34.sub2, implicit $exec |
| %39:vreg_128 = BUFFER_LOAD_DWORDX4_OFFSET %3, 0, 112, 0, 0, implicit $exec :: (load (s128), addrspace 1) |
| undef %40.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %39.sub1, implicit $exec |
| undef %41.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %39.sub0, implicit $exec |
| undef %42.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %39.sub3, implicit $exec |
| undef %43.sub2:vreg_128 = V_LSHRREV_B32_e32 16, %39.sub2, implicit $exec |
| %44:sreg_32 = S_MOV_B32 65535 |
| %8.sub0:vreg_128 = V_AND_B32_e32 %44, %7.sub1, implicit $exec |
| %9.sub0:vreg_128 = V_AND_B32_e32 %44, %7.sub0, implicit $exec |
| %10.sub0:vreg_128 = V_AND_B32_e32 %44, %7.sub3, implicit $exec |
| %11.sub0:vreg_128 = V_AND_B32_e32 %44, %7.sub2, implicit $exec |
| %12.sub0:vreg_128 = V_AND_B32_e32 %44, %5.sub1, implicit $exec |
| %13.sub0:vreg_128 = V_AND_B32_e32 %44, %5.sub0, implicit $exec |
| %14.sub0:vreg_128 = V_AND_B32_e32 %44, %5.sub3, implicit $exec |
| %15.sub0:vreg_128 = V_AND_B32_e32 %44, %5.sub2, implicit $exec |
| %16.sub0:vreg_128 = V_AND_B32_e32 %44, %4.sub1, implicit $exec |
| %17.sub0:vreg_128 = V_AND_B32_e32 %44, %4.sub0, implicit $exec |
| %18.sub0:vreg_128 = V_AND_B32_e32 %44, %4.sub3, implicit $exec |
| %19.sub0:vreg_128 = V_AND_B32_e32 %44, %4.sub2, implicit $exec |
| %20.sub0:vreg_128 = V_AND_B32_e32 %44, %6.sub1, implicit $exec |
| %21.sub0:vreg_128 = V_AND_B32_e32 %44, %6.sub0, implicit $exec |
| %22.sub0:vreg_128 = V_AND_B32_e32 %44, %6.sub3, implicit $exec |
| %23.sub0:vreg_128 = V_AND_B32_e32 %44, %6.sub2, implicit $exec |
| %25.sub0:vreg_128 = V_AND_B32_e32 %44, %24.sub1, implicit $exec |
| %26.sub0:vreg_128 = V_AND_B32_e32 %44, %24.sub0, implicit $exec |
| %27.sub0:vreg_128 = V_AND_B32_e32 %44, %24.sub3, implicit $exec |
| %28.sub0:vreg_128 = V_AND_B32_e32 %44, %24.sub2, implicit $exec |
| %30.sub0:vreg_128 = V_AND_B32_e32 %44, %29.sub1, implicit $exec |
| %31.sub0:vreg_128 = V_AND_B32_e32 %44, %29.sub0, implicit $exec |
| %32.sub0:vreg_128 = V_AND_B32_e32 %44, %29.sub3, implicit $exec |
| %33.sub0:vreg_128 = V_AND_B32_e32 %44, %29.sub2, implicit $exec |
| %35.sub0:vreg_128 = V_AND_B32_e32 %44, %34.sub1, implicit $exec |
| %36.sub0:vreg_128 = V_AND_B32_e32 %44, %34.sub0, implicit $exec |
| %37.sub0:vreg_128 = V_AND_B32_e32 %44, %34.sub3, implicit $exec |
| %38.sub0:vreg_128 = V_AND_B32_e32 %44, %34.sub2, implicit $exec |
| %40.sub0:vreg_128 = V_AND_B32_e32 %44, %39.sub1, implicit $exec |
| %41.sub0:vreg_128 = V_AND_B32_e32 %44, %39.sub0, implicit $exec |
| %42.sub0:vreg_128 = V_AND_B32_e32 %44, %39.sub3, implicit $exec |
| %43.sub0:vreg_128 = V_AND_B32_e32 %44, %39.sub2, implicit $exec |
| %43.sub1:vreg_128 = V_MOV_B32_e32 0, implicit $exec |
| %43.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %43, %2, 0, 480, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| %42.sub1:vreg_128 = COPY %43.sub1 |
| %42.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %42, %2, 0, 496, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %41.sub1:vreg_128 = COPY %43.sub1 |
| %41.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %41, %2, 0, 448, 0, 0, implicit $exec :: (store (s128), align 64, addrspace 1) |
| %40.sub1:vreg_128 = COPY %43.sub1 |
| %40.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %40, %2, 0, 464, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %38.sub1:vreg_128 = COPY %43.sub1 |
| %38.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %38, %2, 0, 416, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| %37.sub1:vreg_128 = COPY %43.sub1 |
| %37.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %37, %2, 0, 432, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %36.sub1:vreg_128 = COPY %43.sub1 |
| %36.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %36, %2, 0, 384, 0, 0, implicit $exec :: (store (s128), align 128, addrspace 1) |
| %35.sub1:vreg_128 = COPY %43.sub1 |
| %35.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %35, %2, 0, 400, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %33.sub1:vreg_128 = COPY %43.sub1 |
| %33.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %33, %2, 0, 352, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| %32.sub1:vreg_128 = COPY %43.sub1 |
| %32.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %32, %2, 0, 368, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %31.sub1:vreg_128 = COPY %43.sub1 |
| %31.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %31, %2, 0, 320, 0, 0, implicit $exec :: (store (s128), align 64, addrspace 1) |
| %30.sub1:vreg_128 = COPY %43.sub1 |
| %30.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %30, %2, 0, 336, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %28.sub1:vreg_128 = COPY %43.sub1 |
| %28.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %28, %2, 0, 288, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| %27.sub1:vreg_128 = COPY %43.sub1 |
| %27.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %27, %2, 0, 304, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %26.sub1:vreg_128 = COPY %43.sub1 |
| %26.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %26, %2, 0, 256, 0, 0, implicit $exec :: (store (s128), align 256, addrspace 1) |
| %25.sub1:vreg_128 = COPY %43.sub1 |
| %25.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %25, %2, 0, 272, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %23.sub1:vreg_128 = COPY %43.sub1 |
| %23.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %23, %2, 0, 224, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| %22.sub1:vreg_128 = COPY %43.sub1 |
| %22.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %22, %2, 0, 240, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %21.sub1:vreg_128 = COPY %43.sub1 |
| %21.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %21, %2, 0, 192, 0, 0, implicit $exec :: (store (s128), align 64, addrspace 1) |
| %20.sub1:vreg_128 = COPY %43.sub1 |
| %20.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %20, %2, 0, 208, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %19.sub1:vreg_128 = COPY %43.sub1 |
| %19.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %19, %2, 0, 160, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| %18.sub1:vreg_128 = COPY %43.sub1 |
| %18.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %18, %2, 0, 176, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %17.sub1:vreg_128 = COPY %43.sub1 |
| %17.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %17, %2, 0, 128, 0, 0, implicit $exec :: (store (s128), align 128, addrspace 1) |
| %16.sub1:vreg_128 = COPY %43.sub1 |
| %16.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %16, %2, 0, 144, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %15.sub1:vreg_128 = COPY %43.sub1 |
| %15.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %15, %2, 0, 96, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| %14.sub1:vreg_128 = COPY %43.sub1 |
| %14.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %14, %2, 0, 112, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %13.sub1:vreg_128 = COPY %43.sub1 |
| %13.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %13, %2, 0, 64, 0, 0, implicit $exec :: (store (s128), align 64, addrspace 1) |
| %12.sub1:vreg_128 = COPY %43.sub1 |
| %12.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %12, %2, 0, 80, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %11.sub1:vreg_128 = COPY %43.sub1 |
| %11.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %11, %2, 0, 32, 0, 0, implicit $exec :: (store (s128), align 32, addrspace 1) |
| %10.sub1:vreg_128 = COPY %43.sub1 |
| %10.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %10, %2, 0, 48, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| %9.sub1:vreg_128 = COPY %43.sub1 |
| %9.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %9, %2, 0, 0, 0, 0, implicit $exec :: (store (s128), align 512, addrspace 1) |
| %8.sub1:vreg_128 = COPY %43.sub1 |
| %8.sub3:vreg_128 = COPY %43.sub1 |
| BUFFER_STORE_DWORDX4_OFFSET %8, %2, 0, 16, 0, 0, implicit $exec :: (store (s128), addrspace 1) |
| S_ENDPGM 0 |
| ... |