xref: /llvm-project/llvm/test/CodeGen/X86/apx/and.ll (revision f30188797453fc9bccb0ba9e8bdb8fd47369dfa7)
1b1eaffd3SShengchen Kan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2f6617091SXinWang10; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s
3a9e8a3a1SShengchen Kan; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd,nf -verify-machineinstrs --show-mc-encoding | FileCheck --check-prefix=NF %s
4b1eaffd3SShengchen Kan
5b1eaffd3SShengchen Kandefine i8 @and8rr(i8 noundef %a, i8 noundef %b) {
6b1eaffd3SShengchen Kan; CHECK-LABEL: and8rr:
7b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
8f6617091SXinWang10; CHECK-NEXT:    andl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0xf7]
9b1eaffd3SShengchen Kan; CHECK-NEXT:    # kill: def $al killed $al killed $eax
10f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
11a9e8a3a1SShengchen Kan;
12a9e8a3a1SShengchen Kan; NF-LABEL: and8rr:
13a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
14a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x21,0xf7]
15a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $al killed $al killed $eax
16a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
17b1eaffd3SShengchen Kanentry:
18b1eaffd3SShengchen Kan    %and = and i8 %a, %b
19b1eaffd3SShengchen Kan    ret i8 %and
20b1eaffd3SShengchen Kan}
21b1eaffd3SShengchen Kan
22b1eaffd3SShengchen Kandefine i16 @and16rr(i16 noundef %a, i16 noundef %b) {
23b1eaffd3SShengchen Kan; CHECK-LABEL: and16rr:
24b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
25f6617091SXinWang10; CHECK-NEXT:    andl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0xf7]
26b1eaffd3SShengchen Kan; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax
27f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
28a9e8a3a1SShengchen Kan;
29a9e8a3a1SShengchen Kan; NF-LABEL: and16rr:
30a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
31a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x21,0xf7]
32a9e8a3a1SShengchen Kan; NF-NEXT:    # kill: def $ax killed $ax killed $eax
33a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
34b1eaffd3SShengchen Kanentry:
35b1eaffd3SShengchen Kan    %and = and i16 %a, %b
36b1eaffd3SShengchen Kan    ret i16 %and
37b1eaffd3SShengchen Kan}
38b1eaffd3SShengchen Kan
39b1eaffd3SShengchen Kandefine i32 @and32rr(i32 noundef %a, i32 noundef %b) {
40b1eaffd3SShengchen Kan; CHECK-LABEL: and32rr:
41b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
42f6617091SXinWang10; CHECK-NEXT:    andl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x21,0xf7]
43f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
44a9e8a3a1SShengchen Kan;
45a9e8a3a1SShengchen Kan; NF-LABEL: and32rr:
46a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
47a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl %esi, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x21,0xf7]
48a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
49b1eaffd3SShengchen Kanentry:
50b1eaffd3SShengchen Kan    %and = and i32 %a, %b
51b1eaffd3SShengchen Kan    ret i32 %and
52b1eaffd3SShengchen Kan}
53b1eaffd3SShengchen Kan
54b1eaffd3SShengchen Kandefine i64 @and64rr(i64 noundef %a, i64 noundef %b) {
55b1eaffd3SShengchen Kan; CHECK-LABEL: and64rr:
56b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
57f6617091SXinWang10; CHECK-NEXT:    andq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x21,0xf7]
58f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
59a9e8a3a1SShengchen Kan;
60a9e8a3a1SShengchen Kan; NF-LABEL: and64rr:
61a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
62a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andq %rsi, %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x21,0xf7]
63a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
64b1eaffd3SShengchen Kanentry:
65b1eaffd3SShengchen Kan    %and = and i64 %a, %b
66b1eaffd3SShengchen Kan    ret i64 %and
67b1eaffd3SShengchen Kan}
68b1eaffd3SShengchen Kan
69b1eaffd3SShengchen Kandefine i8 @and8rm(i8 noundef %a, ptr %b) {
70b1eaffd3SShengchen Kan; CHECK-LABEL: and8rm:
71b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
72f6617091SXinWang10; CHECK-NEXT:    andb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x22,0x3e]
73f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
74a9e8a3a1SShengchen Kan;
75a9e8a3a1SShengchen Kan; NF-LABEL: and8rm:
76a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
77a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andb (%rsi), %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x22,0x3e]
78a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
79b1eaffd3SShengchen Kanentry:
80b1eaffd3SShengchen Kan    %t = load i8, ptr %b
81b1eaffd3SShengchen Kan    %and = and i8 %a, %t
82b1eaffd3SShengchen Kan    ret i8 %and
83b1eaffd3SShengchen Kan}
84b1eaffd3SShengchen Kan
85b1eaffd3SShengchen Kandefine i16 @and16rm(i16 noundef %a, ptr %b) {
86b1eaffd3SShengchen Kan; CHECK-LABEL: and16rm:
87b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
88f6617091SXinWang10; CHECK-NEXT:    andw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x23,0x3e]
89f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
90a9e8a3a1SShengchen Kan;
91a9e8a3a1SShengchen Kan; NF-LABEL: and16rm:
92a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
93a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andw (%rsi), %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x23,0x3e]
94a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
95b1eaffd3SShengchen Kanentry:
96b1eaffd3SShengchen Kan    %t = load i16, ptr %b
97b1eaffd3SShengchen Kan    %and = and i16 %a, %t
98b1eaffd3SShengchen Kan    ret i16 %and
99b1eaffd3SShengchen Kan}
100b1eaffd3SShengchen Kan
101b1eaffd3SShengchen Kandefine i32 @and32rm(i32 noundef %a, ptr %b) {
102b1eaffd3SShengchen Kan; CHECK-LABEL: and32rm:
103b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
104f6617091SXinWang10; CHECK-NEXT:    andl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x23,0x3e]
105f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
106a9e8a3a1SShengchen Kan;
107a9e8a3a1SShengchen Kan; NF-LABEL: and32rm:
108a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
109a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl (%rsi), %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x23,0x3e]
110a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
111b1eaffd3SShengchen Kanentry:
112b1eaffd3SShengchen Kan    %t = load i32, ptr %b
113b1eaffd3SShengchen Kan    %and = and i32 %a, %t
114b1eaffd3SShengchen Kan    ret i32 %and
115b1eaffd3SShengchen Kan}
116b1eaffd3SShengchen Kan
117b1eaffd3SShengchen Kandefine i64 @and64rm(i64 noundef %a, ptr %b) {
118b1eaffd3SShengchen Kan; CHECK-LABEL: and64rm:
119b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
120f6617091SXinWang10; CHECK-NEXT:    andq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x23,0x3e]
121f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
122a9e8a3a1SShengchen Kan;
123a9e8a3a1SShengchen Kan; NF-LABEL: and64rm:
124a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
125a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andq (%rsi), %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x23,0x3e]
126a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
127b1eaffd3SShengchen Kanentry:
128b1eaffd3SShengchen Kan    %t = load i64, ptr %b
129b1eaffd3SShengchen Kan    %and = and i64 %a, %t
130b1eaffd3SShengchen Kan    ret i64 %and
131b1eaffd3SShengchen Kan}
132b1eaffd3SShengchen Kan
133b1eaffd3SShengchen Kandefine i16 @and16ri8(i16 noundef %a) {
134b1eaffd3SShengchen Kan; CHECK-LABEL: and16ri8:
135b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
13620683de7SShengchen Kan; CHECK-NEXT:    andw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xe7,0x7b]
137f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
138a9e8a3a1SShengchen Kan;
139a9e8a3a1SShengchen Kan; NF-LABEL: and16ri8:
140a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
14120683de7SShengchen Kan; NF-NEXT:    {nf} andw $123, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0xe7,0x7b]
142a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
143b1eaffd3SShengchen Kanentry:
144b1eaffd3SShengchen Kan    %and = and i16 %a, 123
145b1eaffd3SShengchen Kan    ret i16 %and
146b1eaffd3SShengchen Kan}
147b1eaffd3SShengchen Kan
148b1eaffd3SShengchen Kandefine i32 @and32ri8(i32 noundef %a) {
149b1eaffd3SShengchen Kan; CHECK-LABEL: and32ri8:
150b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
1515910e34aSXinWang10; CHECK-NEXT:    andl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xe7,0x7b]
152f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
153a9e8a3a1SShengchen Kan;
154a9e8a3a1SShengchen Kan; NF-LABEL: and32ri8:
155a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
156a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl $123, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0xe7,0x7b]
157a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
158b1eaffd3SShengchen Kanentry:
159b1eaffd3SShengchen Kan    %and = and i32 %a, 123
160b1eaffd3SShengchen Kan    ret i32 %and
161b1eaffd3SShengchen Kan}
162b1eaffd3SShengchen Kan
163b1eaffd3SShengchen Kandefine i64 @and64ri8(i64 noundef %a) {
164b1eaffd3SShengchen Kan; CHECK-LABEL: and64ri8:
165b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
1665910e34aSXinWang10; CHECK-NEXT:    andl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xe7,0x7b]
167f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
168a9e8a3a1SShengchen Kan;
169a9e8a3a1SShengchen Kan; NF-LABEL: and64ri8:
170a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
171a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl $123, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0xe7,0x7b]
172a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
173b1eaffd3SShengchen Kanentry:
174b1eaffd3SShengchen Kan    %and = and i64 %a, 123
175b1eaffd3SShengchen Kan    ret i64 %and
176b1eaffd3SShengchen Kan}
177b1eaffd3SShengchen Kan
178b1eaffd3SShengchen Kandefine i8 @and8ri(i8 noundef %a) {
179b1eaffd3SShengchen Kan; CHECK-LABEL: and8ri:
180b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
181f6617091SXinWang10; CHECK-NEXT:    andb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xe7,0x7b]
182f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
183a9e8a3a1SShengchen Kan;
184a9e8a3a1SShengchen Kan; NF-LABEL: and8ri:
185a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
186a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andb $123, %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0xe7,0x7b]
187a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
188b1eaffd3SShengchen Kanentry:
189b1eaffd3SShengchen Kan    %and = and i8 %a, 123
190b1eaffd3SShengchen Kan    ret i8 %and
191b1eaffd3SShengchen Kan}
192b1eaffd3SShengchen Kan
193b1eaffd3SShengchen Kandefine i16 @and16ri(i16 noundef %a) {
194b1eaffd3SShengchen Kan; CHECK-LABEL: and16ri:
195b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
19620683de7SShengchen Kan; CHECK-NEXT:    andw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xe7,0xd2,0x04]
197f6617091SXinWang10; CHECK-NEXT:    # imm = 0x4D2
198f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
199a9e8a3a1SShengchen Kan;
200a9e8a3a1SShengchen Kan; NF-LABEL: and16ri:
201a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
20220683de7SShengchen Kan; NF-NEXT:    {nf} andw $1234, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0xe7,0xd2,0x04]
203a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x4D2
204a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
205b1eaffd3SShengchen Kanentry:
206b1eaffd3SShengchen Kan    %and = and i16 %a, 1234
207b1eaffd3SShengchen Kan    ret i16 %and
208b1eaffd3SShengchen Kan}
209b1eaffd3SShengchen Kan
210b1eaffd3SShengchen Kandefine i32 @and32ri(i32 noundef %a) {
211b1eaffd3SShengchen Kan; CHECK-LABEL: and32ri:
212b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
213f6617091SXinWang10; CHECK-NEXT:    andl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0x40,0xe2,0x01,0x00]
214f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
215f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
216a9e8a3a1SShengchen Kan;
217a9e8a3a1SShengchen Kan; NF-LABEL: and32ri:
218a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
219a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl $123456, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0xe7,0x40,0xe2,0x01,0x00]
220a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
221a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
222b1eaffd3SShengchen Kanentry:
223b1eaffd3SShengchen Kan    %and = and i32 %a, 123456
224b1eaffd3SShengchen Kan    ret i32 %and
225b1eaffd3SShengchen Kan}
226b1eaffd3SShengchen Kan
227b1eaffd3SShengchen Kandefine i64 @and64ri(i64 noundef %a) {
228b1eaffd3SShengchen Kan; CHECK-LABEL: and64ri:
229b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
230f6617091SXinWang10; CHECK-NEXT:    andl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xe7,0x40,0xe2,0x01,0x00]
231f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
232f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
233a9e8a3a1SShengchen Kan;
234a9e8a3a1SShengchen Kan; NF-LABEL: and64ri:
235a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
236a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl $123456, %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0xe7,0x40,0xe2,0x01,0x00]
237a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
238a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
239b1eaffd3SShengchen Kanentry:
240b1eaffd3SShengchen Kan    %and = and i64 %a, 123456
241b1eaffd3SShengchen Kan    ret i64 %and
242b1eaffd3SShengchen Kan}
243b1eaffd3SShengchen Kan
244b1eaffd3SShengchen Kandefine i8 @and8mr(ptr %a, i8 noundef %b) {
245b1eaffd3SShengchen Kan; CHECK-LABEL: and8mr:
246b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
247b6c9dcc9SShengchen Kan; CHECK-NEXT:    andb (%rdi), %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x22,0x37]
248f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
249a9e8a3a1SShengchen Kan;
250a9e8a3a1SShengchen Kan; NF-LABEL: and8mr:
251a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
252b6c9dcc9SShengchen Kan; NF-NEXT:    {nf} andb (%rdi), %sil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x22,0x37]
253a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
254b1eaffd3SShengchen Kanentry:
255b1eaffd3SShengchen Kan  %t= load i8, ptr %a
256b1eaffd3SShengchen Kan  %and = and i8 %t, %b
257b1eaffd3SShengchen Kan  ret i8 %and
258b1eaffd3SShengchen Kan}
259b1eaffd3SShengchen Kan
260b1eaffd3SShengchen Kandefine i16 @and16mr(ptr %a, i16 noundef %b) {
261b1eaffd3SShengchen Kan; CHECK-LABEL: and16mr:
262b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
263b6c9dcc9SShengchen Kan; CHECK-NEXT:    andw (%rdi), %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x23,0x37]
264f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
265a9e8a3a1SShengchen Kan;
266a9e8a3a1SShengchen Kan; NF-LABEL: and16mr:
267a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
268b6c9dcc9SShengchen Kan; NF-NEXT:    {nf} andw (%rdi), %si, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x23,0x37]
269a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
270b1eaffd3SShengchen Kanentry:
271b1eaffd3SShengchen Kan  %t= load i16, ptr %a
272b1eaffd3SShengchen Kan  %and = and i16 %t, %b
273b1eaffd3SShengchen Kan  ret i16 %and
274b1eaffd3SShengchen Kan}
275b1eaffd3SShengchen Kan
276b1eaffd3SShengchen Kandefine i32 @and32mr(ptr %a, i32 noundef %b) {
277b1eaffd3SShengchen Kan; CHECK-LABEL: and32mr:
278b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
279b6c9dcc9SShengchen Kan; CHECK-NEXT:    andl (%rdi), %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x23,0x37]
280f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
281a9e8a3a1SShengchen Kan;
282a9e8a3a1SShengchen Kan; NF-LABEL: and32mr:
283a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
284b6c9dcc9SShengchen Kan; NF-NEXT:    {nf} andl (%rdi), %esi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x23,0x37]
285a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
286b1eaffd3SShengchen Kanentry:
287b1eaffd3SShengchen Kan  %t= load i32, ptr %a
288b1eaffd3SShengchen Kan  %and = and i32 %t, %b
289b1eaffd3SShengchen Kan  ret i32 %and
290b1eaffd3SShengchen Kan}
291b1eaffd3SShengchen Kan
292b1eaffd3SShengchen Kandefine i64 @and64mr(ptr %a, i64 noundef %b) {
293b1eaffd3SShengchen Kan; CHECK-LABEL: and64mr:
294b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
295b6c9dcc9SShengchen Kan; CHECK-NEXT:    andq (%rdi), %rsi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x23,0x37]
296f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
297a9e8a3a1SShengchen Kan;
298a9e8a3a1SShengchen Kan; NF-LABEL: and64mr:
299a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
300b6c9dcc9SShengchen Kan; NF-NEXT:    {nf} andq (%rdi), %rsi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x23,0x37]
301a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
302b1eaffd3SShengchen Kanentry:
303b1eaffd3SShengchen Kan  %t= load i64, ptr %a
304b1eaffd3SShengchen Kan  %and = and i64 %t, %b
305b1eaffd3SShengchen Kan  ret i64 %and
306b1eaffd3SShengchen Kan}
307b1eaffd3SShengchen Kan
308b1eaffd3SShengchen Kandefine i16 @and16mi8(ptr %a) {
309b1eaffd3SShengchen Kan; CHECK-LABEL: and16mi8:
310b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
31120683de7SShengchen Kan; CHECK-NEXT:    andw $123, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x27,0x7b]
312f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
313a9e8a3a1SShengchen Kan;
314a9e8a3a1SShengchen Kan; NF-LABEL: and16mi8:
315a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
31620683de7SShengchen Kan; NF-NEXT:    {nf} andw $123, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0x27,0x7b]
317a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
318b1eaffd3SShengchen Kanentry:
319b1eaffd3SShengchen Kan  %t= load i16, ptr %a
320b1eaffd3SShengchen Kan  %and = and i16 %t, 123
321b1eaffd3SShengchen Kan  ret i16 %and
322b1eaffd3SShengchen Kan}
323b1eaffd3SShengchen Kan
324b1eaffd3SShengchen Kandefine i32 @and32mi8(ptr %a) {
325b1eaffd3SShengchen Kan; CHECK-LABEL: and32mi8:
326b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
3275910e34aSXinWang10; CHECK-NEXT:    andl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0x27,0x7b]
328f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
329a9e8a3a1SShengchen Kan;
330a9e8a3a1SShengchen Kan; NF-LABEL: and32mi8:
331a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
332a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl $123, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0x27,0x7b]
333a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
334b1eaffd3SShengchen Kanentry:
335b1eaffd3SShengchen Kan  %t= load i32, ptr %a
336b1eaffd3SShengchen Kan  %and = and i32 %t, 123
337b1eaffd3SShengchen Kan  ret i32 %and
338b1eaffd3SShengchen Kan}
339b1eaffd3SShengchen Kan
340b1eaffd3SShengchen Kandefine i64 @and64mi8(ptr %a) {
341b1eaffd3SShengchen Kan; CHECK-LABEL: and64mi8:
342b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
343f6617091SXinWang10; CHECK-NEXT:    movq (%rdi), %rax # encoding: [0x48,0x8b,0x07]
344f6617091SXinWang10; CHECK-NEXT:    andl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xe0,0x7b]
345f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
346a9e8a3a1SShengchen Kan;
347a9e8a3a1SShengchen Kan; NF-LABEL: and64mi8:
348a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
349a9e8a3a1SShengchen Kan; NF-NEXT:    movq (%rdi), %rax # encoding: [0x48,0x8b,0x07]
350a9e8a3a1SShengchen Kan; NF-NEXT:    andl $123, %eax # EVEX TO LEGACY Compression encoding: [0x83,0xe0,0x7b]
351a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
352b1eaffd3SShengchen Kanentry:
353b1eaffd3SShengchen Kan  %t= load i64, ptr %a
354b1eaffd3SShengchen Kan  %and = and i64 %t, 123
355b1eaffd3SShengchen Kan  ret i64 %and
356b1eaffd3SShengchen Kan}
357b1eaffd3SShengchen Kan
358b1eaffd3SShengchen Kandefine i8 @and8mi(ptr %a) {
359b1eaffd3SShengchen Kan; CHECK-LABEL: and8mi:
360b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
361f6617091SXinWang10; CHECK-NEXT:    andb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x27,0x7b]
362f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
363a9e8a3a1SShengchen Kan;
364a9e8a3a1SShengchen Kan; NF-LABEL: and8mi:
365a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
366a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andb $123, (%rdi), %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0x27,0x7b]
367a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
368b1eaffd3SShengchen Kanentry:
369b1eaffd3SShengchen Kan  %t= load i8, ptr %a
370b1eaffd3SShengchen Kan  %and = and i8 %t, 123
371b1eaffd3SShengchen Kan  ret i8 %and
372b1eaffd3SShengchen Kan}
373b1eaffd3SShengchen Kan
374b1eaffd3SShengchen Kandefine i16 @and16mi(ptr %a) {
375b1eaffd3SShengchen Kan; CHECK-LABEL: and16mi:
376b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
37720683de7SShengchen Kan; CHECK-NEXT:    andw $1234, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x27,0xd2,0x04]
378f6617091SXinWang10; CHECK-NEXT:    # imm = 0x4D2
379f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
380a9e8a3a1SShengchen Kan;
381a9e8a3a1SShengchen Kan; NF-LABEL: and16mi:
382a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
38320683de7SShengchen Kan; NF-NEXT:    {nf} andw $1234, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0x27,0xd2,0x04]
384a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x4D2
385a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
386b1eaffd3SShengchen Kanentry:
387b1eaffd3SShengchen Kan  %t= load i16, ptr %a
388b1eaffd3SShengchen Kan  %and = and i16 %t, 1234
389b1eaffd3SShengchen Kan  ret i16 %and
390b1eaffd3SShengchen Kan}
391b1eaffd3SShengchen Kan
392b1eaffd3SShengchen Kandefine i32 @and32mi(ptr %a) {
393b1eaffd3SShengchen Kan; CHECK-LABEL: and32mi:
394b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
395f6617091SXinWang10; CHECK-NEXT:    andl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x27,0x40,0xe2,0x01,0x00]
396f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
397f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
398a9e8a3a1SShengchen Kan;
399a9e8a3a1SShengchen Kan; NF-LABEL: and32mi:
400a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
401a9e8a3a1SShengchen Kan; NF-NEXT:    {nf} andl $123456, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0x27,0x40,0xe2,0x01,0x00]
402a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
403a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
404b1eaffd3SShengchen Kanentry:
405b1eaffd3SShengchen Kan  %t= load i32, ptr %a
406b1eaffd3SShengchen Kan  %and = and i32 %t, 123456
407b1eaffd3SShengchen Kan  ret i32 %and
408b1eaffd3SShengchen Kan}
409b1eaffd3SShengchen Kan
410b1eaffd3SShengchen Kandefine i64 @and64mi(ptr %a) {
411b1eaffd3SShengchen Kan; CHECK-LABEL: and64mi:
412b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
413f6617091SXinWang10; CHECK-NEXT:    movq (%rdi), %rax # encoding: [0x48,0x8b,0x07]
414f6617091SXinWang10; CHECK-NEXT:    andl $123456, %eax # EVEX TO LEGACY Compression encoding: [0x25,0x40,0xe2,0x01,0x00]
415f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
416f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
417a9e8a3a1SShengchen Kan;
418a9e8a3a1SShengchen Kan; NF-LABEL: and64mi:
419a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
420a9e8a3a1SShengchen Kan; NF-NEXT:    movq (%rdi), %rax # encoding: [0x48,0x8b,0x07]
421a9e8a3a1SShengchen Kan; NF-NEXT:    andl $123456, %eax # EVEX TO LEGACY Compression encoding: [0x25,0x40,0xe2,0x01,0x00]
422a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
423a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
424b1eaffd3SShengchen Kanentry:
425b1eaffd3SShengchen Kan  %t= load i64, ptr %a
426b1eaffd3SShengchen Kan  %and = and i64 %t, 123456
427b1eaffd3SShengchen Kan  ret i64 %and
428b1eaffd3SShengchen Kan}
429b1eaffd3SShengchen Kan
430b1eaffd3SShengchen Kan@d64 = dso_local global i64 0
431b1eaffd3SShengchen Kan
432b1eaffd3SShengchen Kandefine i1 @andflag8rr(i8 %a, i8 %b) {
433b1eaffd3SShengchen Kan; CHECK-LABEL: andflag8rr:
434b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
435f6617091SXinWang10; CHECK-NEXT:    notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6]
436f6617091SXinWang10; CHECK-NEXT:    andb %al, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x20,0xc7]
437f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
438f6617091SXinWang10; CHECK-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
439f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
440f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
441a9e8a3a1SShengchen Kan;
442a9e8a3a1SShengchen Kan; NF-LABEL: andflag8rr:
443a9e8a3a1SShengchen Kan; NF:       # %bb.0:
444a9e8a3a1SShengchen Kan; NF-NEXT:    notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6]
445a9e8a3a1SShengchen Kan; NF-NEXT:    andb %al, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x20,0xc7]
446a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
447a9e8a3a1SShengchen Kan; NF-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
448a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
449a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
450b1eaffd3SShengchen Kan  %xor = xor i8 %b, -1
451b1eaffd3SShengchen Kan  %v0 = and i8 %a, %xor  ; 0xff << 50
452b1eaffd3SShengchen Kan  %v1 = icmp eq i8 %v0, 0
453b1eaffd3SShengchen Kan  store i8 %v0, ptr @d64
454b1eaffd3SShengchen Kan  ret i1 %v1
455b1eaffd3SShengchen Kan}
456b1eaffd3SShengchen Kan
457b1eaffd3SShengchen Kandefine i1 @andflag16rr(i16 %a, i16 %b) {
458b1eaffd3SShengchen Kan; CHECK-LABEL: andflag16rr:
459b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
46020683de7SShengchen Kan; CHECK-NEXT:    notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
461f6617091SXinWang10; CHECK-NEXT:    andw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x21,0xc7]
462f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
463f6617091SXinWang10; CHECK-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
464f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
465f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
466a9e8a3a1SShengchen Kan;
467a9e8a3a1SShengchen Kan; NF-LABEL: andflag16rr:
468a9e8a3a1SShengchen Kan; NF:       # %bb.0:
46920683de7SShengchen Kan; NF-NEXT:    notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
470a9e8a3a1SShengchen Kan; NF-NEXT:    andw %ax, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x21,0xc7]
471a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
472a9e8a3a1SShengchen Kan; NF-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
473a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
474a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
475b1eaffd3SShengchen Kan  %xor = xor i16 %b, -1
476b1eaffd3SShengchen Kan  %v0 = and i16 %a, %xor  ; 0xff << 50
477b1eaffd3SShengchen Kan  %v1 = icmp eq i16 %v0, 0
478b1eaffd3SShengchen Kan  store i16 %v0, ptr @d64
479b1eaffd3SShengchen Kan  ret i1 %v1
480b1eaffd3SShengchen Kan}
481b1eaffd3SShengchen Kan
482b1eaffd3SShengchen Kandefine i1 @andflag32rr(i32 %a, i32 %b) {
483b1eaffd3SShengchen Kan; CHECK-LABEL: andflag32rr:
484b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
485*f3018879SFreddy Ye; CHECK-NEXT:    andl %edi, %esi # EVEX TO LEGACY Compression encoding: [0x21,0xfe]
486f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
487*f3018879SFreddy Ye; CHECK-NEXT:    movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A]
488f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
489f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
490a9e8a3a1SShengchen Kan;
491a9e8a3a1SShengchen Kan; NF-LABEL: andflag32rr:
492a9e8a3a1SShengchen Kan; NF:       # %bb.0:
493*f3018879SFreddy Ye; NF-NEXT:    andl %edi, %esi # EVEX TO LEGACY Compression encoding: [0x21,0xfe]
494a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
495*f3018879SFreddy Ye; NF-NEXT:    movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A]
496a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
497a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
498b1eaffd3SShengchen Kan  %v0 = and i32 %a, %b  ; 0xff << 50
499b1eaffd3SShengchen Kan  %v1 = icmp eq i32 %v0, 0
500b1eaffd3SShengchen Kan  store i32 %v0, ptr @d64
501b1eaffd3SShengchen Kan  ret i1 %v1
502b1eaffd3SShengchen Kan}
503b1eaffd3SShengchen Kan
504b1eaffd3SShengchen Kandefine i1 @andflag64rr(i64 %a, i64 %b) {
505b1eaffd3SShengchen Kan; CHECK-LABEL: andflag64rr:
506b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
507*f3018879SFreddy Ye; CHECK-NEXT:    andq %rdi, %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x21,0xfe]
508f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
509*f3018879SFreddy Ye; CHECK-NEXT:    movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A]
510f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
511f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
512a9e8a3a1SShengchen Kan;
513a9e8a3a1SShengchen Kan; NF-LABEL: andflag64rr:
514a9e8a3a1SShengchen Kan; NF:       # %bb.0:
515*f3018879SFreddy Ye; NF-NEXT:    andq %rdi, %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x21,0xfe]
516a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
517*f3018879SFreddy Ye; NF-NEXT:    movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A]
518a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
519a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
520b1eaffd3SShengchen Kan  %v0 = and i64 %a, %b  ; 0xff << 50
521b1eaffd3SShengchen Kan  %v1 = icmp eq i64 %v0, 0
522b1eaffd3SShengchen Kan  store i64 %v0, ptr @d64
523b1eaffd3SShengchen Kan  ret i1 %v1
524b1eaffd3SShengchen Kan}
525b1eaffd3SShengchen Kan
526b1eaffd3SShengchen Kandefine i1 @andflag8rm(ptr %ptr, i8 %b) {
527b1eaffd3SShengchen Kan; CHECK-LABEL: andflag8rm:
528b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
529f6617091SXinWang10; CHECK-NEXT:    notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6]
530f6617091SXinWang10; CHECK-NEXT:    andb (%rdi), %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x22,0x07]
531f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
532f6617091SXinWang10; CHECK-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
533f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
534f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
535a9e8a3a1SShengchen Kan;
536a9e8a3a1SShengchen Kan; NF-LABEL: andflag8rm:
537a9e8a3a1SShengchen Kan; NF:       # %bb.0:
538a9e8a3a1SShengchen Kan; NF-NEXT:    notb %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xf6,0xd6]
539a9e8a3a1SShengchen Kan; NF-NEXT:    andb (%rdi), %al, %cl # encoding: [0x62,0xf4,0x74,0x18,0x22,0x07]
540a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
541a9e8a3a1SShengchen Kan; NF-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
542a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
543a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
544b1eaffd3SShengchen Kan  %a = load i8, ptr %ptr
545b1eaffd3SShengchen Kan  %xor = xor i8 %b, -1
546b1eaffd3SShengchen Kan  %v0 = and i8 %a, %xor  ; 0xff << 50
547b1eaffd3SShengchen Kan  %v1 = icmp eq i8 %v0, 0
548b1eaffd3SShengchen Kan  store i8 %v0, ptr @d64
549b1eaffd3SShengchen Kan  ret i1 %v1
550b1eaffd3SShengchen Kan}
551b1eaffd3SShengchen Kan
552b1eaffd3SShengchen Kandefine i1 @andflag16rm(ptr %ptr, i16 %b) {
553b1eaffd3SShengchen Kan; CHECK-LABEL: andflag16rm:
554b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
55520683de7SShengchen Kan; CHECK-NEXT:    notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
556f6617091SXinWang10; CHECK-NEXT:    andw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x23,0x07]
557f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
558f6617091SXinWang10; CHECK-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
559f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
560f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
561a9e8a3a1SShengchen Kan;
562a9e8a3a1SShengchen Kan; NF-LABEL: andflag16rm:
563a9e8a3a1SShengchen Kan; NF:       # %bb.0:
56420683de7SShengchen Kan; NF-NEXT:    notw %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xf7,0xd6]
565a9e8a3a1SShengchen Kan; NF-NEXT:    andw (%rdi), %ax, %cx # encoding: [0x62,0xf4,0x75,0x18,0x23,0x07]
566a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
567a9e8a3a1SShengchen Kan; NF-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
568a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
569a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
570b1eaffd3SShengchen Kan  %a = load i16, ptr %ptr
571b1eaffd3SShengchen Kan  %xor = xor i16 %b, -1
572b1eaffd3SShengchen Kan  %v0 = and i16 %a, %xor  ; 0xff << 50
573b1eaffd3SShengchen Kan  %v1 = icmp eq i16 %v0, 0
574b1eaffd3SShengchen Kan  store i16 %v0, ptr @d64
575b1eaffd3SShengchen Kan  ret i1 %v1
576b1eaffd3SShengchen Kan}
577b1eaffd3SShengchen Kan
578b1eaffd3SShengchen Kandefine i1 @andflag32rm(ptr %ptr, i32 %b) {
579b1eaffd3SShengchen Kan; CHECK-LABEL: andflag32rm:
580b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
581*f3018879SFreddy Ye; CHECK-NEXT:    andl (%rdi), %esi # EVEX TO LEGACY Compression encoding: [0x23,0x37]
582f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
583*f3018879SFreddy Ye; CHECK-NEXT:    movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A]
584f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
585f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
586a9e8a3a1SShengchen Kan;
587a9e8a3a1SShengchen Kan; NF-LABEL: andflag32rm:
588a9e8a3a1SShengchen Kan; NF:       # %bb.0:
589*f3018879SFreddy Ye; NF-NEXT:    andl (%rdi), %esi # EVEX TO LEGACY Compression encoding: [0x23,0x37]
590a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
591*f3018879SFreddy Ye; NF-NEXT:    movl %esi, d64(%rip) # encoding: [0x89,0x35,A,A,A,A]
592a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
593a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
594b1eaffd3SShengchen Kan  %a = load i32, ptr %ptr
595b1eaffd3SShengchen Kan  %v0 = and i32 %a, %b  ; 0xff << 50
596b1eaffd3SShengchen Kan  %v1 = icmp eq i32 %v0, 0
597b1eaffd3SShengchen Kan  store i32 %v0, ptr @d64
598b1eaffd3SShengchen Kan  ret i1 %v1
599b1eaffd3SShengchen Kan}
600b1eaffd3SShengchen Kan
601b1eaffd3SShengchen Kandefine i1 @andflag64rm(ptr %ptr, i64 %b) {
602b1eaffd3SShengchen Kan; CHECK-LABEL: andflag64rm:
603b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
604*f3018879SFreddy Ye; CHECK-NEXT:    andq (%rdi), %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x23,0x37]
605f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
606*f3018879SFreddy Ye; CHECK-NEXT:    movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A]
607f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
608f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
609a9e8a3a1SShengchen Kan;
610a9e8a3a1SShengchen Kan; NF-LABEL: andflag64rm:
611a9e8a3a1SShengchen Kan; NF:       # %bb.0:
612*f3018879SFreddy Ye; NF-NEXT:    andq (%rdi), %rsi # EVEX TO LEGACY Compression encoding: [0x48,0x23,0x37]
613a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
614*f3018879SFreddy Ye; NF-NEXT:    movq %rsi, d64(%rip) # encoding: [0x48,0x89,0x35,A,A,A,A]
615a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
616a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
617b1eaffd3SShengchen Kan  %a = load i64, ptr %ptr
618b1eaffd3SShengchen Kan  %v0 = and i64 %a, %b  ; 0xff << 50
619b1eaffd3SShengchen Kan  %v1 = icmp eq i64 %v0, 0
620b1eaffd3SShengchen Kan  store i64 %v0, ptr @d64
621b1eaffd3SShengchen Kan  ret i1 %v1
622b1eaffd3SShengchen Kan}
623b1eaffd3SShengchen Kan
624b1eaffd3SShengchen Kandefine i1 @andflag8ri(i8 %a) {
625b1eaffd3SShengchen Kan; CHECK-LABEL: andflag8ri:
626b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
627f6617091SXinWang10; CHECK-NEXT:    andb $-124, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xe7,0x84]
628f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
629f6617091SXinWang10; CHECK-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
630f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
631f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
632a9e8a3a1SShengchen Kan;
633a9e8a3a1SShengchen Kan; NF-LABEL: andflag8ri:
634a9e8a3a1SShengchen Kan; NF:       # %bb.0:
635a9e8a3a1SShengchen Kan; NF-NEXT:    andb $-124, %dil, %cl # encoding: [0x62,0xf4,0x74,0x18,0x80,0xe7,0x84]
636a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
637a9e8a3a1SShengchen Kan; NF-NEXT:    movb %cl, d64(%rip) # encoding: [0x88,0x0d,A,A,A,A]
638a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
639a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
640b1eaffd3SShengchen Kan  %xor = xor i8 123, -1
641b1eaffd3SShengchen Kan  %v0 = and i8 %a, %xor  ; 0xff << 50
642b1eaffd3SShengchen Kan  %v1 = icmp eq i8 %v0, 0
643b1eaffd3SShengchen Kan  store i8 %v0, ptr @d64
644b1eaffd3SShengchen Kan  ret i1 %v1
645b1eaffd3SShengchen Kan}
646b1eaffd3SShengchen Kan
647b1eaffd3SShengchen Kandefine i1 @andflag16ri(i16 %a) {
648b1eaffd3SShengchen Kan; CHECK-LABEL: andflag16ri:
649b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
650f6617091SXinWang10; CHECK-NEXT:    andw $-1235, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xe7,0x2d,0xfb]
651f6617091SXinWang10; CHECK-NEXT:    # imm = 0xFB2D
652f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
653f6617091SXinWang10; CHECK-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
654f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
655f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
656a9e8a3a1SShengchen Kan;
657a9e8a3a1SShengchen Kan; NF-LABEL: andflag16ri:
658a9e8a3a1SShengchen Kan; NF:       # %bb.0:
659a9e8a3a1SShengchen Kan; NF-NEXT:    andw $-1235, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x81,0xe7,0x2d,0xfb]
660a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0xFB2D
661a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
662a9e8a3a1SShengchen Kan; NF-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
663a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
664a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
665b1eaffd3SShengchen Kan  %xor = xor i16 1234, -1
666b1eaffd3SShengchen Kan  %v0 = and i16 %a, %xor  ; 0xff << 50
667b1eaffd3SShengchen Kan  %v1 = icmp eq i16 %v0, 0
668b1eaffd3SShengchen Kan  store i16 %v0, ptr @d64
669b1eaffd3SShengchen Kan  ret i1 %v1
670b1eaffd3SShengchen Kan}
671b1eaffd3SShengchen Kan
672b1eaffd3SShengchen Kandefine i1 @andflag32ri(i32 %a) {
673b1eaffd3SShengchen Kan; CHECK-LABEL: andflag32ri:
674b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
675*f3018879SFreddy Ye; CHECK-NEXT:    andl $123456, %edi # EVEX TO LEGACY Compression encoding: [0x81,0xe7,0x40,0xe2,0x01,0x00]
676f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
677f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
678*f3018879SFreddy Ye; CHECK-NEXT:    movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A]
679f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
680f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
681a9e8a3a1SShengchen Kan;
682a9e8a3a1SShengchen Kan; NF-LABEL: andflag32ri:
683a9e8a3a1SShengchen Kan; NF:       # %bb.0:
684*f3018879SFreddy Ye; NF-NEXT:    andl $123456, %edi # EVEX TO LEGACY Compression encoding: [0x81,0xe7,0x40,0xe2,0x01,0x00]
685a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
686a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
687*f3018879SFreddy Ye; NF-NEXT:    movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A]
688a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
689a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
690b1eaffd3SShengchen Kan  %v0 = and i32 %a, 123456  ; 0xff << 50
691b1eaffd3SShengchen Kan  %v1 = icmp eq i32 %v0, 0
692b1eaffd3SShengchen Kan  store i32 %v0, ptr @d64
693b1eaffd3SShengchen Kan  ret i1 %v1
694b1eaffd3SShengchen Kan}
695b1eaffd3SShengchen Kan
696b1eaffd3SShengchen Kandefine i1 @andflag64ri(i64 %a) {
697b1eaffd3SShengchen Kan; CHECK-LABEL: andflag64ri:
698b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
699*f3018879SFreddy Ye; CHECK-NEXT:    andq $123456, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x81,0xe7,0x40,0xe2,0x01,0x00]
700f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
701f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
702*f3018879SFreddy Ye; CHECK-NEXT:    movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A]
703f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
704f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
705a9e8a3a1SShengchen Kan;
706a9e8a3a1SShengchen Kan; NF-LABEL: andflag64ri:
707a9e8a3a1SShengchen Kan; NF:       # %bb.0:
708*f3018879SFreddy Ye; NF-NEXT:    andq $123456, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x81,0xe7,0x40,0xe2,0x01,0x00]
709a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
710a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
711*f3018879SFreddy Ye; NF-NEXT:    movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A]
712a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
713a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
714b1eaffd3SShengchen Kan  %v0 = and i64 %a, 123456  ; 0xff << 50
715b1eaffd3SShengchen Kan  %v1 = icmp eq i64 %v0, 0
716b1eaffd3SShengchen Kan  store i64 %v0, ptr @d64
717b1eaffd3SShengchen Kan  ret i1 %v1
718b1eaffd3SShengchen Kan}
719b1eaffd3SShengchen Kan
720b1eaffd3SShengchen Kandefine i1 @andflag16ri8(i16 %a) {
721b1eaffd3SShengchen Kan; CHECK-LABEL: andflag16ri8:
722b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
7235910e34aSXinWang10; CHECK-NEXT:    andw $-124, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x83,0xe7,0x84]
724f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
725f6617091SXinWang10; CHECK-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
726f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
727f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
728a9e8a3a1SShengchen Kan;
729a9e8a3a1SShengchen Kan; NF-LABEL: andflag16ri8:
730a9e8a3a1SShengchen Kan; NF:       # %bb.0:
731a9e8a3a1SShengchen Kan; NF-NEXT:    andw $-124, %di, %cx # encoding: [0x62,0xf4,0x75,0x18,0x83,0xe7,0x84]
732a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
733a9e8a3a1SShengchen Kan; NF-NEXT:    movw %cx, d64(%rip) # encoding: [0x66,0x89,0x0d,A,A,A,A]
734a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
735a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
736b1eaffd3SShengchen Kan  %xor = xor i16 123, -1
737b1eaffd3SShengchen Kan  %v0 = and i16 %a, %xor  ; 0xff << 50
738b1eaffd3SShengchen Kan  %v1 = icmp eq i16 %v0, 0
739b1eaffd3SShengchen Kan  store i16 %v0, ptr @d64
740b1eaffd3SShengchen Kan  ret i1 %v1
741b1eaffd3SShengchen Kan}
742b1eaffd3SShengchen Kan
743b1eaffd3SShengchen Kandefine i1 @andflag32ri8(i32 %a) {
744b1eaffd3SShengchen Kan; CHECK-LABEL: andflag32ri8:
745b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
746*f3018879SFreddy Ye; CHECK-NEXT:    andl $123, %edi # EVEX TO LEGACY Compression encoding: [0x83,0xe7,0x7b]
747f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
748*f3018879SFreddy Ye; CHECK-NEXT:    movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A]
749f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
750f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
751a9e8a3a1SShengchen Kan;
752a9e8a3a1SShengchen Kan; NF-LABEL: andflag32ri8:
753a9e8a3a1SShengchen Kan; NF:       # %bb.0:
754*f3018879SFreddy Ye; NF-NEXT:    andl $123, %edi # EVEX TO LEGACY Compression encoding: [0x83,0xe7,0x7b]
755a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
756*f3018879SFreddy Ye; NF-NEXT:    movl %edi, d64(%rip) # encoding: [0x89,0x3d,A,A,A,A]
757a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 2, value: d64-4, kind: reloc_riprel_4byte
758a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
759b1eaffd3SShengchen Kan  %v0 = and i32 %a, 123  ; 0xff << 50
760b1eaffd3SShengchen Kan  %v1 = icmp eq i32 %v0, 0
761b1eaffd3SShengchen Kan  store i32 %v0, ptr @d64
762b1eaffd3SShengchen Kan  ret i1 %v1
763b1eaffd3SShengchen Kan}
764b1eaffd3SShengchen Kan
765b1eaffd3SShengchen Kandefine i1 @andflag64ri8(i64 %a) {
766b1eaffd3SShengchen Kan; CHECK-LABEL: andflag64ri8:
767b1eaffd3SShengchen Kan; CHECK:       # %bb.0:
768*f3018879SFreddy Ye; CHECK-NEXT:    andq $123, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x83,0xe7,0x7b]
769f6617091SXinWang10; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
770*f3018879SFreddy Ye; CHECK-NEXT:    movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A]
771f6617091SXinWang10; CHECK-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
772f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
773a9e8a3a1SShengchen Kan;
774a9e8a3a1SShengchen Kan; NF-LABEL: andflag64ri8:
775a9e8a3a1SShengchen Kan; NF:       # %bb.0:
776*f3018879SFreddy Ye; NF-NEXT:    andq $123, %rdi # EVEX TO LEGACY Compression encoding: [0x48,0x83,0xe7,0x7b]
777a9e8a3a1SShengchen Kan; NF-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
778*f3018879SFreddy Ye; NF-NEXT:    movq %rdi, d64(%rip) # encoding: [0x48,0x89,0x3d,A,A,A,A]
779a9e8a3a1SShengchen Kan; NF-NEXT:    # fixup A - offset: 3, value: d64-4, kind: reloc_riprel_4byte
780a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
781b1eaffd3SShengchen Kan  %v0 = and i64 %a, 123  ; 0xff << 50
782b1eaffd3SShengchen Kan  %v1 = icmp eq i64 %v0, 0
783b1eaffd3SShengchen Kan  store i64 %v0, ptr @d64
784b1eaffd3SShengchen Kan  ret i1 %v1
785b1eaffd3SShengchen Kan}
786b1eaffd3SShengchen Kan
787b1eaffd3SShengchen Kandefine void @and8mr_legacy(ptr %a, i8 noundef %b) {
788b1eaffd3SShengchen Kan; CHECK-LABEL: and8mr_legacy:
789b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
790f6617091SXinWang10; CHECK-NEXT:    andb %sil, (%rdi) # encoding: [0x40,0x20,0x37]
791f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
792a9e8a3a1SShengchen Kan;
793a9e8a3a1SShengchen Kan; NF-LABEL: and8mr_legacy:
794a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
795a9e8a3a1SShengchen Kan; NF-NEXT:    andb %sil, (%rdi) # encoding: [0x40,0x20,0x37]
796a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
797b1eaffd3SShengchen Kanentry:
798b1eaffd3SShengchen Kan  %t= load i8, ptr %a
799b1eaffd3SShengchen Kan  %and = and i8 %t, %b
800b1eaffd3SShengchen Kan  store i8 %and, ptr %a
801b1eaffd3SShengchen Kan  ret void
802b1eaffd3SShengchen Kan}
803b1eaffd3SShengchen Kan
804b1eaffd3SShengchen Kandefine void @and16mr_legacy(ptr %a, i16 noundef %b) {
805b1eaffd3SShengchen Kan; CHECK-LABEL: and16mr_legacy:
806b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
807f6617091SXinWang10; CHECK-NEXT:    andw %si, (%rdi) # encoding: [0x66,0x21,0x37]
808f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
809a9e8a3a1SShengchen Kan;
810a9e8a3a1SShengchen Kan; NF-LABEL: and16mr_legacy:
811a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
812a9e8a3a1SShengchen Kan; NF-NEXT:    andw %si, (%rdi) # encoding: [0x66,0x21,0x37]
813a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
814b1eaffd3SShengchen Kanentry:
815b1eaffd3SShengchen Kan  %t= load i16, ptr %a
816b1eaffd3SShengchen Kan  %and = and i16 %t, %b
817b1eaffd3SShengchen Kan  store i16 %and, ptr %a
818b1eaffd3SShengchen Kan  ret void
819b1eaffd3SShengchen Kan}
820b1eaffd3SShengchen Kan
821b1eaffd3SShengchen Kandefine void @and32mr_legacy(ptr %a, i32 noundef %b) {
822b1eaffd3SShengchen Kan; CHECK-LABEL: and32mr_legacy:
823b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
824f6617091SXinWang10; CHECK-NEXT:    andl %esi, (%rdi) # encoding: [0x21,0x37]
825f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
826a9e8a3a1SShengchen Kan;
827a9e8a3a1SShengchen Kan; NF-LABEL: and32mr_legacy:
828a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
829a9e8a3a1SShengchen Kan; NF-NEXT:    andl %esi, (%rdi) # encoding: [0x21,0x37]
830a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
831b1eaffd3SShengchen Kanentry:
832b1eaffd3SShengchen Kan  %t= load i32, ptr %a
833b1eaffd3SShengchen Kan  %and = and i32 %t, %b
834b1eaffd3SShengchen Kan  store i32 %and, ptr %a
835b1eaffd3SShengchen Kan  ret void
836b1eaffd3SShengchen Kan}
837b1eaffd3SShengchen Kan
838b1eaffd3SShengchen Kandefine void @and64mr_legacy(ptr %a, i64 noundef %b) {
839b1eaffd3SShengchen Kan; CHECK-LABEL: and64mr_legacy:
840b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
841f6617091SXinWang10; CHECK-NEXT:    andq %rsi, (%rdi) # encoding: [0x48,0x21,0x37]
842f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
843a9e8a3a1SShengchen Kan;
844a9e8a3a1SShengchen Kan; NF-LABEL: and64mr_legacy:
845a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
846a9e8a3a1SShengchen Kan; NF-NEXT:    andq %rsi, (%rdi) # encoding: [0x48,0x21,0x37]
847a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
848b1eaffd3SShengchen Kanentry:
849b1eaffd3SShengchen Kan  %t= load i64, ptr %a
850b1eaffd3SShengchen Kan  %and = and i64 %t, %b
851b1eaffd3SShengchen Kan  store i64 %and, ptr %a
852b1eaffd3SShengchen Kan  ret void
853b1eaffd3SShengchen Kan}
854b1eaffd3SShengchen Kan
855b1eaffd3SShengchen Kandefine void @and8mi_legacy(ptr %a) {
856b1eaffd3SShengchen Kan; CHECK-LABEL: and8mi_legacy:
857b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
858f6617091SXinWang10; CHECK-NEXT:    andb $123, (%rdi) # encoding: [0x80,0x27,0x7b]
859f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
860a9e8a3a1SShengchen Kan;
861a9e8a3a1SShengchen Kan; NF-LABEL: and8mi_legacy:
862a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
863a9e8a3a1SShengchen Kan; NF-NEXT:    andb $123, (%rdi) # encoding: [0x80,0x27,0x7b]
864a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
865b1eaffd3SShengchen Kanentry:
866b1eaffd3SShengchen Kan  %t= load i8, ptr %a
867b1eaffd3SShengchen Kan  %and = and i8 %t, 123
868b1eaffd3SShengchen Kan  store i8 %and, ptr %a
869b1eaffd3SShengchen Kan  ret void
870b1eaffd3SShengchen Kan}
871b1eaffd3SShengchen Kan
872b1eaffd3SShengchen Kandefine void @and16mi_legacy(ptr %a) {
873b1eaffd3SShengchen Kan; CHECK-LABEL: and16mi_legacy:
874b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
875f6617091SXinWang10; CHECK-NEXT:    andw $1234, (%rdi) # encoding: [0x66,0x81,0x27,0xd2,0x04]
876f6617091SXinWang10; CHECK-NEXT:    # imm = 0x4D2
877f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
878a9e8a3a1SShengchen Kan;
879a9e8a3a1SShengchen Kan; NF-LABEL: and16mi_legacy:
880a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
881a9e8a3a1SShengchen Kan; NF-NEXT:    andw $1234, (%rdi) # encoding: [0x66,0x81,0x27,0xd2,0x04]
882a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x4D2
883a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
884b1eaffd3SShengchen Kanentry:
885b1eaffd3SShengchen Kan  %t= load i16, ptr %a
886b1eaffd3SShengchen Kan  %and = and i16 %t, 1234
887b1eaffd3SShengchen Kan  store i16 %and, ptr %a
888b1eaffd3SShengchen Kan  ret void
889b1eaffd3SShengchen Kan}
890b1eaffd3SShengchen Kan
891b1eaffd3SShengchen Kandefine void @and32mi_legacy(ptr %a) {
892b1eaffd3SShengchen Kan; CHECK-LABEL: and32mi_legacy:
893b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
894f6617091SXinWang10; CHECK-NEXT:    andl $123456, (%rdi) # encoding: [0x81,0x27,0x40,0xe2,0x01,0x00]
895f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
896f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
897a9e8a3a1SShengchen Kan;
898a9e8a3a1SShengchen Kan; NF-LABEL: and32mi_legacy:
899a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
900a9e8a3a1SShengchen Kan; NF-NEXT:    andl $123456, (%rdi) # encoding: [0x81,0x27,0x40,0xe2,0x01,0x00]
901a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
902a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
903b1eaffd3SShengchen Kanentry:
904b1eaffd3SShengchen Kan  %t= load i32, ptr %a
905b1eaffd3SShengchen Kan  %and = and i32 %t, 123456
906b1eaffd3SShengchen Kan  store i32 %and, ptr %a
907b1eaffd3SShengchen Kan  ret void
908b1eaffd3SShengchen Kan}
909b1eaffd3SShengchen Kan
910b1eaffd3SShengchen Kandefine void @and64mi_legacy(ptr %a) {
911b1eaffd3SShengchen Kan; CHECK-LABEL: and64mi_legacy:
912b1eaffd3SShengchen Kan; CHECK:       # %bb.0: # %entry
913f6617091SXinWang10; CHECK-NEXT:    andq $123456, (%rdi) # encoding: [0x48,0x81,0x27,0x40,0xe2,0x01,0x00]
914f6617091SXinWang10; CHECK-NEXT:    # imm = 0x1E240
915f6617091SXinWang10; CHECK-NEXT:    retq # encoding: [0xc3]
916a9e8a3a1SShengchen Kan;
917a9e8a3a1SShengchen Kan; NF-LABEL: and64mi_legacy:
918a9e8a3a1SShengchen Kan; NF:       # %bb.0: # %entry
919a9e8a3a1SShengchen Kan; NF-NEXT:    andq $123456, (%rdi) # encoding: [0x48,0x81,0x27,0x40,0xe2,0x01,0x00]
920a9e8a3a1SShengchen Kan; NF-NEXT:    # imm = 0x1E240
921a9e8a3a1SShengchen Kan; NF-NEXT:    retq # encoding: [0xc3]
922b1eaffd3SShengchen Kanentry:
923b1eaffd3SShengchen Kan  %t= load i64, ptr %a
924b1eaffd3SShengchen Kan  %and = and i64 %t, 123456
925b1eaffd3SShengchen Kan  store i64 %and, ptr %a
926b1eaffd3SShengchen Kan  ret void
927b1eaffd3SShengchen Kan}
928