1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s 3# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s 4# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s 5# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s 6# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s 7# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s 8 9--- 10 11name: atomic_store_local_s32_seq_cst 12legalized: true 13regBankSelected: true 14tracksRegLiveness: true 15 16body: | 17 bb.0: 18 liveins: $vgpr0, $vgpr1 19 20 ; GFX6-LABEL: name: atomic_store_local_s32_seq_cst 21 ; GFX6: liveins: $vgpr0, $vgpr1 22 ; GFX6-NEXT: {{ $}} 23 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 24 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 25 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 26 ; GFX6-NEXT: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store seq_cst (s32), addrspace 3) 27 ; GFX7-LABEL: name: atomic_store_local_s32_seq_cst 28 ; GFX7: liveins: $vgpr0, $vgpr1 29 ; GFX7-NEXT: {{ $}} 30 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 31 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 32 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 33 ; GFX7-NEXT: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store seq_cst (s32), addrspace 3) 34 ; GFX9-LABEL: name: atomic_store_local_s32_seq_cst 35 ; GFX9: liveins: $vgpr0, $vgpr1 36 ; GFX9-NEXT: {{ $}} 37 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 38 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 39 ; GFX9-NEXT: DS_WRITE_B32_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store seq_cst (s32), addrspace 3) 40 %0:vgpr(s32) = COPY $vgpr0 41 %1:vgpr(p3) = COPY $vgpr1 42 G_STORE %0, %1 :: (store seq_cst (s32), align 4, addrspace 3) 43 44... 45 46--- 47 48name: atomic_store_local_v2s16_seq_cst 49legalized: true 50regBankSelected: true 51tracksRegLiveness: true 52 53body: | 54 bb.0: 55 liveins: $vgpr0, $vgpr1 56 57 ; GFX6-LABEL: name: atomic_store_local_v2s16_seq_cst 58 ; GFX6: liveins: $vgpr0, $vgpr1 59 ; GFX6-NEXT: {{ $}} 60 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0 61 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 62 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 63 ; GFX6-NEXT: G_STORE [[COPY]](<2 x s16>), [[COPY1]](p3) :: (store seq_cst (<2 x s16>), addrspace 3) 64 ; GFX7-LABEL: name: atomic_store_local_v2s16_seq_cst 65 ; GFX7: liveins: $vgpr0, $vgpr1 66 ; GFX7-NEXT: {{ $}} 67 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0 68 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 69 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 70 ; GFX7-NEXT: G_STORE [[COPY]](<2 x s16>), [[COPY1]](p3) :: (store seq_cst (<2 x s16>), addrspace 3) 71 ; GFX9-LABEL: name: atomic_store_local_v2s16_seq_cst 72 ; GFX9: liveins: $vgpr0, $vgpr1 73 ; GFX9-NEXT: {{ $}} 74 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0 75 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 76 ; GFX9-NEXT: G_STORE [[COPY]](<2 x s16>), [[COPY1]](p3) :: (store seq_cst (<2 x s16>), addrspace 3) 77 %0:vgpr(<2 x s16>) = COPY $vgpr0 78 %1:vgpr(p3) = COPY $vgpr1 79 G_STORE %0, %1 :: (store seq_cst (<2 x s16>), align 4, addrspace 3) 80 81... 82 83--- 84 85name: atomic_store_local_p3_seq_cst 86legalized: true 87regBankSelected: true 88tracksRegLiveness: true 89 90body: | 91 bb.0: 92 liveins: $vgpr0, $vgpr1 93 94 ; GFX6-LABEL: name: atomic_store_local_p3_seq_cst 95 ; GFX6: liveins: $vgpr0, $vgpr1 96 ; GFX6-NEXT: {{ $}} 97 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 98 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 99 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 100 ; GFX6-NEXT: G_STORE [[COPY]](p3), [[COPY1]](p3) :: (store seq_cst (p3), addrspace 3) 101 ; GFX7-LABEL: name: atomic_store_local_p3_seq_cst 102 ; GFX7: liveins: $vgpr0, $vgpr1 103 ; GFX7-NEXT: {{ $}} 104 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 105 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 106 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 107 ; GFX7-NEXT: G_STORE [[COPY]](p3), [[COPY1]](p3) :: (store seq_cst (p3), addrspace 3) 108 ; GFX9-LABEL: name: atomic_store_local_p3_seq_cst 109 ; GFX9: liveins: $vgpr0, $vgpr1 110 ; GFX9-NEXT: {{ $}} 111 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 112 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 113 ; GFX9-NEXT: G_STORE [[COPY]](p3), [[COPY1]](p3) :: (store seq_cst (p3), addrspace 3) 114 %0:vgpr(p3) = COPY $vgpr0 115 %1:vgpr(p3) = COPY $vgpr1 116 G_STORE %0, %1 :: (store seq_cst (p3), align 4, addrspace 3) 117 118... 119 120--- 121 122name: atomic_store_local_p5_seq_cst 123legalized: true 124regBankSelected: true 125tracksRegLiveness: true 126 127body: | 128 bb.0: 129 liveins: $vgpr0, $vgpr1 130 131 ; GFX6-LABEL: name: atomic_store_local_p5_seq_cst 132 ; GFX6: liveins: $vgpr0, $vgpr1 133 ; GFX6-NEXT: {{ $}} 134 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0 135 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 136 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 137 ; GFX6-NEXT: G_STORE [[COPY]](p5), [[COPY1]](p3) :: (store seq_cst (p5), addrspace 3) 138 ; GFX7-LABEL: name: atomic_store_local_p5_seq_cst 139 ; GFX7: liveins: $vgpr0, $vgpr1 140 ; GFX7-NEXT: {{ $}} 141 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0 142 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 143 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 144 ; GFX7-NEXT: G_STORE [[COPY]](p5), [[COPY1]](p3) :: (store seq_cst (p5), addrspace 3) 145 ; GFX9-LABEL: name: atomic_store_local_p5_seq_cst 146 ; GFX9: liveins: $vgpr0, $vgpr1 147 ; GFX9-NEXT: {{ $}} 148 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p5) = COPY $vgpr0 149 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 150 ; GFX9-NEXT: G_STORE [[COPY]](p5), [[COPY1]](p3) :: (store seq_cst (p5), addrspace 3) 151 %0:vgpr(p5) = COPY $vgpr0 152 %1:vgpr(p3) = COPY $vgpr1 153 G_STORE %0, %1 :: (store seq_cst (p5), align 4, addrspace 3) 154 155... 156 157--- 158 159name: atomic_store_local_p6_seq_cst 160legalized: true 161regBankSelected: true 162tracksRegLiveness: true 163 164body: | 165 bb.0: 166 liveins: $vgpr0, $vgpr1 167 168 ; GFX6-LABEL: name: atomic_store_local_p6_seq_cst 169 ; GFX6: liveins: $vgpr0, $vgpr1 170 ; GFX6-NEXT: {{ $}} 171 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p6) = COPY $vgpr0 172 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 173 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 174 ; GFX6-NEXT: G_STORE [[COPY]](p6), [[COPY1]](p3) :: (store seq_cst (p6), addrspace 3) 175 ; GFX7-LABEL: name: atomic_store_local_p6_seq_cst 176 ; GFX7: liveins: $vgpr0, $vgpr1 177 ; GFX7-NEXT: {{ $}} 178 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p6) = COPY $vgpr0 179 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 180 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 181 ; GFX7-NEXT: G_STORE [[COPY]](p6), [[COPY1]](p3) :: (store seq_cst (p6), addrspace 3) 182 ; GFX9-LABEL: name: atomic_store_local_p6_seq_cst 183 ; GFX9: liveins: $vgpr0, $vgpr1 184 ; GFX9-NEXT: {{ $}} 185 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p6) = COPY $vgpr0 186 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1 187 ; GFX9-NEXT: G_STORE [[COPY]](p6), [[COPY1]](p3) :: (store seq_cst (p6), addrspace 3) 188 %0:vgpr(p6) = COPY $vgpr0 189 %1:vgpr(p3) = COPY $vgpr1 190 G_STORE %0, %1 :: (store seq_cst (p6), align 4, addrspace 3) 191 192... 193 194--- 195 196name: atomic_store_local_s64_seq_cst 197legalized: true 198regBankSelected: true 199tracksRegLiveness: true 200 201body: | 202 bb.0: 203 liveins: $vgpr0_vgpr1, $vgpr2 204 205 ; GFX6-LABEL: name: atomic_store_local_s64_seq_cst 206 ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2 207 ; GFX6-NEXT: {{ $}} 208 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 209 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 210 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 211 ; GFX6-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store seq_cst (s64), addrspace 3) 212 ; GFX7-LABEL: name: atomic_store_local_s64_seq_cst 213 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 214 ; GFX7-NEXT: {{ $}} 215 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 216 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 217 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 218 ; GFX7-NEXT: DS_WRITE_B64 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store seq_cst (s64), addrspace 3) 219 ; GFX9-LABEL: name: atomic_store_local_s64_seq_cst 220 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 221 ; GFX9-NEXT: {{ $}} 222 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 223 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 224 ; GFX9-NEXT: DS_WRITE_B64_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store seq_cst (s64), addrspace 3) 225 %0:vgpr(s64) = COPY $vgpr0_vgpr1 226 %1:vgpr(p3) = COPY $vgpr2 227 G_STORE %0, %1 :: (store seq_cst (s64), align 8, addrspace 3) 228 229... 230 231--- 232 233name: atomic_store_local_v2s32_seq_cst 234legalized: true 235regBankSelected: true 236tracksRegLiveness: true 237 238body: | 239 bb.0: 240 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 241 242 ; GFX6-LABEL: name: atomic_store_local_v2s32_seq_cst 243 ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 244 ; GFX6-NEXT: {{ $}} 245 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 246 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 247 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 248 ; GFX6-NEXT: G_STORE [[COPY]](<2 x s32>), [[COPY1]](p3) :: (store seq_cst (<2 x s32>), addrspace 3) 249 ; GFX7-LABEL: name: atomic_store_local_v2s32_seq_cst 250 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 251 ; GFX7-NEXT: {{ $}} 252 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 253 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 254 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 255 ; GFX7-NEXT: G_STORE [[COPY]](<2 x s32>), [[COPY1]](p3) :: (store seq_cst (<2 x s32>), addrspace 3) 256 ; GFX9-LABEL: name: atomic_store_local_v2s32_seq_cst 257 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 258 ; GFX9-NEXT: {{ $}} 259 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 260 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 261 ; GFX9-NEXT: G_STORE [[COPY]](<2 x s32>), [[COPY1]](p3) :: (store seq_cst (<2 x s32>), addrspace 3) 262 %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 263 %1:vgpr(p3) = COPY $vgpr2 264 G_STORE %0, %1 :: (store seq_cst (<2 x s32>), align 8, addrspace 3) 265 266... 267 268--- 269 270name: atomic_store_local_v4s16_seq_cst 271legalized: true 272regBankSelected: true 273tracksRegLiveness: true 274 275body: | 276 bb.0: 277 liveins: $vgpr0_vgpr1, $vgpr2 278 279 ; GFX6-LABEL: name: atomic_store_local_v4s16_seq_cst 280 ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2 281 ; GFX6-NEXT: {{ $}} 282 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 283 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 284 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 285 ; GFX6-NEXT: G_STORE [[COPY]](<4 x s16>), [[COPY1]](p3) :: (store seq_cst (<4 x s16>), addrspace 3) 286 ; GFX7-LABEL: name: atomic_store_local_v4s16_seq_cst 287 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 288 ; GFX7-NEXT: {{ $}} 289 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 290 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 291 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 292 ; GFX7-NEXT: G_STORE [[COPY]](<4 x s16>), [[COPY1]](p3) :: (store seq_cst (<4 x s16>), addrspace 3) 293 ; GFX9-LABEL: name: atomic_store_local_v4s16_seq_cst 294 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 295 ; GFX9-NEXT: {{ $}} 296 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 297 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 298 ; GFX9-NEXT: G_STORE [[COPY]](<4 x s16>), [[COPY1]](p3) :: (store seq_cst (<4 x s16>), addrspace 3) 299 %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 300 %1:vgpr(p3) = COPY $vgpr2 301 G_STORE %0, %1 :: (store seq_cst (<4 x s16>), align 8, addrspace 3) 302 303... 304 305--- 306 307name: atomic_store_local_p0_seq_cst 308legalized: true 309regBankSelected: true 310tracksRegLiveness: true 311 312body: | 313 bb.0: 314 liveins: $vgpr0_vgpr1, $vgpr2 315 316 ; GFX6-LABEL: name: atomic_store_local_p0_seq_cst 317 ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2 318 ; GFX6-NEXT: {{ $}} 319 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1 320 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 321 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 322 ; GFX6-NEXT: G_STORE [[COPY]](p0), [[COPY1]](p3) :: (store seq_cst (p0), addrspace 3) 323 ; GFX7-LABEL: name: atomic_store_local_p0_seq_cst 324 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 325 ; GFX7-NEXT: {{ $}} 326 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1 327 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 328 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 329 ; GFX7-NEXT: G_STORE [[COPY]](p0), [[COPY1]](p3) :: (store seq_cst (p0), addrspace 3) 330 ; GFX9-LABEL: name: atomic_store_local_p0_seq_cst 331 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 332 ; GFX9-NEXT: {{ $}} 333 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1 334 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 335 ; GFX9-NEXT: G_STORE [[COPY]](p0), [[COPY1]](p3) :: (store seq_cst (p0), addrspace 3) 336 %0:vgpr(p0) = COPY $vgpr0_vgpr1 337 %1:vgpr(p3) = COPY $vgpr2 338 G_STORE %0, %1 :: (store seq_cst (p0), align 8, addrspace 3) 339 340... 341--- 342 343name: atomic_store_local_p1_seq_cst 344legalized: true 345regBankSelected: true 346tracksRegLiveness: true 347 348body: | 349 bb.0: 350 liveins: $vgpr0_vgpr1, $vgpr2 351 352 ; GFX6-LABEL: name: atomic_store_local_p1_seq_cst 353 ; GFX6: liveins: $vgpr0_vgpr1, $vgpr2 354 ; GFX6-NEXT: {{ $}} 355 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 356 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 357 ; GFX6-NEXT: $m0 = S_MOV_B32 -1 358 ; GFX6-NEXT: G_STORE [[COPY]](p1), [[COPY1]](p3) :: (store seq_cst (p1), addrspace 3) 359 ; GFX7-LABEL: name: atomic_store_local_p1_seq_cst 360 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 361 ; GFX7-NEXT: {{ $}} 362 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 363 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 364 ; GFX7-NEXT: $m0 = S_MOV_B32 -1 365 ; GFX7-NEXT: G_STORE [[COPY]](p1), [[COPY1]](p3) :: (store seq_cst (p1), addrspace 3) 366 ; GFX9-LABEL: name: atomic_store_local_p1_seq_cst 367 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 368 ; GFX9-NEXT: {{ $}} 369 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 370 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2 371 ; GFX9-NEXT: G_STORE [[COPY]](p1), [[COPY1]](p3) :: (store seq_cst (p1), addrspace 3) 372 %0:vgpr(p1) = COPY $vgpr0_vgpr1 373 %1:vgpr(p3) = COPY $vgpr2 374 G_STORE %0, %1 :: (store seq_cst (p1), align 8, addrspace 3) 375 376... 377