[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / LoongArch / andn-icmp.ll
blobff6935e2e23ccfd5655d58ddca8c150d171901cb
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc --mtriple=loongarch32 < %s | FileCheck %s --check-prefix=LA32
3 ; RUN: llc --mtriple=loongarch64 < %s | FileCheck %s --check-prefix=LA64
5 define i1 @andn_icmp_eq_i8(i8 signext %a, i8 signext %b) nounwind {
6 ; LA32-LABEL: andn_icmp_eq_i8:
7 ; LA32:       # %bb.0:
8 ; LA32-NEXT:    andn $a0, $a1, $a0
9 ; LA32-NEXT:    sltui $a0, $a0, 1
10 ; LA32-NEXT:    ret
12 ; LA64-LABEL: andn_icmp_eq_i8:
13 ; LA64:       # %bb.0:
14 ; LA64-NEXT:    andn $a0, $a1, $a0
15 ; LA64-NEXT:    sltui $a0, $a0, 1
16 ; LA64-NEXT:    ret
17   %and = and i8 %a, %b
18   %cmpeq = icmp eq i8 %and, %b
19   ret i1 %cmpeq
22 define i1 @andn_icmp_eq_i16(i16 signext %a, i16 signext %b) nounwind {
23 ; LA32-LABEL: andn_icmp_eq_i16:
24 ; LA32:       # %bb.0:
25 ; LA32-NEXT:    andn $a0, $a1, $a0
26 ; LA32-NEXT:    sltui $a0, $a0, 1
27 ; LA32-NEXT:    ret
29 ; LA64-LABEL: andn_icmp_eq_i16:
30 ; LA64:       # %bb.0:
31 ; LA64-NEXT:    andn $a0, $a1, $a0
32 ; LA64-NEXT:    sltui $a0, $a0, 1
33 ; LA64-NEXT:    ret
34   %and = and i16 %a, %b
35   %cmpeq = icmp eq i16 %and, %b
36   ret i1 %cmpeq
39 define i1 @andn_icmp_eq_i32(i32 signext %a, i32 signext %b) nounwind {
40 ; LA32-LABEL: andn_icmp_eq_i32:
41 ; LA32:       # %bb.0:
42 ; LA32-NEXT:    andn $a0, $a1, $a0
43 ; LA32-NEXT:    sltui $a0, $a0, 1
44 ; LA32-NEXT:    ret
46 ; LA64-LABEL: andn_icmp_eq_i32:
47 ; LA64:       # %bb.0:
48 ; LA64-NEXT:    andn $a0, $a1, $a0
49 ; LA64-NEXT:    sltui $a0, $a0, 1
50 ; LA64-NEXT:    ret
51   %and = and i32 %a, %b
52   %cmpeq = icmp eq i32 %and, %b
53   ret i1 %cmpeq
56 define i1 @andn_icmp_eq_i64(i64 %a, i64 %b) nounwind {
57 ; LA32-LABEL: andn_icmp_eq_i64:
58 ; LA32:       # %bb.0:
59 ; LA32-NEXT:    andn $a1, $a3, $a1
60 ; LA32-NEXT:    andn $a0, $a2, $a0
61 ; LA32-NEXT:    or $a0, $a0, $a1
62 ; LA32-NEXT:    sltui $a0, $a0, 1
63 ; LA32-NEXT:    ret
65 ; LA64-LABEL: andn_icmp_eq_i64:
66 ; LA64:       # %bb.0:
67 ; LA64-NEXT:    andn $a0, $a1, $a0
68 ; LA64-NEXT:    sltui $a0, $a0, 1
69 ; LA64-NEXT:    ret
70   %and = and i64 %a, %b
71   %cmpeq = icmp eq i64 %and, %b
72   ret i1 %cmpeq
75 define i1 @andn_icmp_ne_i8(i8 signext %a, i8 signext %b) nounwind {
76 ; LA32-LABEL: andn_icmp_ne_i8:
77 ; LA32:       # %bb.0:
78 ; LA32-NEXT:    andn $a0, $a1, $a0
79 ; LA32-NEXT:    sltu $a0, $zero, $a0
80 ; LA32-NEXT:    ret
82 ; LA64-LABEL: andn_icmp_ne_i8:
83 ; LA64:       # %bb.0:
84 ; LA64-NEXT:    andn $a0, $a1, $a0
85 ; LA64-NEXT:    sltu $a0, $zero, $a0
86 ; LA64-NEXT:    ret
87   %and = and i8 %a, %b
88   %cmpne = icmp ne i8 %and, %b
89   ret i1 %cmpne
92 define i1 @andn_icmp_ne_i16(i16 signext %a, i16 signext %b) nounwind {
93 ; LA32-LABEL: andn_icmp_ne_i16:
94 ; LA32:       # %bb.0:
95 ; LA32-NEXT:    andn $a0, $a1, $a0
96 ; LA32-NEXT:    sltu $a0, $zero, $a0
97 ; LA32-NEXT:    ret
99 ; LA64-LABEL: andn_icmp_ne_i16:
100 ; LA64:       # %bb.0:
101 ; LA64-NEXT:    andn $a0, $a1, $a0
102 ; LA64-NEXT:    sltu $a0, $zero, $a0
103 ; LA64-NEXT:    ret
104   %and = and i16 %a, %b
105   %cmpne = icmp ne i16 %and, %b
106   ret i1 %cmpne
109 define i1 @andn_icmp_ne_i32(i32 signext %a, i32 signext %b) nounwind {
110 ; LA32-LABEL: andn_icmp_ne_i32:
111 ; LA32:       # %bb.0:
112 ; LA32-NEXT:    andn $a0, $a1, $a0
113 ; LA32-NEXT:    sltu $a0, $zero, $a0
114 ; LA32-NEXT:    ret
116 ; LA64-LABEL: andn_icmp_ne_i32:
117 ; LA64:       # %bb.0:
118 ; LA64-NEXT:    andn $a0, $a1, $a0
119 ; LA64-NEXT:    sltu $a0, $zero, $a0
120 ; LA64-NEXT:    ret
121   %and = and i32 %a, %b
122   %cmpne = icmp ne i32 %and, %b
123   ret i1 %cmpne
126 define i1 @andn_icmp_ne_i64(i64 %a, i64 %b) nounwind {
127 ; LA32-LABEL: andn_icmp_ne_i64:
128 ; LA32:       # %bb.0:
129 ; LA32-NEXT:    andn $a1, $a3, $a1
130 ; LA32-NEXT:    andn $a0, $a2, $a0
131 ; LA32-NEXT:    or $a0, $a0, $a1
132 ; LA32-NEXT:    sltu $a0, $zero, $a0
133 ; LA32-NEXT:    ret
135 ; LA64-LABEL: andn_icmp_ne_i64:
136 ; LA64:       # %bb.0:
137 ; LA64-NEXT:    andn $a0, $a1, $a0
138 ; LA64-NEXT:    sltu $a0, $zero, $a0
139 ; LA64-NEXT:    ret
140   %and = and i64 %a, %b
141   %cmpne = icmp ne i64 %and, %b
142   ret i1 %cmpne