1; 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 16define i1 @and_cmp(i32 %x, i32 %y) { 17; CHECK-LABEL: and_cmp: 18; CHECK: // %bb.0: 19; CHECK-NEXT: bics wzr, w1, w0 20; 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 32; CHECK-NEXT: bics wzr, w8, w0 33; 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 41