126 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -mtriple=aarch64-unknown-unknown -global-isel -global-isel-abort=1 -verify-machineinstrs -stop-after=irtranslator %s -o - | FileCheck %s3 4define void @copy(ptr %dst, ptr %src) {5 ; CHECK-LABEL: name: copy6 ; CHECK: bb.1.entry:7 ; CHECK: liveins: $x0, $x18 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x09 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x110 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 411 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)12 ; CHECK: G_MEMCPY [[COPY]](p0), [[COPY1]](p0), [[ZEXT]](s64), 0 :: (store (s8) into %ir.dst), (load (s8) from %ir.src)13 ; CHECK: RET_ReallyLR14entry:15 call void @llvm.memcpy.p0.p0.i32(ptr %dst, ptr %src, i32 4, i1 false)16 ret void17}18 19define void @inline_copy(ptr %dst, ptr %src) {20 ; CHECK-LABEL: name: inline_copy21 ; CHECK: bb.1.entry:22 ; CHECK: liveins: $x0, $x123 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x024 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x125 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 426 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)27 ; CHECK: G_MEMCPY_INLINE [[COPY]](p0), [[COPY1]](p0), [[ZEXT]](s64) :: (store (s8) into %ir.dst), (load (s8) from %ir.src)28 ; CHECK: RET_ReallyLR29entry:30 call void @llvm.memcpy.inline.p0.p0.i32(ptr %dst, ptr %src, i32 4, i1 false)31 ret void32}33 34define void @copy_volatile(ptr %dst, ptr %src) {35 ; CHECK-LABEL: name: copy_volatile36 ; CHECK: bb.1.entry:37 ; CHECK: liveins: $x0, $x138 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x039 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x140 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 441 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)42 ; CHECK: G_MEMCPY [[COPY]](p0), [[COPY1]](p0), [[ZEXT]](s64), 0 :: (volatile store (s8) into %ir.dst), (volatile load (s8) from %ir.src)43 ; CHECK: RET_ReallyLR44entry:45 call void @llvm.memcpy.p0.p0.i32(ptr %dst, ptr %src, i32 4, i1 true)46 ret void47}48 49define void @inline_copy_volatile(ptr %dst, ptr %src) {50 ; CHECK-LABEL: name: inline_copy_volatile51 ; CHECK: bb.1.entry:52 ; CHECK: liveins: $x0, $x153 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x054 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x155 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 456 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)57 ; CHECK: G_MEMCPY_INLINE [[COPY]](p0), [[COPY1]](p0), [[ZEXT]](s64) :: (volatile store (s8) into %ir.dst), (volatile load (s8) from %ir.src)58 ; CHECK: RET_ReallyLR59entry:60 call void @llvm.memcpy.inline.p0.p0.i32(ptr %dst, ptr %src, i32 4, i1 true)61 ret void62}63 64define void @tail_copy(ptr %dst, ptr %src) {65 ; CHECK-LABEL: name: tail_copy66 ; CHECK: bb.1.entry:67 ; CHECK: liveins: $x0, $x168 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x069 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x170 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 471 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)72 ; CHECK: G_MEMCPY [[COPY]](p0), [[COPY1]](p0), [[ZEXT]](s64), 1 :: (store (s8) into %ir.dst), (load (s8) from %ir.src)73 ; CHECK: RET_ReallyLR74entry:75 tail call void @llvm.memcpy.p0.p0.i32(ptr %dst, ptr %src, i32 4, i1 false)76 ret void77}78 79define void @tail_inline_copy(ptr %dst, ptr %src) {80 ; CHECK-LABEL: name: tail_inline_copy81 ; CHECK: bb.1.entry:82 ; CHECK: liveins: $x0, $x183 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x084 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x185 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 486 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)87 ; CHECK: G_MEMCPY_INLINE [[COPY]](p0), [[COPY1]](p0), [[ZEXT]](s64) :: (store (s8) into %ir.dst), (load (s8) from %ir.src)88 ; CHECK: RET_ReallyLR89entry:90 tail call void @llvm.memcpy.inline.p0.p0.i32(ptr %dst, ptr %src, i32 4, i1 false)91 ret void92}93 94define void @tail_copy_volatile(ptr %dst, ptr %src) {95 ; CHECK-LABEL: name: tail_copy_volatile96 ; CHECK: bb.1.entry:97 ; CHECK: liveins: $x0, $x198 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x099 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1100 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4101 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)102 ; CHECK: G_MEMCPY [[COPY]](p0), [[COPY1]](p0), [[ZEXT]](s64), 1 :: (volatile store (s8) into %ir.dst), (volatile load (s8) from %ir.src)103 ; CHECK: RET_ReallyLR104entry:105 tail call void @llvm.memcpy.p0.p0.i32(ptr %dst, ptr %src, i32 4, i1 true)106 ret void107}108 109define void @tail_inline_copy_volatile(ptr %dst, ptr %src) {110 ; CHECK-LABEL: name: tail_inline_copy_volatile111 ; CHECK: bb.1.entry:112 ; CHECK: liveins: $x0, $x1113 ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0114 ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1115 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 4116 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s32)117 ; CHECK: G_MEMCPY_INLINE [[COPY]](p0), [[COPY1]](p0), [[ZEXT]](s64) :: (volatile store (s8) into %ir.dst), (volatile load (s8) from %ir.src)118 ; CHECK: RET_ReallyLR119entry:120 tail call void @llvm.memcpy.inline.p0.p0.i32(ptr %dst, ptr %src, i32 4, i1 true)121 ret void122}123 124declare void @llvm.memcpy.p0.p0.i32(ptr nocapture writeonly, ptr nocapture readonly, i32, i1) nounwind125declare void @llvm.memcpy.inline.p0.p0.i32(ptr nocapture writeonly, ptr nocapture readonly, i32, i1) nounwind126