[Alignment][NFC] migrate DataLayout internal struct to llvm::Align
[llvm-core.git] / test / CodeGen / AArch64 / bcmp-inline-small.ll
blobda42b1d6863cd9313c8891a25911ae6e89a73ef8
1 ; RUN: llc -O2 < %s -mtriple=aarch64-linux-gnu                     | FileCheck %s --check-prefixes=CHECK,CHECKN
2 ; RUN: llc -O2 < %s -mtriple=aarch64-linux-gnu -mattr=strict-align | FileCheck %s --check-prefixes=CHECK,CHECKS
4 declare i32 @bcmp(i8*, i8*, i64) nounwind readonly
5 declare i32 @memcmp(i8*, i8*, i64) nounwind readonly
7 define i1 @bcmp_b2(i8* %s1, i8* %s2) {
8 entry:
9   %bcmp = call i32 @bcmp(i8* %s1, i8* %s2, i64 15)
10   %ret = icmp eq i32 %bcmp, 0
11   ret i1 %ret
13 ; CHECK-LABEL: bcmp_b2:
14 ; CHECK-NOT:   bl bcmp
15 ; CHECKN:      ldr  x
16 ; CHECKN-NEXT: ldr  x
17 ; CHECKN-NEXT: ldur x
18 ; CHECKN-NEXT: ldur x
19 ; CHECKS:      ldr  x
20 ; CHECKS-NEXT: ldr  x
21 ; CHECKS-NEXT: ldr  w
22 ; CHECKS-NEXT: ldr  w
23 ; CHECKS-NEXT: ldrh w
24 ; CHECKS-NEXT: ldrh w
25 ; CHECKS-NEXT: ldrb w
26 ; CHECKS-NEXT: ldrb w
29 define i1 @bcmp_bs(i8* %s1, i8* %s2) optsize {
30 entry:
31   %memcmp = call i32 @memcmp(i8* %s1, i8* %s2, i64 31)
32   %ret = icmp eq i32 %memcmp, 0
33   ret i1 %ret
35 ; CHECK-LABEL: bcmp_bs:
36 ; CHECKN-NOT:  bl memcmp
37 ; CHECKN:      ldp  x
38 ; CHECKN-NEXT: ldp  x
39 ; CHECKN-NEXT: ldr  x
40 ; CHECKN-NEXT: ldr  x
41 ; CHECKN-NEXT: ldur x
42 ; CHECKN-NEXT: ldur x
43 ; CHECKS:      bl memcmp