1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -amdgpu-global-isel-new-legality -mtriple=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 -mtriple=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 -mtriple=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 -mtriple=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 -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX11 %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 ; 27 ; GFX7-LABEL: name: load_constant_s32_from_4 28 ; GFX7: liveins: $sgpr0_sgpr1 29 ; GFX7-NEXT: {{ $}} 30 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 31 ; GFX7-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (s32), addrspace 4) 32 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 33 ; 34 ; GFX8-LABEL: name: load_constant_s32_from_4 35 ; GFX8: liveins: $sgpr0_sgpr1 36 ; GFX8-NEXT: {{ $}} 37 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 38 ; GFX8-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (s32), addrspace 4) 39 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 40 ; 41 ; GFX10-LABEL: name: load_constant_s32_from_4 42 ; GFX10: liveins: $sgpr0_sgpr1 43 ; GFX10-NEXT: {{ $}} 44 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 45 ; GFX10-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (s32), addrspace 4) 46 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 47 ; 48 ; GFX11-LABEL: name: load_constant_s32_from_4 49 ; GFX11: liveins: $sgpr0_sgpr1 50 ; GFX11-NEXT: {{ $}} 51 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 52 ; GFX11-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (s32), addrspace 4) 53 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 54 %0:sgpr(p4) = COPY $sgpr0_sgpr1 55 %1:sgpr(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 4) 56 $sgpr0 = COPY %1 57 58... 59 60--- 61 62name: load_constant_v2s16_from_4 63legalized: true 64regBankSelected: true 65tracksRegLiveness: true 66 67 68body: | 69 bb.0: 70 liveins: $sgpr0_sgpr1 71 72 ; GFX6-LABEL: name: load_constant_v2s16_from_4 73 ; GFX6: liveins: $sgpr0_sgpr1 74 ; GFX6-NEXT: {{ $}} 75 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 76 ; 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) 77 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 78 ; 79 ; GFX7-LABEL: name: load_constant_v2s16_from_4 80 ; GFX7: liveins: $sgpr0_sgpr1 81 ; GFX7-NEXT: {{ $}} 82 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 83 ; 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) 84 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 85 ; 86 ; GFX8-LABEL: name: load_constant_v2s16_from_4 87 ; GFX8: liveins: $sgpr0_sgpr1 88 ; GFX8-NEXT: {{ $}} 89 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 90 ; 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) 91 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 92 ; 93 ; GFX10-LABEL: name: load_constant_v2s16_from_4 94 ; GFX10: liveins: $sgpr0_sgpr1 95 ; GFX10-NEXT: {{ $}} 96 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 97 ; 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) 98 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 99 ; 100 ; GFX11-LABEL: name: load_constant_v2s16_from_4 101 ; GFX11: liveins: $sgpr0_sgpr1 102 ; GFX11-NEXT: {{ $}} 103 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 104 ; GFX11-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (<2 x s16>), addrspace 4) 105 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 106 %0:sgpr(p4) = COPY $sgpr0_sgpr1 107 %1:sgpr(<2 x s16>) = G_LOAD %0 :: (load (<2 x s16>), align 4, addrspace 4) 108 $sgpr0 = COPY %1 109 110... 111 112 113--- 114name: load_constant_v2s32 115legalized: true 116regBankSelected: true 117tracksRegLiveness: true 118 119body: | 120 bb.0: 121 liveins: $sgpr0_sgpr1 122 123 ; GFX6-LABEL: name: load_constant_v2s32 124 ; GFX6: liveins: $sgpr0_sgpr1 125 ; GFX6-NEXT: {{ $}} 126 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 127 ; GFX6-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<2 x s32>), addrspace 4) 128 ; GFX6-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 129 ; 130 ; GFX7-LABEL: name: load_constant_v2s32 131 ; GFX7: liveins: $sgpr0_sgpr1 132 ; GFX7-NEXT: {{ $}} 133 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 134 ; GFX7-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<2 x s32>), addrspace 4) 135 ; GFX7-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 136 ; 137 ; GFX8-LABEL: name: load_constant_v2s32 138 ; GFX8: liveins: $sgpr0_sgpr1 139 ; GFX8-NEXT: {{ $}} 140 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 141 ; GFX8-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<2 x s32>), addrspace 4) 142 ; GFX8-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 143 ; 144 ; GFX10-LABEL: name: load_constant_v2s32 145 ; GFX10: liveins: $sgpr0_sgpr1 146 ; GFX10-NEXT: {{ $}} 147 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 148 ; GFX10-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<2 x s32>), addrspace 4) 149 ; GFX10-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 150 ; 151 ; GFX11-LABEL: name: load_constant_v2s32 152 ; GFX11: liveins: $sgpr0_sgpr1 153 ; GFX11-NEXT: {{ $}} 154 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 155 ; GFX11-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<2 x s32>), addrspace 4) 156 ; GFX11-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 157 %0:sgpr(p4) = COPY $sgpr0_sgpr1 158 %1:sgpr(<2 x s32>) = G_LOAD %0 :: (load (<2 x s32>), align 8, addrspace 4) 159 $sgpr0_sgpr1 = COPY %1 160 161... 162 163--- 164name: load_constant_v2s32_align4 165legalized: true 166regBankSelected: true 167tracksRegLiveness: true 168 169body: | 170 bb.0: 171 liveins: $sgpr0_sgpr1 172 173 ; GFX6-LABEL: name: load_constant_v2s32_align4 174 ; GFX6: liveins: $sgpr0_sgpr1 175 ; GFX6-NEXT: {{ $}} 176 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 177 ; 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) 178 ; GFX6-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 179 ; 180 ; GFX7-LABEL: name: load_constant_v2s32_align4 181 ; GFX7: liveins: $sgpr0_sgpr1 182 ; GFX7-NEXT: {{ $}} 183 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 184 ; 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) 185 ; GFX7-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 186 ; 187 ; GFX8-LABEL: name: load_constant_v2s32_align4 188 ; GFX8: liveins: $sgpr0_sgpr1 189 ; GFX8-NEXT: {{ $}} 190 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 191 ; 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) 192 ; GFX8-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 193 ; 194 ; GFX10-LABEL: name: load_constant_v2s32_align4 195 ; GFX10: liveins: $sgpr0_sgpr1 196 ; GFX10-NEXT: {{ $}} 197 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 198 ; GFX10-NEXT: early-clobber %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM_ec [[COPY]], 0, 0 :: (load (<2 x s32>), align 4, addrspace 4) 199 ; GFX10-NEXT: $sgpr0_sgpr1 = COPY %1 200 ; 201 ; GFX11-LABEL: name: load_constant_v2s32_align4 202 ; GFX11: liveins: $sgpr0_sgpr1 203 ; GFX11-NEXT: {{ $}} 204 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 205 ; GFX11-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) 206 ; GFX11-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 207 %0:sgpr(p4) = COPY $sgpr0_sgpr1 208 %1:sgpr(<2 x s32>) = G_LOAD %0 :: (load (<2 x s32>), align 4, addrspace 4) 209 $sgpr0_sgpr1 = COPY %1 210 211... 212 213--- 214name: load_constant_v4s16_align4 215legalized: true 216regBankSelected: true 217tracksRegLiveness: true 218 219body: | 220 bb.0: 221 liveins: $sgpr0_sgpr1 222 223 ; GFX6-LABEL: name: load_constant_v4s16_align4 224 ; GFX6: liveins: $sgpr0_sgpr1 225 ; GFX6-NEXT: {{ $}} 226 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 227 ; 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) 228 ; GFX6-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 229 ; 230 ; GFX7-LABEL: name: load_constant_v4s16_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_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<4 x s16>), align 4, addrspace 4) 235 ; GFX7-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 236 ; 237 ; GFX8-LABEL: name: load_constant_v4s16_align4 238 ; GFX8: liveins: $sgpr0_sgpr1 239 ; GFX8-NEXT: {{ $}} 240 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 241 ; 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) 242 ; GFX8-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 243 ; 244 ; GFX10-LABEL: name: load_constant_v4s16_align4 245 ; GFX10: liveins: $sgpr0_sgpr1 246 ; GFX10-NEXT: {{ $}} 247 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 248 ; GFX10-NEXT: early-clobber %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM_ec [[COPY]], 0, 0 :: (load (<4 x s16>), align 4, addrspace 4) 249 ; GFX10-NEXT: $sgpr0_sgpr1 = COPY %1 250 ; 251 ; GFX11-LABEL: name: load_constant_v4s16_align4 252 ; GFX11: liveins: $sgpr0_sgpr1 253 ; GFX11-NEXT: {{ $}} 254 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 255 ; GFX11-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) 256 ; GFX11-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 257 %0:sgpr(p4) = COPY $sgpr0_sgpr1 258 %1:sgpr(<4 x s16>) = G_LOAD %0 :: (load (<4 x s16>), align 4, addrspace 4) 259 $sgpr0_sgpr1 = COPY %1 260 261... 262 263--- 264 265name: load_constant_v4s32_align4 266legalized: true 267regBankSelected: true 268tracksRegLiveness: true 269 270body: | 271 bb.0: 272 liveins: $sgpr0_sgpr1 273 274 ; GFX6-LABEL: name: load_constant_v4s32_align4 275 ; GFX6: liveins: $sgpr0_sgpr1 276 ; GFX6-NEXT: {{ $}} 277 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 278 ; 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) 279 ; GFX6-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 280 ; 281 ; GFX7-LABEL: name: load_constant_v4s32_align4 282 ; GFX7: liveins: $sgpr0_sgpr1 283 ; GFX7-NEXT: {{ $}} 284 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 285 ; 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) 286 ; GFX7-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 287 ; 288 ; GFX8-LABEL: name: load_constant_v4s32_align4 289 ; GFX8: liveins: $sgpr0_sgpr1 290 ; GFX8-NEXT: {{ $}} 291 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 292 ; 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) 293 ; GFX8-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 294 ; 295 ; GFX10-LABEL: name: load_constant_v4s32_align4 296 ; GFX10: liveins: $sgpr0_sgpr1 297 ; GFX10-NEXT: {{ $}} 298 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 299 ; GFX10-NEXT: early-clobber %1:sgpr_128 = S_LOAD_DWORDX4_IMM_ec [[COPY]], 0, 0 :: (load (<4 x s32>), align 4, addrspace 4) 300 ; GFX10-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1 301 ; 302 ; GFX11-LABEL: name: load_constant_v4s32_align4 303 ; GFX11: liveins: $sgpr0_sgpr1 304 ; GFX11-NEXT: {{ $}} 305 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 306 ; GFX11-NEXT: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0 :: (load (<4 x s32>), align 4, addrspace 4) 307 ; GFX11-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 308 %0:sgpr(p4) = COPY $sgpr0_sgpr1 309 %1:sgpr(<4 x s32>) = G_LOAD %0 :: (load (<4 x s32>), align 4, addrspace 4) 310 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1 311 312... 313 314--- 315 316name: load_constant_s64 317legalized: true 318regBankSelected: true 319tracksRegLiveness: true 320 321body: | 322 bb.0: 323 liveins: $sgpr0_sgpr1 324 325 ; GFX6-LABEL: name: load_constant_s64 326 ; GFX6: liveins: $sgpr0_sgpr1 327 ; GFX6-NEXT: {{ $}} 328 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 329 ; GFX6-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (s64), addrspace 4) 330 ; GFX6-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 331 ; 332 ; GFX7-LABEL: name: load_constant_s64 333 ; GFX7: liveins: $sgpr0_sgpr1 334 ; GFX7-NEXT: {{ $}} 335 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 336 ; GFX7-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (s64), addrspace 4) 337 ; GFX7-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 338 ; 339 ; GFX8-LABEL: name: load_constant_s64 340 ; GFX8: liveins: $sgpr0_sgpr1 341 ; GFX8-NEXT: {{ $}} 342 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 343 ; GFX8-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (s64), addrspace 4) 344 ; GFX8-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 345 ; 346 ; GFX10-LABEL: name: load_constant_s64 347 ; GFX10: liveins: $sgpr0_sgpr1 348 ; GFX10-NEXT: {{ $}} 349 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 350 ; GFX10-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (s64), addrspace 4) 351 ; GFX10-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 352 ; 353 ; GFX11-LABEL: name: load_constant_s64 354 ; GFX11: liveins: $sgpr0_sgpr1 355 ; GFX11-NEXT: {{ $}} 356 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 357 ; GFX11-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (s64), addrspace 4) 358 ; GFX11-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 359 %0:sgpr(p4) = COPY $sgpr0_sgpr1 360 %1:sgpr(s64) = G_LOAD %0 :: (load (s64), align 8, addrspace 4) 361 $sgpr0_sgpr1 = COPY %1 362 363... 364 365--- 366 367name: load_constant_s64_align4 368legalized: true 369regBankSelected: true 370tracksRegLiveness: true 371 372body: | 373 bb.0: 374 liveins: $sgpr0_sgpr1 375 376 ; GFX6-LABEL: name: load_constant_s64_align4 377 ; GFX6: liveins: $sgpr0_sgpr1 378 ; GFX6-NEXT: {{ $}} 379 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 380 ; GFX6-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (s64), align 4, addrspace 4) 381 ; GFX6-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 382 ; 383 ; GFX7-LABEL: name: load_constant_s64_align4 384 ; GFX7: liveins: $sgpr0_sgpr1 385 ; GFX7-NEXT: {{ $}} 386 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 387 ; GFX7-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (s64), align 4, addrspace 4) 388 ; GFX7-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 389 ; 390 ; GFX8-LABEL: name: load_constant_s64_align4 391 ; GFX8: liveins: $sgpr0_sgpr1 392 ; GFX8-NEXT: {{ $}} 393 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 394 ; GFX8-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (s64), align 4, addrspace 4) 395 ; GFX8-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 396 ; 397 ; GFX10-LABEL: name: load_constant_s64_align4 398 ; GFX10: liveins: $sgpr0_sgpr1 399 ; GFX10-NEXT: {{ $}} 400 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 401 ; GFX10-NEXT: early-clobber %1:sreg_64_xexec = S_LOAD_DWORDX2_IMM_ec [[COPY]], 0, 0 :: (load (s64), align 4, addrspace 4) 402 ; GFX10-NEXT: $sgpr0_sgpr1 = COPY %1 403 ; 404 ; GFX11-LABEL: name: load_constant_s64_align4 405 ; GFX11: liveins: $sgpr0_sgpr1 406 ; GFX11-NEXT: {{ $}} 407 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 408 ; GFX11-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (s64), align 4, addrspace 4) 409 ; GFX11-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 410 %0:sgpr(p4) = COPY $sgpr0_sgpr1 411 %1:sgpr(s64) = G_LOAD %0 :: (load (s64), align 4, addrspace 4) 412 $sgpr0_sgpr1 = COPY %1 413 414... 415 416--- 417 418name: load_constant_v2s64 419legalized: true 420regBankSelected: true 421tracksRegLiveness: true 422 423body: | 424 bb.0: 425 liveins: $sgpr0_sgpr1 426 427 ; GFX6-LABEL: name: load_constant_v2s64 428 ; GFX6: liveins: $sgpr0_sgpr1 429 ; GFX6-NEXT: {{ $}} 430 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 431 ; 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) 432 ; GFX6-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 433 ; 434 ; GFX7-LABEL: name: load_constant_v2s64 435 ; GFX7: liveins: $sgpr0_sgpr1 436 ; GFX7-NEXT: {{ $}} 437 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 438 ; 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) 439 ; GFX7-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 440 ; 441 ; GFX8-LABEL: name: load_constant_v2s64 442 ; GFX8: liveins: $sgpr0_sgpr1 443 ; GFX8-NEXT: {{ $}} 444 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 445 ; 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) 446 ; GFX8-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 447 ; 448 ; GFX10-LABEL: name: load_constant_v2s64 449 ; GFX10: liveins: $sgpr0_sgpr1 450 ; GFX10-NEXT: {{ $}} 451 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 452 ; GFX10-NEXT: early-clobber %1:sgpr_128 = S_LOAD_DWORDX4_IMM_ec [[COPY]], 0, 0 :: (load (<2 x s64>), align 4, addrspace 4) 453 ; GFX10-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1 454 ; 455 ; GFX11-LABEL: name: load_constant_v2s64 456 ; GFX11: liveins: $sgpr0_sgpr1 457 ; GFX11-NEXT: {{ $}} 458 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 459 ; GFX11-NEXT: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0 :: (load (<2 x s64>), align 4, addrspace 4) 460 ; GFX11-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 461 %0:sgpr(p4) = COPY $sgpr0_sgpr1 462 %1:sgpr(<2 x s64>) = G_LOAD %0 :: (load (<2 x s64>), align 4, addrspace 4) 463 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1 464 465... 466 467--- 468 469name: load_constant_v2p1 470legalized: true 471regBankSelected: true 472tracksRegLiveness: true 473 474body: | 475 bb.0: 476 liveins: $sgpr0_sgpr1 477 478 ; GFX6-LABEL: name: load_constant_v2p1 479 ; GFX6: liveins: $sgpr0_sgpr1 480 ; GFX6-NEXT: {{ $}} 481 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 482 ; GFX6-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(<2 x p1>) = G_LOAD [[COPY]](p4) :: (load (<2 x p1>), align 4, addrspace 4) 483 ; GFX6-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<2 x p1>) 484 ; 485 ; GFX7-LABEL: name: load_constant_v2p1 486 ; GFX7: liveins: $sgpr0_sgpr1 487 ; GFX7-NEXT: {{ $}} 488 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 489 ; GFX7-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(<2 x p1>) = G_LOAD [[COPY]](p4) :: (load (<2 x p1>), align 4, addrspace 4) 490 ; GFX7-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<2 x p1>) 491 ; 492 ; GFX8-LABEL: name: load_constant_v2p1 493 ; GFX8: liveins: $sgpr0_sgpr1 494 ; GFX8-NEXT: {{ $}} 495 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 496 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(<2 x p1>) = G_LOAD [[COPY]](p4) :: (load (<2 x p1>), align 4, addrspace 4) 497 ; GFX8-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<2 x p1>) 498 ; 499 ; GFX10-LABEL: name: load_constant_v2p1 500 ; GFX10: liveins: $sgpr0_sgpr1 501 ; GFX10-NEXT: {{ $}} 502 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 503 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(<2 x p1>) = G_LOAD [[COPY]](p4) :: (load (<2 x p1>), align 4, addrspace 4) 504 ; GFX10-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<2 x p1>) 505 ; 506 ; GFX11-LABEL: name: load_constant_v2p1 507 ; GFX11: liveins: $sgpr0_sgpr1 508 ; GFX11-NEXT: {{ $}} 509 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 510 ; GFX11-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(<2 x p1>) = G_LOAD [[COPY]](p4) :: (load (<2 x p1>), align 4, addrspace 4) 511 ; GFX11-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](<2 x p1>) 512 %0:sgpr(p4) = COPY $sgpr0_sgpr1 513 %1:sgpr(<2 x p1>) = G_LOAD %0 :: (load (<2 x p1>), align 4, addrspace 4) 514 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1 515 516... 517 518--- 519 520name: load_constant_s128_align4 521legalized: true 522regBankSelected: true 523tracksRegLiveness: true 524 525body: | 526 bb.0: 527 liveins: $sgpr0_sgpr1 528 529 ; GFX6-LABEL: name: load_constant_s128_align4 530 ; GFX6: liveins: $sgpr0_sgpr1 531 ; GFX6-NEXT: {{ $}} 532 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 533 ; GFX6-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(s128) = G_LOAD [[COPY]](p4) :: (load (s128), align 4, addrspace 4) 534 ; GFX6-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](s128) 535 ; 536 ; GFX7-LABEL: name: load_constant_s128_align4 537 ; GFX7: liveins: $sgpr0_sgpr1 538 ; GFX7-NEXT: {{ $}} 539 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 540 ; GFX7-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(s128) = G_LOAD [[COPY]](p4) :: (load (s128), align 4, addrspace 4) 541 ; GFX7-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](s128) 542 ; 543 ; GFX8-LABEL: name: load_constant_s128_align4 544 ; GFX8: liveins: $sgpr0_sgpr1 545 ; GFX8-NEXT: {{ $}} 546 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 547 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(s128) = G_LOAD [[COPY]](p4) :: (load (s128), align 4, addrspace 4) 548 ; GFX8-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](s128) 549 ; 550 ; GFX10-LABEL: name: load_constant_s128_align4 551 ; GFX10: liveins: $sgpr0_sgpr1 552 ; GFX10-NEXT: {{ $}} 553 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 554 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(s128) = G_LOAD [[COPY]](p4) :: (load (s128), align 4, addrspace 4) 555 ; GFX10-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](s128) 556 ; 557 ; GFX11-LABEL: name: load_constant_s128_align4 558 ; GFX11: liveins: $sgpr0_sgpr1 559 ; GFX11-NEXT: {{ $}} 560 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 561 ; GFX11-NEXT: [[LOAD:%[0-9]+]]:sgpr_128(s128) = G_LOAD [[COPY]](p4) :: (load (s128), align 4, addrspace 4) 562 ; GFX11-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[LOAD]](s128) 563 %0:sgpr(p4) = COPY $sgpr0_sgpr1 564 %1:sgpr(s128) = G_LOAD %0 :: (load (s128), align 4, addrspace 4) 565 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1 566 567... 568 569--- 570 571name: load_constant_p3_from_4 572legalized: true 573regBankSelected: true 574tracksRegLiveness: true 575 576body: | 577 bb.0: 578 liveins: $sgpr0_sgpr1 579 580 ; GFX6-LABEL: name: load_constant_p3_from_4 581 ; GFX6: liveins: $sgpr0_sgpr1 582 ; GFX6-NEXT: {{ $}} 583 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 584 ; GFX6-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (p3), addrspace 4) 585 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 586 ; 587 ; GFX7-LABEL: name: load_constant_p3_from_4 588 ; GFX7: liveins: $sgpr0_sgpr1 589 ; GFX7-NEXT: {{ $}} 590 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 591 ; GFX7-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (p3), addrspace 4) 592 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 593 ; 594 ; GFX8-LABEL: name: load_constant_p3_from_4 595 ; GFX8: liveins: $sgpr0_sgpr1 596 ; GFX8-NEXT: {{ $}} 597 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 598 ; GFX8-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (p3), addrspace 4) 599 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 600 ; 601 ; GFX10-LABEL: name: load_constant_p3_from_4 602 ; GFX10: liveins: $sgpr0_sgpr1 603 ; GFX10-NEXT: {{ $}} 604 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 605 ; GFX10-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (p3), addrspace 4) 606 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 607 ; 608 ; GFX11-LABEL: name: load_constant_p3_from_4 609 ; GFX11: liveins: $sgpr0_sgpr1 610 ; GFX11-NEXT: {{ $}} 611 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 612 ; GFX11-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (p3), addrspace 4) 613 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 614 %0:sgpr(p4) = COPY $sgpr0_sgpr1 615 %1:sgpr(p3) = G_LOAD %0 :: (load (p3), align 4, addrspace 4) 616 $sgpr0 = COPY %1 617 618... 619 620--- 621 622name: load_constant_p4_from_8 623legalized: true 624regBankSelected: true 625tracksRegLiveness: true 626 627body: | 628 bb.0: 629 liveins: $sgpr0_sgpr1 630 631 ; GFX6-LABEL: name: load_constant_p4_from_8 632 ; GFX6: liveins: $sgpr0_sgpr1 633 ; GFX6-NEXT: {{ $}} 634 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 635 ; GFX6-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (p4), addrspace 4) 636 ; GFX6-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 637 ; 638 ; GFX7-LABEL: name: load_constant_p4_from_8 639 ; GFX7: liveins: $sgpr0_sgpr1 640 ; GFX7-NEXT: {{ $}} 641 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 642 ; GFX7-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (p4), addrspace 4) 643 ; GFX7-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 644 ; 645 ; GFX8-LABEL: name: load_constant_p4_from_8 646 ; GFX8: liveins: $sgpr0_sgpr1 647 ; GFX8-NEXT: {{ $}} 648 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 649 ; GFX8-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (p4), addrspace 4) 650 ; GFX8-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 651 ; 652 ; GFX10-LABEL: name: load_constant_p4_from_8 653 ; GFX10: liveins: $sgpr0_sgpr1 654 ; GFX10-NEXT: {{ $}} 655 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 656 ; GFX10-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (p4), addrspace 4) 657 ; GFX10-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 658 ; 659 ; GFX11-LABEL: name: load_constant_p4_from_8 660 ; GFX11: liveins: $sgpr0_sgpr1 661 ; GFX11-NEXT: {{ $}} 662 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 663 ; GFX11-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (p4), addrspace 4) 664 ; GFX11-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 665 %0:sgpr(p4) = COPY $sgpr0_sgpr1 666 %1:sgpr(p4) = G_LOAD %0 :: (load (p4), align 8, addrspace 4) 667 $sgpr0_sgpr1 = COPY %1 668 669... 670 671--- 672 673name: load_constant_p999_from_8 674legalized: true 675regBankSelected: true 676tracksRegLiveness: true 677 678body: | 679 bb.0: 680 liveins: $sgpr0_sgpr1 681 682 ; GFX6-LABEL: name: load_constant_p999_from_8 683 ; GFX6: liveins: $sgpr0_sgpr1 684 ; GFX6-NEXT: {{ $}} 685 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 686 ; GFX6-NEXT: [[LOAD:%[0-9]+]]:sreg_64(p999) = G_LOAD [[COPY]](p4) :: (load (p999), addrspace 4) 687 ; GFX6-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](p999) 688 ; 689 ; GFX7-LABEL: name: load_constant_p999_from_8 690 ; GFX7: liveins: $sgpr0_sgpr1 691 ; GFX7-NEXT: {{ $}} 692 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 693 ; GFX7-NEXT: [[LOAD:%[0-9]+]]:sreg_64(p999) = G_LOAD [[COPY]](p4) :: (load (p999), addrspace 4) 694 ; GFX7-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](p999) 695 ; 696 ; GFX8-LABEL: name: load_constant_p999_from_8 697 ; GFX8: liveins: $sgpr0_sgpr1 698 ; GFX8-NEXT: {{ $}} 699 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 700 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sreg_64(p999) = G_LOAD [[COPY]](p4) :: (load (p999), addrspace 4) 701 ; GFX8-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](p999) 702 ; 703 ; GFX10-LABEL: name: load_constant_p999_from_8 704 ; GFX10: liveins: $sgpr0_sgpr1 705 ; GFX10-NEXT: {{ $}} 706 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 707 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sreg_64(p999) = G_LOAD [[COPY]](p4) :: (load (p999), addrspace 4) 708 ; GFX10-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](p999) 709 ; 710 ; GFX11-LABEL: name: load_constant_p999_from_8 711 ; GFX11: liveins: $sgpr0_sgpr1 712 ; GFX11-NEXT: {{ $}} 713 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 714 ; GFX11-NEXT: [[LOAD:%[0-9]+]]:sreg_64(p999) = G_LOAD [[COPY]](p4) :: (load (p999), addrspace 4) 715 ; GFX11-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](p999) 716 %0:sgpr(p4) = COPY $sgpr0_sgpr1 717 %1:sgpr(p999) = G_LOAD %0 :: (load (p999), align 8, addrspace 4) 718 $sgpr0_sgpr1 = COPY %1 719 720... 721 722--- 723 724name: load_constant_v2p3 725legalized: true 726regBankSelected: true 727tracksRegLiveness: true 728 729body: | 730 bb.0: 731 liveins: $sgpr0_sgpr1 732 733 ; GFX6-LABEL: name: load_constant_v2p3 734 ; GFX6: liveins: $sgpr0_sgpr1 735 ; GFX6-NEXT: {{ $}} 736 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 737 ; GFX6-NEXT: [[LOAD:%[0-9]+]]:sreg_64(<2 x p3>) = G_LOAD [[COPY]](p4) :: (load (<2 x p3>), addrspace 4) 738 ; GFX6-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](<2 x p3>) 739 ; 740 ; GFX7-LABEL: name: load_constant_v2p3 741 ; GFX7: liveins: $sgpr0_sgpr1 742 ; GFX7-NEXT: {{ $}} 743 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 744 ; GFX7-NEXT: [[LOAD:%[0-9]+]]:sreg_64(<2 x p3>) = G_LOAD [[COPY]](p4) :: (load (<2 x p3>), addrspace 4) 745 ; GFX7-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](<2 x p3>) 746 ; 747 ; GFX8-LABEL: name: load_constant_v2p3 748 ; GFX8: liveins: $sgpr0_sgpr1 749 ; GFX8-NEXT: {{ $}} 750 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 751 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:sreg_64(<2 x p3>) = G_LOAD [[COPY]](p4) :: (load (<2 x p3>), addrspace 4) 752 ; GFX8-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](<2 x p3>) 753 ; 754 ; GFX10-LABEL: name: load_constant_v2p3 755 ; GFX10: liveins: $sgpr0_sgpr1 756 ; GFX10-NEXT: {{ $}} 757 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 758 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:sreg_64(<2 x p3>) = G_LOAD [[COPY]](p4) :: (load (<2 x p3>), addrspace 4) 759 ; GFX10-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](<2 x p3>) 760 ; 761 ; GFX11-LABEL: name: load_constant_v2p3 762 ; GFX11: liveins: $sgpr0_sgpr1 763 ; GFX11-NEXT: {{ $}} 764 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sgpr(p4) = COPY $sgpr0_sgpr1 765 ; GFX11-NEXT: [[LOAD:%[0-9]+]]:sreg_64(<2 x p3>) = G_LOAD [[COPY]](p4) :: (load (<2 x p3>), addrspace 4) 766 ; GFX11-NEXT: $sgpr0_sgpr1 = COPY [[LOAD]](<2 x p3>) 767 %0:sgpr(p4) = COPY $sgpr0_sgpr1 768 %1:sgpr(<2 x p3>) = G_LOAD %0 :: (load (<2 x p3>), align 8, addrspace 4) 769 $sgpr0_sgpr1 = COPY %1 770 771... 772 773--- 774 775name: load_constant_v2s16 776legalized: true 777regBankSelected: true 778tracksRegLiveness: true 779 780body: | 781 bb.0: 782 liveins: $sgpr0_sgpr1 783 784 ; GFX6-LABEL: name: load_constant_v2s16 785 ; GFX6: liveins: $sgpr0_sgpr1 786 ; GFX6-NEXT: {{ $}} 787 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 788 ; 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) 789 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 790 ; 791 ; GFX7-LABEL: name: load_constant_v2s16 792 ; GFX7: liveins: $sgpr0_sgpr1 793 ; GFX7-NEXT: {{ $}} 794 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 795 ; 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) 796 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 797 ; 798 ; GFX8-LABEL: name: load_constant_v2s16 799 ; GFX8: liveins: $sgpr0_sgpr1 800 ; GFX8-NEXT: {{ $}} 801 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 802 ; 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) 803 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 804 ; 805 ; GFX10-LABEL: name: load_constant_v2s16 806 ; GFX10: liveins: $sgpr0_sgpr1 807 ; GFX10-NEXT: {{ $}} 808 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 809 ; 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) 810 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 811 ; 812 ; GFX11-LABEL: name: load_constant_v2s16 813 ; GFX11: liveins: $sgpr0_sgpr1 814 ; GFX11-NEXT: {{ $}} 815 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 816 ; GFX11-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (load (<2 x s16>), addrspace 4) 817 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 818 %0:sgpr(p4) = COPY $sgpr0_sgpr1 819 %1:sgpr(<2 x s16>) = G_LOAD %0 :: (load (<2 x s16>), align 4, addrspace 4) 820 $sgpr0 = COPY %1 821 822... 823 824--- 825 826name: load_constant_v4s16 827legalized: true 828regBankSelected: true 829tracksRegLiveness: true 830 831body: | 832 bb.0: 833 liveins: $sgpr0_sgpr1 834 835 ; GFX6-LABEL: name: load_constant_v4s16 836 ; GFX6: liveins: $sgpr0_sgpr1 837 ; GFX6-NEXT: {{ $}} 838 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 839 ; GFX6-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<4 x s16>), addrspace 4) 840 ; GFX6-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 841 ; 842 ; GFX7-LABEL: name: load_constant_v4s16 843 ; GFX7: liveins: $sgpr0_sgpr1 844 ; GFX7-NEXT: {{ $}} 845 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 846 ; GFX7-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<4 x s16>), addrspace 4) 847 ; GFX7-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 848 ; 849 ; GFX8-LABEL: name: load_constant_v4s16 850 ; GFX8: liveins: $sgpr0_sgpr1 851 ; GFX8-NEXT: {{ $}} 852 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 853 ; GFX8-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<4 x s16>), addrspace 4) 854 ; GFX8-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 855 ; 856 ; GFX10-LABEL: name: load_constant_v4s16 857 ; GFX10: liveins: $sgpr0_sgpr1 858 ; GFX10-NEXT: {{ $}} 859 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 860 ; GFX10-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<4 x s16>), addrspace 4) 861 ; GFX10-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 862 ; 863 ; GFX11-LABEL: name: load_constant_v4s16 864 ; GFX11: liveins: $sgpr0_sgpr1 865 ; GFX11-NEXT: {{ $}} 866 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 867 ; GFX11-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM [[COPY]], 0, 0 :: (load (<4 x s16>), addrspace 4) 868 ; GFX11-NEXT: $sgpr0_sgpr1 = COPY [[S_LOAD_DWORDX2_IMM]] 869 %0:sgpr(p4) = COPY $sgpr0_sgpr1 870 %1:sgpr(<4 x s16>) = G_LOAD %0 :: (load (<4 x s16>), align 8, addrspace 4) 871 $sgpr0_sgpr1 = COPY %1 872 873... 874 875--- 876 877name: load_constant_v8s16 878legalized: true 879regBankSelected: true 880tracksRegLiveness: true 881 882body: | 883 bb.0: 884 liveins: $sgpr0_sgpr1 885 886 ; GFX6-LABEL: name: load_constant_v8s16 887 ; GFX6: liveins: $sgpr0_sgpr1 888 ; GFX6-NEXT: {{ $}} 889 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 890 ; 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) 891 ; GFX6-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 892 ; 893 ; GFX7-LABEL: name: load_constant_v8s16 894 ; GFX7: liveins: $sgpr0_sgpr1 895 ; GFX7-NEXT: {{ $}} 896 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 897 ; 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) 898 ; GFX7-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 899 ; 900 ; GFX8-LABEL: name: load_constant_v8s16 901 ; GFX8: liveins: $sgpr0_sgpr1 902 ; GFX8-NEXT: {{ $}} 903 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 904 ; 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) 905 ; GFX8-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 906 ; 907 ; GFX10-LABEL: name: load_constant_v8s16 908 ; GFX10: liveins: $sgpr0_sgpr1 909 ; GFX10-NEXT: {{ $}} 910 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 911 ; GFX10-NEXT: early-clobber %1:sgpr_128 = S_LOAD_DWORDX4_IMM_ec [[COPY]], 0, 0 :: (load (<8 x s16>), align 4, addrspace 4) 912 ; GFX10-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1 913 ; 914 ; GFX11-LABEL: name: load_constant_v8s16 915 ; GFX11: liveins: $sgpr0_sgpr1 916 ; GFX11-NEXT: {{ $}} 917 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 918 ; GFX11-NEXT: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY]], 0, 0 :: (load (<8 x s16>), align 4, addrspace 4) 919 ; GFX11-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[S_LOAD_DWORDX4_IMM]] 920 %0:sgpr(p4) = COPY $sgpr0_sgpr1 921 %1:sgpr(<8 x s16>) = G_LOAD %0 :: (load (<8 x s16>), align 4, addrspace 4) 922 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %1 923 924... 925 926--- 927 928name: load_constant_v8s32 929legalized: true 930regBankSelected: true 931tracksRegLiveness: true 932 933body: | 934 bb.0: 935 liveins: $sgpr0_sgpr1 936 937 ; GFX6-LABEL: name: load_constant_v8s32 938 ; GFX6: liveins: $sgpr0_sgpr1 939 ; GFX6-NEXT: {{ $}} 940 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 941 ; 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) 942 ; GFX6-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[S_LOAD_DWORDX8_IMM]] 943 ; 944 ; GFX7-LABEL: name: load_constant_v8s32 945 ; GFX7: liveins: $sgpr0_sgpr1 946 ; GFX7-NEXT: {{ $}} 947 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 948 ; 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) 949 ; GFX7-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[S_LOAD_DWORDX8_IMM]] 950 ; 951 ; GFX8-LABEL: name: load_constant_v8s32 952 ; GFX8: liveins: $sgpr0_sgpr1 953 ; GFX8-NEXT: {{ $}} 954 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 955 ; 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) 956 ; GFX8-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[S_LOAD_DWORDX8_IMM]] 957 ; 958 ; GFX10-LABEL: name: load_constant_v8s32 959 ; GFX10: liveins: $sgpr0_sgpr1 960 ; GFX10-NEXT: {{ $}} 961 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 962 ; GFX10-NEXT: early-clobber %1:sgpr_256 = S_LOAD_DWORDX8_IMM_ec [[COPY]], 0, 0 :: (load (<8 x s32>), align 4, addrspace 4) 963 ; GFX10-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %1 964 ; 965 ; GFX11-LABEL: name: load_constant_v8s32 966 ; GFX11: liveins: $sgpr0_sgpr1 967 ; GFX11-NEXT: {{ $}} 968 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 969 ; GFX11-NEXT: [[S_LOAD_DWORDX8_IMM:%[0-9]+]]:sgpr_256 = S_LOAD_DWORDX8_IMM [[COPY]], 0, 0 :: (load (<8 x s32>), align 4, addrspace 4) 970 ; GFX11-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[S_LOAD_DWORDX8_IMM]] 971 %0:sgpr(p4) = COPY $sgpr0_sgpr1 972 %1:sgpr(<8 x s32>) = G_LOAD %0 :: (load (<8 x s32>), align 4, addrspace 4) 973 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %1 974 975... 976 977--- 978 979name: load_constant_v16s32 980legalized: true 981regBankSelected: true 982tracksRegLiveness: true 983 984body: | 985 bb.0: 986 liveins: $sgpr0_sgpr1 987 988 ; GFX6-LABEL: name: load_constant_v16s32 989 ; GFX6: liveins: $sgpr0_sgpr1 990 ; GFX6-NEXT: {{ $}} 991 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 992 ; 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) 993 ; GFX6-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[S_LOAD_DWORDX16_IMM]] 994 ; 995 ; GFX7-LABEL: name: load_constant_v16s32 996 ; GFX7: liveins: $sgpr0_sgpr1 997 ; GFX7-NEXT: {{ $}} 998 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 999 ; 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) 1000 ; GFX7-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[S_LOAD_DWORDX16_IMM]] 1001 ; 1002 ; GFX8-LABEL: name: load_constant_v16s32 1003 ; GFX8: liveins: $sgpr0_sgpr1 1004 ; GFX8-NEXT: {{ $}} 1005 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1006 ; 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) 1007 ; GFX8-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[S_LOAD_DWORDX16_IMM]] 1008 ; 1009 ; GFX10-LABEL: name: load_constant_v16s32 1010 ; GFX10: liveins: $sgpr0_sgpr1 1011 ; GFX10-NEXT: {{ $}} 1012 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1013 ; GFX10-NEXT: early-clobber %1:sgpr_512 = S_LOAD_DWORDX16_IMM_ec [[COPY]], 0, 0 :: (load (<16 x s32>), align 4, addrspace 4) 1014 ; GFX10-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %1 1015 ; 1016 ; GFX11-LABEL: name: load_constant_v16s32 1017 ; GFX11: liveins: $sgpr0_sgpr1 1018 ; GFX11-NEXT: {{ $}} 1019 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1020 ; GFX11-NEXT: [[S_LOAD_DWORDX16_IMM:%[0-9]+]]:sgpr_512 = S_LOAD_DWORDX16_IMM [[COPY]], 0, 0 :: (load (<16 x s32>), align 4, addrspace 4) 1021 ; GFX11-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[S_LOAD_DWORDX16_IMM]] 1022 %0:sgpr(p4) = COPY $sgpr0_sgpr1 1023 %1:sgpr(<16 x s32>) = G_LOAD %0 :: (load (<16 x s32>), align 4, addrspace 4) 1024 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %1 1025 1026... 1027 1028--- 1029 1030name: load_constant_v8s64 1031legalized: true 1032regBankSelected: true 1033tracksRegLiveness: true 1034 1035body: | 1036 bb.0: 1037 liveins: $sgpr0_sgpr1 1038 1039 ; GFX6-LABEL: name: load_constant_v8s64 1040 ; GFX6: liveins: $sgpr0_sgpr1 1041 ; GFX6-NEXT: {{ $}} 1042 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1043 ; 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) 1044 ; GFX6-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[S_LOAD_DWORDX16_IMM]] 1045 ; 1046 ; GFX7-LABEL: name: load_constant_v8s64 1047 ; GFX7: liveins: $sgpr0_sgpr1 1048 ; GFX7-NEXT: {{ $}} 1049 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1050 ; 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) 1051 ; GFX7-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[S_LOAD_DWORDX16_IMM]] 1052 ; 1053 ; GFX8-LABEL: name: load_constant_v8s64 1054 ; GFX8: liveins: $sgpr0_sgpr1 1055 ; GFX8-NEXT: {{ $}} 1056 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1057 ; 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) 1058 ; GFX8-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[S_LOAD_DWORDX16_IMM]] 1059 ; 1060 ; GFX10-LABEL: name: load_constant_v8s64 1061 ; GFX10: liveins: $sgpr0_sgpr1 1062 ; GFX10-NEXT: {{ $}} 1063 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1064 ; GFX10-NEXT: early-clobber %1:sgpr_512 = S_LOAD_DWORDX16_IMM_ec [[COPY]], 0, 0 :: (load (<8 x s64>), align 4, addrspace 4) 1065 ; GFX10-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %1 1066 ; 1067 ; GFX11-LABEL: name: load_constant_v8s64 1068 ; GFX11: liveins: $sgpr0_sgpr1 1069 ; GFX11-NEXT: {{ $}} 1070 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1071 ; GFX11-NEXT: [[S_LOAD_DWORDX16_IMM:%[0-9]+]]:sgpr_512 = S_LOAD_DWORDX16_IMM [[COPY]], 0, 0 :: (load (<8 x s64>), align 4, addrspace 4) 1072 ; GFX11-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[S_LOAD_DWORDX16_IMM]] 1073 %0:sgpr(p4) = COPY $sgpr0_sgpr1 1074 %1:sgpr(<8 x s64>) = G_LOAD %0 :: (load (<8 x s64>), align 4, addrspace 4) 1075 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %1 1076 1077... 1078 1079################################################################################ 1080### Stress addressing modes 1081################################################################################ 1082 1083--- 1084 1085name: load_constant_s32_from_4_gep_1020 1086legalized: true 1087regBankSelected: true 1088tracksRegLiveness: true 1089 1090body: | 1091 bb.0: 1092 liveins: $sgpr0_sgpr1 1093 1094 ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1020 1095 ; GFX6: liveins: $sgpr0_sgpr1 1096 ; GFX6-NEXT: {{ $}} 1097 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1098 ; GFX6-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 255, 0 :: (load (s32), addrspace 4) 1099 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1100 ; 1101 ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1020 1102 ; GFX7: liveins: $sgpr0_sgpr1 1103 ; GFX7-NEXT: {{ $}} 1104 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1105 ; GFX7-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 255, 0 :: (load (s32), addrspace 4) 1106 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1107 ; 1108 ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1020 1109 ; GFX8: liveins: $sgpr0_sgpr1 1110 ; GFX8-NEXT: {{ $}} 1111 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1112 ; GFX8-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1020, 0 :: (load (s32), addrspace 4) 1113 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1114 ; 1115 ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1020 1116 ; GFX10: liveins: $sgpr0_sgpr1 1117 ; GFX10-NEXT: {{ $}} 1118 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1119 ; GFX10-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1020, 0 :: (load (s32), addrspace 4) 1120 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1121 ; 1122 ; GFX11-LABEL: name: load_constant_s32_from_4_gep_1020 1123 ; GFX11: liveins: $sgpr0_sgpr1 1124 ; GFX11-NEXT: {{ $}} 1125 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1126 ; GFX11-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1020, 0 :: (load (s32), addrspace 4) 1127 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1128 %0:sgpr(p4) = COPY $sgpr0_sgpr1 1129 %1:sgpr(s64) = G_CONSTANT i64 1020 1130 %2:sgpr(p4) = G_PTR_ADD %0, %1 1131 %3:sgpr(s32) = G_LOAD %2 :: (load (s32), align 4, addrspace 4) 1132 $sgpr0 = COPY %3 1133 1134... 1135 1136--- 1137 1138name: load_constant_s32_from_4_gep_1024 1139legalized: true 1140regBankSelected: true 1141tracksRegLiveness: true 1142 1143body: | 1144 bb.0: 1145 liveins: $sgpr0_sgpr1 1146 1147 ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1024 1148 ; GFX6: liveins: $sgpr0_sgpr1 1149 ; GFX6-NEXT: {{ $}} 1150 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1151 ; GFX6-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1024 1152 ; 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) 1153 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]] 1154 ; 1155 ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1024 1156 ; GFX7: liveins: $sgpr0_sgpr1 1157 ; GFX7-NEXT: {{ $}} 1158 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1159 ; 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) 1160 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM_ci]] 1161 ; 1162 ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1024 1163 ; GFX8: liveins: $sgpr0_sgpr1 1164 ; GFX8-NEXT: {{ $}} 1165 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1166 ; GFX8-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1024, 0 :: (load (s32), addrspace 4) 1167 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1168 ; 1169 ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1024 1170 ; GFX10: liveins: $sgpr0_sgpr1 1171 ; GFX10-NEXT: {{ $}} 1172 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1173 ; GFX10-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1024, 0 :: (load (s32), addrspace 4) 1174 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1175 ; 1176 ; GFX11-LABEL: name: load_constant_s32_from_4_gep_1024 1177 ; GFX11: liveins: $sgpr0_sgpr1 1178 ; GFX11-NEXT: {{ $}} 1179 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1180 ; GFX11-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1024, 0 :: (load (s32), addrspace 4) 1181 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1182 %0:sgpr(p4) = COPY $sgpr0_sgpr1 1183 %1:sgpr(s64) = G_CONSTANT i64 1024 1184 %2:sgpr(p4) = G_PTR_ADD %0, %1 1185 %3:sgpr(s32) = G_LOAD %2 :: (load (s32), align 4, addrspace 4) 1186 $sgpr0 = COPY %3 1187 1188... 1189 1190--- 1191 1192name: load_constant_s32_from_4_gep_1048575 1193legalized: true 1194regBankSelected: true 1195tracksRegLiveness: true 1196 1197body: | 1198 bb.0: 1199 liveins: $sgpr0_sgpr1 1200 1201 ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1048575 1202 ; GFX6: liveins: $sgpr0_sgpr1 1203 ; GFX6-NEXT: {{ $}} 1204 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1205 ; GFX6-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048575 1206 ; 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) 1207 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]] 1208 ; 1209 ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1048575 1210 ; GFX7: liveins: $sgpr0_sgpr1 1211 ; GFX7-NEXT: {{ $}} 1212 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1213 ; GFX7-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048575 1214 ; 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) 1215 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]] 1216 ; 1217 ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1048575 1218 ; GFX8: liveins: $sgpr0_sgpr1 1219 ; GFX8-NEXT: {{ $}} 1220 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1221 ; GFX8-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 1048575, 0 :: (load (s32), addrspace 4) 1222 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1223 ; 1224 ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1048575 1225 ; GFX10: liveins: $sgpr0_sgpr1 1226 ; GFX10-NEXT: {{ $}} 1227 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1228 ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048575 1229 ; GFX10-NEXT: [[S_LOAD_DWORD_SGPR_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR_IMM [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load (s32), addrspace 4) 1230 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR_IMM]] 1231 ; 1232 ; GFX11-LABEL: name: load_constant_s32_from_4_gep_1048575 1233 ; GFX11: liveins: $sgpr0_sgpr1 1234 ; GFX11-NEXT: {{ $}} 1235 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1236 ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048575 1237 ; GFX11-NEXT: [[S_LOAD_DWORD_SGPR_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR_IMM [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load (s32), addrspace 4) 1238 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR_IMM]] 1239 %0:sgpr(p4) = COPY $sgpr0_sgpr1 1240 %1:sgpr(s64) = G_CONSTANT i64 1048575 1241 %2:sgpr(p4) = G_PTR_ADD %0, %1 1242 %3:sgpr(s32) = G_LOAD %2 :: (load (s32), align 4, addrspace 4) 1243 $sgpr0 = COPY %3 1244 1245... 1246 1247--- 1248 1249name: load_constant_s32_from_4_gep_1048576 1250legalized: true 1251regBankSelected: true 1252tracksRegLiveness: true 1253 1254body: | 1255 bb.0: 1256 liveins: $sgpr0_sgpr1 1257 1258 ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1048576 1259 ; GFX6: liveins: $sgpr0_sgpr1 1260 ; GFX6-NEXT: {{ $}} 1261 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1262 ; GFX6-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048576 1263 ; 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) 1264 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]] 1265 ; 1266 ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1048576 1267 ; GFX7: liveins: $sgpr0_sgpr1 1268 ; GFX7-NEXT: {{ $}} 1269 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1270 ; 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) 1271 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM_ci]] 1272 ; 1273 ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1048576 1274 ; GFX8: liveins: $sgpr0_sgpr1 1275 ; GFX8-NEXT: {{ $}} 1276 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1277 ; GFX8-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048576 1278 ; 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) 1279 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]] 1280 ; 1281 ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1048576 1282 ; GFX10: liveins: $sgpr0_sgpr1 1283 ; GFX10-NEXT: {{ $}} 1284 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1285 ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048576 1286 ; GFX10-NEXT: [[S_LOAD_DWORD_SGPR_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR_IMM [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load (s32), addrspace 4) 1287 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR_IMM]] 1288 ; 1289 ; GFX11-LABEL: name: load_constant_s32_from_4_gep_1048576 1290 ; GFX11: liveins: $sgpr0_sgpr1 1291 ; GFX11-NEXT: {{ $}} 1292 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1293 ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1048576 1294 ; GFX11-NEXT: [[S_LOAD_DWORD_SGPR_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR_IMM [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load (s32), addrspace 4) 1295 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR_IMM]] 1296 %0:sgpr(p4) = COPY $sgpr0_sgpr1 1297 %1:sgpr(s64) = G_CONSTANT i64 1048576 1298 %2:sgpr(p4) = G_PTR_ADD %0, %1 1299 %3:sgpr(s32) = G_LOAD %2 :: (load (s32), align 4, addrspace 4) 1300 $sgpr0 = COPY %3 1301 1302... 1303 1304--- 1305 1306name: load_constant_s32_from_4_gep_1073741823 1307legalized: true 1308regBankSelected: true 1309tracksRegLiveness: true 1310 1311body: | 1312 bb.0: 1313 liveins: $sgpr0_sgpr1 1314 1315 ; GFX6-LABEL: name: load_constant_s32_from_4_gep_1073741823 1316 ; GFX6: liveins: $sgpr0_sgpr1 1317 ; GFX6-NEXT: {{ $}} 1318 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1319 ; GFX6-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1073741823 1320 ; 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) 1321 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]] 1322 ; 1323 ; GFX7-LABEL: name: load_constant_s32_from_4_gep_1073741823 1324 ; GFX7: liveins: $sgpr0_sgpr1 1325 ; GFX7-NEXT: {{ $}} 1326 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1327 ; GFX7-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1073741823 1328 ; 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) 1329 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]] 1330 ; 1331 ; GFX8-LABEL: name: load_constant_s32_from_4_gep_1073741823 1332 ; GFX8: liveins: $sgpr0_sgpr1 1333 ; GFX8-NEXT: {{ $}} 1334 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1335 ; GFX8-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1073741823 1336 ; 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) 1337 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR]] 1338 ; 1339 ; GFX10-LABEL: name: load_constant_s32_from_4_gep_1073741823 1340 ; GFX10: liveins: $sgpr0_sgpr1 1341 ; GFX10-NEXT: {{ $}} 1342 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1343 ; GFX10-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1073741823 1344 ; GFX10-NEXT: [[S_LOAD_DWORD_SGPR_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR_IMM [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load (s32), addrspace 4) 1345 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR_IMM]] 1346 ; 1347 ; GFX11-LABEL: name: load_constant_s32_from_4_gep_1073741823 1348 ; GFX11: liveins: $sgpr0_sgpr1 1349 ; GFX11-NEXT: {{ $}} 1350 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1351 ; GFX11-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 1073741823 1352 ; GFX11-NEXT: [[S_LOAD_DWORD_SGPR_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_SGPR_IMM [[COPY]], [[S_MOV_B32_]], 0, 0 :: (load (s32), addrspace 4) 1353 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_SGPR_IMM]] 1354 %0:sgpr(p4) = COPY $sgpr0_sgpr1 1355 %1:sgpr(s64) = G_CONSTANT i64 1073741823 1356 %2:sgpr(p4) = G_PTR_ADD %0, %1 1357 %3:sgpr(s32) = G_LOAD %2 :: (load (s32), align 4, addrspace 4) 1358 $sgpr0 = COPY %3 1359 1360... 1361 1362--- 1363 1364name: load_constant_s32_from_4_gep_negative_1 1365legalized: true 1366regBankSelected: true 1367tracksRegLiveness: true 1368 1369body: | 1370 bb.0: 1371 liveins: $sgpr0_sgpr1 1372 1373 ; GFX6-LABEL: name: load_constant_s32_from_4_gep_negative_1 1374 ; GFX6: liveins: $sgpr0_sgpr1 1375 ; GFX6-NEXT: {{ $}} 1376 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1377 ; GFX6-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1 1378 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1379 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub0 1380 ; GFX6-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1381 ; GFX6-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub1 1382 ; GFX6-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1383 ; GFX6-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1384 ; GFX6-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1385 ; GFX6-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1386 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1387 ; 1388 ; GFX7-LABEL: name: load_constant_s32_from_4_gep_negative_1 1389 ; GFX7: liveins: $sgpr0_sgpr1 1390 ; GFX7-NEXT: {{ $}} 1391 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1392 ; GFX7-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1 1393 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1394 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub0 1395 ; GFX7-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1396 ; GFX7-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub1 1397 ; GFX7-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1398 ; GFX7-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1399 ; GFX7-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1400 ; GFX7-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1401 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1402 ; 1403 ; GFX8-LABEL: name: load_constant_s32_from_4_gep_negative_1 1404 ; GFX8: liveins: $sgpr0_sgpr1 1405 ; GFX8-NEXT: {{ $}} 1406 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1407 ; GFX8-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1 1408 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1409 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub0 1410 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1411 ; GFX8-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub1 1412 ; GFX8-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1413 ; GFX8-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1414 ; GFX8-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1415 ; GFX8-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1416 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1417 ; 1418 ; GFX10-LABEL: name: load_constant_s32_from_4_gep_negative_1 1419 ; GFX10: liveins: $sgpr0_sgpr1 1420 ; GFX10-NEXT: {{ $}} 1421 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1422 ; GFX10-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1 1423 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1424 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub0 1425 ; GFX10-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1426 ; GFX10-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub1 1427 ; GFX10-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1428 ; GFX10-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1429 ; GFX10-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1430 ; GFX10-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1431 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1432 ; 1433 ; GFX11-LABEL: name: load_constant_s32_from_4_gep_negative_1 1434 ; GFX11: liveins: $sgpr0_sgpr1 1435 ; GFX11-NEXT: {{ $}} 1436 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1437 ; GFX11-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64 = S_MOV_B64 -1 1438 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1439 ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub0 1440 ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1441 ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B64_]].sub1 1442 ; GFX11-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1443 ; GFX11-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1444 ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1445 ; GFX11-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1446 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1447 %0:sgpr(p4) = COPY $sgpr0_sgpr1 1448 %1:sgpr(s64) = G_CONSTANT i64 -1 1449 %2:sgpr(p4) = G_PTR_ADD %0, %1 1450 %3:sgpr(s32) = G_LOAD %2 :: (load (s32), align 4, addrspace 4) 1451 $sgpr0 = COPY %3 1452 1453... 1454 1455--- 1456 1457name: load_constant_s32_from_4_gep_negative_524288 1458legalized: true 1459regBankSelected: true 1460tracksRegLiveness: true 1461 1462body: | 1463 bb.0: 1464 liveins: $sgpr0_sgpr1 1465 1466 ; GFX6-LABEL: name: load_constant_s32_from_4_gep_negative_524288 1467 ; GFX6: liveins: $sgpr0_sgpr1 1468 ; GFX6-NEXT: {{ $}} 1469 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1470 ; GFX6-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO -524288 1471 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1472 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub0 1473 ; GFX6-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1474 ; GFX6-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub1 1475 ; GFX6-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1476 ; GFX6-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1477 ; GFX6-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1478 ; GFX6-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1479 ; GFX6-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1480 ; 1481 ; GFX7-LABEL: name: load_constant_s32_from_4_gep_negative_524288 1482 ; GFX7: liveins: $sgpr0_sgpr1 1483 ; GFX7-NEXT: {{ $}} 1484 ; GFX7-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1485 ; GFX7-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO -524288 1486 ; GFX7-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1487 ; GFX7-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub0 1488 ; GFX7-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1489 ; GFX7-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub1 1490 ; GFX7-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1491 ; GFX7-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1492 ; GFX7-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1493 ; GFX7-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1494 ; GFX7-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1495 ; 1496 ; GFX8-LABEL: name: load_constant_s32_from_4_gep_negative_524288 1497 ; GFX8: liveins: $sgpr0_sgpr1 1498 ; GFX8-NEXT: {{ $}} 1499 ; GFX8-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1500 ; GFX8-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO -524288 1501 ; GFX8-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1502 ; GFX8-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub0 1503 ; GFX8-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1504 ; GFX8-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub1 1505 ; GFX8-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1506 ; GFX8-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1507 ; GFX8-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1508 ; GFX8-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1509 ; GFX8-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1510 ; 1511 ; GFX10-LABEL: name: load_constant_s32_from_4_gep_negative_524288 1512 ; GFX10: liveins: $sgpr0_sgpr1 1513 ; GFX10-NEXT: {{ $}} 1514 ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1515 ; GFX10-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO -524288 1516 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1517 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub0 1518 ; GFX10-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1519 ; GFX10-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub1 1520 ; GFX10-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1521 ; GFX10-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1522 ; GFX10-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1523 ; GFX10-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1524 ; GFX10-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1525 ; 1526 ; GFX11-LABEL: name: load_constant_s32_from_4_gep_negative_524288 1527 ; GFX11: liveins: $sgpr0_sgpr1 1528 ; GFX11-NEXT: {{ $}} 1529 ; GFX11-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 1530 ; GFX11-NEXT: [[S_MOV_B:%[0-9]+]]:sreg_64 = S_MOV_B64_IMM_PSEUDO -524288 1531 ; GFX11-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 1532 ; GFX11-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub0 1533 ; GFX11-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 1534 ; GFX11-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[S_MOV_B]].sub1 1535 ; GFX11-NEXT: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 [[COPY1]], [[COPY2]], implicit-def $scc 1536 ; GFX11-NEXT: [[S_ADDC_U32_:%[0-9]+]]:sreg_32 = S_ADDC_U32 [[COPY3]], [[COPY4]], implicit-def dead $scc, implicit $scc 1537 ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64_xexec = REG_SEQUENCE [[S_ADD_U32_]], %subreg.sub0, [[S_ADDC_U32_]], %subreg.sub1 1538 ; GFX11-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[REG_SEQUENCE]], 0, 0 :: (load (s32), addrspace 4) 1539 ; GFX11-NEXT: $sgpr0 = COPY [[S_LOAD_DWORD_IMM]] 1540 %0:sgpr(p4) = COPY $sgpr0_sgpr1 1541 %1:sgpr(s64) = G_CONSTANT i64 -524288 1542 %2:sgpr(p4) = G_PTR_ADD %0, %1 1543 %3:sgpr(s32) = G_LOAD %2 :: (load (s32), align 4, addrspace 4) 1544 $sgpr0 = COPY %3 1545 1546... 1547