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]+]]:vreg_64 = COPY $vgpr0_vgpr1 206 ; GFX7: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 207 ; GFX7: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 208 ; GFX8-LABEL: name: store_flat_s128 209 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 210 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 211 ; GFX8: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 212 ; GFX8: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 213 ; GFX9-LABEL: name: store_flat_s128 214 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 215 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 216 ; GFX9: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 217 ; GFX9: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 218 ; GFX10-LABEL: name: store_flat_s128 219 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 220 ; GFX10: $vcc_hi = IMPLICIT_DEF 221 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 222 ; GFX10: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 223 ; GFX10: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 224 %0:vgpr(p1) = COPY $vgpr0_vgpr1 225 %1:vgpr(s128) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 226 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 227 228... 229 230--- 231 232name: store_flat_v2s32 233legalized: true 234tracksRegLiveness: true 235regBankSelected: true 236 237body: | 238 bb.0: 239 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 240 241 ; GFX7-LABEL: name: store_flat_v2s32 242 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 243 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 244 ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 245 ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 246 ; GFX8-LABEL: name: store_flat_v2s32 247 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 248 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 249 ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 250 ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 251 ; GFX9-LABEL: name: store_flat_v2s32 252 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 253 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 254 ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 255 ; GFX9: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 256 ; GFX10-LABEL: name: store_flat_v2s32 257 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 258 ; GFX10: $vcc_hi = IMPLICIT_DEF 259 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 260 ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 261 ; GFX10: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 262 %0:vgpr(p1) = COPY $vgpr0_vgpr1 263 %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 264 G_STORE %1, %0 :: (store 8, align 8, addrspace 0) 265 266... 267--- 268 269name: store_flat_v3s32 270legalized: true 271tracksRegLiveness: true 272regBankSelected: true 273 274body: | 275 bb.0: 276 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 277 278 ; GFX7-LABEL: name: store_flat_v3s32 279 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 280 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 281 ; GFX7: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4 282 ; GFX7: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16) 283 ; GFX8-LABEL: name: store_flat_v3s32 284 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 285 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 286 ; GFX8: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4 287 ; GFX8: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16) 288 ; GFX9-LABEL: name: store_flat_v3s32 289 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 290 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 291 ; GFX9: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4 292 ; GFX9: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16) 293 ; GFX10-LABEL: name: store_flat_v3s32 294 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 295 ; GFX10: $vcc_hi = IMPLICIT_DEF 296 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 297 ; GFX10: [[COPY1:%[0-9]+]]:vreg_96 = COPY $vgpr2_vgpr3_vgpr4 298 ; GFX10: FLAT_STORE_DWORDX3 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 12, align 16) 299 %0:vgpr(p1) = COPY $vgpr0_vgpr1 300 %1:vgpr(<3 x s32>) = COPY $vgpr2_vgpr3_vgpr4 301 G_STORE %1, %0 :: (store 12, align 16, addrspace 0) 302 303... 304--- 305 306name: store_flat_v4s32 307legalized: true 308tracksRegLiveness: true 309regBankSelected: true 310 311body: | 312 bb.0: 313 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 314 315 ; GFX7-LABEL: name: store_flat_v4s32 316 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 317 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 318 ; GFX7: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 319 ; GFX7: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 320 ; GFX8-LABEL: name: store_flat_v4s32 321 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 322 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 323 ; GFX8: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 324 ; GFX8: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 325 ; GFX9-LABEL: name: store_flat_v4s32 326 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 327 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 328 ; GFX9: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 329 ; GFX9: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 330 ; GFX10-LABEL: name: store_flat_v4s32 331 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 332 ; GFX10: $vcc_hi = IMPLICIT_DEF 333 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 334 ; GFX10: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 335 ; GFX10: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 336 %0:vgpr(p1) = COPY $vgpr0_vgpr1 337 %1:vgpr(<4 x s32>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 338 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 339 340... 341 342--- 343 344name: store_flat_v2s16 345legalized: true 346tracksRegLiveness: true 347regBankSelected: true 348 349body: | 350 bb.0: 351 liveins: $vgpr0_vgpr1, $vgpr2 352 353 ; GFX7-LABEL: name: store_flat_v2s16 354 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 355 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 356 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 357 ; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 358 ; GFX8-LABEL: name: store_flat_v2s16 359 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 360 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 361 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 362 ; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 363 ; GFX9-LABEL: name: store_flat_v2s16 364 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 365 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 366 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 367 ; GFX9: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 368 ; GFX10-LABEL: name: store_flat_v2s16 369 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 370 ; GFX10: $vcc_hi = IMPLICIT_DEF 371 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 372 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 373 ; GFX10: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 374 %0:vgpr(p1) = COPY $vgpr0_vgpr1 375 %1:vgpr(<2 x s16>) = COPY $vgpr2 376 G_STORE %1, %0 :: (store 4, align 4, addrspace 0) 377 378... 379 380--- 381 382name: store_flat_v4s16 383legalized: true 384tracksRegLiveness: true 385regBankSelected: true 386 387body: | 388 bb.0: 389 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 390 391 ; GFX7-LABEL: name: store_flat_v4s16 392 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 393 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 394 ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 395 ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 396 ; GFX8-LABEL: name: store_flat_v4s16 397 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 398 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 399 ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 400 ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 401 ; GFX9-LABEL: name: store_flat_v4s16 402 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 403 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 404 ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 405 ; GFX9: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 406 ; GFX10-LABEL: name: store_flat_v4s16 407 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 408 ; GFX10: $vcc_hi = IMPLICIT_DEF 409 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 410 ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 411 ; GFX10: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 412 %0:vgpr(p1) = COPY $vgpr0_vgpr1 413 %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 414 G_STORE %1, %0 :: (store 8, align 8, addrspace 0) 415 416... 417 418--- 419 420name: store_flat_v6s16 421legalized: true 422tracksRegLiveness: true 423regBankSelected: true 424 425body: | 426 bb.0: 427 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 428 429 ; GFX7-LABEL: name: store_flat_v6s16 430 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 431 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 432 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 433 ; GFX7: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16) 434 ; GFX8-LABEL: name: store_flat_v6s16 435 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 436 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 437 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 438 ; GFX8: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16) 439 ; GFX9-LABEL: name: store_flat_v6s16 440 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 441 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 442 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 443 ; GFX9: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16) 444 ; GFX10-LABEL: name: store_flat_v6s16 445 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4 446 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 447 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 448 ; GFX10: G_STORE [[COPY1]](<6 x s16>), [[COPY]](p1) :: (store 12, align 16) 449 %0:vgpr(p1) = COPY $vgpr0_vgpr1 450 %1:vgpr(<6 x s16>) = COPY $vgpr2_vgpr3_vgpr4 451 G_STORE %1, %0 :: (store 12, align 16, addrspace 0) 452 453... 454--- 455 456name: store_flat_v8s16 457legalized: true 458tracksRegLiveness: true 459regBankSelected: true 460 461body: | 462 bb.0: 463 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 464 465 ; GFX7-LABEL: name: store_flat_v8s16 466 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 467 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 468 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 469 ; GFX7: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16) 470 ; GFX8-LABEL: name: store_flat_v8s16 471 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 472 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 473 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 474 ; GFX8: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16) 475 ; GFX9-LABEL: name: store_flat_v8s16 476 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 477 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 478 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 479 ; GFX9: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16) 480 ; GFX10-LABEL: name: store_flat_v8s16 481 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 482 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 483 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 484 ; GFX10: G_STORE [[COPY1]](<8 x s16>), [[COPY]](p1) :: (store 16) 485 %0:vgpr(p1) = COPY $vgpr0_vgpr1 486 %1:vgpr(<8 x s16>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 487 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 488 489... 490 491--- 492 493name: store_flat_v2s64 494legalized: true 495tracksRegLiveness: true 496regBankSelected: true 497 498body: | 499 bb.0: 500 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 501 502 ; GFX7-LABEL: name: store_flat_v2s64 503 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 504 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 505 ; GFX7: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 506 ; GFX7: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 507 ; GFX8-LABEL: name: store_flat_v2s64 508 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 509 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 510 ; GFX8: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 511 ; GFX8: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 512 ; GFX9-LABEL: name: store_flat_v2s64 513 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 514 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 515 ; GFX9: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 516 ; GFX9: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 517 ; GFX10-LABEL: name: store_flat_v2s64 518 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 519 ; GFX10: $vcc_hi = IMPLICIT_DEF 520 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 521 ; GFX10: [[COPY1:%[0-9]+]]:vreg_128 = COPY $vgpr2_vgpr3_vgpr4_vgpr5 522 ; GFX10: FLAT_STORE_DWORDX4 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 16) 523 %0:vgpr(p1) = COPY $vgpr0_vgpr1 524 %1:vgpr(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 525 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 526 527... 528 529--- 530 531name: store_flat_p1 532legalized: true 533tracksRegLiveness: true 534regBankSelected: true 535 536body: | 537 bb.0: 538 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 539 540 ; GFX7-LABEL: name: store_flat_p1 541 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 542 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 543 ; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 544 ; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 545 ; GFX8-LABEL: name: store_flat_p1 546 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 547 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 548 ; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 549 ; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 550 ; GFX9-LABEL: name: store_flat_p1 551 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 552 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 553 ; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 554 ; GFX9: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 555 ; GFX10-LABEL: name: store_flat_p1 556 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 557 ; GFX10: $vcc_hi = IMPLICIT_DEF 558 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 559 ; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 560 ; GFX10: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8) 561 %0:vgpr(p1) = COPY $vgpr0_vgpr1 562 %1:vgpr(p1) = COPY $vgpr2_vgpr3 563 G_STORE %1, %0 :: (store 8, align 8, addrspace 0) 564 565... 566 567--- 568 569name: store_flat_v2p1 570legalized: true 571tracksRegLiveness: true 572regBankSelected: true 573 574body: | 575 bb.0: 576 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 577 578 ; GFX7-LABEL: name: store_flat_v2p1 579 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 580 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 581 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 582 ; GFX7: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16) 583 ; GFX8-LABEL: name: store_flat_v2p1 584 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 585 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 586 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 587 ; GFX8: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16) 588 ; GFX9-LABEL: name: store_flat_v2p1 589 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 590 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 591 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 592 ; GFX9: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16) 593 ; GFX10-LABEL: name: store_flat_v2p1 594 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 595 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 596 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 597 ; GFX10: G_STORE [[COPY1]](<2 x p1>), [[COPY]](p1) :: (store 16) 598 %0:vgpr(p1) = COPY $vgpr0_vgpr1 599 %1:vgpr(<2 x p1>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 600 G_STORE %1, %0 :: (store 16, align 16, addrspace 0) 601 602... 603 604--- 605 606name: store_flat_p3 607legalized: true 608tracksRegLiveness: true 609regBankSelected: true 610 611body: | 612 bb.0: 613 liveins: $vgpr0_vgpr1, $vgpr2 614 615 ; GFX7-LABEL: name: store_flat_p3 616 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 617 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 618 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 619 ; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 620 ; GFX8-LABEL: name: store_flat_p3 621 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 622 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 623 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 624 ; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 625 ; GFX9-LABEL: name: store_flat_p3 626 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 627 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 628 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 629 ; GFX9: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 630 ; GFX10-LABEL: name: store_flat_p3 631 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 632 ; GFX10: $vcc_hi = IMPLICIT_DEF 633 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 634 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 635 ; GFX10: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 636 %0:vgpr(p1) = COPY $vgpr0_vgpr1 637 %1:vgpr(p3) = COPY $vgpr2 638 G_STORE %1, %0 :: (store 4, align 4, addrspace 0) 639 640... 641 642--- 643 644name: store_flat_v2p3 645legalized: true 646tracksRegLiveness: true 647regBankSelected: true 648 649body: | 650 bb.0: 651 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 652 653 ; GFX7-LABEL: name: store_flat_v2p3 654 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 655 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 656 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 657 ; GFX7: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8) 658 ; GFX8-LABEL: name: store_flat_v2p3 659 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 660 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 661 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 662 ; GFX8: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8) 663 ; GFX9-LABEL: name: store_flat_v2p3 664 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 665 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 666 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 667 ; GFX9: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8) 668 ; GFX10-LABEL: name: store_flat_v2p3 669 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 670 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 671 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 672 ; GFX10: G_STORE [[COPY1]](<2 x p3>), [[COPY]](p1) :: (store 8) 673 %0:vgpr(p1) = COPY $vgpr0_vgpr1 674 %1:vgpr(<2 x p3>) = COPY $vgpr2_vgpr3 675 G_STORE %1, %0 :: (store 8, align 8, addrspace 0) 676 677... 678--- 679 680name: store_atomic_flat_s32 681legalized: true 682tracksRegLiveness: true 683regBankSelected: true 684 685body: | 686 bb.0: 687 liveins: $vgpr0_vgpr1, $vgpr2 688 689 ; GFX7-LABEL: name: store_atomic_flat_s32 690 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 691 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 692 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 693 ; GFX7: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store monotonic 4) 694 ; GFX8-LABEL: name: store_atomic_flat_s32 695 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 696 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 697 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 698 ; GFX8: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store monotonic 4) 699 ; GFX9-LABEL: name: store_atomic_flat_s32 700 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 701 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 702 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 703 ; GFX9: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store monotonic 4) 704 ; GFX10-LABEL: name: store_atomic_flat_s32 705 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 706 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 707 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 708 ; GFX10: G_STORE [[COPY1]](s32), [[COPY]](p1) :: (store monotonic 4) 709 %0:vgpr(p1) = COPY $vgpr0_vgpr1 710 %1:vgpr(s32) = COPY $vgpr2 711 G_STORE %1, %0 :: (store monotonic 4, align 4, addrspace 0) 712 713... 714 715--- 716 717name: store_atomic_flat_s64 718legalized: true 719tracksRegLiveness: true 720regBankSelected: true 721 722body: | 723 bb.0: 724 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 725 726 ; GFX7-LABEL: name: store_atomic_flat_s64 727 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 728 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 729 ; GFX7: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 730 ; GFX7: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store monotonic 8) 731 ; GFX8-LABEL: name: store_atomic_flat_s64 732 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 733 ; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 734 ; GFX8: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 735 ; GFX8: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store monotonic 8) 736 ; GFX9-LABEL: name: store_atomic_flat_s64 737 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 738 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 739 ; GFX9: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 740 ; GFX9: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store monotonic 8) 741 ; GFX10-LABEL: name: store_atomic_flat_s64 742 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 743 ; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 744 ; GFX10: [[COPY1:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 745 ; GFX10: G_STORE [[COPY1]](s64), [[COPY]](p1) :: (store monotonic 8) 746 %0:vgpr(p1) = COPY $vgpr0_vgpr1 747 %1:vgpr(s64) = COPY $vgpr2_vgpr3 748 G_STORE %1, %0 :: (store monotonic 8, align 8, addrspace 0) 749 750... 751 752--- 753 754name: store_flat_s32_gep_2047 755legalized: true 756tracksRegLiveness: true 757regBankSelected: true 758 759body: | 760 bb.0: 761 liveins: $vgpr0_vgpr1, $vgpr2 762 763 ; GFX7-LABEL: name: store_flat_s32_gep_2047 764 ; GFX7: liveins: $vgpr0_vgpr1, $vgpr2 765 ; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 766 ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 767 ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec 768 ; GFX7: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec 769 ; GFX7: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1 770 ; GFX7: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 771 ; GFX7: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0 772 ; GFX7: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 773 ; GFX7: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1 774 ; 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 775 ; GFX7: %9:vgpr_32, dead %11:sreg_64_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_I32_e64_1]], 0, implicit $exec 776 ; GFX7: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_I32_e64_]], %subreg.sub0, %9, %subreg.sub1 777 ; GFX7: FLAT_STORE_DWORD [[REG_SEQUENCE1]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 778 ; GFX8-LABEL: name: store_flat_s32_gep_2047 779 ; GFX8: liveins: $vgpr0_vgpr1, $vgpr2 780 ; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 781 ; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 782 ; GFX8: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec 783 ; GFX8: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec 784 ; GFX8: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1 785 ; GFX8: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 786 ; GFX8: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0 787 ; GFX8: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 788 ; GFX8: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1 789 ; 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 790 ; GFX8: %9:vgpr_32, dead %11:sreg_64_xexec = V_ADDC_U32_e64 [[COPY4]], [[COPY5]], killed [[V_ADD_I32_e64_1]], 0, implicit $exec 791 ; GFX8: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_I32_e64_]], %subreg.sub0, %9, %subreg.sub1 792 ; GFX8: FLAT_STORE_DWORD [[REG_SEQUENCE1]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 793 ; GFX9-LABEL: name: store_flat_s32_gep_2047 794 ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2 795 ; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 796 ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 797 ; GFX9: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 2047, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 798 ; GFX10-LABEL: name: store_flat_s32_gep_2047 799 ; GFX10: liveins: $vgpr0_vgpr1, $vgpr2 800 ; GFX10: $vcc_hi = IMPLICIT_DEF 801 ; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 802 ; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2 803 ; GFX10: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2047, implicit $exec 804 ; GFX10: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec 805 ; GFX10: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1 806 ; GFX10: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 807 ; GFX10: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub0 808 ; GFX10: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 809 ; GFX10: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[REG_SEQUENCE]].sub1 810 ; 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 811 ; 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 812 ; GFX10: [[REG_SEQUENCE1:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_I32_e64_]], %subreg.sub0, %9, %subreg.sub1 813 ; GFX10: FLAT_STORE_DWORD [[REG_SEQUENCE1]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4) 814 %0:vgpr(p1) = COPY $vgpr0_vgpr1 815 %1:vgpr(s32) = COPY $vgpr2 816 %2:vgpr(s64) = G_CONSTANT i64 2047 817 %3:vgpr(p1) = G_PTR_ADD %0, %2 818 G_STORE %1, %3 :: (store 4, align 4, addrspace 0) 819 820... 821