blob: 244aacbc0df3981ff08ae84c3d45dace6e1201e7 [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:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +00005; CHECK: // %bb.0:
Sanjay Patel09c56302016-11-29 19:15:27 +00006; 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:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000018; 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:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000030; CHECK: // %bb.0:
Sanjay Patel09c56302016-11-29 19:15:27 +000031; 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