623 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=WAVE64 %s3# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=WAVE64 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=WAVE32 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=WAVE32 %s6 7 8---9name: test_dyn_stackalloc_sgpr_align110legalized: true11frameInfo:12 maxAlignment: 213stack:14 - { id: 0, type: variable-sized, alignment: 1 }15body: |16 bb.0:17 liveins: $sgpr018 19 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align120 ; WAVE64: liveins: $sgpr021 ; WAVE64-NEXT: {{ $}}22 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr023 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 624 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)25 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg26 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)27 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)28 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)29 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)30 ;31 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align132 ; WAVE32: liveins: $sgpr033 ; WAVE32-NEXT: {{ $}}34 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr035 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 536 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)37 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg38 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)39 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)40 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)41 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)42 %0:_(s32) = COPY $sgpr043 %1:_(p5) = G_DYN_STACKALLOC %0, 144 S_ENDPGM 0, implicit %145...46 47---48name: test_dyn_stackalloc_sgpr_align249legalized: true50frameInfo:51 maxAlignment: 252stack:53 - { id: 0, type: variable-sized, alignment: 2 }54body: |55 bb.0:56 liveins: $sgpr057 58 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align259 ; WAVE64: liveins: $sgpr060 ; WAVE64-NEXT: {{ $}}61 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr062 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 663 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)64 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg65 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)66 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)67 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)68 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)69 ;70 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align271 ; WAVE32: liveins: $sgpr072 ; WAVE32-NEXT: {{ $}}73 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr074 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 575 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)76 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg77 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)78 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)79 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)80 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)81 %0:_(s32) = COPY $sgpr082 %1:_(p5) = G_DYN_STACKALLOC %0, 283 S_ENDPGM 0, implicit %184...85 86---87name: test_dyn_stackalloc_sgpr_align488legalized: true89frameInfo:90 maxAlignment: 491stack:92 - { id: 0, type: variable-sized, alignment: 4 }93body: |94 bb.0:95 liveins: $sgpr096 97 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align498 ; WAVE64: liveins: $sgpr099 ; WAVE64-NEXT: {{ $}}100 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0101 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6102 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)103 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg104 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)105 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)106 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)107 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)108 ;109 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align4110 ; WAVE32: liveins: $sgpr0111 ; WAVE32-NEXT: {{ $}}112 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0113 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5114 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)115 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg116 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)117 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)118 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)119 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)120 %0:_(s32) = COPY $sgpr0121 %1:_(p5) = G_DYN_STACKALLOC %0, 4122 S_ENDPGM 0, implicit %1123...124 125---126name: test_dyn_stackalloc_sgpr_align8127legalized: true128frameInfo:129 maxAlignment: 8130stack:131 - { id: 0, type: variable-sized, alignment: 8 }132body: |133 bb.0:134 liveins: $sgpr0135 136 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align8137 ; WAVE64: liveins: $sgpr0138 ; WAVE64-NEXT: {{ $}}139 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0140 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6141 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)142 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg143 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)144 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)145 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)146 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)147 ;148 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align8149 ; WAVE32: liveins: $sgpr0150 ; WAVE32-NEXT: {{ $}}151 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0152 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5153 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)154 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg155 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)156 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)157 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)158 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)159 %0:_(s32) = COPY $sgpr0160 %1:_(p5) = G_DYN_STACKALLOC %0, 8161 S_ENDPGM 0, implicit %1162...163 164---165name: test_dyn_stackalloc_sgpr_align16166legalized: true167frameInfo:168 maxAlignment: 16169stack:170 - { id: 0, type: variable-sized, alignment: 16 }171body: |172 bb.0:173 liveins: $sgpr0174 175 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align16176 ; WAVE64: liveins: $sgpr0177 ; WAVE64-NEXT: {{ $}}178 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0179 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6180 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)181 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg182 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)183 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)184 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)185 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)186 ;187 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align16188 ; WAVE32: liveins: $sgpr0189 ; WAVE32-NEXT: {{ $}}190 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0191 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5192 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)193 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg194 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)195 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)196 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)197 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)198 %0:_(s32) = COPY $sgpr0199 %1:_(p5) = G_DYN_STACKALLOC %0, 16200 S_ENDPGM 0, implicit %1201...202 203---204name: test_dyn_stackalloc_sgpr_align32205legalized: true206frameInfo:207 maxAlignment: 32208stack:209 - { id: 0, type: variable-sized, alignment: 32 }210body: |211 bb.0:212 liveins: $sgpr0213 214 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align32215 ; WAVE64: liveins: $sgpr0216 ; WAVE64-NEXT: {{ $}}217 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0218 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6219 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)220 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg221 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047222 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)223 ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048224 ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)225 ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)226 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)227 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)228 ;229 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align32230 ; WAVE32: liveins: $sgpr0231 ; WAVE32-NEXT: {{ $}}232 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0233 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5234 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)235 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg236 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1023237 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)238 ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1024239 ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)240 ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)241 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)242 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)243 %0:_(s32) = COPY $sgpr0244 %1:_(p5) = G_DYN_STACKALLOC %0, 32245 S_ENDPGM 0, implicit %1246...247 248---249name: test_dyn_stackalloc_sgpr_align64250legalized: true251frameInfo:252 maxAlignment: 64253stack:254 - { id: 0, type: variable-sized, alignment: 64 }255body: |256 bb.0:257 liveins: $sgpr0258 259 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align64260 ; WAVE64: liveins: $sgpr0261 ; WAVE64-NEXT: {{ $}}262 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0263 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6264 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)265 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg266 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 4095267 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)268 ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -4096269 ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)270 ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)271 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)272 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)273 ;274 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align64275 ; WAVE32: liveins: $sgpr0276 ; WAVE32-NEXT: {{ $}}277 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0278 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5279 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)280 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg281 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047282 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)283 ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048284 ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)285 ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)286 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)287 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)288 %0:_(s32) = COPY $sgpr0289 %1:_(p5) = G_DYN_STACKALLOC %0, 64290 S_ENDPGM 0, implicit %1291...292 293---294name: test_dyn_stackalloc_sgpr_align128295legalized: true296frameInfo:297 maxAlignment: 64298stack:299 - { id: 0, type: variable-sized, alignment: 128 }300body: |301 bb.0:302 liveins: $sgpr0303 304 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align128305 ; WAVE64: liveins: $sgpr0306 ; WAVE64-NEXT: {{ $}}307 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0308 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6309 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)310 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg311 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 8191312 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)313 ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -8192314 ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)315 ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)316 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)317 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)318 ;319 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align128320 ; WAVE32: liveins: $sgpr0321 ; WAVE32-NEXT: {{ $}}322 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0323 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5324 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)325 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg326 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 4095327 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)328 ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -4096329 ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)330 ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)331 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)332 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)333 %0:_(s32) = COPY $sgpr0334 %1:_(p5) = G_DYN_STACKALLOC %0, 128335 S_ENDPGM 0, implicit %1336...337 338---339name: test_dyn_stackalloc_sgpr_constant_align4340legalized: true341frameInfo:342 maxAlignment: 4343stack:344 - { id: 0, type: variable-sized, alignment: 4 }345body: |346 bb.0:347 348 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align4349 ; WAVE64: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32350 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6351 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)352 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg353 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)354 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)355 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)356 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)357 ;358 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align4359 ; WAVE32: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32360 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5361 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)362 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg363 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)364 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)365 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)366 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)367 %0:_(s32) = G_CONSTANT i32 32368 %1:_(p5) = G_DYN_STACKALLOC %0, 4369 S_ENDPGM 0, implicit %1370...371 372---373name: test_dyn_stackalloc_sgpr_constant_align8374legalized: true375frameInfo:376 maxAlignment: 8377stack:378 - { id: 0, type: variable-sized, alignment: 8 }379body: |380 bb.0:381 liveins: $sgpr0382 383 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align8384 ; WAVE64: liveins: $sgpr0385 ; WAVE64-NEXT: {{ $}}386 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32387 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6388 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)389 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg390 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)391 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)392 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)393 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)394 ;395 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align8396 ; WAVE32: liveins: $sgpr0397 ; WAVE32-NEXT: {{ $}}398 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32399 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5400 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)401 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg402 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)403 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)404 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)405 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)406 %0:_(s32) = G_CONSTANT i32 32407 %1:_(p5) = G_DYN_STACKALLOC %0, 8408 S_ENDPGM 0, implicit %1409...410 411---412name: test_dyn_stackalloc_sgpr_constant_align16413legalized: true414frameInfo:415 maxAlignment: 16416stack:417 - { id: 0, type: variable-sized, alignment: 16 }418body: |419 bb.0:420 liveins: $sgpr0421 422 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align16423 ; WAVE64: liveins: $sgpr0424 ; WAVE64-NEXT: {{ $}}425 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32426 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6427 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)428 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg429 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)430 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)431 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)432 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)433 ;434 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align16435 ; WAVE32: liveins: $sgpr0436 ; WAVE32-NEXT: {{ $}}437 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32438 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5439 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)440 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg441 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)442 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)443 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)444 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)445 %0:_(s32) = G_CONSTANT i32 32446 %1:_(p5) = G_DYN_STACKALLOC %0, 16447 S_ENDPGM 0, implicit %1448...449 450---451name: test_dyn_stackalloc_sgpr_constant_align32452legalized: true453frameInfo:454 maxAlignment: 32455stack:456 - { id: 0, type: variable-sized, alignment: 32 }457body: |458 bb.0:459 liveins: $sgpr0460 461 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align32462 ; WAVE64: liveins: $sgpr0463 ; WAVE64-NEXT: {{ $}}464 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32465 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6466 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)467 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg468 ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047469 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[C2]](s32)470 ; WAVE64-NEXT: [[C3:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048471 ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C3]](s32)472 ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)473 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)474 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)475 ;476 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align32477 ; WAVE32: liveins: $sgpr0478 ; WAVE32-NEXT: {{ $}}479 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32480 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5481 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)482 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg483 ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1023484 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[C2]](s32)485 ; WAVE32-NEXT: [[C3:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1024486 ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C3]](s32)487 ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)488 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)489 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)490 %0:_(s32) = G_CONSTANT i32 32491 %1:_(p5) = G_DYN_STACKALLOC %0, 32492 S_ENDPGM 0, implicit %1493...494 495---496name: test_dyn_stackalloc_vgpr_align4497legalized: true498frameInfo:499 maxAlignment: 4500stack:501 - { id: 0, type: variable-sized, alignment: 4 }502body: |503 bb.0:504 liveins: $vgpr0505 506 ; WAVE64-LABEL: name: test_dyn_stackalloc_vgpr_align4507 ; WAVE64: liveins: $vgpr0508 ; WAVE64-NEXT: {{ $}}509 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0510 ; WAVE64-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0511 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6512 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)513 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg514 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)515 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)516 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)517 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)518 ;519 ; WAVE32-LABEL: name: test_dyn_stackalloc_vgpr_align4520 ; WAVE32: liveins: $vgpr0521 ; WAVE32-NEXT: {{ $}}522 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0523 ; WAVE32-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0524 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5525 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)526 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg527 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)528 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)529 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)530 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)531 %0:_(s32) = COPY $vgpr0532 %1:_(p5) = G_DYN_STACKALLOC %0, 4533 S_ENDPGM 0, implicit %1534...535 536---537name: test_dyn_stackalloc_vgpr_align16538legalized: true539frameInfo:540 maxAlignment: 16541stack:542 - { id: 0, type: variable-sized, alignment: 16 }543body: |544 bb.0:545 liveins: $vgpr0546 547 ; WAVE64-LABEL: name: test_dyn_stackalloc_vgpr_align16548 ; WAVE64: liveins: $vgpr0549 ; WAVE64-NEXT: {{ $}}550 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0551 ; WAVE64-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0552 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6553 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)554 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg555 ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)556 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)557 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)558 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)559 ;560 ; WAVE32-LABEL: name: test_dyn_stackalloc_vgpr_align16561 ; WAVE32: liveins: $vgpr0562 ; WAVE32-NEXT: {{ $}}563 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0564 ; WAVE32-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0565 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5566 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)567 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg568 ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)569 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)570 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)571 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)572 %0:_(s32) = COPY $vgpr0573 %1:_(p5) = G_DYN_STACKALLOC %0, 16574 S_ENDPGM 0, implicit %1575...576 577---578name: test_dyn_stackalloc_vgpr_align64579legalized: true580frameInfo:581 maxAlignment: 64582stack:583 - { id: 0, type: variable-sized, alignment: 64 }584body: |585 bb.0:586 liveins: $vgpr0587 588 ; WAVE64-LABEL: name: test_dyn_stackalloc_vgpr_align64589 ; WAVE64: liveins: $vgpr0590 ; WAVE64-NEXT: {{ $}}591 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0592 ; WAVE64-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0593 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6594 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)595 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg596 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 4095597 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)598 ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -4096599 ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)600 ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)601 ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)602 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)603 ;604 ; WAVE32-LABEL: name: test_dyn_stackalloc_vgpr_align64605 ; WAVE32: liveins: $vgpr0606 ; WAVE32-NEXT: {{ $}}607 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0608 ; WAVE32-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0609 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5610 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)611 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg612 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047613 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)614 ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048615 ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)616 ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)617 ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)618 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)619 %0:_(s32) = COPY $vgpr0620 %1:_(p5) = G_DYN_STACKALLOC %0, 64621 S_ENDPGM 0, implicit %1622...623