projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert "Change memcpy/memset/memmove to have dest and source alignments."
[oota-llvm.git]
/
test
/
CodeGen
/
AArch64
/
arm64-fast-isel-intrinsic.ll
diff --git
a/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll
b/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll
index 7c85ea5b9f78953f455586628f93ade8a7a67aa0..bb2889eaf4becf012e85064b038aeb34cec13c2d 100644
(file)
--- a/
test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll
+++ b/
test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll
@@
-1,4
+1,4
@@
-; RUN: llc
< %s -O0 -fast-isel-abort -relocation-model=dynamic-no-pic -mtriple=arm64-apple-io
s | FileCheck %s --check-prefix=ARM64
+; RUN: llc
-O0 -fast-isel-abort=1 -verify-machineinstrs -relocation-model=dynamic-no-pic -mtriple=arm64-apple-ios < %
s | FileCheck %s --check-prefix=ARM64
@message = global [80 x i8] c"The LLVM Compiler Infrastructure\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 16
@temp = common global [80 x i8] zeroinitializer, align 16
@message = global [80 x i8] c"The LLVM Compiler Infrastructure\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 16
@temp = common global [80 x i8] zeroinitializer, align 16
@@
-7,11
+7,11
@@
define void @t1() {
; ARM64-LABEL: t1
; ARM64: adrp x8, _message@PAGE
; ARM64: add x0, x8, _message@PAGEOFF
; ARM64-LABEL: t1
; ARM64: adrp x8, _message@PAGE
; ARM64: add x0, x8, _message@PAGEOFF
-; ARM64: mov
z w9, #0
+; ARM64: mov
w9, wzr
; ARM64: movz x2, #0x50
; ARM64: uxtb w1, w9
; ARM64: bl _memset
; ARM64: movz x2, #0x50
; ARM64: uxtb w1, w9
; ARM64: bl _memset
- call void @llvm.memset.p0i8.i64(i8* getelementptr inbounds ([80 x i8]* @message, i32 0, i32 0), i8 0, i64 80, i32 16, i1 false)
+ call void @llvm.memset.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
, [80 x i8]
* @message, i32 0, i32 0), i8 0, i64 80, i32 16, i1 false)
ret void
}
ret void
}
@@
-25,7
+25,7
@@
define void @t2() {
; ARM64: add x1, x8, _message@PAGEOFF
; ARM64: movz x2, #0x50
; ARM64: bl _memcpy
; ARM64: add x1, x8, _message@PAGEOFF
; ARM64: movz x2, #0x50
; ARM64: bl _memcpy
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
* @temp, i32 0, i32 0), i8* getelementptr inbounds (
[80 x i8]* @message, i32 0, i32 0), i64 80, i32 16, i1 false)
+ call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
, [80 x i8]* @temp, i32 0, i32 0), i8* getelementptr inbounds ([80 x i8],
[80 x i8]* @message, i32 0, i32 0), i64 80, i32 16, i1 false)
ret void
}
ret void
}
@@
-39,7
+39,7
@@
define void @t3() {
; ARM64: add x1, x8, _message@PAGEOFF
; ARM64: movz x2, #0x14
; ARM64: bl _memmove
; ARM64: add x1, x8, _message@PAGEOFF
; ARM64: movz x2, #0x14
; ARM64: bl _memmove
- call void @llvm.memmove.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
* @temp, i32 0, i32 0), i8* getelementptr inbounds (
[80 x i8]* @message, i32 0, i32 0), i64 20, i32 16, i1 false)
+ call void @llvm.memmove.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
, [80 x i8]* @temp, i32 0, i32 0), i8* getelementptr inbounds ([80 x i8],
[80 x i8]* @message, i32 0, i32 0), i64 20, i32 16, i1 false)
ret void
}
ret void
}
@@
-58,7
+58,7
@@
define void @t4() {
; ARM64: ldrb w11, [x9, #16]
; ARM64: strb w11, [x8, #16]
; ARM64: ret
; ARM64: ldrb w11, [x9, #16]
; ARM64: strb w11, [x8, #16]
; ARM64: ret
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
* @temp, i32 0, i32 0), i8* getelementptr inbounds (
[80 x i8]* @message, i32 0, i32 0), i64 17, i32 16, i1 false)
+ call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
, [80 x i8]* @temp, i32 0, i32 0), i8* getelementptr inbounds ([80 x i8],
[80 x i8]* @message, i32 0, i32 0), i64 17, i32 16, i1 false)
ret void
}
ret void
}
@@
-75,7
+75,7
@@
define void @t5() {
; ARM64: ldrb w11, [x9, #16]
; ARM64: strb w11, [x8, #16]
; ARM64: ret
; ARM64: ldrb w11, [x9, #16]
; ARM64: strb w11, [x8, #16]
; ARM64: ret
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
* @temp, i32 0, i32 0), i8* getelementptr inbounds (
[80 x i8]* @message, i32 0, i32 0), i64 17, i32 8, i1 false)
+ call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
, [80 x i8]* @temp, i32 0, i32 0), i8* getelementptr inbounds ([80 x i8],
[80 x i8]* @message, i32 0, i32 0), i64 17, i32 8, i1 false)
ret void
}
ret void
}
@@
-92,7
+92,7
@@
define void @t6() {
; ARM64: ldrb w10, [x9, #8]
; ARM64: strb w10, [x8, #8]
; ARM64: ret
; ARM64: ldrb w10, [x9, #8]
; ARM64: strb w10, [x8, #8]
; ARM64: ret
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
* @temp, i32 0, i32 0), i8* getelementptr inbounds (
[80 x i8]* @message, i32 0, i32 0), i64 9, i32 4, i1 false)
+ call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
, [80 x i8]* @temp, i32 0, i32 0), i8* getelementptr inbounds ([80 x i8],
[80 x i8]* @message, i32 0, i32 0), i64 9, i32 4, i1 false)
ret void
}
ret void
}
@@
-111,7
+111,7
@@
define void @t7() {
; ARM64: ldrb w10, [x9, #6]
; ARM64: strb w10, [x8, #6]
; ARM64: ret
; ARM64: ldrb w10, [x9, #6]
; ARM64: strb w10, [x8, #6]
; ARM64: ret
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
* @temp, i32 0, i32 0), i8* getelementptr inbounds (
[80 x i8]* @message, i32 0, i32 0), i64 7, i32 2, i1 false)
+ call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
, [80 x i8]* @temp, i32 0, i32 0), i8* getelementptr inbounds ([80 x i8],
[80 x i8]* @message, i32 0, i32 0), i64 7, i32 2, i1 false)
ret void
}
ret void
}
@@
-130,15
+130,19
@@
define void @t8() {
; ARM64: ldrb w10, [x9, #3]
; ARM64: strb w10, [x8, #3]
; ARM64: ret
; ARM64: ldrb w10, [x9, #3]
; ARM64: strb w10, [x8, #3]
; ARM64: ret
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
* @temp, i32 0, i32 0), i8* getelementptr inbounds (
[80 x i8]* @message, i32 0, i32 0), i64 4, i32 1, i1 false)
+ call void @llvm.memcpy.p0i8.p0i8.i64(i8* getelementptr inbounds ([80 x i8]
, [80 x i8]* @temp, i32 0, i32 0), i8* getelementptr inbounds ([80 x i8],
[80 x i8]* @message, i32 0, i32 0), i64 4, i32 1, i1 false)
ret void
}
define void @test_distant_memcpy(i8* %dst) {
; ARM64-LABEL: test_distant_memcpy:
ret void
}
define void @test_distant_memcpy(i8* %dst) {
; ARM64-LABEL: test_distant_memcpy:
-; ARM64: bl _memcpy
+; ARM64: mov [[ARRAY:x[0-9]+]], sp
+; ARM64: movz [[OFFSET:x[0-9]+]], #0x1f40
+; ARM64: add x[[ADDR:[0-9]+]], [[ARRAY]], [[OFFSET]]
+; ARM64: ldrb [[BYTE:w[0-9]+]], [x[[ADDR]]]
+; ARM64: strb [[BYTE]], [x0]
%array = alloca i8, i32 8192
%array = alloca i8, i32 8192
- %elem = getelementptr i8* %array, i32 8000
- call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %elem, i64
4
, i32 1, i1 false)
+ %elem = getelementptr i8
, i8
* %array, i32 8000
+ call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %elem, i64
1
, i32 1, i1 false)
ret void
}
ret void
}