432 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s4# RUN: llc -mtriple=riscv32 -mattr=+unaligned-scalar-mem -run-pass=legalizer %s -o - \5# RUN: | FileCheck %s --check-prefix=UNALIGNED6 7---8name: load_i89alignment: 410tracksRegLiveness: true11registers:12 - { id: 0, class: _ }13 - { id: 1, class: _ }14 - { id: 2, class: _ }15frameInfo:16 maxAlignment: 117machineFunctionInfo:18 varArgsFrameIndex: 019 varArgsSaveSize: 020body: |21 bb.1:22 liveins: $x1023 24 ; CHECK-LABEL: name: load_i825 ; CHECK: liveins: $x1026 ; CHECK-NEXT: {{ $}}27 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1028 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s8))29 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD]](s16)30 ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s32)31 ; CHECK-NEXT: PseudoRET implicit $x1032 ;33 ; UNALIGNED-LABEL: name: load_i834 ; UNALIGNED: liveins: $x1035 ; UNALIGNED-NEXT: {{ $}}36 ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1037 ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s8))38 ; UNALIGNED-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD]](s16)39 ; UNALIGNED-NEXT: $x10 = COPY [[ANYEXT]](s32)40 ; UNALIGNED-NEXT: PseudoRET implicit $x1041 %0:_(p0) = COPY $x1042 %1:_(s8) = G_LOAD %0(p0) :: (load (s8))43 %2:_(s32) = G_ANYEXT %1(s8)44 $x10 = COPY %2(s32)45 PseudoRET implicit $x1046 47...48---49name: load_i1650alignment: 451tracksRegLiveness: true52registers:53 - { id: 0, class: _ }54 - { id: 1, class: _ }55 - { id: 2, class: _ }56frameInfo:57 maxAlignment: 158machineFunctionInfo:59 varArgsFrameIndex: 060 varArgsSaveSize: 061body: |62 bb.1:63 liveins: $x1064 65 ; CHECK-LABEL: name: load_i1666 ; CHECK: liveins: $x1067 ; CHECK-NEXT: {{ $}}68 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1069 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))70 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD]](s16)71 ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s32)72 ; CHECK-NEXT: PseudoRET implicit $x1073 ;74 ; UNALIGNED-LABEL: name: load_i1675 ; UNALIGNED: liveins: $x1076 ; UNALIGNED-NEXT: {{ $}}77 ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1078 ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16))79 ; UNALIGNED-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD]](s16)80 ; UNALIGNED-NEXT: $x10 = COPY [[ANYEXT]](s32)81 ; UNALIGNED-NEXT: PseudoRET implicit $x1082 %0:_(p0) = COPY $x1083 %1:_(s16) = G_LOAD %0(p0) :: (load (s16))84 %2:_(s32) = G_ANYEXT %1(s16)85 $x10 = COPY %2(s32)86 PseudoRET implicit $x1087 88...89---90name: load_i3291alignment: 492tracksRegLiveness: true93registers:94 - { id: 0, class: _ }95 - { id: 1, class: _ }96frameInfo:97 maxAlignment: 198machineFunctionInfo:99 varArgsFrameIndex: 0100 varArgsSaveSize: 0101body: |102 bb.1:103 liveins: $x10104 105 ; CHECK-LABEL: name: load_i32106 ; CHECK: liveins: $x10107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10109 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32))110 ; CHECK-NEXT: $x10 = COPY [[LOAD]](s32)111 ; CHECK-NEXT: PseudoRET implicit $x10112 ;113 ; UNALIGNED-LABEL: name: load_i32114 ; UNALIGNED: liveins: $x10115 ; UNALIGNED-NEXT: {{ $}}116 ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10117 ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32))118 ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s32)119 ; UNALIGNED-NEXT: PseudoRET implicit $x10120 %0:_(p0) = COPY $x10121 %1:_(s32) = G_LOAD %0(p0) :: (load (s32))122 $x10 = COPY %1(s32)123 PseudoRET implicit $x10124 125...126---127name: load_i64128alignment: 4129tracksRegLiveness: true130registers:131 - { id: 0, class: _ }132 - { id: 1, class: _ }133 - { id: 2, class: _ }134 - { id: 3, class: _ }135frameInfo:136 maxAlignment: 1137machineFunctionInfo:138 varArgsFrameIndex: 0139 varArgsSaveSize: 0140body: |141 bb.1:142 liveins: $x10143 144 ; CHECK-LABEL: name: load_i64145 ; CHECK: liveins: $x10146 ; CHECK-NEXT: {{ $}}147 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10148 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32), align 8)149 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4150 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s32)151 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from unknown-address + 4)152 ; CHECK-NEXT: $x10 = COPY [[LOAD]](s32)153 ; CHECK-NEXT: $x11 = COPY [[LOAD1]](s32)154 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11155 ;156 ; UNALIGNED-LABEL: name: load_i64157 ; UNALIGNED: liveins: $x10158 ; UNALIGNED-NEXT: {{ $}}159 ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10160 ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32), align 8)161 ; UNALIGNED-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4162 ; UNALIGNED-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s32)163 ; UNALIGNED-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from unknown-address + 4)164 ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s32)165 ; UNALIGNED-NEXT: $x11 = COPY [[LOAD1]](s32)166 ; UNALIGNED-NEXT: PseudoRET implicit $x10, implicit $x11167 %0:_(p0) = COPY $x10168 %1:_(s64) = G_LOAD %0(p0) :: (load (s64))169 %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %1(s64)170 $x10 = COPY %2(s32)171 $x11 = COPY %3(s32)172 PseudoRET implicit $x10, implicit $x11173 174...175---176name: load_ptr177alignment: 4178tracksRegLiveness: true179registers:180 - { id: 0, class: _ }181 - { id: 1, class: _ }182frameInfo:183 maxAlignment: 1184machineFunctionInfo:185 varArgsFrameIndex: 0186 varArgsSaveSize: 0187body: |188 bb.1:189 liveins: $x10190 191 ; CHECK-LABEL: name: load_ptr192 ; CHECK: liveins: $x10193 ; CHECK-NEXT: {{ $}}194 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10195 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[COPY]](p0) :: (load (p0), align 8)196 ; CHECK-NEXT: $x10 = COPY [[LOAD]](p0)197 ; CHECK-NEXT: PseudoRET implicit $x10198 ;199 ; UNALIGNED-LABEL: name: load_ptr200 ; UNALIGNED: liveins: $x10201 ; UNALIGNED-NEXT: {{ $}}202 ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10203 ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[COPY]](p0) :: (load (p0), align 8)204 ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](p0)205 ; UNALIGNED-NEXT: PseudoRET implicit $x10206 %0:_(p0) = COPY $x10207 %1:_(p0) = G_LOAD %0(p0) :: (load (p0), align 8)208 $x10 = COPY %1(p0)209 PseudoRET implicit $x10210 211...212---213name: load_i16_unaligned214alignment: 4215tracksRegLiveness: true216registers:217 - { id: 0, class: _ }218 - { id: 1, class: _ }219 - { id: 2, class: _ }220frameInfo:221 maxAlignment: 1222machineFunctionInfo:223 varArgsFrameIndex: 0224 varArgsSaveSize: 0225body: |226 bb.1:227 liveins: $x10228 229 ; CHECK-LABEL: name: load_i16_unaligned230 ; CHECK: liveins: $x10231 ; CHECK-NEXT: {{ $}}232 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10233 ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))234 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1235 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s32)236 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[PTR_ADD]](p0) :: (load (s8) from unknown-address + 1)237 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8238 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD]](s16)239 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ANYEXT]], [[C1]](s32)240 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]241 ; CHECK-NEXT: $x10 = COPY [[OR]](s32)242 ; CHECK-NEXT: PseudoRET implicit $x10243 ;244 ; UNALIGNED-LABEL: name: load_i16_unaligned245 ; UNALIGNED: liveins: $x10246 ; UNALIGNED-NEXT: {{ $}}247 ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10248 ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load (s16), align 1)249 ; UNALIGNED-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LOAD]](s16)250 ; UNALIGNED-NEXT: $x10 = COPY [[ANYEXT]](s32)251 ; UNALIGNED-NEXT: PseudoRET implicit $x10252 %0:_(p0) = COPY $x10253 %1:_(s16) = G_LOAD %0(p0) :: (load (s16), align 1)254 %2:_(s32) = G_ANYEXT %1(s16)255 $x10 = COPY %2(s32)256 PseudoRET implicit $x10257 258...259---260name: load_i32_unaligned261alignment: 4262tracksRegLiveness: true263registers:264 - { id: 0, class: _ }265 - { id: 1, class: _ }266frameInfo:267 maxAlignment: 1268machineFunctionInfo:269 varArgsFrameIndex: 0270 varArgsSaveSize: 0271body: |272 bb.1:273 liveins: $x10274 275 ; CHECK-LABEL: name: load_i32_unaligned276 ; CHECK: liveins: $x10277 ; CHECK-NEXT: {{ $}}278 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10279 ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))280 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1281 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s32)282 ; CHECK-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p0) :: (load (s8) from unknown-address + 1)283 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8284 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)285 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]286 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2287 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C2]](s32)288 ; CHECK-NEXT: [[ZEXTLOAD2:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD1]](p0) :: (load (s8) from unknown-address + 2)289 ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD1]], [[C]](s32)290 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD2]](p0) :: (load (s8) from unknown-address + 3)291 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[LOAD]], [[C1]](s32)292 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[ZEXTLOAD2]]293 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16294 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[OR1]], [[C3]](s32)295 ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[SHL2]], [[OR]]296 ; CHECK-NEXT: $x10 = COPY [[OR2]](s32)297 ; CHECK-NEXT: PseudoRET implicit $x10298 ;299 ; UNALIGNED-LABEL: name: load_i32_unaligned300 ; UNALIGNED: liveins: $x10301 ; UNALIGNED-NEXT: {{ $}}302 ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10303 ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32), align 1)304 ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s32)305 ; UNALIGNED-NEXT: PseudoRET implicit $x10306 %0:_(p0) = COPY $x10307 %1:_(s32) = G_LOAD %0(p0) :: (load (s32), align 1)308 $x10 = COPY %1(s32)309 PseudoRET implicit $x10310 311...312---313name: load_i32_align2314alignment: 4315tracksRegLiveness: true316registers:317 - { id: 0, class: _ }318 - { id: 1, class: _ }319frameInfo:320 maxAlignment: 1321machineFunctionInfo:322 varArgsFrameIndex: 0323 varArgsSaveSize: 0324body: |325 bb.1:326 liveins: $x10327 328 ; CHECK-LABEL: name: load_i32_align2329 ; CHECK: liveins: $x10330 ; CHECK-NEXT: {{ $}}331 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10332 ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s16))333 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2334 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s32)335 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s16) from unknown-address + 2)336 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16337 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LOAD]], [[C1]](s32)338 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]339 ; CHECK-NEXT: $x10 = COPY [[OR]](s32)340 ; CHECK-NEXT: PseudoRET implicit $x10341 ;342 ; UNALIGNED-LABEL: name: load_i32_align2343 ; UNALIGNED: liveins: $x10344 ; UNALIGNED-NEXT: {{ $}}345 ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10346 ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32), align 2)347 ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s32)348 ; UNALIGNED-NEXT: PseudoRET implicit $x10349 %0:_(p0) = COPY $x10350 %1:_(s32) = G_LOAD %0(p0) :: (load (s32), align 2)351 $x10 = COPY %1(s32)352 PseudoRET implicit $x10353 354...355---356name: load_i64_unaligned357alignment: 4358tracksRegLiveness: true359registers:360 - { id: 0, class: _ }361 - { id: 1, class: _ }362 - { id: 2, class: _ }363 - { id: 3, class: _ }364frameInfo:365 maxAlignment: 1366machineFunctionInfo:367 varArgsFrameIndex: 0368 varArgsSaveSize: 0369body: |370 bb.1:371 liveins: $x10372 373 ; CHECK-LABEL: name: load_i64_unaligned374 ; CHECK: liveins: $x10375 ; CHECK-NEXT: {{ $}}376 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10377 ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))378 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1379 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s32)380 ; CHECK-NEXT: [[ZEXTLOAD1:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD]](p0) :: (load (s8) from unknown-address + 1)381 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 8382 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD1]], [[C1]](s32)383 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL]], [[ZEXTLOAD]]384 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 2385 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C2]](s32)386 ; CHECK-NEXT: [[ZEXTLOAD2:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD1]](p0) :: (load (s8) from unknown-address + 2)387 ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD1]], [[C]](s32)388 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD2]](p0) :: (load (s8) from unknown-address + 3)389 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[LOAD]], [[C1]](s32)390 ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[ZEXTLOAD2]]391 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16392 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[OR1]], [[C3]](s32)393 ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[SHL2]], [[OR]]394 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 4395 ; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C4]](s32)396 ; CHECK-NEXT: [[ZEXTLOAD3:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD3]](p0) :: (load (s8) from unknown-address + 4)397 ; CHECK-NEXT: [[PTR_ADD4:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD3]], [[C]](s32)398 ; CHECK-NEXT: [[ZEXTLOAD4:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD4]](p0) :: (load (s8) from unknown-address + 5)399 ; CHECK-NEXT: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[ZEXTLOAD4]], [[C1]](s32)400 ; CHECK-NEXT: [[OR3:%[0-9]+]]:_(s32) = G_OR [[SHL3]], [[ZEXTLOAD3]]401 ; CHECK-NEXT: [[PTR_ADD5:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD3]], [[C2]](s32)402 ; CHECK-NEXT: [[ZEXTLOAD5:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[PTR_ADD5]](p0) :: (load (s8) from unknown-address + 6)403 ; CHECK-NEXT: [[PTR_ADD6:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[PTR_ADD5]], [[C]](s32)404 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD6]](p0) :: (load (s8) from unknown-address + 7)405 ; CHECK-NEXT: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[LOAD1]], [[C1]](s32)406 ; CHECK-NEXT: [[OR4:%[0-9]+]]:_(s32) = G_OR [[SHL4]], [[ZEXTLOAD5]]407 ; CHECK-NEXT: [[SHL5:%[0-9]+]]:_(s32) = G_SHL [[OR4]], [[C3]](s32)408 ; CHECK-NEXT: [[OR5:%[0-9]+]]:_(s32) = G_OR [[SHL5]], [[OR3]]409 ; CHECK-NEXT: $x10 = COPY [[OR2]](s32)410 ; CHECK-NEXT: $x11 = COPY [[OR5]](s32)411 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11412 ;413 ; UNALIGNED-LABEL: name: load_i64_unaligned414 ; UNALIGNED: liveins: $x10415 ; UNALIGNED-NEXT: {{ $}}416 ; UNALIGNED-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10417 ; UNALIGNED-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32), align 1)418 ; UNALIGNED-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4419 ; UNALIGNED-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[COPY]], [[C]](s32)420 ; UNALIGNED-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from unknown-address + 4, align 1)421 ; UNALIGNED-NEXT: $x10 = COPY [[LOAD]](s32)422 ; UNALIGNED-NEXT: $x11 = COPY [[LOAD1]](s32)423 ; UNALIGNED-NEXT: PseudoRET implicit $x10, implicit $x11424 %0:_(p0) = COPY $x10425 %1:_(s64) = G_LOAD %0(p0) :: (load (s64), align 1)426 %2:_(s32), %3:_(s32) = G_UNMERGE_VALUES %1(s64)427 $x10 = COPY %2(s32)428 $x11 = COPY %3(s32)429 PseudoRET implicit $x10, implicit $x11430 431...432