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