Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/AArch64/arm64-memcpy-inline.ll
Show All 10 Lines | |||||
@.str4 = private unnamed_addr constant [18 x i8] c"DHRYSTONE PROGR \00", align 1 | @.str4 = private unnamed_addr constant [18 x i8] c"DHRYSTONE PROGR \00", align 1 | ||||
@.str5 = private unnamed_addr constant [7 x i8] c"DHRYST\00", align 1 | @.str5 = private unnamed_addr constant [7 x i8] c"DHRYST\00", align 1 | ||||
@.str6 = private unnamed_addr constant [14 x i8] c"/tmp/rmXXXXXX\00", align 1 | @.str6 = private unnamed_addr constant [14 x i8] c"/tmp/rmXXXXXX\00", align 1 | ||||
@spool.splbuf = internal global [512 x i8] zeroinitializer, align 16 | @spool.splbuf = internal global [512 x i8] zeroinitializer, align 16 | ||||
define i32 @t0() { | define i32 @t0() { | ||||
entry: | entry: | ||||
; CHECK-LABEL: t0: | ; CHECK-LABEL: t0: | ||||
; CHECK: ldur [[REG0:w[0-9]+]], [x[[BASEREG:[0-9]+]], #7] | ; CHECK-DAG: ldur [[REG0:w[0-9]+]], [x[[BASEREG:[0-9]+]], #7] | ||||
; CHECK: stur [[REG0]], [x[[BASEREG2:[0-9]+]], #7] | ; CHECK-DAG: stur [[REG0]], [x[[BASEREG2:[0-9]+]], #7] | ||||
; CHECK: ldr [[REG2:x[0-9]+]], | ; CHECK-DAG: ldr [[REG2:x[0-9]+]], | ||||
; CHECK: str [[REG2]], | ; CHECK-DAG: str [[REG2]], | ||||
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 getelementptr inbounds (%struct.x, %struct.x* @dst, i32 0, i32 0), i8* align 8 getelementptr inbounds (%struct.x, %struct.x* @src, i32 0, i32 0), i32 11, i1 false) | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 getelementptr inbounds (%struct.x, %struct.x* @dst, i32 0, i32 0), i8* align 8 getelementptr inbounds (%struct.x, %struct.x* @src, i32 0, i32 0), i32 11, i1 false) | ||||
ret i32 0 | ret i32 0 | ||||
} | } | ||||
define void @t1(i8* nocapture %C) nounwind { | define void @t1(i8* nocapture %C) nounwind { | ||||
entry: | entry: | ||||
; CHECK-LABEL: t1: | ; CHECK-LABEL: t1: | ||||
; CHECK: ldr [[DEST:q[0-9]+]], [x[[BASEREG]]] | ; CHECK: ldr [[DEST:q[0-9]+]], [x[[BASEREG]]] | ||||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | |||||
; CHECK: str [[REG8]], [x0] | ; CHECK: str [[REG8]], [x0] | ||||
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %C, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str5, i64 0, i64 0), i64 7, i1 false) | tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %C, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str5, i64 0, i64 0), i64 7, i1 false) | ||||
ret void | ret void | ||||
} | } | ||||
define void @t6() nounwind { | define void @t6() nounwind { | ||||
entry: | entry: | ||||
; CHECK-LABEL: t6: | ; CHECK-LABEL: t6: | ||||
; CHECK: ldur [[REG9:x[0-9]+]], [x{{[0-9]+}}, #6] | ; CHECK-DAG: ldur [[REG9:x[0-9]+]], [x{{[0-9]+}}, #6] | ||||
; CHECK: stur [[REG9]], [x{{[0-9]+}}, #6] | ; CHECK-DAG: stur [[REG9]], [x{{[0-9]+}}, #6] | ||||
; CHECK: ldr | ; CHECK-DAG: ldr | ||||
; CHECK: str | ; CHECK-DAG: str | ||||
call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([512 x i8], [512 x i8]* @spool.splbuf, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str6, i64 0, i64 0), i64 14, i1 false) | call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([512 x i8], [512 x i8]* @spool.splbuf, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str6, i64 0, i64 0), i64 14, i1 false) | ||||
ret void | ret void | ||||
} | } | ||||
%struct.Foo = type { i32, i32, i32, i32 } | %struct.Foo = type { i32, i32, i32, i32 } | ||||
define void @t7(%struct.Foo* nocapture %a, %struct.Foo* nocapture %b) nounwind { | define void @t7(%struct.Foo* nocapture %a, %struct.Foo* nocapture %b) nounwind { | ||||
entry: | entry: | ||||
Show All 11 Lines |