Since `RK::Recs` is sorted by character order, anonymous defs will be enumerated like this; - anonymous_0 - anonymous_1 - anonymous_10 - anonymous_100 - anonymous_1000 - ... - anonymous_99 - anonymous_990 - ... - anonymous_999 Some records around each gap might be wrapped around along increase or decrease of records in middle. Then output order of anonymous defs might be changed. Numeric sort is expected to prevent such wrap-arounds. This can be implemented with `StringRef::compare_numeric()`. - ... - anonymous_99 - anonymous_100 - ... - anonymous_999 - anonymous_1000 - ... See also discussions in D145874. Differential Revision: https://reviews.llvm.org/D145874
351 lines
22 KiB
YAML
351 lines
22 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=greedy -o - -verify-machineinstrs %s | FileCheck -check-prefix=RA %s
|
|
# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=greedy,virtregrewriter,post-RA-sched -o - -verify-machineinstrs %s | FileCheck -check-prefix=VR %s
|
|
|
|
---
|
|
name: splitkit_copy_bundle
|
|
tracksRegLiveness: true
|
|
machineFunctionInfo:
|
|
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
|
stackPtrOffsetReg: '$sgpr32'
|
|
body: |
|
|
; RA-LABEL: name: splitkit_copy_bundle
|
|
; RA: bb.0:
|
|
; RA-NEXT: successors: %bb.1(0x80000000)
|
|
; RA-NEXT: {{ $}}
|
|
; RA-NEXT: [[DEF:%[0-9]+]]:sreg_64 = IMPLICIT_DEF
|
|
; RA-NEXT: [[DEF1:%[0-9]+]]:sreg_64 = IMPLICIT_DEF
|
|
; RA-NEXT: undef %2.sub1:sgpr_1024 = S_MOV_B32 -1
|
|
; RA-NEXT: %2.sub0:sgpr_1024 = S_MOV_B32 -1
|
|
; RA-NEXT: undef %3.sub0:sgpr_1024 = S_MOV_B32 0
|
|
; RA-NEXT: {{ $}}
|
|
; RA-NEXT: bb.1:
|
|
; RA-NEXT: successors: %bb.2(0x80000000)
|
|
; RA-NEXT: {{ $}}
|
|
; RA-NEXT: %2.sub2:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub3:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub4:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub5:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub6:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub7:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub8:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub9:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub10:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub11:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub12:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub13:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub14:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub15:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub16:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub17:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub18:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub19:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub20:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub21:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub22:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub23:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub24:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub25:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub26:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub27:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %2.sub28:sgpr_1024 = COPY %2.sub0
|
|
; RA-NEXT: %2.sub29:sgpr_1024 = COPY %2.sub1
|
|
; RA-NEXT: %3.sub1:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub2:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub3:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub4:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub5:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub6:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub7:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub8:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub9:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub10:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub11:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub12:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub13:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub14:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub15:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub16:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub17:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub18:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub19:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub20:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub21:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub22:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub23:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub24:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub25:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub26:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub27:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub28:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub29:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub30:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: %3.sub31:sgpr_1024 = COPY %3.sub0
|
|
; RA-NEXT: {{ $}}
|
|
; RA-NEXT: bb.2:
|
|
; RA-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
|
; RA-NEXT: {{ $}}
|
|
; RA-NEXT: S_NOP 0, csr_amdgpu, implicit [[DEF]], implicit [[DEF1]]
|
|
; RA-NEXT: S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc
|
|
; RA-NEXT: S_BRANCH %bb.2
|
|
; VR-LABEL: name: splitkit_copy_bundle
|
|
; VR: bb.0:
|
|
; VR-NEXT: successors: %bb.1(0x80000000)
|
|
; VR-NEXT: {{ $}}
|
|
; VR-NEXT: renamable $sgpr37 = S_MOV_B32 -1
|
|
; VR-NEXT: renamable $sgpr36 = S_MOV_B32 -1
|
|
; VR-NEXT: renamable $sgpr68 = S_MOV_B32 0
|
|
; VR-NEXT: renamable $sgpr30_sgpr31 = IMPLICIT_DEF
|
|
; VR-NEXT: renamable $sgpr34_sgpr35 = IMPLICIT_DEF
|
|
; VR-NEXT: {{ $}}
|
|
; VR-NEXT: bb.1:
|
|
; VR-NEXT: successors: %bb.2(0x80000000)
|
|
; VR-NEXT: liveins: $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67:0x000000000000000F, $sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75_sgpr76_sgpr77_sgpr78_sgpr79_sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95_sgpr96_sgpr97_sgpr98_sgpr99:0x0000000000000003
|
|
; VR-NEXT: {{ $}}
|
|
; VR-NEXT: renamable $sgpr38 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr39 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr40 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr41 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr42 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr43 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr44 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr45 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr46 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr47 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr48 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr49 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr50 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr51 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr52 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr53 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr54 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr55 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr56 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr57 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr58 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr59 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr60 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr61 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr62 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr63 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr64 = COPY renamable $sgpr36
|
|
; VR-NEXT: renamable $sgpr65 = COPY renamable $sgpr37
|
|
; VR-NEXT: renamable $sgpr69 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr70 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr71 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr72 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr73 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr74 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr75 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr76 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr77 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr78 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr79 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr80 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr81 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr82 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr83 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr84 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr85 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr86 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr87 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr88 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr89 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr90 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr91 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr92 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr93 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr94 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr95 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr96 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr97 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr98 = COPY renamable $sgpr68
|
|
; VR-NEXT: renamable $sgpr99 = COPY renamable $sgpr68
|
|
; VR-NEXT: {{ $}}
|
|
; VR-NEXT: bb.2:
|
|
; VR-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
|
; VR-NEXT: liveins: $sgpr30_sgpr31, $sgpr34_sgpr35, $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67:0x000000000000000F, $sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75_sgpr76_sgpr77_sgpr78_sgpr79_sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95_sgpr96_sgpr97_sgpr98_sgpr99:0x0000000000000003
|
|
; VR-NEXT: {{ $}}
|
|
; VR-NEXT: S_NOP 0, csr_amdgpu, implicit renamable $sgpr30_sgpr31, implicit renamable $sgpr34_sgpr35
|
|
; VR-NEXT: S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc
|
|
; VR-NEXT: S_BRANCH %bb.2
|
|
bb.0:
|
|
%0:sreg_64 = IMPLICIT_DEF
|
|
%1:sreg_64 = IMPLICIT_DEF
|
|
undef %2.sub1:sgpr_1024 = S_MOV_B32 -1
|
|
%2.sub0:sgpr_1024 = S_MOV_B32 -1
|
|
undef %3.sub0:sgpr_1024 = S_MOV_B32 0
|
|
|
|
bb.1:
|
|
%2.sub2:sgpr_1024 = COPY %2.sub0
|
|
%2.sub3:sgpr_1024 = COPY %2.sub1
|
|
%2.sub4:sgpr_1024 = COPY %2.sub0
|
|
%2.sub5:sgpr_1024 = COPY %2.sub1
|
|
%2.sub6:sgpr_1024 = COPY %2.sub0
|
|
%2.sub7:sgpr_1024 = COPY %2.sub1
|
|
%2.sub8:sgpr_1024 = COPY %2.sub0
|
|
%2.sub9:sgpr_1024 = COPY %2.sub1
|
|
%2.sub10:sgpr_1024 = COPY %2.sub0
|
|
%2.sub11:sgpr_1024 = COPY %2.sub1
|
|
%2.sub12:sgpr_1024 = COPY %2.sub0
|
|
%2.sub13:sgpr_1024 = COPY %2.sub1
|
|
%2.sub14:sgpr_1024 = COPY %2.sub0
|
|
%2.sub15:sgpr_1024 = COPY %2.sub1
|
|
%2.sub16:sgpr_1024 = COPY %2.sub0
|
|
%2.sub17:sgpr_1024 = COPY %2.sub1
|
|
%2.sub18:sgpr_1024 = COPY %2.sub0
|
|
%2.sub19:sgpr_1024 = COPY %2.sub1
|
|
%2.sub20:sgpr_1024 = COPY %2.sub0
|
|
%2.sub21:sgpr_1024 = COPY %2.sub1
|
|
%2.sub22:sgpr_1024 = COPY %2.sub0
|
|
%2.sub23:sgpr_1024 = COPY %2.sub1
|
|
%2.sub24:sgpr_1024 = COPY %2.sub0
|
|
%2.sub25:sgpr_1024 = COPY %2.sub1
|
|
%2.sub26:sgpr_1024 = COPY %2.sub0
|
|
%2.sub27:sgpr_1024 = COPY %2.sub1
|
|
%2.sub28:sgpr_1024 = COPY %2.sub0
|
|
%2.sub29:sgpr_1024 = COPY %2.sub1
|
|
%3.sub1:sgpr_1024 = COPY %3.sub0
|
|
%3.sub2:sgpr_1024 = COPY %3.sub0
|
|
%3.sub3:sgpr_1024 = COPY %3.sub0
|
|
%3.sub4:sgpr_1024 = COPY %3.sub0
|
|
%3.sub5:sgpr_1024 = COPY %3.sub0
|
|
%3.sub6:sgpr_1024 = COPY %3.sub0
|
|
%3.sub7:sgpr_1024 = COPY %3.sub0
|
|
%3.sub8:sgpr_1024 = COPY %3.sub0
|
|
%3.sub9:sgpr_1024 = COPY %3.sub0
|
|
%3.sub10:sgpr_1024 = COPY %3.sub0
|
|
%3.sub11:sgpr_1024 = COPY %3.sub0
|
|
%3.sub12:sgpr_1024 = COPY %3.sub0
|
|
%3.sub13:sgpr_1024 = COPY %3.sub0
|
|
%3.sub14:sgpr_1024 = COPY %3.sub0
|
|
%3.sub15:sgpr_1024 = COPY %3.sub0
|
|
%3.sub16:sgpr_1024 = COPY %3.sub0
|
|
%3.sub17:sgpr_1024 = COPY %3.sub0
|
|
%3.sub18:sgpr_1024 = COPY %3.sub0
|
|
%3.sub19:sgpr_1024 = COPY %3.sub0
|
|
%3.sub20:sgpr_1024 = COPY %3.sub0
|
|
%3.sub21:sgpr_1024 = COPY %3.sub0
|
|
%3.sub22:sgpr_1024 = COPY %3.sub0
|
|
%3.sub23:sgpr_1024 = COPY %3.sub0
|
|
%3.sub24:sgpr_1024 = COPY %3.sub0
|
|
%3.sub25:sgpr_1024 = COPY %3.sub0
|
|
%3.sub26:sgpr_1024 = COPY %3.sub0
|
|
%3.sub27:sgpr_1024 = COPY %3.sub0
|
|
%3.sub28:sgpr_1024 = COPY %3.sub0
|
|
%3.sub29:sgpr_1024 = COPY %3.sub0
|
|
%3.sub30:sgpr_1024 = COPY %3.sub0
|
|
%3.sub31:sgpr_1024 = COPY %3.sub0
|
|
|
|
bb.2:
|
|
S_NOP 0, implicit %0, implicit %1, csr_amdgpu
|
|
S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc
|
|
S_BRANCH %bb.2
|
|
|
|
...
|
|
|
|
---
|
|
name: splitkit_copy_unbundle_reorder
|
|
tracksRegLiveness: true
|
|
machineFunctionInfo:
|
|
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
|
stackPtrOffsetReg: '$sgpr32'
|
|
body: |
|
|
bb.0:
|
|
; RA-LABEL: name: splitkit_copy_unbundle_reorder
|
|
; RA: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF
|
|
; RA-NEXT: [[DEF1:%[0-9]+]]:sreg_64 = IMPLICIT_DEF
|
|
; RA-NEXT: [[DEF2:%[0-9]+]]:sgpr_512 = IMPLICIT_DEF
|
|
; RA-NEXT: [[DEF2]].sub4:sgpr_512 = S_MOV_B32 -1
|
|
; RA-NEXT: [[DEF2]].sub5:sgpr_512 = S_MOV_B32 -1
|
|
; RA-NEXT: [[DEF2]].sub10:sgpr_512 = S_MOV_B32 -1
|
|
; RA-NEXT: [[DEF2]].sub11:sgpr_512 = S_MOV_B32 -1
|
|
; RA-NEXT: [[DEF2]].sub7:sgpr_512 = S_MOV_B32 -1
|
|
; RA-NEXT: [[DEF2]].sub8:sgpr_512 = S_MOV_B32 -1
|
|
; RA-NEXT: [[DEF2]].sub13:sgpr_512 = S_MOV_B32 -1
|
|
; RA-NEXT: [[DEF2]].sub14:sgpr_512 = S_MOV_B32 -1
|
|
; RA-NEXT: undef %15.sub4_sub5:sgpr_512 = COPY [[DEF2]].sub4_sub5 {
|
|
; RA-NEXT: internal %15.sub10_sub11:sgpr_512 = COPY [[DEF2]].sub10_sub11
|
|
; RA-NEXT: internal %15.sub7:sgpr_512 = COPY [[DEF2]].sub7
|
|
; RA-NEXT: internal %15.sub8:sgpr_512 = COPY [[DEF2]].sub8
|
|
; RA-NEXT: internal %15.sub13:sgpr_512 = COPY [[DEF2]].sub13
|
|
; RA-NEXT: internal %15.sub14:sgpr_512 = COPY [[DEF2]].sub14
|
|
; RA-NEXT: }
|
|
; RA-NEXT: SI_SPILL_S512_SAVE %15, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s512) into %stack.0, align 4, addrspace 5)
|
|
; RA-NEXT: S_NOP 0, implicit-def $sgpr8, implicit-def $sgpr12, implicit-def $sgpr16, implicit-def $sgpr20, implicit-def $sgpr24, implicit-def $sgpr28, implicit-def $sgpr32, implicit-def $sgpr36, implicit-def $sgpr40, implicit-def $sgpr44, implicit-def $sgpr48, implicit-def $sgpr52, implicit-def $sgpr56, implicit-def $sgpr60, implicit-def $sgpr64, implicit-def $sgpr68, implicit-def $sgpr72, implicit-def $sgpr74, implicit-def $sgpr78, implicit-def $sgpr82, implicit-def $sgpr86, implicit-def $sgpr90, implicit-def $sgpr94, implicit-def $sgpr98
|
|
; RA-NEXT: [[SI_SPILL_S512_RESTORE:%[0-9]+]]:sgpr_512 = SI_SPILL_S512_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s512) from %stack.0, align 4, addrspace 5)
|
|
; RA-NEXT: undef %14.sub4_sub5:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub4_sub5 {
|
|
; RA-NEXT: internal %14.sub10_sub11:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub10_sub11
|
|
; RA-NEXT: internal %14.sub7:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub7
|
|
; RA-NEXT: internal %14.sub8:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub8
|
|
; RA-NEXT: internal %14.sub13:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub13
|
|
; RA-NEXT: internal %14.sub14:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub14
|
|
; RA-NEXT: }
|
|
; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], %14.sub4, 0 :: (dereferenceable invariant load (s32))
|
|
; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR1:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], %14.sub5, 0 :: (dereferenceable invariant load (s32))
|
|
; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR2:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], %14.sub10, 0 :: (dereferenceable invariant load (s32))
|
|
; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR3:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], %14.sub11, 0 :: (dereferenceable invariant load (s32))
|
|
; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR4:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], %14.sub7, 0 :: (dereferenceable invariant load (s32))
|
|
; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR5:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], %14.sub8, 0 :: (dereferenceable invariant load (s32))
|
|
; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR6:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], %14.sub13, 0 :: (dereferenceable invariant load (s32))
|
|
; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR7:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], %14.sub14, 0 :: (dereferenceable invariant load (s32))
|
|
; RA-NEXT: S_NOP 0, implicit [[DEF]], implicit [[DEF1]], implicit [[S_BUFFER_LOAD_DWORD_SGPR]], implicit [[S_BUFFER_LOAD_DWORD_SGPR1]], implicit [[S_BUFFER_LOAD_DWORD_SGPR2]], implicit [[S_BUFFER_LOAD_DWORD_SGPR3]], implicit [[S_BUFFER_LOAD_DWORD_SGPR4]], implicit [[S_BUFFER_LOAD_DWORD_SGPR5]], implicit [[S_BUFFER_LOAD_DWORD_SGPR6]], implicit [[S_BUFFER_LOAD_DWORD_SGPR7]]
|
|
; VR-LABEL: name: splitkit_copy_unbundle_reorder
|
|
; VR: renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27 = IMPLICIT_DEF
|
|
; VR-NEXT: renamable $sgpr16 = S_MOV_B32 -1
|
|
; VR-NEXT: renamable $sgpr17 = S_MOV_B32 -1
|
|
; VR-NEXT: renamable $sgpr22 = S_MOV_B32 -1
|
|
; VR-NEXT: renamable $sgpr23 = S_MOV_B32 -1
|
|
; VR-NEXT: renamable $sgpr19 = S_MOV_B32 -1
|
|
; VR-NEXT: renamable $sgpr20 = S_MOV_B32 -1
|
|
; VR-NEXT: renamable $sgpr25 = S_MOV_B32 -1
|
|
; VR-NEXT: renamable $sgpr26 = S_MOV_B32 -1
|
|
; VR-NEXT: SI_SPILL_S512_SAVE killed renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s512) into %stack.0, align 4, addrspace 5)
|
|
; VR-NEXT: S_NOP 0, implicit-def $sgpr8, implicit-def $sgpr12, implicit-def $sgpr16, implicit-def $sgpr20, implicit-def $sgpr24, implicit-def $sgpr28, implicit-def $sgpr32, implicit-def $sgpr36, implicit-def $sgpr40, implicit-def $sgpr44, implicit-def $sgpr48, implicit-def $sgpr52, implicit-def $sgpr56, implicit-def $sgpr60, implicit-def $sgpr64, implicit-def $sgpr68, implicit-def $sgpr72, implicit-def $sgpr74, implicit-def $sgpr78, implicit-def $sgpr82, implicit-def $sgpr86, implicit-def $sgpr90, implicit-def $sgpr94, implicit-def $sgpr98
|
|
; VR-NEXT: renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27 = SI_SPILL_S512_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s512) from %stack.0, align 4, addrspace 5)
|
|
; VR-NEXT: renamable $sgpr12_sgpr13 = COPY killed renamable $sgpr16_sgpr17
|
|
; VR-NEXT: renamable $sgpr15 = COPY killed renamable $sgpr19
|
|
; VR-NEXT: renamable $sgpr18_sgpr19 = COPY killed renamable $sgpr22_sgpr23
|
|
; VR-NEXT: renamable $sgpr16 = COPY killed renamable $sgpr20
|
|
; VR-NEXT: renamable $sgpr21 = COPY killed renamable $sgpr25
|
|
; VR-NEXT: renamable $sgpr22 = COPY killed renamable $sgpr26
|
|
; VR-NEXT: renamable $sgpr4_sgpr5_sgpr6_sgpr7 = IMPLICIT_DEF
|
|
; VR-NEXT: renamable $sgpr8 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr12, 0 :: (dereferenceable invariant load (s32))
|
|
; VR-NEXT: renamable $sgpr9 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr13, 0 :: (dereferenceable invariant load (s32))
|
|
; VR-NEXT: renamable $sgpr14 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr15, 0 :: (dereferenceable invariant load (s32))
|
|
; VR-NEXT: renamable $sgpr10_sgpr11 = IMPLICIT_DEF
|
|
; VR-NEXT: renamable $sgpr17 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr22, 0 :: (dereferenceable invariant load (s32))
|
|
; VR-NEXT: renamable $sgpr15 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr16, 0 :: (dereferenceable invariant load (s32))
|
|
; VR-NEXT: renamable $sgpr12 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr18, 0 :: (dereferenceable invariant load (s32))
|
|
; VR-NEXT: renamable $sgpr13 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr19, 0 :: (dereferenceable invariant load (s32))
|
|
; VR-NEXT: renamable $sgpr16 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr21, 0 :: (dereferenceable invariant load (s32))
|
|
; VR-NEXT: S_NOP 0, implicit killed renamable $sgpr4_sgpr5_sgpr6_sgpr7, implicit killed renamable $sgpr10_sgpr11, implicit killed renamable $sgpr8, implicit killed renamable $sgpr9, implicit killed renamable $sgpr12, implicit killed renamable $sgpr13, implicit killed renamable $sgpr14, implicit killed renamable $sgpr15, implicit killed renamable $sgpr16, implicit killed renamable $sgpr17
|
|
%0:sgpr_128 = IMPLICIT_DEF
|
|
%1:sreg_64 = IMPLICIT_DEF
|
|
%2:sgpr_512 = IMPLICIT_DEF
|
|
|
|
%2.sub4:sgpr_512 = S_MOV_B32 -1
|
|
%2.sub5:sgpr_512 = S_MOV_B32 -1
|
|
%2.sub10:sgpr_512 = S_MOV_B32 -1
|
|
%2.sub11:sgpr_512 = S_MOV_B32 -1
|
|
%2.sub7:sgpr_512 = S_MOV_B32 -1
|
|
%2.sub8:sgpr_512 = S_MOV_B32 -1
|
|
%2.sub13:sgpr_512 = S_MOV_B32 -1
|
|
%2.sub14:sgpr_512 = S_MOV_B32 -1
|
|
|
|
; Clobber registers
|
|
S_NOP 0, implicit-def $sgpr8, implicit-def $sgpr12, implicit-def $sgpr16, implicit-def $sgpr20, implicit-def $sgpr24, implicit-def $sgpr28, implicit-def $sgpr32, implicit-def $sgpr36, implicit-def $sgpr40, implicit-def $sgpr44, implicit-def $sgpr48, implicit-def $sgpr52, implicit-def $sgpr56, implicit-def $sgpr60, implicit-def $sgpr64, implicit-def $sgpr68, implicit-def $sgpr72, implicit-def $sgpr74, implicit-def $sgpr78, implicit-def $sgpr82, implicit-def $sgpr86, implicit-def $sgpr90, implicit-def $sgpr94, implicit-def $sgpr98
|
|
|
|
%5:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub4:sgpr_512, 0 :: (dereferenceable invariant load (s32))
|
|
%6:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub5:sgpr_512, 0 :: (dereferenceable invariant load (s32))
|
|
%7:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub10:sgpr_512, 0 :: (dereferenceable invariant load (s32))
|
|
%8:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub11:sgpr_512, 0 :: (dereferenceable invariant load (s32))
|
|
%9:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub7:sgpr_512, 0 :: (dereferenceable invariant load (s32))
|
|
%10:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub8:sgpr_512, 0 :: (dereferenceable invariant load (s32))
|
|
%11:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub13:sgpr_512, 0 :: (dereferenceable invariant load (s32))
|
|
%12:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub14:sgpr_512, 0 :: (dereferenceable invariant load (s32))
|
|
|
|
S_NOP 0, implicit %0, implicit %1, implicit %5, implicit %6, implicit %7, implicit %8, implicit %9, implicit %10, implicit %11, implicit %12
|
|
|
|
...
|