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