354 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# 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 %s3# RUN: llc -amdgpu-global-isel-new-legality -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s4# RUN: llc -amdgpu-global-isel-new-legality -mtriple=amdgcn -mcpu=gfx1010 -mattr=+cumode -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s5# 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 %s6 7---8 9name: load_local_v4s32_align1610legalized: true11regBankSelected: true12tracksRegLiveness: true13 14body: |15 bb.0:16 liveins: $vgpr017 18 ; GFX7-LABEL: name: load_local_v4s32_align1619 ; GFX7: liveins: $vgpr020 ; GFX7-NEXT: {{ $}}21 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr022 ; GFX7-NEXT: $m0 = S_MOV_B32 -123 ; GFX7-NEXT: [[DS_READ_B128_:%[0-9]+]]:vreg_128 = DS_READ_B128 [[COPY]], 0, 0, implicit $m0, implicit $exec :: (load (<4 x s32>), addrspace 3)24 ; GFX7-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ_B128_]]25 ; GFX9-LABEL: name: load_local_v4s32_align1626 ; GFX9: liveins: $vgpr027 ; GFX9-NEXT: {{ $}}28 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr029 ; GFX9-NEXT: [[DS_READ_B128_gfx9_:%[0-9]+]]:vreg_128 = DS_READ_B128_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<4 x s32>), addrspace 3)30 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ_B128_gfx9_]]31 ; GFX10-LABEL: name: load_local_v4s32_align1632 ; GFX10: liveins: $vgpr033 ; GFX10-NEXT: {{ $}}34 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr035 ; GFX10-NEXT: [[DS_READ_B128_gfx9_:%[0-9]+]]:vreg_128 = DS_READ_B128_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<4 x s32>), addrspace 3)36 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ_B128_gfx9_]]37 ; GFX11-LABEL: name: load_local_v4s32_align1638 ; GFX11: liveins: $vgpr039 ; GFX11-NEXT: {{ $}}40 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr041 ; GFX11-NEXT: [[DS_READ_B128_gfx9_:%[0-9]+]]:vreg_128 = DS_READ_B128_gfx9 [[COPY]], 0, 0, implicit $exec :: (load (<4 x s32>), addrspace 3)42 ; GFX11-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ_B128_gfx9_]]43 %0:vgpr(p3) = COPY $vgpr044 %1:vgpr(<4 x s32>) = G_LOAD %0 :: (load (<4 x s32>), align 16, addrspace 3)45 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %146 47...48 49---50 51name: load_local_v4s32_align_852legalized: true53regBankSelected: true54tracksRegLiveness: true55 56body: |57 bb.0:58 liveins: $vgpr059 60 ; GFX7-LABEL: name: load_local_v4s32_align_861 ; GFX7: liveins: $vgpr062 ; GFX7-NEXT: {{ $}}63 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr064 ; GFX7-NEXT: $m0 = S_MOV_B32 -165 ; GFX7-NEXT: [[DS_READ2_B64_:%[0-9]+]]:vreg_128 = DS_READ2_B64 [[COPY]], 0, 1, 0, implicit $m0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)66 ; GFX7-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_]]67 ; GFX9-LABEL: name: load_local_v4s32_align_868 ; GFX9: liveins: $vgpr069 ; GFX9-NEXT: {{ $}}70 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr071 ; GFX9-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)72 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]73 ; GFX10-LABEL: name: load_local_v4s32_align_874 ; GFX10: liveins: $vgpr075 ; GFX10-NEXT: {{ $}}76 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr077 ; GFX10-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)78 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]79 ; GFX11-LABEL: name: load_local_v4s32_align_880 ; GFX11: liveins: $vgpr081 ; GFX11-NEXT: {{ $}}82 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr083 ; GFX11-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)84 ; GFX11-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]85 %0:vgpr(p3) = COPY $vgpr086 %1:vgpr(<4 x s32>) = G_LOAD %0 :: (load (<4 x s32>), align 8, addrspace 3)87 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %188 89...90 91---92 93name: load_local_v4s32_align_8_offset_16094legalized: true95regBankSelected: true96tracksRegLiveness: true97 98body: |99 bb.0:100 liveins: $vgpr0101 102 ; GFX7-LABEL: name: load_local_v4s32_align_8_offset_160103 ; GFX7: liveins: $vgpr0104 ; GFX7-NEXT: {{ $}}105 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0106 ; GFX7-NEXT: $m0 = S_MOV_B32 -1107 ; GFX7-NEXT: [[DS_READ2_B64_:%[0-9]+]]:vreg_128 = DS_READ2_B64 [[COPY]], 50, 51, 0, implicit $m0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)108 ; GFX7-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_]]109 ; GFX9-LABEL: name: load_local_v4s32_align_8_offset_160110 ; GFX9: liveins: $vgpr0111 ; GFX9-NEXT: {{ $}}112 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0113 ; GFX9-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 50, 51, 0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)114 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]115 ; GFX10-LABEL: name: load_local_v4s32_align_8_offset_160116 ; GFX10: liveins: $vgpr0117 ; GFX10-NEXT: {{ $}}118 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0119 ; GFX10-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 50, 51, 0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)120 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]121 ; GFX11-LABEL: name: load_local_v4s32_align_8_offset_160122 ; GFX11: liveins: $vgpr0123 ; GFX11-NEXT: {{ $}}124 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0125 ; GFX11-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 50, 51, 0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)126 ; GFX11-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]127 %0:vgpr(p3) = COPY $vgpr0128 %1:vgpr(s32) = G_CONSTANT i32 400129 %2:vgpr(p3) = G_PTR_ADD %0, %1130 %3:vgpr(<4 x s32>) = G_LOAD %2 :: (load (<4 x s32>), align 8, addrspace 3)131 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3132 133...134 135---136 137name: load_local_v4s32_align_8_offset_320138legalized: true139regBankSelected: true140tracksRegLiveness: true141 142body: |143 bb.0:144 liveins: $vgpr0145 146 ; GFX7-LABEL: name: load_local_v4s32_align_8_offset_320147 ; GFX7: liveins: $vgpr0148 ; GFX7-NEXT: {{ $}}149 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0150 ; GFX7-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4000, implicit $exec151 ; 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 $exec152 ; GFX7-NEXT: $m0 = S_MOV_B32 -1153 ; GFX7-NEXT: [[DS_READ2_B64_:%[0-9]+]]:vreg_128 = DS_READ2_B64 [[V_ADD_CO_U32_e64_]], 0, 1, 0, implicit $m0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)154 ; GFX7-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_]]155 ; GFX9-LABEL: name: load_local_v4s32_align_8_offset_320156 ; GFX9: liveins: $vgpr0157 ; GFX9-NEXT: {{ $}}158 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0159 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4000, implicit $exec160 ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec161 ; GFX9-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[V_ADD_U32_e64_]], 0, 1, 0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)162 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]163 ; GFX10-LABEL: name: load_local_v4s32_align_8_offset_320164 ; GFX10: liveins: $vgpr0165 ; GFX10-NEXT: {{ $}}166 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0167 ; GFX10-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4000, implicit $exec168 ; GFX10-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec169 ; GFX10-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[V_ADD_U32_e64_]], 0, 1, 0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)170 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]171 ; GFX11-LABEL: name: load_local_v4s32_align_8_offset_320172 ; GFX11: liveins: $vgpr0173 ; GFX11-NEXT: {{ $}}174 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0175 ; GFX11-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4000, implicit $exec176 ; GFX11-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec177 ; GFX11-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[V_ADD_U32_e64_]], 0, 1, 0, implicit $exec :: (load (<4 x s32>), align 8, addrspace 3)178 ; GFX11-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]179 %0:vgpr(p3) = COPY $vgpr0180 %1:vgpr(s32) = G_CONSTANT i32 4000181 %2:vgpr(p3) = G_PTR_ADD %0, %1182 %3:vgpr(<4 x s32>) = G_LOAD %2 :: (load (<4 x s32>), align 8, addrspace 3)183 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3184 185...186 187---188 189name: load_local_v2s64190legalized: true191regBankSelected: true192tracksRegLiveness: true193 194body: |195 bb.0:196 liveins: $vgpr0197 198 ; GFX7-LABEL: name: load_local_v2s64199 ; GFX7: liveins: $vgpr0200 ; GFX7-NEXT: {{ $}}201 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0202 ; GFX7-NEXT: $m0 = S_MOV_B32 -1203 ; GFX7-NEXT: [[DS_READ2_B64_:%[0-9]+]]:vreg_128 = DS_READ2_B64 [[COPY]], 0, 1, 0, implicit $m0, implicit $exec :: (load (<2 x s64>), align 8, addrspace 3)204 ; GFX7-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_]]205 ; GFX9-LABEL: name: load_local_v2s64206 ; GFX9: liveins: $vgpr0207 ; GFX9-NEXT: {{ $}}208 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0209 ; GFX9-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<2 x s64>), align 8, addrspace 3)210 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]211 ; GFX10-LABEL: name: load_local_v2s64212 ; GFX10: liveins: $vgpr0213 ; GFX10-NEXT: {{ $}}214 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0215 ; GFX10-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<2 x s64>), align 8, addrspace 3)216 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]217 ; GFX11-LABEL: name: load_local_v2s64218 ; GFX11: liveins: $vgpr0219 ; GFX11-NEXT: {{ $}}220 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0221 ; GFX11-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<2 x s64>), align 8, addrspace 3)222 ; GFX11-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]223 %0:vgpr(p3) = COPY $vgpr0224 %1:vgpr(<2 x s64>) = G_LOAD %0 :: (load (<2 x s64>), align 8, addrspace 3)225 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1226 227...228 229---230 231name: load_local_v2p1232legalized: true233regBankSelected: true234tracksRegLiveness: true235 236body: |237 bb.0:238 liveins: $vgpr0239 240 ; GFX7-LABEL: name: load_local_v2p1241 ; GFX7: liveins: $vgpr0242 ; GFX7-NEXT: {{ $}}243 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0244 ; GFX7-NEXT: $m0 = S_MOV_B32 -1245 ; GFX7-NEXT: [[LOAD:%[0-9]+]]:vreg_128(<2 x p1>) = G_LOAD [[COPY]](p3) :: (load (<2 x p1>), align 8, addrspace 3)246 ; GFX7-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[LOAD]](<2 x p1>)247 ; GFX9-LABEL: name: load_local_v2p1248 ; GFX9: liveins: $vgpr0249 ; GFX9-NEXT: {{ $}}250 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0251 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vreg_128(<2 x p1>) = G_LOAD [[COPY]](p3) :: (load (<2 x p1>), align 8, addrspace 3)252 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[LOAD]](<2 x p1>)253 ; GFX10-LABEL: name: load_local_v2p1254 ; GFX10: liveins: $vgpr0255 ; GFX10-NEXT: {{ $}}256 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0257 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vreg_128(<2 x p1>) = G_LOAD [[COPY]](p3) :: (load (<2 x p1>), align 8, addrspace 3)258 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[LOAD]](<2 x p1>)259 ; GFX11-LABEL: name: load_local_v2p1260 ; GFX11: liveins: $vgpr0261 ; GFX11-NEXT: {{ $}}262 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0263 ; GFX11-NEXT: [[LOAD:%[0-9]+]]:vreg_128(<2 x p1>) = G_LOAD [[COPY]](p3) :: (load (<2 x p1>), align 8, addrspace 3)264 ; GFX11-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[LOAD]](<2 x p1>)265 %0:vgpr(p3) = COPY $vgpr0266 %1:vgpr(<2 x p1>) = G_LOAD %0 :: (load (<2 x p1>), align 8, addrspace 3)267 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1268 269...270 271---272 273name: load_local_s128274legalized: true275regBankSelected: true276tracksRegLiveness: true277 278body: |279 bb.0:280 liveins: $vgpr0281 282 ; GFX7-LABEL: name: load_local_s128283 ; GFX7: liveins: $vgpr0284 ; GFX7-NEXT: {{ $}}285 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0286 ; GFX7-NEXT: $m0 = S_MOV_B32 -1287 ; GFX7-NEXT: [[LOAD:%[0-9]+]]:vreg_128(s128) = G_LOAD [[COPY]](p3) :: (load (s128), align 8, addrspace 3)288 ; GFX7-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[LOAD]](s128)289 ; GFX9-LABEL: name: load_local_s128290 ; GFX9: liveins: $vgpr0291 ; GFX9-NEXT: {{ $}}292 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0293 ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vreg_128(s128) = G_LOAD [[COPY]](p3) :: (load (s128), align 8, addrspace 3)294 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[LOAD]](s128)295 ; GFX10-LABEL: name: load_local_s128296 ; GFX10: liveins: $vgpr0297 ; GFX10-NEXT: {{ $}}298 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0299 ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vreg_128(s128) = G_LOAD [[COPY]](p3) :: (load (s128), align 8, addrspace 3)300 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[LOAD]](s128)301 ; GFX11-LABEL: name: load_local_s128302 ; GFX11: liveins: $vgpr0303 ; GFX11-NEXT: {{ $}}304 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0305 ; GFX11-NEXT: [[LOAD:%[0-9]+]]:vreg_128(s128) = G_LOAD [[COPY]](p3) :: (load (s128), align 8, addrspace 3)306 ; GFX11-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[LOAD]](s128)307 %0:vgpr(p3) = COPY $vgpr0308 %1:vgpr(s128) = G_LOAD %0 :: (load (s128), align 8, addrspace 3)309 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1310 311...312 313---314 315name: load_local_v8s16316legalized: true317regBankSelected: true318tracksRegLiveness: true319 320body: |321 bb.0:322 liveins: $vgpr0323 324 ; GFX7-LABEL: name: load_local_v8s16325 ; GFX7: liveins: $vgpr0326 ; GFX7-NEXT: {{ $}}327 ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0328 ; GFX7-NEXT: $m0 = S_MOV_B32 -1329 ; GFX7-NEXT: [[DS_READ2_B64_:%[0-9]+]]:vreg_128 = DS_READ2_B64 [[COPY]], 0, 1, 0, implicit $m0, implicit $exec :: (load (<8 x s16>), align 8, addrspace 3)330 ; GFX7-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_]]331 ; GFX9-LABEL: name: load_local_v8s16332 ; GFX9: liveins: $vgpr0333 ; GFX9-NEXT: {{ $}}334 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0335 ; GFX9-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<8 x s16>), align 8, addrspace 3)336 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]337 ; GFX10-LABEL: name: load_local_v8s16338 ; GFX10: liveins: $vgpr0339 ; GFX10-NEXT: {{ $}}340 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0341 ; GFX10-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<8 x s16>), align 8, addrspace 3)342 ; GFX10-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]343 ; GFX11-LABEL: name: load_local_v8s16344 ; GFX11: liveins: $vgpr0345 ; GFX11-NEXT: {{ $}}346 ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0347 ; GFX11-NEXT: [[DS_READ2_B64_gfx9_:%[0-9]+]]:vreg_128 = DS_READ2_B64_gfx9 [[COPY]], 0, 1, 0, implicit $exec :: (load (<8 x s16>), align 8, addrspace 3)348 ; GFX11-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DS_READ2_B64_gfx9_]]349 %0:vgpr(p3) = COPY $vgpr0350 %1:vgpr(<8 x s16>) = G_LOAD %0 :: (load (<8 x s16>), align 8, addrspace 3)351 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1352 353...354