1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=WAVE64 %s 3# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=WAVE64 %s 4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=WAVE32 %s 5# RUN: llc -mtriple=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: [[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_align1 32 ; WAVE32: liveins: $sgpr0 33 ; WAVE32-NEXT: {{ $}} 34 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 35 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 36 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 37 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 38 ; 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 $sgpr0 43 %1:_(p5) = G_DYN_STACKALLOC %0, 1 44 S_ENDPGM 0, implicit %1 45... 46 47--- 48name: test_dyn_stackalloc_sgpr_align2 49legalized: true 50frameInfo: 51 maxAlignment: 2 52stack: 53 - { id: 0, type: variable-sized, alignment: 2 } 54body: | 55 bb.0: 56 liveins: $sgpr0 57 58 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align2 59 ; WAVE64: liveins: $sgpr0 60 ; WAVE64-NEXT: {{ $}} 61 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 62 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 63 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 64 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 65 ; 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_align2 71 ; WAVE32: liveins: $sgpr0 72 ; WAVE32-NEXT: {{ $}} 73 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 74 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 75 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 76 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 77 ; 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 $sgpr0 82 %1:_(p5) = G_DYN_STACKALLOC %0, 2 83 S_ENDPGM 0, implicit %1 84... 85 86--- 87name: test_dyn_stackalloc_sgpr_align4 88legalized: true 89frameInfo: 90 maxAlignment: 4 91stack: 92 - { id: 0, type: variable-sized, alignment: 4 } 93body: | 94 bb.0: 95 liveins: $sgpr0 96 97 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align4 98 ; WAVE64: liveins: $sgpr0 99 ; WAVE64-NEXT: {{ $}} 100 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 101 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 102 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 103 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 104 ; 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_align4 110 ; WAVE32: liveins: $sgpr0 111 ; WAVE32-NEXT: {{ $}} 112 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 113 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 114 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 115 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 116 ; 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 $sgpr0 121 %1:_(p5) = G_DYN_STACKALLOC %0, 4 122 S_ENDPGM 0, implicit %1 123... 124 125--- 126name: test_dyn_stackalloc_sgpr_align8 127legalized: true 128frameInfo: 129 maxAlignment: 8 130stack: 131 - { id: 0, type: variable-sized, alignment: 8 } 132body: | 133 bb.0: 134 liveins: $sgpr0 135 136 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align8 137 ; WAVE64: liveins: $sgpr0 138 ; WAVE64-NEXT: {{ $}} 139 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 140 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 141 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 142 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 143 ; 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_align8 149 ; WAVE32: liveins: $sgpr0 150 ; WAVE32-NEXT: {{ $}} 151 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 152 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 153 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 154 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 155 ; 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 $sgpr0 160 %1:_(p5) = G_DYN_STACKALLOC %0, 8 161 S_ENDPGM 0, implicit %1 162... 163 164--- 165name: test_dyn_stackalloc_sgpr_align16 166legalized: true 167frameInfo: 168 maxAlignment: 16 169stack: 170 - { id: 0, type: variable-sized, alignment: 16 } 171body: | 172 bb.0: 173 liveins: $sgpr0 174 175 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align16 176 ; WAVE64: liveins: $sgpr0 177 ; WAVE64-NEXT: {{ $}} 178 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 179 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 180 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 181 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 182 ; 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_align16 188 ; WAVE32: liveins: $sgpr0 189 ; WAVE32-NEXT: {{ $}} 190 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 191 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 192 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 193 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 194 ; 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 $sgpr0 199 %1:_(p5) = G_DYN_STACKALLOC %0, 16 200 S_ENDPGM 0, implicit %1 201... 202 203--- 204name: test_dyn_stackalloc_sgpr_align32 205legalized: true 206frameInfo: 207 maxAlignment: 32 208stack: 209 - { id: 0, type: variable-sized, alignment: 32 } 210body: | 211 bb.0: 212 liveins: $sgpr0 213 214 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align32 215 ; WAVE64: liveins: $sgpr0 216 ; WAVE64-NEXT: {{ $}} 217 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 218 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 219 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 220 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 221 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047 222 ; 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 -2048 224 ; 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_align32 230 ; WAVE32: liveins: $sgpr0 231 ; WAVE32-NEXT: {{ $}} 232 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 233 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 234 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 235 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 236 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1023 237 ; 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 -1024 239 ; 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 $sgpr0 244 %1:_(p5) = G_DYN_STACKALLOC %0, 32 245 S_ENDPGM 0, implicit %1 246... 247 248--- 249name: test_dyn_stackalloc_sgpr_align64 250legalized: true 251frameInfo: 252 maxAlignment: 64 253stack: 254 - { id: 0, type: variable-sized, alignment: 64 } 255body: | 256 bb.0: 257 liveins: $sgpr0 258 259 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align64 260 ; WAVE64: liveins: $sgpr0 261 ; WAVE64-NEXT: {{ $}} 262 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 263 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 264 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 265 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 266 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 4095 267 ; 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 -4096 269 ; 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_align64 275 ; WAVE32: liveins: $sgpr0 276 ; WAVE32-NEXT: {{ $}} 277 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 278 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 279 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 280 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 281 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047 282 ; 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 -2048 284 ; 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 $sgpr0 289 %1:_(p5) = G_DYN_STACKALLOC %0, 64 290 S_ENDPGM 0, implicit %1 291... 292 293--- 294name: test_dyn_stackalloc_sgpr_align128 295legalized: true 296frameInfo: 297 maxAlignment: 64 298stack: 299 - { id: 0, type: variable-sized, alignment: 128 } 300body: | 301 bb.0: 302 liveins: $sgpr0 303 304 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align128 305 ; WAVE64: liveins: $sgpr0 306 ; WAVE64-NEXT: {{ $}} 307 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 308 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 309 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 310 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 311 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 8191 312 ; 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 -8192 314 ; 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_align128 320 ; WAVE32: liveins: $sgpr0 321 ; WAVE32-NEXT: {{ $}} 322 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 323 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 324 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32) 325 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 326 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 4095 327 ; 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 -4096 329 ; 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 $sgpr0 334 %1:_(p5) = G_DYN_STACKALLOC %0, 128 335 S_ENDPGM 0, implicit %1 336... 337 338--- 339name: test_dyn_stackalloc_sgpr_constant_align4 340legalized: true 341frameInfo: 342 maxAlignment: 4 343stack: 344 - { id: 0, type: variable-sized, alignment: 4 } 345body: | 346 bb.0: 347 348 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align4 349 ; WAVE64: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 350 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 351 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 352 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 353 ; 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_align4 359 ; WAVE32: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 360 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 361 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 362 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 363 ; 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 32 368 %1:_(p5) = G_DYN_STACKALLOC %0, 4 369 S_ENDPGM 0, implicit %1 370... 371 372--- 373name: test_dyn_stackalloc_sgpr_constant_align8 374legalized: true 375frameInfo: 376 maxAlignment: 8 377stack: 378 - { id: 0, type: variable-sized, alignment: 8 } 379body: | 380 bb.0: 381 liveins: $sgpr0 382 383 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align8 384 ; WAVE64: liveins: $sgpr0 385 ; WAVE64-NEXT: {{ $}} 386 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 387 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 388 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 389 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 390 ; 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_align8 396 ; WAVE32: liveins: $sgpr0 397 ; WAVE32-NEXT: {{ $}} 398 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 399 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 400 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 401 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 402 ; 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 32 407 %1:_(p5) = G_DYN_STACKALLOC %0, 8 408 S_ENDPGM 0, implicit %1 409... 410 411--- 412name: test_dyn_stackalloc_sgpr_constant_align16 413legalized: true 414frameInfo: 415 maxAlignment: 16 416stack: 417 - { id: 0, type: variable-sized, alignment: 16 } 418body: | 419 bb.0: 420 liveins: $sgpr0 421 422 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align16 423 ; WAVE64: liveins: $sgpr0 424 ; WAVE64-NEXT: {{ $}} 425 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 426 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 427 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 428 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 429 ; 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_align16 435 ; WAVE32: liveins: $sgpr0 436 ; WAVE32-NEXT: {{ $}} 437 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 438 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 439 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 440 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 441 ; 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 32 446 %1:_(p5) = G_DYN_STACKALLOC %0, 16 447 S_ENDPGM 0, implicit %1 448... 449 450--- 451name: test_dyn_stackalloc_sgpr_constant_align32 452legalized: true 453frameInfo: 454 maxAlignment: 32 455stack: 456 - { id: 0, type: variable-sized, alignment: 32 } 457body: | 458 bb.0: 459 liveins: $sgpr0 460 461 ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align32 462 ; WAVE64: liveins: $sgpr0 463 ; WAVE64-NEXT: {{ $}} 464 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 465 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 466 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 467 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 468 ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047 469 ; 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 -2048 471 ; 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_align32 477 ; WAVE32: liveins: $sgpr0 478 ; WAVE32-NEXT: {{ $}} 479 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32 480 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 481 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32) 482 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 483 ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1023 484 ; 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 -1024 486 ; 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 32 491 %1:_(p5) = G_DYN_STACKALLOC %0, 32 492 S_ENDPGM 0, implicit %1 493... 494 495--- 496name: test_dyn_stackalloc_vgpr_align4 497legalized: true 498frameInfo: 499 maxAlignment: 4 500stack: 501 - { id: 0, type: variable-sized, alignment: 4 } 502body: | 503 bb.0: 504 liveins: $vgpr0 505 506 ; WAVE64-LABEL: name: test_dyn_stackalloc_vgpr_align4 507 ; WAVE64: liveins: $vgpr0 508 ; WAVE64-NEXT: {{ $}} 509 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 510 ; WAVE64-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0 511 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 512 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32) 513 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 514 ; 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_align4 520 ; WAVE32: liveins: $vgpr0 521 ; WAVE32-NEXT: {{ $}} 522 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 523 ; WAVE32-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0 524 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 525 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32) 526 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 527 ; 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 $vgpr0 532 %1:_(p5) = G_DYN_STACKALLOC %0, 4 533 S_ENDPGM 0, implicit %1 534... 535 536--- 537name: test_dyn_stackalloc_vgpr_align16 538legalized: true 539frameInfo: 540 maxAlignment: 16 541stack: 542 - { id: 0, type: variable-sized, alignment: 16 } 543body: | 544 bb.0: 545 liveins: $vgpr0 546 547 ; WAVE64-LABEL: name: test_dyn_stackalloc_vgpr_align16 548 ; WAVE64: liveins: $vgpr0 549 ; WAVE64-NEXT: {{ $}} 550 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 551 ; WAVE64-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0 552 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 553 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32) 554 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 555 ; 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_align16 561 ; WAVE32: liveins: $vgpr0 562 ; WAVE32-NEXT: {{ $}} 563 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 564 ; WAVE32-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0 565 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 566 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32) 567 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 568 ; 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 $vgpr0 573 %1:_(p5) = G_DYN_STACKALLOC %0, 16 574 S_ENDPGM 0, implicit %1 575... 576 577--- 578name: test_dyn_stackalloc_vgpr_align64 579legalized: true 580frameInfo: 581 maxAlignment: 64 582stack: 583 - { id: 0, type: variable-sized, alignment: 64 } 584body: | 585 bb.0: 586 liveins: $vgpr0 587 588 ; WAVE64-LABEL: name: test_dyn_stackalloc_vgpr_align64 589 ; WAVE64: liveins: $vgpr0 590 ; WAVE64-NEXT: {{ $}} 591 ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 592 ; WAVE64-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0 593 ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6 594 ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32) 595 ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 596 ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 4095 597 ; 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 -4096 599 ; 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_align64 605 ; WAVE32: liveins: $vgpr0 606 ; WAVE32-NEXT: {{ $}} 607 ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 608 ; WAVE32-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0 609 ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5 610 ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32) 611 ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg 612 ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047 613 ; 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 -2048 615 ; 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 $vgpr0 620 %1:_(p5) = G_DYN_STACKALLOC %0, 64 621 S_ENDPGM 0, implicit %1 622... 623