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.
10 name: need_large_tuple_split
12 tracksRegLiveness: true
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' }
31 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
32 stackPtrOffsetReg: '$sgpr32'
34 privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
35 privateSegmentWaveByteOffset: { reg: '$sgpr17' }
38 ; CHECK-LABEL: name: need_large_tuple_split
40 ; CHECK-NEXT: successors: %bb.1(0x80000000)
41 ; CHECK-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16, $vgpr0, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11
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
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
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
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
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
104 ; CHECK-NEXT: successors: %bb.4(0x80000000)
105 ; CHECK-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16
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
115 ; CHECK-NEXT: successors: %bb.17(0x80000000)
116 ; CHECK-NEXT: liveins: $sgpr60, $sgpr62
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
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
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
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
139 ; CHECK-NEXT: dead [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, $sgpr40_sgpr41, implicit $exec
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
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
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
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
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
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
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
199 ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.8, implicit $exec
200 ; CHECK-NEXT: S_BRANCH %bb.12
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
206 ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec
207 ; CHECK-NEXT: S_BRANCH %bb.17
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
213 ; CHECK-NEXT: $exec = S_MOV_B64_term killed renamable $sgpr46_sgpr47
214 ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.11, implicit $exec
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
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
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
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
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
237 ; CHECK-NEXT: successors: %bb.3(0x40000000), %bb.17(0x40000000)
238 ; CHECK-NEXT: liveins: $sgpr14, $sgpr15, $sgpr16
240 ; CHECK-NEXT: S_CBRANCH_EXECZ %bb.3, implicit $exec
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
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
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
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
313 ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32
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
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
328 dead %27:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %8, implicit $exec
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
336 $vcc = S_AND_B64 $exec, %0, implicit-def dead $scc
337 S_CBRANCH_VCCNZ %bb.10, implicit $vcc
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
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
362 S_CBRANCH_EXECZ %bb.8, implicit $exec
366 S_CBRANCH_EXECZ %bb.1, implicit $exec
370 $exec = S_MOV_B64_term %3
371 S_CBRANCH_EXECZ %bb.11, implicit $exec
374 $vcc = S_AND_B64 $exec, %9, implicit-def dead $scc
375 S_CBRANCH_VCCNZ %bb.15, implicit $vcc
381 $vcc = S_AND_B64 $exec, %6, implicit-def dead $scc
382 S_CBRANCH_VCCNZ %bb.11, implicit $vcc
385 S_CBRANCH_EXECZ %bb.3, implicit $exec