1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -amdgpu-global-isel-new-legality -march=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s 3# RUN: llc -amdgpu-global-isel-new-legality -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX8 %s 4# RUN: llc -amdgpu-global-isel-new-legality -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s 5# RUN: llc -amdgpu-global-isel-new-legality -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s 6 7--- 8 9name: store_flat_s32_to_4 10legalized: true 11tracksRegLiveness: true 12regBankSelected: true 13 14body: | 15 bb.0: 16 liveins: $vgpr0_vgpr1, $vgpr2 17 18 ; GFX7-LABEL: name: store_flat_s32_to_4 19 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 20 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 21 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 22 ; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 23 ; GFX8-LABEL: name: store_flat_s32_to_4 24 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 25 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 26 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 27 ; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 28 ; GFX9-LABEL: name: store_flat_s32_to_4 29 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 30 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 31 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 32 ; GFX9: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 33 ; GFX10-LABEL: name: store_flat_s32_to_4 34 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 35 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 36 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 37 ; GFX10: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 38 %0:vgpr(p1) = COPY $vgpr0_vgpr1 39 %1:vgpr(s32) = COPY $vgpr2 40 G_STORE %1, %0 :: (store 4, align 4, addrspace 0) 41 42... 43 44--- 45name: store_flat_s32_to_2 46legalized: true 47tracksRegLiveness: true 48regBankSelected: true 49 50body: | 51 bb.0: 52 liveins: $vgpr0_vgpr1, $vgpr2 53 54 ; GFX7-LABEL: name: store_flat_s32_to_2 55 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 56 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 57 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 58 ; GFX7: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 2) 59 ; GFX8-LABEL: name: store_flat_s32_to_2 60 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 61 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 62 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 63 ; GFX8: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 2) 64 ; GFX9-LABEL: name: store_flat_s32_to_2 65 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 66 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 67 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 68 ; GFX9: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 2) 69 ; GFX10-LABEL: name: store_flat_s32_to_2 70 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 71 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 72 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 73 ; GFX10: FLAT_STORE_SHORT [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 2) 74 %0:vgpr(p1) = COPY $vgpr0_vgpr1 75 %1:vgpr(s32) = COPY $vgpr2 76 G_STORE %1, %0 :: (store 2, align 2, addrspace 0) 77 78... 79 80--- 81name: store_flat_s32_to_1 82legalized: true 83tracksRegLiveness: true 84regBankSelected: true 85 86body: | 87 bb.0: 88 liveins: $vgpr0_vgpr1, $vgpr2 89 90 ; GFX7-LABEL: name: store_flat_s32_to_1 91 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 92 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 93 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 94 ; GFX7: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 1) 95 ; GFX8-LABEL: name: store_flat_s32_to_1 96 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 97 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 98 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 99 ; GFX8: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 1) 100 ; GFX9-LABEL: name: store_flat_s32_to_1 101 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 102 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 103 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 104 ; GFX9: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 1) 105 ; GFX10-LABEL: name: store_flat_s32_to_1 106 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 107 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 108 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 109 ; GFX10: FLAT_STORE_BYTE [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 1) 110 %0:vgpr(p1) = COPY $vgpr0_vgpr1 111 %1:vgpr(s32) = COPY $vgpr2 112 G_STORE %1, %0 :: (store 1, align 1, addrspace 0) 113 114... 115 116--- 117 118name: store_flat_s64 119legalized: true 120tracksRegLiveness: true 121regBankSelected: true 122 123body: | 124 bb.0: 125 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 126 127 ; GFX7-LABEL: name: store_flat_s64 128 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 129 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 130 ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 131 ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 132 ; GFX8-LABEL: name: store_flat_s64 133 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 134 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 135 ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 136 ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 137 ; GFX9-LABEL: name: store_flat_s64 138 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 139 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 140 ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 141 ; GFX9: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 142 ; GFX10-LABEL: name: store_flat_s64 143 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 144 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 145 ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 146 ; GFX10: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 147 %0:vgpr(p1) = COPY $vgpr0_vgpr1 148 %1:vgpr(s64) = COPY $vgpr2_vgpr3 149 G_STORE %1, %0 :: (store 8, align 8, addrspace 0) 150 151... 152--- 153 154name: store_flat_s96 155legalized: true 156tracksRegLiveness: true 157regBankSelected: true 158 159body: | 160 bb.0: 161 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 162 163 ; GFX7-LABEL: name: store_flat_s96 164 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 165 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 166 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4 167 ; GFX7: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store 12, align 16) 168 ; GFX8-LABEL: name: store_flat_s96 169 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 170 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 171 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4 172 ; GFX8: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store 12, align 16) 173 ; GFX9-LABEL: name: store_flat_s96 174 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 175 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 176 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4 177 ; GFX9: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store 12, align 16) 178 ; GFX10-LABEL: name: store_flat_s96 179 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 180 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 181 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4 182 ; GFX10: G_STORE [[COPY1]](s96), [[COPY]](p1) :: (store 12, align 16) 183 %0:vgpr(p1) = COPY $vgpr0_vgpr1 184 %1:vgpr(s96) = COPY $vgpr2_vgpr3_vgpr4 185 G_STORE %1, %0 :: (store 12, align 16, addrspace 0) 186 187... 188--- 189 190name: store_flat_s128 191legalized: true 192tracksRegLiveness: true 193regBankSelected: true 194 195body: | 196 bb.0: 197 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 198 199 ; GFX7-LABEL: name: store_flat_s128 200 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 201 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 202 ; GFX7: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 203 ; GFX7: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 204 ; GFX8-LABEL: name: store_flat_s128 205 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 206 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 207 ; GFX8: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 208 ; GFX8: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 209 ; GFX9-LABEL: name: store_flat_s128 210 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 211 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 212 ; GFX9: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 213 ; GFX9: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 214 ; GFX10-LABEL: name: store_flat_s128 215 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 216 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 217 ; GFX10: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 218 ; GFX10: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 219 %0:vgpr(p1) = COPY $vgpr0_vgpr1 220 %1:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 221 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 222 223... 224 225--- 226 227name: store_flat_v2s32 228legalized: true 229tracksRegLiveness: true 230regBankSelected: true 231 232body: | 233 bb.0: 234 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 235 236 ; GFX7-LABEL: name: store_flat_v2s32 237 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 238 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 239 ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 240 ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 241 ; GFX8-LABEL: name: store_flat_v2s32 242 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 243 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 244 ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 245 ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 246 ; GFX9-LABEL: name: store_flat_v2s32 247 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 248 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 249 ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 250 ; GFX9: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 251 ; GFX10-LABEL: name: store_flat_v2s32 252 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 253 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 254 ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 255 ; GFX10: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 256 %0:vgpr(p1) = COPY $vgpr0_vgpr1 257 %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 258 G_STORE %1, %0 :: (store 8, align 8, addrspace 0) 259 260... 261--- 262 263name: store_flat_v3s32 264legalized: true 265tracksRegLiveness: true 266regBankSelected: true 267 268body: | 269 bb.0: 270 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 271 272 ; GFX7-LABEL: name: store_flat_v3s32 273 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 274 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 275 ; GFX7: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4 276 ; GFX7: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16) 277 ; GFX8-LABEL: name: store_flat_v3s32 278 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 279 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 280 ; GFX8: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4 281 ; GFX8: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16) 282 ; GFX9-LABEL: name: store_flat_v3s32 283 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 284 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 285 ; GFX9: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4 286 ; GFX9: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16) 287 ; GFX10-LABEL: name: store_flat_v3s32 288 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 289 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 290 ; GFX10: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4 291 ; GFX10: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16) 292 %0:vgpr(p1) = COPY $vgpr0_vgpr1 293 %1:vgpr(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 294 G_STORE %1, %0 :: (store 12, align 16, addrspace 0) 295 296... 297--- 298 299name: store_flat_v4s32 300legalized: true 301tracksRegLiveness: true 302regBankSelected: true 303 304body: | 305 bb.0: 306 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 307 308 ; GFX7-LABEL: name: store_flat_v4s32 309 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 310 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 311 ; GFX7: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 312 ; GFX7: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 313 ; GFX8-LABEL: name: store_flat_v4s32 314 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 315 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 316 ; GFX8: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 317 ; GFX8: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 318 ; GFX9-LABEL: name: store_flat_v4s32 319 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 320 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 321 ; GFX9: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 322 ; GFX9: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 323 ; GFX10-LABEL: name: store_flat_v4s32 324 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 325 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 326 ; GFX10: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 327 ; GFX10: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 328 %0:vgpr(p1) = COPY $vgpr0_vgpr1 329 %1:vgpr(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 330 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 331 332... 333 334--- 335 336name: store_flat_v2s16 337legalized: true 338tracksRegLiveness: true 339regBankSelected: true 340 341body: | 342 bb.0: 343 liveins: $vgpr0_vgpr1, $vgpr2 344 345 ; GFX7-LABEL: name: store_flat_v2s16 346 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 347 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 348 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 349 ; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 350 ; GFX8-LABEL: name: store_flat_v2s16 351 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 352 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 353 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 354 ; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 355 ; GFX9-LABEL: name: store_flat_v2s16 356 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 357 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 358 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 359 ; GFX9: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 360 ; GFX10-LABEL: name: store_flat_v2s16 361 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 362 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 363 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 364 ; GFX10: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 365 %0:vgpr(p1) = COPY $vgpr0_vgpr1 366 %1:vgpr(<2 x s16>) = COPY $vgpr2 367 G_STORE %1, %0 :: (store 4, align 4, addrspace 0) 368 369... 370 371--- 372 373name: store_flat_v4s16 374legalized: true 375tracksRegLiveness: true 376regBankSelected: true 377 378body: | 379 bb.0: 380 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 381 382 ; GFX7-LABEL: name: store_flat_v4s16 383 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 384 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 385 ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 386 ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 387 ; GFX8-LABEL: name: store_flat_v4s16 388 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 389 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 390 ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 391 ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 392 ; GFX9-LABEL: name: store_flat_v4s16 393 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 394 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 395 ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 396 ; GFX9: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 397 ; GFX10-LABEL: name: store_flat_v4s16 398 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 399 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 400 ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 401 ; GFX10: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 402 %0:vgpr(p1) = COPY $vgpr0_vgpr1 403 %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 404 G_STORE %1, %0 :: (store 8, align 8, addrspace 0) 405 406... 407 408--- 409 410name: store_flat_v6s16 411legalized: true 412tracksRegLiveness: true 413regBankSelected: true 414 415body: | 416 bb.0: 417 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 418 419 ; GFX7-LABEL: name: store_flat_v6s16 420 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 421 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 422 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 423 ; GFX7: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16) 424 ; GFX8-LABEL: name: store_flat_v6s16 425 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 426 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 427 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 428 ; GFX8: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16) 429 ; GFX9-LABEL: name: store_flat_v6s16 430 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 431 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 432 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 433 ; GFX9: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16) 434 ; GFX10-LABEL: name: store_flat_v6s16 435 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 436 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 437 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 438 ; GFX10: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16) 439 %0:vgpr(p1) = COPY $vgpr0_vgpr1 440 %1:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 441 G_STORE %1, %0 :: (store 12, align 16, addrspace 0) 442 443... 444--- 445 446name: store_flat_v8s16 447legalized: true 448tracksRegLiveness: true 449regBankSelected: true 450 451body: | 452 bb.0: 453 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 454 455 ; GFX7-LABEL: name: store_flat_v8s16 456 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 457 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 458 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 459 ; GFX7: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16) 460 ; GFX8-LABEL: name: store_flat_v8s16 461 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 462 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 463 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 464 ; GFX8: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16) 465 ; GFX9-LABEL: name: store_flat_v8s16 466 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 467 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 468 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 469 ; GFX9: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16) 470 ; GFX10-LABEL: name: store_flat_v8s16 471 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 472 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 473 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 474 ; GFX10: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16) 475 %0:vgpr(p1) = COPY $vgpr0_vgpr1 476 %1:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 477 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 478 479... 480 481--- 482 483name: store_flat_v2s64 484legalized: true 485tracksRegLiveness: true 486regBankSelected: true 487 488body: | 489 bb.0: 490 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 491 492 ; GFX7-LABEL: name: store_flat_v2s64 493 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 494 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 495 ; GFX7: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 496 ; GFX7: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 497 ; GFX8-LABEL: name: store_flat_v2s64 498 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 499 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 500 ; GFX8: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 501 ; GFX8: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 502 ; GFX9-LABEL: name: store_flat_v2s64 503 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 504 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 505 ; GFX9: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 506 ; GFX9: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 507 ; GFX10-LABEL: name: store_flat_v2s64 508 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 509 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 510 ; GFX10: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 511 ; GFX10: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 512 %0:vgpr(p1) = COPY $vgpr0_vgpr1 513 %1:vgpr(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 514 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 515 516... 517 518--- 519 520name: store_flat_p1 521legalized: true 522tracksRegLiveness: true 523regBankSelected: true 524 525body: | 526 bb.0: 527 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 528 529 ; GFX7-LABEL: name: store_flat_p1 530 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 531 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 532 ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 533 ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 534 ; GFX8-LABEL: name: store_flat_p1 535 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 536 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 537 ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 538 ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 539 ; GFX9-LABEL: name: store_flat_p1 540 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 541 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 542 ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 543 ; GFX9: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 544 ; GFX10-LABEL: name: store_flat_p1 545 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 546 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 547 ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 548 ; GFX10: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 549 %0:vgpr(p1) = COPY $vgpr0_vgpr1 550 %1:vgpr(p1) = COPY $vgpr2_vgpr3 551 G_STORE %1, %0 :: (store 8, align 8, addrspace 0) 552 553... 554 555--- 556 557name: store_flat_v2p1 558legalized: true 559tracksRegLiveness: true 560regBankSelected: true 561 562body: | 563 bb.0: 564 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 565 566 ; GFX7-LABEL: name: store_flat_v2p1 567 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 568 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 569 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 570 ; GFX7: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16) 571 ; GFX8-LABEL: name: store_flat_v2p1 572 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 573 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 574 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 575 ; GFX8: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16) 576 ; GFX9-LABEL: name: store_flat_v2p1 577 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 578 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 579 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 580 ; GFX9: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16) 581 ; GFX10-LABEL: name: store_flat_v2p1 582 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 583 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 584 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 585 ; GFX10: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16) 586 %0:vgpr(p1) = COPY $vgpr0_vgpr1 587 %1:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 588 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 589 590... 591 592--- 593 594name: store_flat_p3 595legalized: true 596tracksRegLiveness: true 597regBankSelected: true 598 599body: | 600 bb.0: 601 liveins: $vgpr0_vgpr1, $vgpr2 602 603 ; GFX7-LABEL: name: store_flat_p3 604 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 605 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 606 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 607 ; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 608 ; GFX8-LABEL: name: store_flat_p3 609 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 610 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 611 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 612 ; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 613 ; GFX9-LABEL: name: store_flat_p3 614 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 615 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 616 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 617 ; GFX9: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 618 ; GFX10-LABEL: name: store_flat_p3 619 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 620 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 621 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 622 ; GFX10: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 623 %0:vgpr(p1) = COPY $vgpr0_vgpr1 624 %1:vgpr(p3) = COPY $vgpr2 625 G_STORE %1, %0 :: (store 4, align 4, addrspace 0) 626 627... 628 629--- 630 631name: store_flat_v2p3 632legalized: true 633tracksRegLiveness: true 634regBankSelected: true 635 636body: | 637 bb.0: 638 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 639 640 ; GFX7-LABEL: name: store_flat_v2p3 641 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 642 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 643 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 644 ; GFX7: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8) 645 ; GFX8-LABEL: name: store_flat_v2p3 646 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 647 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 648 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 649 ; GFX8: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8) 650 ; GFX9-LABEL: name: store_flat_v2p3 651 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 652 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 653 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 654 ; GFX9: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8) 655 ; GFX10-LABEL: name: store_flat_v2p3 656 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 657 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 658 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 659 ; GFX10: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8) 660 %0:vgpr(p1) = COPY $vgpr0_vgpr1 661 %1:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 662 G_STORE %1, %0 :: (store 8, align 8, addrspace 0) 663 664... 665--- 666 667name: store_atomic_flat_s32 668legalized: true 669tracksRegLiveness: true 670regBankSelected: true 671 672body: | 673 bb.0: 674 liveins: $vgpr0_vgpr1, $vgpr2 675 676 ; GFX7-LABEL: name: store_atomic_flat_s32 677 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 678 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 679 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 680 ; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic 4) 681 ; GFX8-LABEL: name: store_atomic_flat_s32 682 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 683 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 684 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 685 ; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic 4) 686 ; GFX9-LABEL: name: store_atomic_flat_s32 687 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 688 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 689 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 690 ; GFX9: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic 4) 691 ; GFX10-LABEL: name: store_atomic_flat_s32 692 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 693 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 694 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 695 ; GFX10: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic 4) 696 %0:vgpr(p1) = COPY $vgpr0_vgpr1 697 %1:vgpr(s32) = COPY $vgpr2 698 G_STORE %1, %0 :: (store monotonic 4, align 4, addrspace 0) 699 700... 701 702--- 703 704name: store_atomic_flat_s64 705legalized: true 706tracksRegLiveness: true 707regBankSelected: true 708 709body: | 710 bb.0: 711 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 712 713 ; GFX7-LABEL: name: store_atomic_flat_s64 714 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 715 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 716 ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 717 ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic 8) 718 ; GFX8-LABEL: name: store_atomic_flat_s64 719 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 720 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 721 ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 722 ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic 8) 723 ; GFX9-LABEL: name: store_atomic_flat_s64 724 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 725 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 726 ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 727 ; GFX9: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic 8) 728 ; GFX10-LABEL: name: store_atomic_flat_s64 729 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 730 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 731 ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 732 ; GFX10: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store monotonic 8) 733 %0:vgpr(p1) = COPY $vgpr0_vgpr1 734 %1:vgpr(s64) = COPY $vgpr2_vgpr3 735 G_STORE %1, %0 :: (store monotonic 8, align 8, addrspace 0) 736 737... 738 739--- 740 741name: store_flat_s32_gep_2047 742legalized: true 743tracksRegLiveness: true 744regBankSelected: true 745 746body: | 747 bb.0: 748 liveins: $vgpr0_vgpr1, $vgpr2 749 750 ; GFX7-LABEL: name: store_flat_s32_gep_2047 751 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 752 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 753 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 754 ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec 755 ; GFX7: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec 756 ; GFX7: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1 757 ; GFX7: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 758 ; GFX7: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0 759 ; GFX7: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 760 ; GFX7: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1 761 ; GFX7: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY2]], [[COPY3]], 0, implicit $exec 762 ; GFX7: %9:vgpr_32, dead %11:sreg_64_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec 763 ; GFX7: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, %9, %subreg.sub1 764 ; GFX7: FLAT_STORE_DWORD [[REG_SEQUENCE1]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 765 ; GFX8-LABEL: name: store_flat_s32_gep_2047 766 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 767 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 768 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 769 ; GFX8: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec 770 ; GFX8: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec 771 ; GFX8: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1 772 ; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 773 ; GFX8: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0 774 ; GFX8: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 775 ; GFX8: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1 776 ; GFX8: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY2]], [[COPY3]], 0, implicit $exec 777 ; GFX8: %9:vgpr_32, dead %11:sreg_64_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec 778 ; GFX8: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, %9, %subreg.sub1 779 ; GFX8: FLAT_STORE_DWORD [[REG_SEQUENCE1]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 780 ; GFX9-LABEL: name: store_flat_s32_gep_2047 781 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 782 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 783 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 784 ; GFX9: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 2047, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 785 ; GFX10-LABEL: name: store_flat_s32_gep_2047 786 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 787 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 788 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 789 ; GFX10: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec 790 ; GFX10: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec 791 ; GFX10: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1 792 ; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 793 ; GFX10: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0 794 ; GFX10: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 795 ; GFX10: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1 796 ; GFX10: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 [[COPY2]], [[COPY3]], 0, implicit $exec 797 ; GFX10: %9:vgpr_32, dead %11:sreg_32_xm0_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec 798 ; GFX10: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, %9, %subreg.sub1 799 ; GFX10: FLAT_STORE_DWORD [[REG_SEQUENCE1]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 800 %0:vgpr(p1) = COPY $vgpr0_vgpr1 801 %1:vgpr(s32) = COPY $vgpr2 802 %2:vgpr(s64) = G_CONSTANT i64 2047 803 %3:vgpr(p1) = G_PTR_ADD %0, %2 804 G_STORE %1, %3 :: (store 4, align 4, addrspace 0) 805 806... 807