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