blob: 53aa28ad913fd9fe610cb50c887d04a4dbfa83e5 [file] [log] [blame]
Sanjay Patel09c56302016-11-29 19:15:27 +00001; RUN: llc < %s -mtriple=aarch64-unknown-unknown | FileCheck %s
2
3define i1 @andn_cmp(i32 %x, i32 %y) {
4; CHECK-LABEL: andn_cmp:
5; CHECK: // BB#0:
6; CHECK-NEXT: bics wzr, w1, w0
7; CHECK-NEXT: cset w0, eq
8; CHECK-NEXT: ret
9;
10 %notx = xor i32 %x, -1
11 %and = and i32 %notx, %y
12 %cmp = icmp eq i32 %and, 0
13 ret i1 %cmp
14}
15
Sanjay Patel09c56302016-11-29 19:15:27 +000016define i1 @and_cmp(i32 %x, i32 %y) {
17; CHECK-LABEL: and_cmp:
18; CHECK: // BB#0:
Sanjay Patel47f7f302016-11-29 22:28:58 +000019; CHECK-NEXT: bics wzr, w1, w0
Sanjay Patel09c56302016-11-29 19:15:27 +000020; CHECK-NEXT: cset w0, eq
21; CHECK-NEXT: ret
22;
23 %and = and i32 %x, %y
24 %cmp = icmp eq i32 %and, %y
25 ret i1 %cmp
26}
27
28define i1 @and_cmp_const(i32 %x) {
29; CHECK-LABEL: and_cmp_const:
30; CHECK: // BB#0:
31; CHECK-NEXT: mov w8, #43
Sanjay Patel47f7f302016-11-29 22:28:58 +000032; CHECK-NEXT: bics wzr, w8, w0
Sanjay Patel09c56302016-11-29 19:15:27 +000033; CHECK-NEXT: cset w0, eq
34; CHECK-NEXT: ret
35;
36 %and = and i32 %x, 43
37 %cmp = icmp eq i32 %and, 43
38 ret i1 %cmp
39}
40