508 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=fiji -run-pass=legalizer -global-isel-abort=2 -pass-remarks-missed='gisel*' -o - 2> %t %s | FileCheck -check-prefix=GFX8 %s3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -global-isel-abort=2 -o - %s | FileCheck -check-prefix=GFX6 %s4# RUN: FileCheck -check-prefixes=ERR %s < %t5 6# FIXME: Run with and without unaligned access turned on7 8# ERR-NOT: remark9# ERR: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s16>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s8>), addrspace 1) (in function: test_zextload_global_v2i16_from_2)10# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s32>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s8>), addrspace 1) (in function: test_zextload_global_v2i32_from_2)11# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s32>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s16>), addrspace 1) (in function: test_zextload_global_v2i32_from_4)12# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s64>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s16>), addrspace 1) (in function: test_zextload_global_v2i64_from_4)13# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(<2 x s64>) = G_ZEXTLOAD %0:_(p1) :: (load (<2 x s32>), addrspace 1) (in function: test_zextload_global_v2i64_from_8)14# ERR-NEXT: remark: <unknown>:0:0: unable to legalize instruction: %1:_(s128) = G_ZEXTLOAD %0:_(p1) :: (load (s64), addrspace 1) (in function: test_zextload_global_s128_8)15# ERR-NOT: remark16 17---18name: test_zextload_global_i32_i119body: |20 bb.0:21 liveins: $vgpr0_vgpr122 23 ; GFX8-LABEL: name: test_zextload_global_i32_i124 ; GFX8: liveins: $vgpr0_vgpr125 ; GFX8-NEXT: {{ $}}26 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr127 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)28 ; GFX8-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 129 ; GFX8-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)30 ;31 ; GFX6-LABEL: name: test_zextload_global_i32_i132 ; GFX6: liveins: $vgpr0_vgpr133 ; GFX6-NEXT: {{ $}}34 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr135 ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)36 ; GFX6-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 137 ; GFX6-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)38 %0:_(p1) = COPY $vgpr0_vgpr139 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s1), addrspace 1)40 $vgpr0 = COPY %141...42 43---44name: test_zextload_global_i32_i745body: |46 bb.0:47 liveins: $vgpr0_vgpr148 49 ; GFX8-LABEL: name: test_zextload_global_i32_i750 ; GFX8: liveins: $vgpr0_vgpr151 ; GFX8-NEXT: {{ $}}52 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr153 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)54 ; GFX8-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 755 ; GFX8-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)56 ;57 ; GFX6-LABEL: name: test_zextload_global_i32_i758 ; GFX6: liveins: $vgpr0_vgpr159 ; GFX6-NEXT: {{ $}}60 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr161 ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1)62 ; GFX6-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 763 ; GFX6-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)64 %0:_(p1) = COPY $vgpr0_vgpr165 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s7), addrspace 1)66 $vgpr0 = COPY %167...68 69---70name: test_zextload_global_i32_i2471body: |72 bb.0:73 liveins: $vgpr0_vgpr174 75 ; GFX8-LABEL: name: test_zextload_global_i32_i2476 ; GFX8: liveins: $vgpr0_vgpr177 ; GFX8-NEXT: {{ $}}78 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr179 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 4, addrspace 1)80 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 281 ; GFX8-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)82 ; GFX8-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 2, align 2, addrspace 1)83 ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1684 ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)85 ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]86 ; GFX8-NEXT: $vgpr0 = COPY [[OR]](s32)87 ;88 ; GFX6-LABEL: name: test_zextload_global_i32_i2489 ; GFX6: liveins: $vgpr0_vgpr190 ; GFX6-NEXT: {{ $}}91 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr192 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 4, addrspace 1)93 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 294 ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)95 ; GFX6-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 2, align 2, addrspace 1)96 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1697 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)98 ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]99 ; GFX6-NEXT: $vgpr0 = COPY [[OR]](s32)100 %0:_(p1) = COPY $vgpr0_vgpr1101 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s24), addrspace 1)102 $vgpr0 = COPY %1103...104 105---106name: test_zextload_global_i32_i30107body: |108 bb.0:109 liveins: $vgpr0_vgpr1110 111 ; GFX8-LABEL: name: test_zextload_global_i32_i30112 ; GFX8: liveins: $vgpr0_vgpr1113 ; GFX8-NEXT: {{ $}}114 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1115 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)116 ; GFX8-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 30117 ; GFX8-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)118 ;119 ; GFX6-LABEL: name: test_zextload_global_i32_i30120 ; GFX6: liveins: $vgpr0_vgpr1121 ; GFX6-NEXT: {{ $}}122 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1123 ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)124 ; GFX6-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 30125 ; GFX6-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)126 %0:_(p1) = COPY $vgpr0_vgpr1127 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s30), addrspace 1)128 $vgpr0 = COPY %1129...130 131---132name: test_zextload_global_i32_i31133body: |134 bb.0:135 liveins: $vgpr0_vgpr1136 137 ; GFX8-LABEL: name: test_zextload_global_i32_i31138 ; GFX8: liveins: $vgpr0_vgpr1139 ; GFX8-NEXT: {{ $}}140 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1141 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)142 ; GFX8-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 31143 ; GFX8-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)144 ;145 ; GFX6-LABEL: name: test_zextload_global_i32_i31146 ; GFX6: liveins: $vgpr0_vgpr1147 ; GFX6-NEXT: {{ $}}148 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1149 ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)150 ; GFX6-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s32) = G_ASSERT_ZEXT [[LOAD]], 31151 ; GFX6-NEXT: $vgpr0 = COPY [[ASSERT_ZEXT]](s32)152 %0:_(p1) = COPY $vgpr0_vgpr1153 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s31), addrspace 1)154 $vgpr0 = COPY %1155...156 157---158name: test_zextload_global_i32_i8159body: |160 bb.0:161 liveins: $vgpr0_vgpr1162 163 ; GFX8-LABEL: name: test_zextload_global_i32_i8164 ; GFX8: liveins: $vgpr0_vgpr1165 ; GFX8-NEXT: {{ $}}166 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1167 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)168 ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)169 ;170 ; GFX6-LABEL: name: test_zextload_global_i32_i8171 ; GFX6: liveins: $vgpr0_vgpr1172 ; GFX6-NEXT: {{ $}}173 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1174 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)175 ; GFX6-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)176 %0:_(p1) = COPY $vgpr0_vgpr1177 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s8), addrspace 1)178 $vgpr0 = COPY %1179...180---181name: test_zextload_global_i32_i16182body: |183 bb.0:184 liveins: $vgpr0_vgpr1185 186 ; GFX8-LABEL: name: test_zextload_global_i32_i16187 ; GFX8: liveins: $vgpr0_vgpr1188 ; GFX8-NEXT: {{ $}}189 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1190 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)191 ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)192 ;193 ; GFX6-LABEL: name: test_zextload_global_i32_i16194 ; GFX6: liveins: $vgpr0_vgpr1195 ; GFX6-NEXT: {{ $}}196 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1197 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)198 ; GFX6-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)199 %0:_(p1) = COPY $vgpr0_vgpr1200 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s16), addrspace 1)201 $vgpr0 = COPY %1202...203---204name: test_zextload_global_i31_i8205body: |206 bb.0:207 liveins: $vgpr0_vgpr1208 209 ; GFX8-LABEL: name: test_zextload_global_i31_i8210 ; GFX8: liveins: $vgpr0_vgpr1211 ; GFX8-NEXT: {{ $}}212 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1213 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)214 ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)215 ;216 ; GFX6-LABEL: name: test_zextload_global_i31_i8217 ; GFX6: liveins: $vgpr0_vgpr1218 ; GFX6-NEXT: {{ $}}219 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1220 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)221 ; GFX6-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)222 %0:_(p1) = COPY $vgpr0_vgpr1223 %1:_(s31) = G_ZEXTLOAD %0 :: (load (s8), addrspace 1)224 %2:_(s32) = G_ANYEXT %1225 $vgpr0 = COPY %2226...227---228name: test_zextload_global_i64_i8229body: |230 bb.0:231 liveins: $vgpr0_vgpr1232 233 ; GFX8-LABEL: name: test_zextload_global_i64_i8234 ; GFX8: liveins: $vgpr0_vgpr1235 ; GFX8-NEXT: {{ $}}236 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1237 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)238 ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)239 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)240 ;241 ; GFX6-LABEL: name: test_zextload_global_i64_i8242 ; GFX6: liveins: $vgpr0_vgpr1243 ; GFX6-NEXT: {{ $}}244 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1245 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)246 ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)247 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)248 %0:_(p1) = COPY $vgpr0_vgpr1249 %1:_(s64) = G_ZEXTLOAD %0 :: (load (s8), addrspace 1)250 $vgpr0_vgpr1 = COPY %1251...252---253name: test_zextload_global_i64_i16254body: |255 bb.0:256 liveins: $vgpr0_vgpr1257 258 ; GFX8-LABEL: name: test_zextload_global_i64_i16259 ; GFX8: liveins: $vgpr0_vgpr1260 ; GFX8-NEXT: {{ $}}261 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1262 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)263 ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)264 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)265 ;266 ; GFX6-LABEL: name: test_zextload_global_i64_i16267 ; GFX6: liveins: $vgpr0_vgpr1268 ; GFX6-NEXT: {{ $}}269 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1270 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)271 ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)272 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)273 %0:_(p1) = COPY $vgpr0_vgpr1274 %1:_(s64) = G_ZEXTLOAD %0 :: (load (s16), addrspace 1)275 $vgpr0_vgpr1 = COPY %1276...277---278name: test_zextload_global_i64_i32279body: |280 bb.0:281 liveins: $vgpr0_vgpr1282 283 ; GFX8-LABEL: name: test_zextload_global_i64_i32284 ; GFX8: liveins: $vgpr0_vgpr1285 ; GFX8-NEXT: {{ $}}286 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1287 ; GFX8-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)288 ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[LOAD]](s32)289 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)290 ;291 ; GFX6-LABEL: name: test_zextload_global_i64_i32292 ; GFX6: liveins: $vgpr0_vgpr1293 ; GFX6-NEXT: {{ $}}294 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1295 ; GFX6-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)296 ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[LOAD]](s32)297 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)298 %0:_(p1) = COPY $vgpr0_vgpr1299 %1:_(s64) = G_ZEXTLOAD %0 :: (load (s32), addrspace 1)300 $vgpr0_vgpr1 = COPY %1301...302 303---304name: test_zextload_global_s32_from_2_align1305body: |306 bb.0:307 liveins: $vgpr0_vgpr1308 309 ; GFX8-LABEL: name: test_zextload_global_s32_from_2_align1310 ; GFX8: liveins: $vgpr0_vgpr1311 ; GFX8-NEXT: {{ $}}312 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1313 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 1, addrspace 1)314 ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](s32)315 ;316 ; GFX6-LABEL: name: test_zextload_global_s32_from_2_align1317 ; GFX6: liveins: $vgpr0_vgpr1318 ; GFX6-NEXT: {{ $}}319 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1320 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)321 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1322 ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)323 ; GFX6-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 1, addrspace 1)324 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8325 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)326 ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]327 ; GFX6-NEXT: $vgpr0 = COPY [[OR]](s32)328 %0:_(p1) = COPY $vgpr0_vgpr1329 %1:_(s32) = G_ZEXTLOAD %0 :: (load (s16), align 1, addrspace 1)330 $vgpr0 = COPY %1331...332 333---334name: test_zextload_global_s64_from_2_align1335body: |336 bb.0:337 liveins: $vgpr0_vgpr1338 339 ; GFX8-LABEL: name: test_zextload_global_s64_from_2_align1340 ; GFX8: liveins: $vgpr0_vgpr1341 ; GFX8-NEXT: {{ $}}342 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1343 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s16), align 1, addrspace 1)344 ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[ZEXTLOAD]](s32)345 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)346 ;347 ; GFX6-LABEL: name: test_zextload_global_s64_from_2_align1348 ; GFX6: liveins: $vgpr0_vgpr1349 ; GFX6-NEXT: {{ $}}350 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1351 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)352 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1353 ; GFX6-NEXT: [[PTR_ADD:%[0-9]+]]:_(p1) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s64)354 ; GFX6-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p1) :: (load (s8) from unknown-address + 1, addrspace 1)355 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8356 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)357 ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]358 ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[OR]](s32)359 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)360 %0:_(p1) = COPY $vgpr0_vgpr1361 %1:_(s64) = G_ZEXTLOAD %0 :: (load (s16), align 1, addrspace 1)362 $vgpr0_vgpr1 = COPY %1363...364 365---366name: test_zextload_global_v2i16_from_2367body: |368 bb.0:369 liveins: $vgpr0_vgpr1370 371 ; GFX8-LABEL: name: test_zextload_global_v2i16_from_2372 ; GFX8: liveins: $vgpr0_vgpr1373 ; GFX8-NEXT: {{ $}}374 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1375 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s16>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)376 ; GFX8-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](<2 x s16>)377 ;378 ; GFX6-LABEL: name: test_zextload_global_v2i16_from_2379 ; GFX6: liveins: $vgpr0_vgpr1380 ; GFX6-NEXT: {{ $}}381 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1382 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s16>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)383 ; GFX6-NEXT: $vgpr0 = COPY [[ZEXTLOAD]](<2 x s16>)384 %0:_(p1) = COPY $vgpr0_vgpr1385 %1:_(<2 x s16>) = G_ZEXTLOAD %0 :: (load (<2 x s8>), addrspace 1)386 $vgpr0 = COPY %1387...388 389---390name: test_zextload_global_v2i32_from_2391body: |392 bb.0:393 liveins: $vgpr0_vgpr1394 395 ; GFX8-LABEL: name: test_zextload_global_v2i32_from_2396 ; GFX8: liveins: $vgpr0_vgpr1397 ; GFX8-NEXT: {{ $}}398 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1399 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)400 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXTLOAD]](<2 x s32>)401 ;402 ; GFX6-LABEL: name: test_zextload_global_v2i32_from_2403 ; GFX6: liveins: $vgpr0_vgpr1404 ; GFX6-NEXT: {{ $}}405 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1406 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s8>), addrspace 1)407 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXTLOAD]](<2 x s32>)408 %0:_(p1) = COPY $vgpr0_vgpr1409 %1:_(<2 x s32>) = G_ZEXTLOAD %0 :: (load (<2 x s8>), addrspace 1)410 $vgpr0_vgpr1 = COPY %1411...412 413---414name: test_zextload_global_v2i32_from_4415body: |416 bb.0:417 liveins: $vgpr0_vgpr1418 419 ; GFX8-LABEL: name: test_zextload_global_v2i32_from_4420 ; GFX8: liveins: $vgpr0_vgpr1421 ; GFX8-NEXT: {{ $}}422 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1423 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)424 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[ZEXTLOAD]](<2 x s32>)425 ;426 ; GFX6-LABEL: name: test_zextload_global_v2i32_from_4427 ; GFX6: liveins: $vgpr0_vgpr1428 ; GFX6-NEXT: {{ $}}429 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1430 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s32>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)431 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[ZEXTLOAD]](<2 x s32>)432 %0:_(p1) = COPY $vgpr0_vgpr1433 %1:_(<2 x s32>) = G_ZEXTLOAD %0 :: (load (<2 x s16>), addrspace 1)434 $vgpr0_vgpr1 = COPY %1435...436 437---438name: test_zextload_global_v2i64_from_4439body: |440 bb.0:441 liveins: $vgpr0_vgpr1442 443 ; GFX8-LABEL: name: test_zextload_global_v2i64_from_4444 ; GFX8: liveins: $vgpr0_vgpr1445 ; GFX8-NEXT: {{ $}}446 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1447 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)448 ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](<2 x s64>)449 ;450 ; GFX6-LABEL: name: test_zextload_global_v2i64_from_4451 ; GFX6: liveins: $vgpr0_vgpr1452 ; GFX6-NEXT: {{ $}}453 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1454 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s16>), addrspace 1)455 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](<2 x s64>)456 %0:_(p1) = COPY $vgpr0_vgpr1457 %1:_(<2 x s64>) = G_ZEXTLOAD %0 :: (load (<2 x s16>), addrspace 1)458 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1459...460 461---462name: test_zextload_global_v2i64_from_8463body: |464 bb.0:465 liveins: $vgpr0_vgpr1466 467 ; GFX8-LABEL: name: test_zextload_global_v2i64_from_8468 ; GFX8: liveins: $vgpr0_vgpr1469 ; GFX8-NEXT: {{ $}}470 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1471 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s32>), addrspace 1)472 ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](<2 x s64>)473 ;474 ; GFX6-LABEL: name: test_zextload_global_v2i64_from_8475 ; GFX6: liveins: $vgpr0_vgpr1476 ; GFX6-NEXT: {{ $}}477 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1478 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(<2 x s64>) = G_ZEXTLOAD [[COPY]](p1) :: (load (<2 x s32>), addrspace 1)479 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](<2 x s64>)480 %0:_(p1) = COPY $vgpr0_vgpr1481 %1:_(<2 x s64>) = G_ZEXTLOAD %0 :: (load (<2 x s32>), addrspace 1)482 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1483...484 485---486name: test_zextload_global_s128_8487body: |488 bb.0:489 liveins: $vgpr0_vgpr1490 491 ; GFX8-LABEL: name: test_zextload_global_s128_8492 ; GFX8: liveins: $vgpr0_vgpr1493 ; GFX8-NEXT: {{ $}}494 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1495 ; GFX8-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s128) = G_ZEXTLOAD [[COPY]](p1) :: (load (s64), addrspace 1)496 ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](s128)497 ;498 ; GFX6-LABEL: name: test_zextload_global_s128_8499 ; GFX6: liveins: $vgpr0_vgpr1500 ; GFX6-NEXT: {{ $}}501 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1502 ; GFX6-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s128) = G_ZEXTLOAD [[COPY]](p1) :: (load (s64), addrspace 1)503 ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[ZEXTLOAD]](s128)504 %0:_(p1) = COPY $vgpr0_vgpr1505 %1:_(s128) = G_ZEXTLOAD %0 :: (load (s64), addrspace 1)506 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1507...508