[AMDGPU] Add True16 register classes.
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / ran-out-of-sgprs-allocation-failure.mir
blob2b613cbbabeee79337706fb17e3da2c15e2fda88
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-regalloc -start-before=greedy,0 -stop-after=virtregrewriter,0  -greedy-regclass-priority-trumps-globalness=1 -o - %s | FileCheck %s
4 # The allocation would previously fail due to poor ordering based on
5 # register class. The super wide tuples should be allocated first so
6 # that we don't need to try to evict them later. Currently we cannot
7 # partially evict interfering register tuples.
9 ---
10 name:            need_large_tuple_split
11 alignment:       1
12 tracksRegLiveness: true
13 registers:
14   - { id: 0, class: sreg_64_xexec, preferred-register: '$vcc' }
15   - { id: 1, class: sreg_64, preferred-register: '$vcc' }
16   - { id: 2, class: sreg_64_xexec, preferred-register: '$vcc' }
17   - { id: 3, class: sreg_64, preferred-register: '$vcc' }
18   - { id: 4, class: sreg_64, preferred-register: '$vcc' }
19   - { id: 5, class: sreg_64_xexec, preferred-register: '$vcc' }
20   - { id: 6, class: sreg_64_xexec, preferred-register: '$vcc' }
21   - { id: 7, class: sreg_64_xexec, preferred-register: '$vcc' }
22   - { id: 8, class: sreg_64_xexec, preferred-register: '$vcc' }
23   - { id: 9, class: sreg_64_xexec, preferred-register: '$vcc' }
24   - { id: 10, class: sreg_64_xexec, preferred-register: '$vcc' }
25 frameInfo:
26   maxAlignment:    1
27   hasCalls:        true
28 machineFunctionInfo:
29   maxKernArgAlign: 1
30   isEntryFunction: true
31   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
32   stackPtrOffsetReg: '$sgpr32'
33   argumentInfo:
34     privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
35     privateSegmentWaveByteOffset: { reg: '$sgpr17' }
36   occupancy:       8
37 body:             |
38   ; CHECK-LABEL: name: need_large_tuple_split
39   ; CHECK: bb.0:
40   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
41   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11
42   ; CHECK-NEXT: {{  $}}
43   ; CHECK-NEXT:   renamable $sgpr34_sgpr35 = V_CMP_GT_I32_e64 1, undef %18:vgpr_32, implicit $exec
44   ; CHECK-NEXT:   renamable $sgpr36_sgpr37 = V_CMP_EQ_U32_e64 0, undef %18:vgpr_32, implicit $exec
45   ; CHECK-NEXT:   renamable $sgpr38_sgpr39 = V_CMP_NE_U32_e64 0, undef %18:vgpr_32, implicit $exec
46   ; CHECK-NEXT:   renamable $sgpr40_sgpr41 = V_CMP_GT_I32_e64 0, undef %18:vgpr_32, implicit $exec
47   ; CHECK-NEXT:   renamable $sgpr60 = S_MOV_B32 0
48   ; CHECK-NEXT:   renamable $sgpr42_sgpr43 = V_CMP_EQ_U32_e64 undef $sgpr4, undef %18:vgpr_32, implicit $exec
49   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:vreg_1024_align2 = COPY renamable $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75, implicit $exec
50   ; CHECK-NEXT:   renamable $sgpr44_sgpr45 = V_CMP_NE_U32_e64 1, undef %18:vgpr_32, implicit $exec
51   ; CHECK-NEXT:   renamable $sgpr61 = S_MOV_B32 1083786240
52   ; CHECK-NEXT:   S_BRANCH %bb.1
53   ; CHECK-NEXT: {{  $}}
54   ; CHECK-NEXT: bb.1:
55   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.17(0x40000000)
56   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
57   ; CHECK-NEXT: {{  $}}
58   ; CHECK-NEXT:   $vcc = S_AND_B64 $exec, renamable $sgpr44_sgpr45, implicit-def dead $scc
59   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:vreg_1024_align2 = COPY [[COPY]]
60   ; CHECK-NEXT:   S_CBRANCH_VCCNZ %bb.2, implicit $vcc
61   ; CHECK-NEXT:   S_BRANCH %bb.17
62   ; CHECK-NEXT: {{  $}}
63   ; CHECK-NEXT: bb.2:
64   ; CHECK-NEXT:   successors: %bb.11(0x40000000), %bb.5(0x40000000)
65   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
66   ; CHECK-NEXT: {{  $}}
67   ; CHECK-NEXT:   renamable $sgpr64 = COPY renamable $sgpr60
68   ; CHECK-NEXT:   renamable $sgpr65 = COPY renamable $sgpr60
69   ; CHECK-NEXT:   renamable $sgpr66 = COPY renamable $sgpr60
70   ; CHECK-NEXT:   renamable $sgpr67 = COPY renamable $sgpr60
71   ; CHECK-NEXT:   renamable $sgpr68 = COPY renamable $sgpr60
72   ; CHECK-NEXT:   renamable $sgpr69 = COPY renamable $sgpr60
73   ; CHECK-NEXT:   renamable $sgpr70 = COPY renamable $sgpr60
74   ; CHECK-NEXT:   renamable $sgpr71 = COPY renamable $sgpr60
75   ; CHECK-NEXT:   renamable $sgpr72 = COPY renamable $sgpr60
76   ; CHECK-NEXT:   renamable $sgpr73 = COPY renamable $sgpr60
77   ; CHECK-NEXT:   renamable $sgpr74 = COPY renamable $sgpr60
78   ; CHECK-NEXT:   renamable $sgpr75 = COPY renamable $sgpr60
79   ; CHECK-NEXT:   renamable $sgpr76 = COPY renamable $sgpr60
80   ; CHECK-NEXT:   renamable $sgpr77 = COPY renamable $sgpr60
81   ; CHECK-NEXT:   renamable $sgpr78 = COPY renamable $sgpr60
82   ; CHECK-NEXT:   renamable $sgpr79 = COPY renamable $sgpr60
83   ; CHECK-NEXT:   renamable $sgpr80 = COPY renamable $sgpr60
84   ; CHECK-NEXT:   renamable $sgpr81 = COPY renamable $sgpr60
85   ; CHECK-NEXT:   renamable $sgpr82 = COPY renamable $sgpr60
86   ; CHECK-NEXT:   renamable $sgpr83 = COPY renamable $sgpr60
87   ; CHECK-NEXT:   renamable $sgpr84 = COPY renamable $sgpr60
88   ; CHECK-NEXT:   renamable $sgpr85 = COPY renamable $sgpr60
89   ; CHECK-NEXT:   renamable $sgpr86 = COPY renamable $sgpr60
90   ; CHECK-NEXT:   renamable $sgpr87 = COPY renamable $sgpr60
91   ; CHECK-NEXT:   renamable $sgpr88 = COPY renamable $sgpr60
92   ; CHECK-NEXT:   renamable $sgpr89 = COPY renamable $sgpr60
93   ; CHECK-NEXT:   renamable $sgpr90 = COPY renamable $sgpr60
94   ; CHECK-NEXT:   renamable $sgpr91 = COPY renamable $sgpr60
95   ; CHECK-NEXT:   renamable $sgpr92 = COPY renamable $sgpr60
96   ; CHECK-NEXT:   renamable $sgpr93 = COPY renamable $sgpr60
97   ; CHECK-NEXT:   renamable $sgpr94 = COPY renamable $sgpr60
98   ; CHECK-NEXT:   renamable $sgpr95 = COPY renamable $sgpr60
99   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:vreg_1024_align2 = COPY killed renamable $sgpr64_sgpr65_sgpr66_sgpr67_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, implicit $exec
100   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.11, implicit $exec
101   ; CHECK-NEXT:   S_BRANCH %bb.5
102   ; CHECK-NEXT: {{  $}}
103   ; CHECK-NEXT: bb.3:
104   ; CHECK-NEXT:   successors: %bb.4(0x80000000)
105   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16
106   ; CHECK-NEXT: {{  $}}
107   ; CHECK-NEXT:   renamable $sgpr60 = COPY killed renamable $sgpr14
108   ; CHECK-NEXT:   renamable $sgpr62 = COPY killed renamable $sgpr15
109   ; CHECK-NEXT:   SI_SPILL_S32_SAVE killed renamable $sgpr16, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.0, addrspace 5)
110   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
111   ; CHECK-NEXT:   dead $sgpr30_sgpr31 = SI_CALL undef renamable $sgpr4_sgpr5, 0, CustomRegMask($sgpr60,$sgpr62)
112   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
113   ; CHECK-NEXT: {{  $}}
114   ; CHECK-NEXT: bb.4:
115   ; CHECK-NEXT:   successors: %bb.17(0x80000000)
116   ; CHECK-NEXT:   liveins: $sgpr60, $sgpr62
117   ; CHECK-NEXT: {{  $}}
118   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
119   ; CHECK-NEXT:   $sgpr12 = COPY killed renamable $sgpr60
120   ; CHECK-NEXT:   $sgpr13 = COPY killed renamable $sgpr62
121   ; CHECK-NEXT:   $sgpr14 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.0, addrspace 5)
122   ; CHECK-NEXT:   dead $sgpr30_sgpr31 = SI_CALL undef renamable $sgpr4_sgpr5, 0, csr_amdgpu_noregs, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14
123   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
124   ; CHECK-NEXT:   S_BRANCH %bb.17
125   ; CHECK-NEXT: {{  $}}
126   ; CHECK-NEXT: bb.5:
127   ; CHECK-NEXT:   successors: %bb.12(0x40000000), %bb.6(0x40000000)
128   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
129   ; CHECK-NEXT: {{  $}}
130   ; CHECK-NEXT:   renamable $sgpr12_sgpr13 = S_AND_B64 renamable $sgpr38_sgpr39, undef renamable $sgpr46_sgpr47, implicit-def dead $scc
131   ; CHECK-NEXT:   renamable $sgpr46_sgpr47 = V_CMP_GT_I32_e64 0, undef %18:vgpr_32, implicit $exec
132   ; CHECK-NEXT:   $exec = S_MOV_B64_term killed renamable $sgpr12_sgpr13
133   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.12, implicit $exec
134   ; CHECK-NEXT: {{  $}}
135   ; CHECK-NEXT: bb.6:
136   ; CHECK-NEXT:   successors: %bb.7(0x80000000)
137   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
138   ; CHECK-NEXT: {{  $}}
139   ; CHECK-NEXT:   dead [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, $sgpr40_sgpr41, implicit $exec
140   ; CHECK-NEXT: {{  $}}
141   ; CHECK-NEXT: bb.7:
142   ; CHECK-NEXT:   successors: %bb.8(0x80000000)
143   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
144   ; CHECK-NEXT: {{  $}}
145   ; CHECK-NEXT:   renamable $sgpr48_sgpr49 = nofpexcept V_CMP_NLT_F64_e64 0, undef $sgpr4_sgpr5, 0, undef %29:vreg_64_align2, 0, implicit $mode, implicit $exec
146   ; CHECK-NEXT:   renamable $sgpr50_sgpr51 = nofpexcept V_CMP_NLT_F64_e64 0, 4607182418800017408, 0, undef %29:vreg_64_align2, 0, implicit $mode, implicit $exec
147   ; CHECK-NEXT:   dead [[V_INDIRECT_REG_READ_GPR_IDX_B32_V32_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V32 [[COPY1]], undef $sgpr14, 11, implicit-def $m0, implicit $m0, implicit $exec
148   ; CHECK-NEXT: {{  $}}
149   ; CHECK-NEXT: bb.8:
150   ; CHECK-NEXT:   successors: %bb.10(0x40000000), %bb.9(0x40000000)
151   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
152   ; CHECK-NEXT: {{  $}}
153   ; CHECK-NEXT:   $vcc = S_AND_B64 $exec, renamable $sgpr48_sgpr49, implicit-def dead $scc
154   ; CHECK-NEXT:   S_CBRANCH_VCCNZ %bb.10, implicit $vcc
155   ; CHECK-NEXT: {{  $}}
156   ; CHECK-NEXT: bb.9:
157   ; CHECK-NEXT:   successors: %bb.10(0x40000000), %bb.17(0x40000000)
158   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
159   ; CHECK-NEXT: {{  $}}
160   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:vreg_64_align2 = COPY renamable $sgpr60_sgpr61, implicit $exec
161   ; CHECK-NEXT:   GLOBAL_STORE_DWORDX2_SADDR undef %18:vgpr_32, [[COPY2]], undef renamable $sgpr4_sgpr5, 0, 0, implicit $exec :: (store (s64), addrspace 1)
162   ; CHECK-NEXT:   [[V_CNDMASK_B32_e64_1:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, $sgpr34_sgpr35, implicit $exec
163   ; CHECK-NEXT:   dead renamable $sgpr12_sgpr13 = V_CMP_NE_U32_e64 1, [[V_CNDMASK_B32_e64_1]], implicit $exec
164   ; CHECK-NEXT:   renamable $sgpr58 = S_ADD_U32 renamable $sgpr8, 32, implicit-def dead $scc
165   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
166   ; CHECK-NEXT:   renamable $sgpr52_sgpr53 = COPY killed renamable $sgpr4_sgpr5
167   ; CHECK-NEXT:   $sgpr4_sgpr5 = COPY renamable $sgpr52_sgpr53
168   ; CHECK-NEXT:   renamable $sgpr54_sgpr55 = COPY killed renamable $sgpr6_sgpr7
169   ; CHECK-NEXT:   $sgpr6_sgpr7 = COPY renamable $sgpr54_sgpr55
170   ; CHECK-NEXT:   renamable $sgpr56_sgpr57 = COPY killed renamable $sgpr10_sgpr11
171   ; CHECK-NEXT:   $sgpr10_sgpr11 = COPY renamable $sgpr56_sgpr57
172   ; CHECK-NEXT:   $sgpr12 = COPY renamable $sgpr14
173   ; CHECK-NEXT:   $sgpr13 = COPY renamable $sgpr15
174   ; CHECK-NEXT:   renamable $sgpr62 = COPY killed renamable $sgpr8
175   ; CHECK-NEXT:   renamable $sgpr33 = COPY killed renamable $sgpr16
176   ; CHECK-NEXT:   renamable $sgpr59 = COPY killed renamable $sgpr15
177   ; CHECK-NEXT:   renamable $sgpr63 = COPY killed renamable $sgpr14
178   ; CHECK-NEXT:   dead $sgpr30_sgpr31 = SI_CALL undef renamable $sgpr12_sgpr13, 0, csr_amdgpu_gfx90ainsts, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr10_sgpr11, implicit $sgpr12, implicit $sgpr13
179   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
180   ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
181   ; CHECK-NEXT:   $sgpr8_sgpr9 = COPY renamable $sgpr58_sgpr59
182   ; CHECK-NEXT:   dead $sgpr30_sgpr31 = SI_CALL undef renamable $sgpr12_sgpr13, 0, csr_amdgpu_gfx90ainsts, implicit $sgpr8_sgpr9
183   ; CHECK-NEXT:   renamable $sgpr14 = COPY killed renamable $sgpr63
184   ; CHECK-NEXT:   renamable $sgpr15 = COPY killed renamable $sgpr59
185   ; CHECK-NEXT:   renamable $sgpr16 = COPY killed renamable $sgpr33
186   ; CHECK-NEXT:   renamable $sgpr4_sgpr5 = COPY killed renamable $sgpr52_sgpr53
187   ; CHECK-NEXT:   renamable $sgpr6_sgpr7 = COPY killed renamable $sgpr54_sgpr55
188   ; CHECK-NEXT:   renamable $sgpr8 = COPY killed renamable $sgpr62
189   ; CHECK-NEXT:   renamable $sgpr10_sgpr11 = COPY killed renamable $sgpr56_sgpr57
190   ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
191   ; CHECK-NEXT:   $exec = S_MOV_B64_term renamable $sgpr50_sgpr51
192   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.10, implicit $exec
193   ; CHECK-NEXT:   S_BRANCH %bb.17
194   ; CHECK-NEXT: {{  $}}
195   ; CHECK-NEXT: bb.10:
196   ; CHECK-NEXT:   successors: %bb.8(0x40000000), %bb.12(0x40000000)
197   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr48_sgpr49, $sgpr50_sgpr51, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
198   ; CHECK-NEXT: {{  $}}
199   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.8, implicit $exec
200   ; CHECK-NEXT:   S_BRANCH %bb.12
201   ; CHECK-NEXT: {{  $}}
202   ; CHECK-NEXT: bb.11:
203   ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.17(0x40000000)
204   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
205   ; CHECK-NEXT: {{  $}}
206   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.1, implicit $exec
207   ; CHECK-NEXT:   S_BRANCH %bb.17
208   ; CHECK-NEXT: {{  $}}
209   ; CHECK-NEXT: bb.12:
210   ; CHECK-NEXT:   successors: %bb.11(0x40000000), %bb.13(0x40000000)
211   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr46_sgpr47, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
212   ; CHECK-NEXT: {{  $}}
213   ; CHECK-NEXT:   $exec = S_MOV_B64_term killed renamable $sgpr46_sgpr47
214   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.11, implicit $exec
215   ; CHECK-NEXT: {{  $}}
216   ; CHECK-NEXT: bb.13:
217   ; CHECK-NEXT:   successors: %bb.15(0x40000000), %bb.14(0x40000000)
218   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
219   ; CHECK-NEXT: {{  $}}
220   ; CHECK-NEXT:   $vcc = S_AND_B64 $exec, renamable $sgpr42_sgpr43, implicit-def dead $scc
221   ; CHECK-NEXT:   S_CBRANCH_VCCNZ %bb.15, implicit $vcc
222   ; CHECK-NEXT:   S_BRANCH %bb.14
223   ; CHECK-NEXT: {{  $}}
224   ; CHECK-NEXT: bb.14:
225   ; CHECK-NEXT:   successors: %bb.15(0x80000000)
226   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
227   ; CHECK-NEXT: {{  $}}
228   ; CHECK-NEXT: {{  $}}
229   ; CHECK-NEXT: bb.15:
230   ; CHECK-NEXT:   successors: %bb.11(0x40000000), %bb.16(0x40000000)
231   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9:0x0000000000000003, $sgpr10_sgpr11, $sgpr34_sgpr35, $sgpr36_sgpr37, $sgpr38_sgpr39, $sgpr40_sgpr41, $sgpr42_sgpr43, $sgpr44_sgpr45, $sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75:0x0000000F00000000
232   ; CHECK-NEXT: {{  $}}
233   ; CHECK-NEXT:   $vcc = S_AND_B64 $exec, renamable $sgpr36_sgpr37, implicit-def dead $scc
234   ; CHECK-NEXT:   S_CBRANCH_VCCNZ %bb.11, implicit $vcc
235   ; CHECK-NEXT: {{  $}}
236   ; CHECK-NEXT: bb.16:
237   ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.17(0x40000000)
238   ; CHECK-NEXT:   liveins: $sgpr14, $sgpr15, $sgpr16
239   ; CHECK-NEXT: {{  $}}
240   ; CHECK-NEXT:   S_CBRANCH_EXECZ %bb.3, implicit $exec
241   ; CHECK-NEXT: {{  $}}
242   ; CHECK-NEXT: bb.17:
243   bb.0:
244     liveins: $vgpr0, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr14, $sgpr15, $sgpr16
246     %11:sgpr_32 = COPY $sgpr16
247     %12:sgpr_32 = COPY $sgpr15
248     %13:sgpr_32 = COPY $sgpr14
249     %14:sgpr_64 = COPY $sgpr10_sgpr11
250     %15:sgpr_64 = COPY $sgpr8_sgpr9
251     %16:sgpr_64 = COPY $sgpr6_sgpr7
252     %17:sgpr_64 = COPY $sgpr4_sgpr5
253     %5:sreg_64_xexec = V_CMP_GT_I32_e64 1, undef %18:vgpr_32, implicit $exec
254     %6:sreg_64_xexec = V_CMP_EQ_U32_e64 0, undef %18:vgpr_32, implicit $exec
255     %7:sreg_64_xexec = V_CMP_NE_U32_e64 0, undef %18:vgpr_32, implicit $exec
256     %8:sreg_64_xexec = V_CMP_GT_I32_e64 0, undef %18:vgpr_32, implicit $exec
257     undef %19.sub16:sgpr_1024 = S_MOV_B32 0
258     %9:sreg_64_xexec = V_CMP_EQ_U32_e64 undef %20:sreg_32_xm0_xexec, undef %18:vgpr_32, implicit $exec
259     %21:vreg_1024_align2 = COPY %19, implicit $exec
260     %10:sreg_64_xexec = V_CMP_NE_U32_e64 1, undef %18:vgpr_32, implicit $exec
261     %19.sub17:sgpr_1024 = S_MOV_B32 1083786240
262     S_BRANCH %bb.1
264   bb.1:
265     $vcc = S_AND_B64 $exec, %10, implicit-def dead $scc
266     %22:vreg_1024_align2 = COPY %21
267     S_CBRANCH_VCCNZ %bb.2, implicit $vcc
268     S_BRANCH %bb.17
270   bb.2:
271     undef %23.sub0:sgpr_1024 = COPY %19.sub16
272     %23.sub1:sgpr_1024 = COPY %19.sub16
273     %23.sub2:sgpr_1024 = COPY %19.sub16
274     %23.sub3:sgpr_1024 = COPY %19.sub16
275     %23.sub4:sgpr_1024 = COPY %19.sub16
276     %23.sub5:sgpr_1024 = COPY %19.sub16
277     %23.sub6:sgpr_1024 = COPY %19.sub16
278     %23.sub7:sgpr_1024 = COPY %19.sub16
279     %23.sub8:sgpr_1024 = COPY %19.sub16
280     %23.sub9:sgpr_1024 = COPY %19.sub16
281     %23.sub10:sgpr_1024 = COPY %19.sub16
282     %23.sub11:sgpr_1024 = COPY %19.sub16
283     %23.sub12:sgpr_1024 = COPY %19.sub16
284     %23.sub13:sgpr_1024 = COPY %19.sub16
285     %23.sub14:sgpr_1024 = COPY %19.sub16
286     %23.sub15:sgpr_1024 = COPY %19.sub16
287     %23.sub16:sgpr_1024 = COPY %19.sub16
288     %23.sub17:sgpr_1024 = COPY %19.sub16
289     %23.sub18:sgpr_1024 = COPY %19.sub16
290     %23.sub19:sgpr_1024 = COPY %19.sub16
291     %23.sub20:sgpr_1024 = COPY %19.sub16
292     %23.sub21:sgpr_1024 = COPY %19.sub16
293     %23.sub22:sgpr_1024 = COPY %19.sub16
294     %23.sub23:sgpr_1024 = COPY %19.sub16
295     %23.sub24:sgpr_1024 = COPY %19.sub16
296     %23.sub25:sgpr_1024 = COPY %19.sub16
297     %23.sub26:sgpr_1024 = COPY %19.sub16
298     %23.sub27:sgpr_1024 = COPY %19.sub16
299     %23.sub28:sgpr_1024 = COPY %19.sub16
300     %23.sub29:sgpr_1024 = COPY %19.sub16
301     %23.sub30:sgpr_1024 = COPY %19.sub16
302     %23.sub31:sgpr_1024 = COPY %19.sub16
303     %21:vreg_1024_align2 = COPY %23, implicit $exec
304     S_CBRANCH_EXECZ %bb.11, implicit $exec
305     S_BRANCH %bb.5
307   bb.3:
308     ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
309     dead $sgpr30_sgpr31 = SI_CALL undef %24:sreg_64_xexec, 0, CustomRegMask($sgpr60,$sgpr62)
310     ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
312   bb.4:
313     ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
314     $sgpr12 = COPY %13
315     $sgpr13 = COPY %12
316     $sgpr14 = COPY %11
317     dead $sgpr30_sgpr31 = SI_CALL undef %25:sreg_64, 0, csr_amdgpu_noregs, implicit killed $sgpr12, implicit killed $sgpr13, implicit $sgpr14
318     ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
319     S_BRANCH %bb.17
321   bb.5:
322     %26:sreg_64 = S_AND_B64 %7, undef %3, implicit-def dead $scc
323     %3:sreg_64 = V_CMP_GT_I32_e64 0, undef %18:vgpr_32, implicit $exec
324     $exec = S_MOV_B64_term %26
325     S_CBRANCH_EXECZ %bb.12, implicit $exec
327   bb.6:
328     dead %27:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %8, implicit $exec
330   bb.7:
331     %0:sreg_64_xexec = nofpexcept V_CMP_NLT_F64_e64 0, undef %28:sreg_64, 0, undef %29:vreg_64_align2, 0, implicit $mode, implicit $exec
332     %1:sreg_64 = nofpexcept V_CMP_NLT_F64_e64 0, 4607182418800017408, 0, undef %29:vreg_64_align2, 0, implicit $mode, implicit $exec
333     dead %30:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V32 %22, undef %13, 11, implicit-def $m0, implicit $m0, implicit $exec
335   bb.8:
336     $vcc = S_AND_B64 $exec, %0, implicit-def dead $scc
337     S_CBRANCH_VCCNZ %bb.10, implicit $vcc
339   bb.9:
340     %31:vreg_64_align2 = COPY %19.sub16_sub17, implicit $exec
341     GLOBAL_STORE_DWORDX2_SADDR undef %18:vgpr_32, %31, undef %24:sreg_64_xexec, 0, 0, implicit $exec :: (store (s64), addrspace 1)
342     %32:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %5, implicit $exec
343     dead %33:sreg_64_xexec = V_CMP_NE_U32_e64 1, %32, implicit $exec
344     undef %34.sub0:sreg_64 = S_ADD_U32 %15.sub0, 32, implicit-def dead $scc
345     ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
346     $sgpr4_sgpr5 = COPY %17
347     $sgpr6_sgpr7 = COPY %16
348     $sgpr10_sgpr11 = COPY %14
349     $sgpr12 = COPY %13
350     $sgpr13 = COPY %12
351     dead $sgpr30_sgpr31 = SI_CALL undef %33, 0, csr_amdgpu_gfx90ainsts, implicit $sgpr4_sgpr5, implicit $sgpr6_sgpr7, implicit $sgpr10_sgpr11, implicit killed $sgpr12, implicit killed $sgpr13
352     ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
353     ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
354     $sgpr8_sgpr9 = COPY %34
355     dead $sgpr30_sgpr31 = SI_CALL undef %33, 0, csr_amdgpu_gfx90ainsts, implicit $sgpr8_sgpr9
356     ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
357     $exec = S_MOV_B64_term %1
358     S_CBRANCH_EXECZ %bb.10, implicit $exec
359     S_BRANCH %bb.17
361   bb.10:
362     S_CBRANCH_EXECZ %bb.8, implicit $exec
363     S_BRANCH %bb.12
365   bb.11:
366     S_CBRANCH_EXECZ %bb.1, implicit $exec
367     S_BRANCH %bb.17
369   bb.12:
370     $exec = S_MOV_B64_term %3
371     S_CBRANCH_EXECZ %bb.11, implicit $exec
373   bb.13:
374     $vcc = S_AND_B64 $exec, %9, implicit-def dead $scc
375     S_CBRANCH_VCCNZ %bb.15, implicit $vcc
376     S_BRANCH %bb.14
378   bb.14:
380   bb.15:
381     $vcc = S_AND_B64 $exec, %6, implicit-def dead $scc
382     S_CBRANCH_VCCNZ %bb.11, implicit $vcc
384   bb.16:
385     S_CBRANCH_EXECZ %bb.3, implicit $exec
387   bb.17: