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