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 3 4declare i32 @bcmp(i8*, i8*, i64) nounwind readonly 5declare i32 @memcmp(i8*, i8*, i64) nounwind readonly 6 7define i1 @bcmp_b2(i8* %s1, i8* %s2) { 8entry: 9 %bcmp = call i32 @bcmp(i8* %s1, i8* %s2, i64 15) 10 %ret = icmp eq i32 %bcmp, 0 11 ret i1 %ret 12 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 27} 28 29define i1 @bcmp_bs(i8* %s1, i8* %s2) optsize { 30entry: 31 %memcmp = call i32 @memcmp(i8* %s1, i8* %s2, i64 31) 32 %ret = icmp eq i32 %memcmp, 0 33 ret i1 %ret 34 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 44} 45