aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/AArch64/bics.ll
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-01-02 19:17:04 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-01-02 19:17:04 +0000
commitb915e9e0fc85ba6f398b3fab0db6a81a8913af94 (patch)
tree98b8f811c7aff2547cab8642daf372d6c59502fb /test/CodeGen/AArch64/bics.ll
parent6421cca32f69ac849537a3cff78c352195e99f1b (diff)
Notes
Diffstat (limited to 'test/CodeGen/AArch64/bics.ll')
-rw-r--r--test/CodeGen/AArch64/bics.ll40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/CodeGen/AArch64/bics.ll b/test/CodeGen/AArch64/bics.ll
new file mode 100644
index 000000000000..53aa28ad913f
--- /dev/null
+++ b/test/CodeGen/AArch64/bics.ll
@@ -0,0 +1,40 @@
+; RUN: llc < %s -mtriple=aarch64-unknown-unknown | FileCheck %s
+
+define i1 @andn_cmp(i32 %x, i32 %y) {
+; CHECK-LABEL: andn_cmp:
+; CHECK: // BB#0:
+; CHECK-NEXT: bics wzr, w1, w0
+; CHECK-NEXT: cset w0, eq
+; CHECK-NEXT: ret
+;
+ %notx = xor i32 %x, -1
+ %and = and i32 %notx, %y
+ %cmp = icmp eq i32 %and, 0
+ ret i1 %cmp
+}
+
+define i1 @and_cmp(i32 %x, i32 %y) {
+; CHECK-LABEL: and_cmp:
+; CHECK: // BB#0:
+; CHECK-NEXT: bics wzr, w1, w0
+; CHECK-NEXT: cset w0, eq
+; CHECK-NEXT: ret
+;
+ %and = and i32 %x, %y
+ %cmp = icmp eq i32 %and, %y
+ ret i1 %cmp
+}
+
+define i1 @and_cmp_const(i32 %x) {
+; CHECK-LABEL: and_cmp_const:
+; CHECK: // BB#0:
+; CHECK-NEXT: mov w8, #43
+; CHECK-NEXT: bics wzr, w8, w0
+; CHECK-NEXT: cset w0, eq
+; CHECK-NEXT: ret
+;
+ %and = and i32 %x, 43
+ %cmp = icmp eq i32 %and, 43
+ ret i1 %cmp
+}
+