1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s 3# RUN: llc -march=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s 4# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s 5# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s 6# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s 7 8--- 9 10name: load_local_s32_from_4 11legalized: true 12regBankSelected: true 13tracksRegLiveness: true 14 15body: | 16 bb.0: 17 liveins: $vgpr0 18 19 ; GFX7-LABEL: name: load_local_s32_from_4 20 ; GFX7: liveins: $vgpr0 21 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 22 ; GFX7: $m0 = S_MOV_B32 -1 23 ; GFX7: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 4, addrspace 3) 24 ; GFX7: $vgpr0 = COPY [[DS_READ_B32_]] 25 ; GFX9-LABEL: name: load_local_s32_from_4 26 ; GFX9: liveins: $vgpr0 27 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 28 ; GFX9: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 4, addrspace 3) 29 ; GFX9: $vgpr0 = COPY [[DS_READ_B32_gfx9_]] 30 ; GFX6-LABEL: name: load_local_s32_from_4 31 ; GFX6: liveins: $vgpr0 32 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 33 ; GFX6: $m0 = S_MOV_B32 -1 34 ; GFX6: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 4, addrspace 3) 35 ; GFX6: $vgpr0 = COPY [[DS_READ_B32_]] 36 %0:vgpr(p3) = COPY $vgpr0 37 %1:vgpr(s32) = G_LOAD %0 :: (load 4, align 4, addrspace 3) 38 $vgpr0 = COPY %1 39 40... 41 42--- 43 44name: load_local_s32_from_2 45legalized: true 46regBankSelected: true 47tracksRegLiveness: true 48 49body: | 50 bb.0: 51 liveins: $vgpr0 52 53 ; GFX7-LABEL: name: load_local_s32_from_2 54 ; GFX7: liveins: $vgpr0 55 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 56 ; GFX7: $m0 = S_MOV_B32 -1 57 ; GFX7: [[DS_READ_U16_:%[0-9]+]]:vgpr_32 = DS_READ_U16 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 2, addrspace 3) 58 ; GFX7: $vgpr0 = COPY [[DS_READ_U16_]] 59 ; GFX9-LABEL: name: load_local_s32_from_2 60 ; GFX9: liveins: $vgpr0 61 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 62 ; GFX9: [[DS_READ_U16_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U16_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 2, addrspace 3) 63 ; GFX9: $vgpr0 = COPY [[DS_READ_U16_gfx9_]] 64 ; GFX6-LABEL: name: load_local_s32_from_2 65 ; GFX6: liveins: $vgpr0 66 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 67 ; GFX6: $m0 = S_MOV_B32 -1 68 ; GFX6: [[DS_READ_U16_:%[0-9]+]]:vgpr_32 = DS_READ_U16 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 2, addrspace 3) 69 ; GFX6: $vgpr0 = COPY [[DS_READ_U16_]] 70 %0:vgpr(p3) = COPY $vgpr0 71 %1:vgpr(s32) = G_LOAD %0 :: (load 2, align 2, addrspace 3) 72 $vgpr0 = COPY %1 73 74... 75 76--- 77 78name: load_local_s32_from_1 79legalized: true 80regBankSelected: true 81tracksRegLiveness: true 82machineFunctionInfo: 83 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3 84 stackPtrOffsetReg: $sgpr32 85 86body: | 87 bb.0: 88 liveins: $vgpr0 89 90 ; GFX7-LABEL: name: load_local_s32_from_1 91 ; GFX7: liveins: $vgpr0 92 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 93 ; GFX7: $m0 = S_MOV_B32 -1 94 ; GFX7: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 95 ; GFX7: $vgpr0 = COPY [[DS_READ_U8_]] 96 ; GFX9-LABEL: name: load_local_s32_from_1 97 ; GFX9: liveins: $vgpr0 98 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 99 ; GFX9: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 1, addrspace 3) 100 ; GFX9: $vgpr0 = COPY [[DS_READ_U8_gfx9_]] 101 ; GFX6-LABEL: name: load_local_s32_from_1 102 ; GFX6: liveins: $vgpr0 103 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 104 ; GFX6: $m0 = S_MOV_B32 -1 105 ; GFX6: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 106 ; GFX6: $vgpr0 = COPY [[DS_READ_U8_]] 107 %0:vgpr(p3) = COPY $vgpr0 108 %1:vgpr(s32) = G_LOAD %0 :: (load 1, align 1, addrspace 3) 109 $vgpr0 = COPY %1 110 111... 112 113--- 114 115name: load_local_v2s32 116legalized: true 117regBankSelected: true 118tracksRegLiveness: true 119 120body: | 121 bb.0: 122 liveins: $vgpr0 123 124 ; GFX7-LABEL: name: load_local_v2s32 125 ; GFX7: liveins: $vgpr0 126 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 127 ; GFX7: $m0 = S_MOV_B32 -1 128 ; GFX7: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 8, addrspace 3) 129 ; GFX7: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]] 130 ; GFX9-LABEL: name: load_local_v2s32 131 ; GFX9: liveins: $vgpr0 132 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 133 ; GFX9: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 8, addrspace 3) 134 ; GFX9: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]] 135 ; GFX6-LABEL: name: load_local_v2s32 136 ; GFX6: liveins: $vgpr0 137 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 138 ; GFX6: $m0 = S_MOV_B32 -1 139 ; GFX6: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 8, addrspace 3) 140 ; GFX6: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]] 141 %0:vgpr(p3) = COPY $vgpr0 142 %1:vgpr(<2 x s32>) = G_LOAD %0 :: (load 8, align 8, addrspace 3) 143 $vgpr0_vgpr1 = COPY %1 144 145... 146 147--- 148 149name: load_local_v2s32_align4 150legalized: true 151regBankSelected: true 152tracksRegLiveness: true 153 154body: | 155 bb.0: 156 liveins: $vgpr0 157 158 ; GFX7-LABEL: name: load_local_v2s32_align4 159 ; GFX7: liveins: $vgpr0 160 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 161 ; GFX7: $m0 = S_MOV_B32 -1 162 ; GFX7: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 [[COPY]], 0, 1, 0, implicit $m0, implicit $exec :: (load 8, align 4, addrspace 3) 163 ; GFX7: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]] 164 ; GFX9-LABEL: name: load_local_v2s32_align4 165 ; GFX9: liveins: $vgpr0 166 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 167 ; GFX9: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load 8, align 4, addrspace 3) 168 ; GFX9: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]] 169 ; GFX6-LABEL: name: load_local_v2s32_align4 170 ; GFX6: liveins: $vgpr0 171 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 172 ; GFX6: $m0 = S_MOV_B32 -1 173 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(<2 x s32>) = G_LOAD [[COPY]](p3) :: (load 8, align 4, addrspace 3) 174 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](<2 x s32>) 175 %0:vgpr(p3) = COPY $vgpr0 176 %1:vgpr(<2 x s32>) = G_LOAD %0 :: (load 8, align 4, addrspace 3) 177 $vgpr0_vgpr1 = COPY %1 178 179... 180 181--- 182 183name: load_local_s64 184legalized: true 185regBankSelected: true 186tracksRegLiveness: true 187 188body: | 189 bb.0: 190 liveins: $vgpr0 191 192 ; GFX7-LABEL: name: load_local_s64 193 ; GFX7: liveins: $vgpr0 194 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 195 ; GFX7: $m0 = S_MOV_B32 -1 196 ; GFX7: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 8, addrspace 3) 197 ; GFX7: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]] 198 ; GFX9-LABEL: name: load_local_s64 199 ; GFX9: liveins: $vgpr0 200 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 201 ; GFX9: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 8, addrspace 3) 202 ; GFX9: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]] 203 ; GFX6-LABEL: name: load_local_s64 204 ; GFX6: liveins: $vgpr0 205 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 206 ; GFX6: $m0 = S_MOV_B32 -1 207 ; GFX6: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 8, addrspace 3) 208 ; GFX6: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]] 209 %0:vgpr(p3) = COPY $vgpr0 210 %1:vgpr(s64) = G_LOAD %0 :: (load 8, align 8, addrspace 3) 211 $vgpr0_vgpr1 = COPY %1 212 213... 214 215--- 216 217name: load_local_s64_align4 218legalized: true 219regBankSelected: true 220tracksRegLiveness: true 221 222body: | 223 bb.0: 224 liveins: $vgpr0 225 226 ; GFX7-LABEL: name: load_local_s64_align4 227 ; GFX7: liveins: $vgpr0 228 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 229 ; GFX7: $m0 = S_MOV_B32 -1 230 ; GFX7: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 [[COPY]], 0, 1, 0, implicit $m0, implicit $exec :: (load 8, align 4, addrspace 3) 231 ; GFX7: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]] 232 ; GFX9-LABEL: name: load_local_s64_align4 233 ; GFX9: liveins: $vgpr0 234 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 235 ; GFX9: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load 8, align 4, addrspace 3) 236 ; GFX9: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]] 237 ; GFX6-LABEL: name: load_local_s64_align4 238 ; GFX6: liveins: $vgpr0 239 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 240 ; GFX6: $m0 = S_MOV_B32 -1 241 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(s64) = G_LOAD [[COPY]](p3) :: (load 8, align 4, addrspace 3) 242 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](s64) 243 %0:vgpr(p3) = COPY $vgpr0 244 %1:vgpr(s64) = G_LOAD %0 :: (load 8, align 4, addrspace 3) 245 $vgpr0_vgpr1 = COPY %1 246 247... 248 249--- 250 251name: load_local_p3_from_4 252legalized: true 253regBankSelected: true 254tracksRegLiveness: true 255 256body: | 257 bb.0: 258 liveins: $vgpr0 259 260 ; GFX7-LABEL: name: load_local_p3_from_4 261 ; GFX7: liveins: $vgpr0 262 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 263 ; GFX7: $m0 = S_MOV_B32 -1 264 ; GFX7: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 4, addrspace 3) 265 ; GFX7: $vgpr0 = COPY [[DS_READ_B32_]] 266 ; GFX9-LABEL: name: load_local_p3_from_4 267 ; GFX9: liveins: $vgpr0 268 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 269 ; GFX9: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 4, addrspace 3) 270 ; GFX9: $vgpr0 = COPY [[DS_READ_B32_gfx9_]] 271 ; GFX6-LABEL: name: load_local_p3_from_4 272 ; GFX6: liveins: $vgpr0 273 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 274 ; GFX6: $m0 = S_MOV_B32 -1 275 ; GFX6: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 4, addrspace 3) 276 ; GFX6: $vgpr0 = COPY [[DS_READ_B32_]] 277 %0:vgpr(p3) = COPY $vgpr0 278 %1:vgpr(p3) = G_LOAD %0 :: (load 4, align 4, addrspace 3) 279 $vgpr0 = COPY %1 280 281... 282 283--- 284 285name: load_local_p5_from_4 286legalized: true 287regBankSelected: true 288tracksRegLiveness: true 289 290body: | 291 bb.0: 292 liveins: $vgpr0 293 294 ; GFX7-LABEL: name: load_local_p5_from_4 295 ; GFX7: liveins: $vgpr0 296 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 297 ; GFX7: $m0 = S_MOV_B32 -1 298 ; GFX7: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 4, addrspace 3) 299 ; GFX7: $vgpr0 = COPY [[DS_READ_B32_]] 300 ; GFX9-LABEL: name: load_local_p5_from_4 301 ; GFX9: liveins: $vgpr0 302 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 303 ; GFX9: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 4, addrspace 3) 304 ; GFX9: $vgpr0 = COPY [[DS_READ_B32_gfx9_]] 305 ; GFX6-LABEL: name: load_local_p5_from_4 306 ; GFX6: liveins: $vgpr0 307 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 308 ; GFX6: $m0 = S_MOV_B32 -1 309 ; GFX6: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 4, addrspace 3) 310 ; GFX6: $vgpr0 = COPY [[DS_READ_B32_]] 311 %0:vgpr(p3) = COPY $vgpr0 312 %1:vgpr(p3) = G_LOAD %0 :: (load 4, align 4, addrspace 3) 313 $vgpr0 = COPY %1 314 315... 316 317--- 318 319name: load_local_p1_align8 320legalized: true 321regBankSelected: true 322tracksRegLiveness: true 323 324body: | 325 bb.0: 326 liveins: $vgpr0 327 328 ; GFX7-LABEL: name: load_local_p1_align8 329 ; GFX7: liveins: $vgpr0 330 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 331 ; GFX7: $m0 = S_MOV_B32 -1 332 ; GFX7: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 8, addrspace 3) 333 ; GFX7: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]] 334 ; GFX9-LABEL: name: load_local_p1_align8 335 ; GFX9: liveins: $vgpr0 336 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 337 ; GFX9: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 8, addrspace 3) 338 ; GFX9: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]] 339 ; GFX6-LABEL: name: load_local_p1_align8 340 ; GFX6: liveins: $vgpr0 341 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 342 ; GFX6: $m0 = S_MOV_B32 -1 343 ; GFX6: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 8, addrspace 3) 344 ; GFX6: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]] 345 %0:vgpr(p3) = COPY $vgpr0 346 %1:vgpr(p1) = G_LOAD %0 :: (load 8, align 8, addrspace 3) 347 $vgpr0_vgpr1 = COPY %1 348 349... 350 351--- 352 353name: load_local_p1_align4 354legalized: true 355regBankSelected: true 356tracksRegLiveness: true 357 358body: | 359 bb.0: 360 liveins: $vgpr0 361 362 ; GFX7-LABEL: name: load_local_p1_align4 363 ; GFX7: liveins: $vgpr0 364 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 365 ; GFX7: $m0 = S_MOV_B32 -1 366 ; GFX7: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 [[COPY]], 0, 1, 0, implicit $m0, implicit $exec :: (load 8, align 4, addrspace 3) 367 ; GFX7: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]] 368 ; GFX9-LABEL: name: load_local_p1_align4 369 ; GFX9: liveins: $vgpr0 370 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 371 ; GFX9: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load 8, align 4, addrspace 3) 372 ; GFX9: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]] 373 ; GFX6-LABEL: name: load_local_p1_align4 374 ; GFX6: liveins: $vgpr0 375 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 376 ; GFX6: $m0 = S_MOV_B32 -1 377 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p3) :: (load 8, align 4, addrspace 3) 378 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](p1) 379 %0:vgpr(p3) = COPY $vgpr0 380 %1:vgpr(p1) = G_LOAD %0 :: (load 8, align 4, addrspace 3) 381 $vgpr0_vgpr1 = COPY %1 382 383... 384 385--- 386 387name: load_local_p999_from_8 388legalized: true 389regBankSelected: true 390tracksRegLiveness: true 391 392body: | 393 bb.0: 394 liveins: $vgpr0 395 396 ; GFX7-LABEL: name: load_local_p999_from_8 397 ; GFX7: liveins: $vgpr0 398 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 399 ; GFX7: $m0 = S_MOV_B32 -1 400 ; GFX7: [[LOAD:%[0-9]+]]:vreg_64(p999) = G_LOAD [[COPY]](p3) :: (load 8, addrspace 3) 401 ; GFX7: $vgpr0_vgpr1 = COPY [[LOAD]](p999) 402 ; GFX9-LABEL: name: load_local_p999_from_8 403 ; GFX9: liveins: $vgpr0 404 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 405 ; GFX9: [[LOAD:%[0-9]+]]:vreg_64(p999) = G_LOAD [[COPY]](p3) :: (load 8, addrspace 3) 406 ; GFX9: $vgpr0_vgpr1 = COPY [[LOAD]](p999) 407 ; GFX6-LABEL: name: load_local_p999_from_8 408 ; GFX6: liveins: $vgpr0 409 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 410 ; GFX6: $m0 = S_MOV_B32 -1 411 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(p999) = G_LOAD [[COPY]](p3) :: (load 8, addrspace 3) 412 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](p999) 413 %0:vgpr(p3) = COPY $vgpr0 414 %1:vgpr(p999) = G_LOAD %0 :: (load 8, align 8, addrspace 3) 415 $vgpr0_vgpr1 = COPY %1 416 417... 418 419--- 420 421name: load_local_v2p3 422legalized: true 423regBankSelected: true 424tracksRegLiveness: true 425 426body: | 427 bb.0: 428 liveins: $vgpr0 429 430 ; GFX7-LABEL: name: load_local_v2p3 431 ; GFX7: liveins: $vgpr0 432 ; GFX7: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 433 ; GFX7: $m0 = S_MOV_B32 -1 434 ; GFX7: [[LOAD:%[0-9]+]]:vreg_64(<2 x p3>) = G_LOAD [[COPY]](p3) :: (load 8, addrspace 3) 435 ; GFX7: $vgpr0_vgpr1 = COPY [[LOAD]](<2 x p3>) 436 ; GFX9-LABEL: name: load_local_v2p3 437 ; GFX9: liveins: $vgpr0 438 ; GFX9: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 439 ; GFX9: [[LOAD:%[0-9]+]]:vreg_64(<2 x p3>) = G_LOAD [[COPY]](p3) :: (load 8, addrspace 3) 440 ; GFX9: $vgpr0_vgpr1 = COPY [[LOAD]](<2 x p3>) 441 ; GFX6-LABEL: name: load_local_v2p3 442 ; GFX6: liveins: $vgpr0 443 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 444 ; GFX6: $m0 = S_MOV_B32 -1 445 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(<2 x p3>) = G_LOAD [[COPY]](p3) :: (load 8, addrspace 3) 446 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](<2 x p3>) 447 %0:vgpr(p3) = COPY $vgpr0 448 %1:vgpr(<2 x p3>) = G_LOAD %0 :: (load 8, align 8, addrspace 3) 449 $vgpr0_vgpr1 = COPY %1 450 451... 452 453--- 454 455name: load_local_v2s16 456legalized: true 457regBankSelected: true 458tracksRegLiveness: true 459 460body: | 461 bb.0: 462 liveins: $vgpr0 463 464 ; GFX7-LABEL: name: load_local_v2s16 465 ; GFX7: liveins: $vgpr0 466 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 467 ; GFX7: $m0 = S_MOV_B32 -1 468 ; GFX7: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 4, addrspace 3) 469 ; GFX7: $vgpr0 = COPY [[DS_READ_B32_]] 470 ; GFX9-LABEL: name: load_local_v2s16 471 ; GFX9: liveins: $vgpr0 472 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 473 ; GFX9: [[DS_READ_B32_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_B32_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 4, addrspace 3) 474 ; GFX9: $vgpr0 = COPY [[DS_READ_B32_gfx9_]] 475 ; GFX6-LABEL: name: load_local_v2s16 476 ; GFX6: liveins: $vgpr0 477 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 478 ; GFX6: $m0 = S_MOV_B32 -1 479 ; GFX6: [[DS_READ_B32_:%[0-9]+]]:vgpr_32 = DS_READ_B32 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 4, addrspace 3) 480 ; GFX6: $vgpr0 = COPY [[DS_READ_B32_]] 481 %0:vgpr(p3) = COPY $vgpr0 482 %1:vgpr(<2 x s16>) = G_LOAD %0 :: (load 4, align 4, addrspace 3) 483 $vgpr0 = COPY %1 484 485... 486 487--- 488 489name: load_local_v4s16 490legalized: true 491regBankSelected: true 492tracksRegLiveness: true 493 494body: | 495 bb.0: 496 liveins: $vgpr0 497 498 ; GFX7-LABEL: name: load_local_v4s16 499 ; GFX7: liveins: $vgpr0 500 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 501 ; GFX7: $m0 = S_MOV_B32 -1 502 ; GFX7: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 8, addrspace 3) 503 ; GFX7: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]] 504 ; GFX9-LABEL: name: load_local_v4s16 505 ; GFX9: liveins: $vgpr0 506 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 507 ; GFX9: [[DS_READ_B64_gfx9_:%[0-9]+]]:vreg_64 = DS_READ_B64_gfx9 [[COPY]], 0, 0, implicit $exec :: (load 8, addrspace 3) 508 ; GFX9: $vgpr0_vgpr1 = COPY [[DS_READ_B64_gfx9_]] 509 ; GFX6-LABEL: name: load_local_v4s16 510 ; GFX6: liveins: $vgpr0 511 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 512 ; GFX6: $m0 = S_MOV_B32 -1 513 ; GFX6: [[DS_READ_B64_:%[0-9]+]]:vreg_64 = DS_READ_B64 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load 8, addrspace 3) 514 ; GFX6: $vgpr0_vgpr1 = COPY [[DS_READ_B64_]] 515 %0:vgpr(p3) = COPY $vgpr0 516 %1:vgpr(<4 x s16>) = G_LOAD %0 :: (load 8, align 8, addrspace 3) 517 $vgpr0_vgpr1 = COPY %1 518 519... 520 521# --- 522 523# name: load_local_v6s16 524# legalized: true 525# regBankSelected: true 526# tracksRegLiveness: true 527# machineFunctionInfo: 528# scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3 529# stackPtrOffsetReg: $sgpr32 530 531# body: | 532# bb.0: 533# liveins: $vgpr0 534 535# %0:vgpr(p3) = COPY $vgpr0 536# %1:vgpr(<6 x s16>) = G_LOAD %0 :: (load 12, align 4, addrspace 3) 537# $vgpr0_vgpr1_vgpr2 = COPY %1 538 539# ... 540 541################################################################################ 542### Stress addressing modes 543################################################################################ 544 545--- 546 547name: load_local_s32_from_1_gep_65535 548legalized: true 549regBankSelected: true 550tracksRegLiveness: true 551 552body: | 553 bb.0: 554 liveins: $vgpr0 555 556 ; GFX7-LABEL: name: load_local_s32_from_1_gep_65535 557 ; GFX7: liveins: $vgpr0 558 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 559 ; GFX7: $m0 = S_MOV_B32 -1 560 ; GFX7: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[COPY]], 65535, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 561 ; GFX7: $vgpr0 = COPY [[DS_READ_U8_]] 562 ; GFX9-LABEL: name: load_local_s32_from_1_gep_65535 563 ; GFX9: liveins: $vgpr0 564 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 565 ; GFX9: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[COPY]], 65535, 0, implicit $exec :: (load 1, addrspace 3) 566 ; GFX9: $vgpr0 = COPY [[DS_READ_U8_gfx9_]] 567 ; GFX6-LABEL: name: load_local_s32_from_1_gep_65535 568 ; GFX6: liveins: $vgpr0 569 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 570 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65535, implicit $exec 571 ; GFX6: %2:vgpr_32, dead %4:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec 572 ; GFX6: $m0 = S_MOV_B32 -1 573 ; GFX6: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 %2, 0, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 574 ; GFX6: $vgpr0 = COPY [[DS_READ_U8_]] 575 %0:vgpr(p3) = COPY $vgpr0 576 %1:vgpr(s32) = G_CONSTANT i32 65535 577 %2:vgpr(p3) = G_PTR_ADD %0, %1 578 %3:vgpr(s32) = G_LOAD %2 :: (load 1, align 1, addrspace 3) 579 $vgpr0 = COPY %3 580 581... 582 583--- 584 585name: load_local_s32_from_1_gep_65535_known_bits_base_address 586legalized: true 587regBankSelected: true 588tracksRegLiveness: true 589 590body: | 591 bb.0: 592 liveins: $vgpr0 593 594 ; GFX7-LABEL: name: load_local_s32_from_1_gep_65535_known_bits_base_address 595 ; GFX7: liveins: $vgpr0 596 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 597 ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec 598 ; GFX7: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec 599 ; GFX7: $m0 = S_MOV_B32 -1 600 ; GFX7: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[V_AND_B32_e64_]], 65535, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 601 ; GFX7: $vgpr0 = COPY [[DS_READ_U8_]] 602 ; GFX9-LABEL: name: load_local_s32_from_1_gep_65535_known_bits_base_address 603 ; GFX9: liveins: $vgpr0 604 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 605 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec 606 ; GFX9: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec 607 ; GFX9: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[V_AND_B32_e64_]], 65535, 0, implicit $exec :: (load 1, addrspace 3) 608 ; GFX9: $vgpr0 = COPY [[DS_READ_U8_gfx9_]] 609 ; GFX6-LABEL: name: load_local_s32_from_1_gep_65535_known_bits_base_address 610 ; GFX6: liveins: $vgpr0 611 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 612 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2147483647, implicit $exec 613 ; GFX6: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 [[COPY]], [[V_MOV_B32_e32_]], implicit $exec 614 ; GFX6: $m0 = S_MOV_B32 -1 615 ; GFX6: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 [[V_AND_B32_e64_]], 65535, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 616 ; GFX6: $vgpr0 = COPY [[DS_READ_U8_]] 617 %0:vgpr(s32) = COPY $vgpr0 618 %1:vgpr(s32) = G_CONSTANT i32 2147483647 619 %2:vgpr(s32) = G_AND %0, %1 620 %3:vgpr(p3) = G_INTTOPTR %2 621 %4:vgpr(s32) = G_CONSTANT i32 65535 622 %5:vgpr(p3) = G_PTR_ADD %3, %4 623 %6:vgpr(s32) = G_LOAD %5 :: (load 1, align 1, addrspace 3) 624 $vgpr0 = COPY %6 625 626... 627 628--- 629 630name: load_local_s32_from_1_gep_65536 631legalized: true 632regBankSelected: true 633tracksRegLiveness: true 634 635body: | 636 bb.0: 637 liveins: $vgpr0 638 639 ; GFX7-LABEL: name: load_local_s32_from_1_gep_65536 640 ; GFX7: liveins: $vgpr0 641 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 642 ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65536, implicit $exec 643 ; GFX7: %2:vgpr_32, dead %4:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec 644 ; GFX7: $m0 = S_MOV_B32 -1 645 ; GFX7: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 %2, 0, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 646 ; GFX7: $vgpr0 = COPY [[DS_READ_U8_]] 647 ; GFX9-LABEL: name: load_local_s32_from_1_gep_65536 648 ; GFX9: liveins: $vgpr0 649 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 650 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65536, implicit $exec 651 ; GFX9: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec 652 ; GFX9: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[V_ADD_U32_e64_]], 0, 0, implicit $exec :: (load 1, addrspace 3) 653 ; GFX9: $vgpr0 = COPY [[DS_READ_U8_gfx9_]] 654 ; GFX6-LABEL: name: load_local_s32_from_1_gep_65536 655 ; GFX6: liveins: $vgpr0 656 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 657 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 65536, implicit $exec 658 ; GFX6: %2:vgpr_32, dead %4:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec 659 ; GFX6: $m0 = S_MOV_B32 -1 660 ; GFX6: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 %2, 0, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 661 ; GFX6: $vgpr0 = COPY [[DS_READ_U8_]] 662 %0:vgpr(p3) = COPY $vgpr0 663 %1:vgpr(s32) = G_CONSTANT i32 65536 664 %2:vgpr(p3) = G_PTR_ADD %0, %1 665 %3:vgpr(s32) = G_LOAD %2 :: (load 1, align 1, addrspace 3) 666 $vgpr0 = COPY %3 667 668... 669 670--- 671 672name: load_local_s32_from_1_gep_m1 673legalized: true 674regBankSelected: true 675tracksRegLiveness: true 676 677body: | 678 bb.0: 679 liveins: $vgpr0 680 681 ; GFX7-LABEL: name: load_local_s32_from_1_gep_m1 682 ; GFX7: liveins: $vgpr0 683 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 684 ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec 685 ; GFX7: %2:vgpr_32, dead %4:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec 686 ; GFX7: $m0 = S_MOV_B32 -1 687 ; GFX7: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 %2, 0, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 688 ; GFX7: $vgpr0 = COPY [[DS_READ_U8_]] 689 ; GFX9-LABEL: name: load_local_s32_from_1_gep_m1 690 ; GFX9: liveins: $vgpr0 691 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 692 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec 693 ; GFX9: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec 694 ; GFX9: [[DS_READ_U8_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U8_gfx9 [[V_ADD_U32_e64_]], 0, 0, implicit $exec :: (load 1, addrspace 3) 695 ; GFX9: $vgpr0 = COPY [[DS_READ_U8_gfx9_]] 696 ; GFX6-LABEL: name: load_local_s32_from_1_gep_m1 697 ; GFX6: liveins: $vgpr0 698 ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 699 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec 700 ; GFX6: %2:vgpr_32, dead %4:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec 701 ; GFX6: $m0 = S_MOV_B32 -1 702 ; GFX6: [[DS_READ_U8_:%[0-9]+]]:vgpr_32 = DS_READ_U8 %2, 0, 0, implicit $m0, implicit $exec :: (load 1, addrspace 3) 703 ; GFX6: $vgpr0 = COPY [[DS_READ_U8_]] 704 %0:vgpr(p3) = COPY $vgpr0 705 %1:vgpr(s32) = G_CONSTANT i32 -1 706 %2:vgpr(p3) = G_PTR_ADD %0, %1 707 %3:vgpr(s32) = G_LOAD %2 :: (load 1, align 1, addrspace 3) 708 $vgpr0 = COPY %3 709 710... 711 712--- 713 714name: load_local_s64_align4_from_1_gep_1016 715legalized: true 716regBankSelected: true 717tracksRegLiveness: true 718 719body: | 720 bb.0: 721 liveins: $vgpr0_vgpr1 722 723 ; GFX7-LABEL: name: load_local_s64_align4_from_1_gep_1016 724 ; GFX7: liveins: $vgpr0_vgpr1 725 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 726 ; GFX7: $m0 = S_MOV_B32 -1 727 ; GFX7: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 [[COPY]], 254, 255, 0, implicit $m0, implicit $exec :: (load 8, align 4, addrspace 3) 728 ; GFX7: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]] 729 ; GFX9-LABEL: name: load_local_s64_align4_from_1_gep_1016 730 ; GFX9: liveins: $vgpr0_vgpr1 731 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 732 ; GFX9: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[COPY]], 254, 255, 0, implicit $exec :: (load 8, align 4, addrspace 3) 733 ; GFX9: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]] 734 ; GFX6-LABEL: name: load_local_s64_align4_from_1_gep_1016 735 ; GFX6: liveins: $vgpr0_vgpr1 736 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 737 ; GFX6: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1016 738 ; GFX6: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY]], [[C]](s32) 739 ; GFX6: $m0 = S_MOV_B32 -1 740 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(s64) = G_LOAD [[PTR_ADD]](p3) :: (load 8, align 4, addrspace 3) 741 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](s64) 742 %0:vgpr(p3) = COPY $vgpr0 743 %1:vgpr(s32) = G_CONSTANT i32 1016 744 %2:vgpr(p3) = G_PTR_ADD %0, %1 745 %3:vgpr(s64) = G_LOAD %2 :: (load 8, align 4, addrspace 3) 746 $vgpr0_vgpr1 = COPY %3 747 748... 749 750--- 751 752name: load_local_s64_align4_from_1_gep_1020 753legalized: true 754regBankSelected: true 755tracksRegLiveness: true 756 757body: | 758 bb.0: 759 liveins: $vgpr0_vgpr1 760 761 ; GFX7-LABEL: name: load_local_s64_align4_from_1_gep_1020 762 ; GFX7: liveins: $vgpr0_vgpr1 763 ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 764 ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1020, implicit $exec 765 ; GFX7: %2:vgpr_32, dead %4:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec 766 ; GFX7: $m0 = S_MOV_B32 -1 767 ; GFX7: [[DS_READ2_B32_:%[0-9]+]]:vreg_64 = DS_READ2_B32 %2, 0, 1, 0, implicit $m0, implicit $exec :: (load 8, align 4, addrspace 3) 768 ; GFX7: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_]] 769 ; GFX9-LABEL: name: load_local_s64_align4_from_1_gep_1020 770 ; GFX9: liveins: $vgpr0_vgpr1 771 ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 772 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1020, implicit $exec 773 ; GFX9: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec 774 ; GFX9: [[DS_READ2_B32_gfx9_:%[0-9]+]]:vreg_64 = DS_READ2_B32_gfx9 [[V_ADD_U32_e64_]], 0, 1, 0, implicit $exec :: (load 8, align 4, addrspace 3) 775 ; GFX9: $vgpr0_vgpr1 = COPY [[DS_READ2_B32_gfx9_]] 776 ; GFX6-LABEL: name: load_local_s64_align4_from_1_gep_1020 777 ; GFX6: liveins: $vgpr0_vgpr1 778 ; GFX6: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0 779 ; GFX6: [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1020 780 ; GFX6: [[PTR_ADD:%[0-9]+]]:vgpr(p3) = G_PTR_ADD [[COPY]], [[C]](s32) 781 ; GFX6: $m0 = S_MOV_B32 -1 782 ; GFX6: [[LOAD:%[0-9]+]]:vreg_64(s64) = G_LOAD [[PTR_ADD]](p3) :: (load 8, align 4, addrspace 3) 783 ; GFX6: $vgpr0_vgpr1 = COPY [[LOAD]](s64) 784 %0:vgpr(p3) = COPY $vgpr0 785 %1:vgpr(s32) = G_CONSTANT i32 1020 786 %2:vgpr(p3) = G_PTR_ADD %0, %1 787 %3:vgpr(s64) = G_LOAD %2 :: (load 8, align 4, addrspace 3) 788 $vgpr0_vgpr1 = COPY %3 789 790... 791