1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=WAVE64 %s 3# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=WAVE64 %s 4# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=WAVE32 %s 5# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=WAVE32 %s 6 7 8--- 9name: test_dyn_stackalloc_sgpr_align1 10legalized: true 11frameInfo: 12 maxAlignment: 2 13stack: 14 - { id: 0, type: variable-sized, alignment: 1 } 15body: | 16 bb.0: 17 liveins: $sgpr0 18 19 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align1 20 ; WAVE64: liveins: $sgpr0 21 ; WAVE64-NEXT: {{ $}} 22 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 23 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 24 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 25 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 26 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 27 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 28 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align1 29 ; WAVE32: liveins: $sgpr0 30 ; WAVE32-NEXT: {{ $}} 31 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 32 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 33 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 34 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 35 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 36 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 37 %0:_(s32) = COPY $sgpr0 38 %1:_(p5) = G_DYN_STACKALLOC %0, 1 39 S_ENDPGM 0, implicit %1 40... 41 42--- 43name: test_dyn_stackalloc_sgpr_align2 44legalized: true 45frameInfo: 46 maxAlignment: 2 47stack: 48 - { id: 0, type: variable-sized, alignment: 2 } 49body: | 50 bb.0: 51 liveins: $sgpr0 52 53 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align2 54 ; WAVE64: liveins: $sgpr0 55 ; WAVE64-NEXT: {{ $}} 56 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 57 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 58 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 59 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 60 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 61 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 62 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align2 63 ; WAVE32: liveins: $sgpr0 64 ; WAVE32-NEXT: {{ $}} 65 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 66 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 67 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 68 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 69 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 70 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 71 %0:_(s32) = COPY $sgpr0 72 %1:_(p5) = G_DYN_STACKALLOC %0, 2 73 S_ENDPGM 0, implicit %1 74... 75 76--- 77name: test_dyn_stackalloc_sgpr_align4 78legalized: true 79frameInfo: 80 maxAlignment: 4 81stack: 82 - { id: 0, type: variable-sized, alignment: 4 } 83body: | 84 bb.0: 85 liveins: $sgpr0 86 87 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align4 88 ; WAVE64: liveins: $sgpr0 89 ; WAVE64-NEXT: {{ $}} 90 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 91 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 92 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 93 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 94 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 95 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 96 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align4 97 ; WAVE32: liveins: $sgpr0 98 ; WAVE32-NEXT: {{ $}} 99 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 100 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 101 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 102 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 103 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 104 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 105 %0:_(s32) = COPY $sgpr0 106 %1:_(p5) = G_DYN_STACKALLOC %0, 4 107 S_ENDPGM 0, implicit %1 108... 109 110--- 111name: test_dyn_stackalloc_sgpr_align8 112legalized: true 113frameInfo: 114 maxAlignment: 8 115stack: 116 - { id: 0, type: variable-sized, alignment: 8 } 117body: | 118 bb.0: 119 liveins: $sgpr0 120 121 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align8 122 ; WAVE64: liveins: $sgpr0 123 ; WAVE64-NEXT: {{ $}} 124 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 125 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 126 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 127 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 128 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 129 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 130 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align8 131 ; WAVE32: liveins: $sgpr0 132 ; WAVE32-NEXT: {{ $}} 133 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 134 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 135 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 136 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 137 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 138 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 139 %0:_(s32) = COPY $sgpr0 140 %1:_(p5) = G_DYN_STACKALLOC %0, 8 141 S_ENDPGM 0, implicit %1 142... 143 144--- 145name: test_dyn_stackalloc_sgpr_align16 146legalized: true 147frameInfo: 148 maxAlignment: 16 149stack: 150 - { id: 0, type: variable-sized, alignment: 16 } 151body: | 152 bb.0: 153 liveins: $sgpr0 154 155 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align16 156 ; WAVE64: liveins: $sgpr0 157 ; WAVE64-NEXT: {{ $}} 158 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 159 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 160 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 161 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 162 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 163 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 164 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align16 165 ; WAVE32: liveins: $sgpr0 166 ; WAVE32-NEXT: {{ $}} 167 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 168 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 169 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 170 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 171 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 172 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 173 %0:_(s32) = COPY $sgpr0 174 %1:_(p5) = G_DYN_STACKALLOC %0, 16 175 S_ENDPGM 0, implicit %1 176... 177 178--- 179name: test_dyn_stackalloc_sgpr_align32 180legalized: true 181frameInfo: 182 maxAlignment: 32 183stack: 184 - { id: 0, type: variable-sized, alignment: 32 } 185body: | 186 bb.0: 187 liveins: $sgpr0 188 189 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align32 190 ; WAVE64: liveins: $sgpr0 191 ; WAVE64-NEXT: {{ $}} 192 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 193 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 194 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 195 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 196 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 197 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048 198 ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C1]](s32) 199 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5) 200 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align32 201 ; WAVE32: liveins: $sgpr0 202 ; WAVE32-NEXT: {{ $}} 203 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 204 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 205 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 206 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 207 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 208 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1024 209 ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C1]](s32) 210 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5) 211 %0:_(s32) = COPY $sgpr0 212 %1:_(p5) = G_DYN_STACKALLOC %0, 32 213 S_ENDPGM 0, implicit %1 214... 215 216--- 217name: test_dyn_stackalloc_sgpr_align64 218legalized: true 219frameInfo: 220 maxAlignment: 64 221stack: 222 - { id: 0, type: variable-sized, alignment: 64 } 223body: | 224 bb.0: 225 liveins: $sgpr0 226 227 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align64 228 ; WAVE64: liveins: $sgpr0 229 ; WAVE64-NEXT: {{ $}} 230 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 231 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 232 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 233 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 234 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 235 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -4096 236 ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C1]](s32) 237 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5) 238 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align64 239 ; WAVE32: liveins: $sgpr0 240 ; WAVE32-NEXT: {{ $}} 241 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 242 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 243 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 244 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 245 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 246 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048 247 ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C1]](s32) 248 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5) 249 %0:_(s32) = COPY $sgpr0 250 %1:_(p5) = G_DYN_STACKALLOC %0, 64 251 S_ENDPGM 0, implicit %1 252... 253 254--- 255name: test_dyn_stackalloc_sgpr_align128 256legalized: true 257frameInfo: 258 maxAlignment: 64 259stack: 260 - { id: 0, type: variable-sized, alignment: 128 } 261body: | 262 bb.0: 263 liveins: $sgpr0 264 265 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align128 266 ; WAVE64: liveins: $sgpr0 267 ; WAVE64-NEXT: {{ $}} 268 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 269 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 270 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 271 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 272 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 273 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -8192 274 ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C1]](s32) 275 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5) 276 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align128 277 ; WAVE32: liveins: $sgpr0 278 ; WAVE32-NEXT: {{ $}} 279 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 280 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 281 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 282 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 283 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32) 284 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -4096 285 ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C1]](s32) 286 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5) 287 %0:_(s32) = COPY $sgpr0 288 %1:_(p5) = G_DYN_STACKALLOC %0, 128 289 S_ENDPGM 0, implicit %1 290... 291 292--- 293name: test_dyn_stackalloc_sgpr_constant_align4 294legalized: true 295frameInfo: 296 maxAlignment: 4 297stack: 298 - { id: 0, type: variable-sized, alignment: 4 } 299body: | 300 bb.0: 301 302 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align4 303 ; WAVE64: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 304 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 305 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 306 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 307 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[SHL]](s32) 308 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 309 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align4 310 ; WAVE32: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 311 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 312 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 313 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 314 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[SHL]](s32) 315 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 316 %0:_(s32) = G_CONSTANT i32 32 317 %1:_(p5) = G_DYN_STACKALLOC %0, 4 318 S_ENDPGM 0, implicit %1 319... 320 321--- 322name: test_dyn_stackalloc_sgpr_constant_align8 323legalized: true 324frameInfo: 325 maxAlignment: 8 326stack: 327 - { id: 0, type: variable-sized, alignment: 8 } 328body: | 329 bb.0: 330 liveins: $sgpr0 331 332 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align8 333 ; WAVE64: liveins: $sgpr0 334 ; WAVE64-NEXT: {{ $}} 335 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 336 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 337 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 338 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 339 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[SHL]](s32) 340 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 341 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align8 342 ; WAVE32: liveins: $sgpr0 343 ; WAVE32-NEXT: {{ $}} 344 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 345 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 346 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 347 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 348 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[SHL]](s32) 349 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 350 %0:_(s32) = G_CONSTANT i32 32 351 %1:_(p5) = G_DYN_STACKALLOC %0, 8 352 S_ENDPGM 0, implicit %1 353... 354 355--- 356name: test_dyn_stackalloc_sgpr_constant_align16 357legalized: true 358frameInfo: 359 maxAlignment: 16 360stack: 361 - { id: 0, type: variable-sized, alignment: 16 } 362body: | 363 bb.0: 364 liveins: $sgpr0 365 366 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align16 367 ; WAVE64: liveins: $sgpr0 368 ; WAVE64-NEXT: {{ $}} 369 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 370 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 371 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 372 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 373 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[SHL]](s32) 374 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 375 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align16 376 ; WAVE32: liveins: $sgpr0 377 ; WAVE32-NEXT: {{ $}} 378 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 379 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 380 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 381 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 382 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[SHL]](s32) 383 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTR_ADD]](p5) 384 %0:_(s32) = G_CONSTANT i32 32 385 %1:_(p5) = G_DYN_STACKALLOC %0, 16 386 S_ENDPGM 0, implicit %1 387... 388 389--- 390name: test_dyn_stackalloc_sgpr_constant_align32 391legalized: true 392frameInfo: 393 maxAlignment: 32 394stack: 395 - { id: 0, type: variable-sized, alignment: 32 } 396body: | 397 bb.0: 398 liveins: $sgpr0 399 400 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align32 401 ; WAVE64: liveins: $sgpr0 402 ; WAVE64-NEXT: {{ $}} 403 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 404 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 405 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 406 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 407 ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[SHL]](s32) 408 ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048 409 ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32) 410 ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5) 411 ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align32 412 ; WAVE32: liveins: $sgpr0 413 ; WAVE32-NEXT: {{ $}} 414 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 415 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 416 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 417 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 418 ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[SHL]](s32) 419 ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1024 420 ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32) 421 ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5) 422 %0:_(s32) = G_CONSTANT i32 32 423 %1:_(p5) = G_DYN_STACKALLOC %0, 32 424 S_ENDPGM 0, implicit %1 425... 426