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