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