xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/llvm-ir/and.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips2 | FileCheck %s \
2*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32 | FileCheck %s \
4*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r2 | FileCheck %s \
6*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r3 | FileCheck %s \
8*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
9*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r5 | FileCheck %s \
10*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
11*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 | FileCheck %s \
12*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
13*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips3 | FileCheck %s \
14*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
15*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips4 | FileCheck %s \
16*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
17*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64 | FileCheck %s \
18*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
19*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r2 | FileCheck %s \
20*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
21*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r3 | FileCheck %s \
22*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
23*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r5 | FileCheck %s \
24*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
25*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r6 | FileCheck %s \
26*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
27*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \
28*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,MM,MM32
29*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \
30*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,MM,MM32
31*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips64r6 -target-abi n64 -mattr=+micromips | FileCheck %s \
32*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,MM,MM64
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerdefine signext i1 @and_i1(i1 signext %a, i1 signext %b) {
35*9880d681SAndroid Build Coastguard Workerentry:
36*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i1:
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $2, $4, $5
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker  ; GP64:         and     $2, $4, $5
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker  ; MM:           and16   $[[T0:[0-9]+]], $5
43*9880d681SAndroid Build Coastguard Worker  ; MM:           move    $2, $[[T0]]
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker  %r = and i1 %a, %b
46*9880d681SAndroid Build Coastguard Worker  ret i1 %r
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Workerdefine signext i8 @and_i8(i8 signext %a, i8 signext %b) {
50*9880d681SAndroid Build Coastguard Workerentry:
51*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i8:
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $2, $4, $5
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker  ; GP64:         and     $2, $4, $5
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker  ; MM:           and16   $[[T0:[0-9]+]], $5
58*9880d681SAndroid Build Coastguard Worker  ; MM:           move    $2, $[[T0]]
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Worker  %r = and i8 %a, %b
61*9880d681SAndroid Build Coastguard Worker  ret i8 %r
62*9880d681SAndroid Build Coastguard Worker}
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Workerdefine signext i16 @and_i16(i16 signext %a, i16 signext %b) {
65*9880d681SAndroid Build Coastguard Workerentry:
66*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i16:
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $2, $4, $5
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Worker  ; GP64:         and     $2, $4, $5
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Worker  ; MM:           and16   $[[T0:[0-9]+]], $5
73*9880d681SAndroid Build Coastguard Worker  ; MM:           move    $2, $[[T0]]
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker  %r = and i16 %a, %b
76*9880d681SAndroid Build Coastguard Worker  ret i16 %r
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerdefine signext i32 @and_i32(i32 signext %a, i32 signext %b) {
80*9880d681SAndroid Build Coastguard Workerentry:
81*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i32:
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $2, $4, $5
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker  ; GP64:         and     $[[T0:[0-9]+]], $4, $5
86*9880d681SAndroid Build Coastguard Worker  ; GP64:         sll     $2, $[[T0]], 0
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Worker  ; MM32:         and16   $[[T0:[0-9]+]], $5
89*9880d681SAndroid Build Coastguard Worker  ; MM32:         move    $2, $[[T0]]
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker  ; MM64:         and     $[[T0:[0-9]+]], $4, $5
92*9880d681SAndroid Build Coastguard Worker  ; MM64:         sll     $2, $[[T0]], 0
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Worker  %r = and i32 %a, %b
95*9880d681SAndroid Build Coastguard Worker  ret i32 %r
96*9880d681SAndroid Build Coastguard Worker}
97*9880d681SAndroid Build Coastguard Worker
98*9880d681SAndroid Build Coastguard Workerdefine signext i64 @and_i64(i64 signext %a, i64 signext %b) {
99*9880d681SAndroid Build Coastguard Workerentry:
100*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i64:
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $2, $4, $6
103*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $3, $5, $7
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Worker  ; GP64:         and     $2, $4, $5
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Worker  ; MM32:         and16   $[[T0:[0-9]+]], $6
108*9880d681SAndroid Build Coastguard Worker  ; MM32:         and16   $[[T1:[0-9]+]], $7
109*9880d681SAndroid Build Coastguard Worker  ; MM32:         move    $2, $[[T0]]
110*9880d681SAndroid Build Coastguard Worker  ; MM32:         move    $3, $[[T1]]
111*9880d681SAndroid Build Coastguard Worker
112*9880d681SAndroid Build Coastguard Worker  ; MM64:         and     $2, $4, $5
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Worker  %r = and i64 %a, %b
115*9880d681SAndroid Build Coastguard Worker  ret i64 %r
116*9880d681SAndroid Build Coastguard Worker}
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Workerdefine signext i128 @and_i128(i128 signext %a, i128 signext %b) {
119*9880d681SAndroid Build Coastguard Workerentry:
120*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i128:
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Worker  ; GP32:         lw      $[[T0:[0-9]+]], 24($sp)
123*9880d681SAndroid Build Coastguard Worker  ; GP32:         lw      $[[T1:[0-9]+]], 20($sp)
124*9880d681SAndroid Build Coastguard Worker  ; GP32:         lw      $[[T2:[0-9]+]], 16($sp)
125*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $2, $4, $[[T2]]
126*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $3, $5, $[[T1]]
127*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $4, $6, $[[T0]]
128*9880d681SAndroid Build Coastguard Worker  ; GP32:         lw      $[[T3:[0-9]+]], 28($sp)
129*9880d681SAndroid Build Coastguard Worker  ; GP32:         and     $5, $7, $[[T3]]
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Worker  ; GP64:         and     $2, $4, $6
132*9880d681SAndroid Build Coastguard Worker  ; GP64:         and     $3, $5, $7
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Worker  ; MM32:         lw      $[[T0:[0-9]+]], 20($sp)
135*9880d681SAndroid Build Coastguard Worker  ; MM32:         lw      $[[T1:[0-9]+]], 16($sp)
136*9880d681SAndroid Build Coastguard Worker  ; MM32:         and16   $[[T1]], $4
137*9880d681SAndroid Build Coastguard Worker  ; MM32:         and16   $[[T0]], $5
138*9880d681SAndroid Build Coastguard Worker  ; MM32:         lw      $[[T2:[0-9]+]], 24($sp)
139*9880d681SAndroid Build Coastguard Worker  ; MM32:         and16   $[[T2]], $6
140*9880d681SAndroid Build Coastguard Worker  ; MM32:         lw      $[[T3:[0-9]+]], 28($sp)
141*9880d681SAndroid Build Coastguard Worker  ; MM32:         and16   $[[T3]], $7
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Worker  ; MM64:         and     $2, $4, $6
144*9880d681SAndroid Build Coastguard Worker  ; MM64:         and     $3, $5, $7
145*9880d681SAndroid Build Coastguard Worker
146*9880d681SAndroid Build Coastguard Worker  %r = and i128 %a, %b
147*9880d681SAndroid Build Coastguard Worker  ret i128 %r
148*9880d681SAndroid Build Coastguard Worker}
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Workerdefine signext i1 @and_i1_4(i1 signext %b) {
151*9880d681SAndroid Build Coastguard Workerentry:
152*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i1_4:
153*9880d681SAndroid Build Coastguard Worker
154*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Worker  ; GP64:         addiu   $2, $zero, 0
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Worker  ; MM:           lui     $2, 0
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Worker  %r = and i1 4, %b
161*9880d681SAndroid Build Coastguard Worker  ret i1 %r
162*9880d681SAndroid Build Coastguard Worker}
163*9880d681SAndroid Build Coastguard Worker
164*9880d681SAndroid Build Coastguard Workerdefine signext i8 @and_i8_4(i8 signext %b) {
165*9880d681SAndroid Build Coastguard Workerentry:
166*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i8_4:
167*9880d681SAndroid Build Coastguard Worker
168*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $2, $4, 4
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 4
171*9880d681SAndroid Build Coastguard Worker
172*9880d681SAndroid Build Coastguard Worker  ; MM:           andi16  $2, $4, 4
173*9880d681SAndroid Build Coastguard Worker
174*9880d681SAndroid Build Coastguard Worker  %r = and i8 4, %b
175*9880d681SAndroid Build Coastguard Worker  ret i8 %r
176*9880d681SAndroid Build Coastguard Worker}
177*9880d681SAndroid Build Coastguard Worker
178*9880d681SAndroid Build Coastguard Workerdefine signext i16 @and_i16_4(i16 signext %b) {
179*9880d681SAndroid Build Coastguard Workerentry:
180*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i16_4:
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $2, $4, 4
183*9880d681SAndroid Build Coastguard Worker
184*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 4
185*9880d681SAndroid Build Coastguard Worker
186*9880d681SAndroid Build Coastguard Worker  ; MM:           andi16  $2, $4, 4
187*9880d681SAndroid Build Coastguard Worker
188*9880d681SAndroid Build Coastguard Worker  %r = and i16 4, %b
189*9880d681SAndroid Build Coastguard Worker  ret i16 %r
190*9880d681SAndroid Build Coastguard Worker}
191*9880d681SAndroid Build Coastguard Worker
192*9880d681SAndroid Build Coastguard Workerdefine signext i32 @and_i32_4(i32 signext %b) {
193*9880d681SAndroid Build Coastguard Workerentry:
194*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i32_4:
195*9880d681SAndroid Build Coastguard Worker
196*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $2, $4, 4
197*9880d681SAndroid Build Coastguard Worker
198*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 4
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Worker  ; MM:           andi16  $2, $4, 4
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Worker  %r = and i32 4, %b
203*9880d681SAndroid Build Coastguard Worker  ret i32 %r
204*9880d681SAndroid Build Coastguard Worker}
205*9880d681SAndroid Build Coastguard Worker
206*9880d681SAndroid Build Coastguard Workerdefine signext i64 @and_i64_4(i64 signext %b) {
207*9880d681SAndroid Build Coastguard Workerentry:
208*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i64_4:
209*9880d681SAndroid Build Coastguard Worker
210*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $3, $5, 4
211*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 4
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi16  $3, $5, 4
216*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $2, $4, 4
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Worker  %r = and i64 4, %b
221*9880d681SAndroid Build Coastguard Worker  ret i64 %r
222*9880d681SAndroid Build Coastguard Worker}
223*9880d681SAndroid Build Coastguard Worker
224*9880d681SAndroid Build Coastguard Workerdefine signext i128 @and_i128_4(i128 signext %b) {
225*9880d681SAndroid Build Coastguard Workerentry:
226*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i128_4:
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $5, $7, 4
229*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
230*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $3, $zero, 0
231*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $4, $zero, 0
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $3, $5, 4
234*9880d681SAndroid Build Coastguard Worker  ; GP64:         daddiu  $2, $zero, 0
235*9880d681SAndroid Build Coastguard Worker
236*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi16  $5, $7, 4
237*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
238*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $3, 0
239*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $4, 0
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $3, $5, 4
242*9880d681SAndroid Build Coastguard Worker  ; MM64:         daddiu  $2, $zero, 0
243*9880d681SAndroid Build Coastguard Worker
244*9880d681SAndroid Build Coastguard Worker  %r = and i128 4, %b
245*9880d681SAndroid Build Coastguard Worker  ret i128 %r
246*9880d681SAndroid Build Coastguard Worker}
247*9880d681SAndroid Build Coastguard Worker
248*9880d681SAndroid Build Coastguard Workerdefine signext i1 @and_i1_31(i1 signext %b) {
249*9880d681SAndroid Build Coastguard Workerentry:
250*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i1_31:
251*9880d681SAndroid Build Coastguard Worker
252*9880d681SAndroid Build Coastguard Worker  ; ALL:          move    $2, $4
253*9880d681SAndroid Build Coastguard Worker
254*9880d681SAndroid Build Coastguard Worker  %r = and i1 31, %b
255*9880d681SAndroid Build Coastguard Worker  ret i1 %r
256*9880d681SAndroid Build Coastguard Worker}
257*9880d681SAndroid Build Coastguard Worker
258*9880d681SAndroid Build Coastguard Workerdefine signext i8 @and_i8_31(i8 signext %b) {
259*9880d681SAndroid Build Coastguard Workerentry:
260*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i8_31:
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $2, $4, 31
263*9880d681SAndroid Build Coastguard Worker
264*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 31
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Worker  ; MM:           andi16  $2, $4, 31
267*9880d681SAndroid Build Coastguard Worker
268*9880d681SAndroid Build Coastguard Worker  %r = and i8 31, %b
269*9880d681SAndroid Build Coastguard Worker  ret i8 %r
270*9880d681SAndroid Build Coastguard Worker}
271*9880d681SAndroid Build Coastguard Worker
272*9880d681SAndroid Build Coastguard Workerdefine signext i16 @and_i16_31(i16 signext %b) {
273*9880d681SAndroid Build Coastguard Workerentry:
274*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i16_31:
275*9880d681SAndroid Build Coastguard Worker
276*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $2, $4, 31
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 31
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Worker  ; MM:           andi16  $2, $4, 31
281*9880d681SAndroid Build Coastguard Worker
282*9880d681SAndroid Build Coastguard Worker  %r = and i16 31, %b
283*9880d681SAndroid Build Coastguard Worker  ret i16 %r
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Workerdefine signext i32 @and_i32_31(i32 signext %b) {
287*9880d681SAndroid Build Coastguard Workerentry:
288*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i32_31:
289*9880d681SAndroid Build Coastguard Worker
290*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $2, $4, 31
291*9880d681SAndroid Build Coastguard Worker
292*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 31
293*9880d681SAndroid Build Coastguard Worker
294*9880d681SAndroid Build Coastguard Worker  ; MM:           andi16  $2, $4, 31
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Worker  %r = and i32 31, %b
297*9880d681SAndroid Build Coastguard Worker  ret i32 %r
298*9880d681SAndroid Build Coastguard Worker}
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard Workerdefine signext i64 @and_i64_31(i64 signext %b) {
301*9880d681SAndroid Build Coastguard Workerentry:
302*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i64_31:
303*9880d681SAndroid Build Coastguard Worker
304*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $3, $5, 31
305*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 31
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi16  $3, $5, 31
310*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
311*9880d681SAndroid Build Coastguard Worker
312*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $2, $4, 31
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Worker  %r = and i64 31, %b
315*9880d681SAndroid Build Coastguard Worker  ret i64 %r
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Worker
318*9880d681SAndroid Build Coastguard Workerdefine signext i128 @and_i128_31(i128 signext %b) {
319*9880d681SAndroid Build Coastguard Workerentry:
320*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i128_31:
321*9880d681SAndroid Build Coastguard Worker
322*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $5, $7, 31
323*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
324*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $3, $zero, 0
325*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $4, $zero, 0
326*9880d681SAndroid Build Coastguard Worker
327*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $3, $5, 31
328*9880d681SAndroid Build Coastguard Worker  ; GP64:         daddiu  $2, $zero, 0
329*9880d681SAndroid Build Coastguard Worker
330*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi16  $5, $7, 31
331*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
332*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $3, 0
333*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $4, 0
334*9880d681SAndroid Build Coastguard Worker
335*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $3, $5, 31
336*9880d681SAndroid Build Coastguard Worker  ; MM64:         daddiu  $2, $zero, 0
337*9880d681SAndroid Build Coastguard Worker
338*9880d681SAndroid Build Coastguard Worker  %r = and i128 31, %b
339*9880d681SAndroid Build Coastguard Worker  ret i128 %r
340*9880d681SAndroid Build Coastguard Worker}
341*9880d681SAndroid Build Coastguard Worker
342*9880d681SAndroid Build Coastguard Workerdefine signext i1 @and_i1_255(i1 signext %b) {
343*9880d681SAndroid Build Coastguard Workerentry:
344*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i1_255:
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Worker  ; ALL:          move    $2, $4
347*9880d681SAndroid Build Coastguard Worker
348*9880d681SAndroid Build Coastguard Worker  %r = and i1 255, %b
349*9880d681SAndroid Build Coastguard Worker  ret i1 %r
350*9880d681SAndroid Build Coastguard Worker}
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Workerdefine signext i8 @and_i8_255(i8 signext %b) {
353*9880d681SAndroid Build Coastguard Workerentry:
354*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i8_255:
355*9880d681SAndroid Build Coastguard Worker
356*9880d681SAndroid Build Coastguard Worker  ; ALL:          move    $2, $4
357*9880d681SAndroid Build Coastguard Worker
358*9880d681SAndroid Build Coastguard Worker  %r = and i8 255, %b
359*9880d681SAndroid Build Coastguard Worker  ret i8 %r
360*9880d681SAndroid Build Coastguard Worker}
361*9880d681SAndroid Build Coastguard Worker
362*9880d681SAndroid Build Coastguard Workerdefine signext i16 @and_i16_255(i16 signext %b) {
363*9880d681SAndroid Build Coastguard Workerentry:
364*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i16_255:
365*9880d681SAndroid Build Coastguard Worker
366*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $2, $4, 255
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 255
369*9880d681SAndroid Build Coastguard Worker
370*9880d681SAndroid Build Coastguard Worker  ; MM:           andi16  $2, $4, 255
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Worker  %r = and i16 255, %b
373*9880d681SAndroid Build Coastguard Worker  ret i16 %r
374*9880d681SAndroid Build Coastguard Worker}
375*9880d681SAndroid Build Coastguard Worker
376*9880d681SAndroid Build Coastguard Workerdefine signext i32 @and_i32_255(i32 signext %b) {
377*9880d681SAndroid Build Coastguard Workerentry:
378*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i32_255:
379*9880d681SAndroid Build Coastguard Worker
380*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $2, $4, 255
381*9880d681SAndroid Build Coastguard Worker
382*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 255
383*9880d681SAndroid Build Coastguard Worker
384*9880d681SAndroid Build Coastguard Worker  ; MM:           andi16  $2, $4, 255
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard Worker  %r = and i32 255, %b
387*9880d681SAndroid Build Coastguard Worker  ret i32 %r
388*9880d681SAndroid Build Coastguard Worker}
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Workerdefine signext i64 @and_i64_255(i64 signext %b) {
391*9880d681SAndroid Build Coastguard Workerentry:
392*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i64_255:
393*9880d681SAndroid Build Coastguard Worker
394*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $3, $5, 255
395*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
396*9880d681SAndroid Build Coastguard Worker
397*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 255
398*9880d681SAndroid Build Coastguard Worker
399*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi16  $3, $5, 255
400*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
401*9880d681SAndroid Build Coastguard Worker
402*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $2, $4, 255
403*9880d681SAndroid Build Coastguard Worker
404*9880d681SAndroid Build Coastguard Worker  %r = and i64 255, %b
405*9880d681SAndroid Build Coastguard Worker  ret i64 %r
406*9880d681SAndroid Build Coastguard Worker}
407*9880d681SAndroid Build Coastguard Worker
408*9880d681SAndroid Build Coastguard Workerdefine signext i128 @and_i128_255(i128 signext %b) {
409*9880d681SAndroid Build Coastguard Workerentry:
410*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i128_255:
411*9880d681SAndroid Build Coastguard Worker
412*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $5, $7, 255
413*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
414*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $3, $zero, 0
415*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $4, $zero, 0
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $3, $5, 255
418*9880d681SAndroid Build Coastguard Worker  ; GP64:         daddiu  $2, $zero, 0
419*9880d681SAndroid Build Coastguard Worker
420*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi16  $5, $7, 255
421*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
422*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $3, 0
423*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $4, 0
424*9880d681SAndroid Build Coastguard Worker
425*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $3, $5, 255
426*9880d681SAndroid Build Coastguard Worker  ; MM64:         daddiu  $2, $zero, 0
427*9880d681SAndroid Build Coastguard Worker
428*9880d681SAndroid Build Coastguard Worker  %r = and i128 255, %b
429*9880d681SAndroid Build Coastguard Worker  ret i128 %r
430*9880d681SAndroid Build Coastguard Worker}
431*9880d681SAndroid Build Coastguard Worker
432*9880d681SAndroid Build Coastguard Workerdefine signext i1 @and_i1_32768(i1 signext %b) {
433*9880d681SAndroid Build Coastguard Workerentry:
434*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i1_32768:
435*9880d681SAndroid Build Coastguard Worker
436*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu  $2, $zero, 0
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Worker  ; GP64:         addiu  $2, $zero, 0
439*9880d681SAndroid Build Coastguard Worker
440*9880d681SAndroid Build Coastguard Worker  ; MM:           lui    $2, 0
441*9880d681SAndroid Build Coastguard Worker
442*9880d681SAndroid Build Coastguard Worker  %r = and i1 32768, %b
443*9880d681SAndroid Build Coastguard Worker  ret i1 %r
444*9880d681SAndroid Build Coastguard Worker}
445*9880d681SAndroid Build Coastguard Worker
446*9880d681SAndroid Build Coastguard Workerdefine signext i8 @and_i8_32768(i8 signext %b) {
447*9880d681SAndroid Build Coastguard Workerentry:
448*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i8_32768:
449*9880d681SAndroid Build Coastguard Worker
450*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu  $2, $zero, 0
451*9880d681SAndroid Build Coastguard Worker
452*9880d681SAndroid Build Coastguard Worker  ; GP64:         addiu  $2, $zero, 0
453*9880d681SAndroid Build Coastguard Worker
454*9880d681SAndroid Build Coastguard Worker  ; MM:           lui    $2, 0
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Worker  %r = and i8 32768, %b
457*9880d681SAndroid Build Coastguard Worker  ret i8 %r
458*9880d681SAndroid Build Coastguard Worker}
459*9880d681SAndroid Build Coastguard Worker
460*9880d681SAndroid Build Coastguard Workerdefine signext i16 @and_i16_32768(i16 signext %b) {
461*9880d681SAndroid Build Coastguard Workerentry:
462*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i16_32768:
463*9880d681SAndroid Build Coastguard Worker
464*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu  $[[T0:[0-9]+]], $zero, -32768
465*9880d681SAndroid Build Coastguard Worker  ; GP32:         and    $2, $4, $[[T0]]
466*9880d681SAndroid Build Coastguard Worker
467*9880d681SAndroid Build Coastguard Worker  ; GP64:         addiu  $[[T0:[0-9]+]], $zero, -32768
468*9880d681SAndroid Build Coastguard Worker  ; GP64:         and    $2, $4, $[[T0]]
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Worker  ; MM:           addiu  $2, $zero, -32768
471*9880d681SAndroid Build Coastguard Worker  ; MM:           and16  $2, $4
472*9880d681SAndroid Build Coastguard Worker
473*9880d681SAndroid Build Coastguard Worker  %r = and i16 32768, %b
474*9880d681SAndroid Build Coastguard Worker  ret i16 %r
475*9880d681SAndroid Build Coastguard Worker}
476*9880d681SAndroid Build Coastguard Worker
477*9880d681SAndroid Build Coastguard Workerdefine signext i32 @and_i32_32768(i32 signext %b) {
478*9880d681SAndroid Build Coastguard Workerentry:
479*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i32_32768:
480*9880d681SAndroid Build Coastguard Worker
481*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $2, $4, 32768
482*9880d681SAndroid Build Coastguard Worker
483*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 32768
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Worker  ; MM:           andi16  $2, $4, 32768
486*9880d681SAndroid Build Coastguard Worker
487*9880d681SAndroid Build Coastguard Worker  %r = and i32 32768, %b
488*9880d681SAndroid Build Coastguard Worker  ret i32 %r
489*9880d681SAndroid Build Coastguard Worker}
490*9880d681SAndroid Build Coastguard Worker
491*9880d681SAndroid Build Coastguard Workerdefine signext i64 @and_i64_32768(i64 signext %b) {
492*9880d681SAndroid Build Coastguard Workerentry:
493*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i64_32768:
494*9880d681SAndroid Build Coastguard Worker
495*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $3, $5, 32768
496*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
497*9880d681SAndroid Build Coastguard Worker
498*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 32768
499*9880d681SAndroid Build Coastguard Worker
500*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi16  $3, $5, 32768
501*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
502*9880d681SAndroid Build Coastguard Worker
503*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $2, $4, 32768
504*9880d681SAndroid Build Coastguard Worker
505*9880d681SAndroid Build Coastguard Worker  %r = and i64 32768, %b
506*9880d681SAndroid Build Coastguard Worker  ret i64 %r
507*9880d681SAndroid Build Coastguard Worker}
508*9880d681SAndroid Build Coastguard Worker
509*9880d681SAndroid Build Coastguard Workerdefine signext i128 @and_i128_32768(i128 signext %b) {
510*9880d681SAndroid Build Coastguard Workerentry:
511*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i128_32768:
512*9880d681SAndroid Build Coastguard Worker
513*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $5, $7, 32768
514*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
515*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $3, $zero, 0
516*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $4, $zero, 0
517*9880d681SAndroid Build Coastguard Worker
518*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $3, $5, 32768
519*9880d681SAndroid Build Coastguard Worker  ; GP64:         daddiu  $2, $zero, 0
520*9880d681SAndroid Build Coastguard Worker
521*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi16  $5, $7, 32768
522*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
523*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $3, 0
524*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $4, 0
525*9880d681SAndroid Build Coastguard Worker
526*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $3, $5, 32768
527*9880d681SAndroid Build Coastguard Worker  ; MM64:         daddiu  $2, $zero, 0
528*9880d681SAndroid Build Coastguard Worker
529*9880d681SAndroid Build Coastguard Worker  %r = and i128 32768, %b
530*9880d681SAndroid Build Coastguard Worker  ret i128 %r
531*9880d681SAndroid Build Coastguard Worker}
532*9880d681SAndroid Build Coastguard Worker
533*9880d681SAndroid Build Coastguard Workerdefine signext i1 @and_i1_65(i1 signext %b) {
534*9880d681SAndroid Build Coastguard Workerentry:
535*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i1_65:
536*9880d681SAndroid Build Coastguard Worker
537*9880d681SAndroid Build Coastguard Worker  ; ALL:          move    $2, $4
538*9880d681SAndroid Build Coastguard Worker
539*9880d681SAndroid Build Coastguard Worker  %r = and i1 65, %b
540*9880d681SAndroid Build Coastguard Worker  ret i1 %r
541*9880d681SAndroid Build Coastguard Worker}
542*9880d681SAndroid Build Coastguard Worker
543*9880d681SAndroid Build Coastguard Workerdefine signext i8 @and_i8_65(i8 signext %b) {
544*9880d681SAndroid Build Coastguard Workerentry:
545*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i8_65:
546*9880d681SAndroid Build Coastguard Worker
547*9880d681SAndroid Build Coastguard Worker  ; ALL:          andi    $2, $4, 65
548*9880d681SAndroid Build Coastguard Worker
549*9880d681SAndroid Build Coastguard Worker  %r = and i8 65, %b
550*9880d681SAndroid Build Coastguard Worker  ret i8 %r
551*9880d681SAndroid Build Coastguard Worker}
552*9880d681SAndroid Build Coastguard Worker
553*9880d681SAndroid Build Coastguard Workerdefine signext i16 @and_i16_65(i16 signext %b) {
554*9880d681SAndroid Build Coastguard Workerentry:
555*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i16_65:
556*9880d681SAndroid Build Coastguard Worker
557*9880d681SAndroid Build Coastguard Worker  ; ALL:          andi    $2, $4, 65
558*9880d681SAndroid Build Coastguard Worker
559*9880d681SAndroid Build Coastguard Worker  %r = and i16 65, %b
560*9880d681SAndroid Build Coastguard Worker  ret i16 %r
561*9880d681SAndroid Build Coastguard Worker}
562*9880d681SAndroid Build Coastguard Worker
563*9880d681SAndroid Build Coastguard Workerdefine signext i32 @and_i32_65(i32 signext %b) {
564*9880d681SAndroid Build Coastguard Workerentry:
565*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i32_65:
566*9880d681SAndroid Build Coastguard Worker
567*9880d681SAndroid Build Coastguard Worker  ; ALL:          andi    $2, $4, 65
568*9880d681SAndroid Build Coastguard Worker
569*9880d681SAndroid Build Coastguard Worker  %r = and i32 65, %b
570*9880d681SAndroid Build Coastguard Worker  ret i32 %r
571*9880d681SAndroid Build Coastguard Worker}
572*9880d681SAndroid Build Coastguard Worker
573*9880d681SAndroid Build Coastguard Workerdefine signext i64 @and_i64_65(i64 signext %b) {
574*9880d681SAndroid Build Coastguard Workerentry:
575*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i64_65:
576*9880d681SAndroid Build Coastguard Worker
577*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $3, $5, 65
578*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
579*9880d681SAndroid Build Coastguard Worker
580*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 65
581*9880d681SAndroid Build Coastguard Worker
582*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi    $3, $5, 65
583*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
584*9880d681SAndroid Build Coastguard Worker
585*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $2, $4, 65
586*9880d681SAndroid Build Coastguard Worker
587*9880d681SAndroid Build Coastguard Worker  %r = and i64 65, %b
588*9880d681SAndroid Build Coastguard Worker  ret i64 %r
589*9880d681SAndroid Build Coastguard Worker}
590*9880d681SAndroid Build Coastguard Worker
591*9880d681SAndroid Build Coastguard Workerdefine signext i128 @and_i128_65(i128 signext %b) {
592*9880d681SAndroid Build Coastguard Workerentry:
593*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i128_65:
594*9880d681SAndroid Build Coastguard Worker
595*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $5, $7, 65
596*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
597*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $3, $zero, 0
598*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $4, $zero, 0
599*9880d681SAndroid Build Coastguard Worker
600*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $3, $5, 65
601*9880d681SAndroid Build Coastguard Worker  ; GP64:         daddiu  $2, $zero, 0
602*9880d681SAndroid Build Coastguard Worker
603*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi    $5, $7, 65
604*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
605*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $3, 0
606*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $4, 0
607*9880d681SAndroid Build Coastguard Worker
608*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $3, $5, 65
609*9880d681SAndroid Build Coastguard Worker  ; MM64:         daddiu  $2, $zero, 0
610*9880d681SAndroid Build Coastguard Worker
611*9880d681SAndroid Build Coastguard Worker  %r = and i128 65, %b
612*9880d681SAndroid Build Coastguard Worker  ret i128 %r
613*9880d681SAndroid Build Coastguard Worker}
614*9880d681SAndroid Build Coastguard Worker
615*9880d681SAndroid Build Coastguard Workerdefine signext i1 @and_i1_256(i1 signext %b) {
616*9880d681SAndroid Build Coastguard Workerentry:
617*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i1_256:
618*9880d681SAndroid Build Coastguard Worker
619*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
620*9880d681SAndroid Build Coastguard Worker
621*9880d681SAndroid Build Coastguard Worker  ; GP64:         addiu   $2, $zero, 0
622*9880d681SAndroid Build Coastguard Worker
623*9880d681SAndroid Build Coastguard Worker  ; MM:           lui     $2, 0
624*9880d681SAndroid Build Coastguard Worker
625*9880d681SAndroid Build Coastguard Worker  %r = and i1 256, %b
626*9880d681SAndroid Build Coastguard Worker  ret i1 %r
627*9880d681SAndroid Build Coastguard Worker}
628*9880d681SAndroid Build Coastguard Worker
629*9880d681SAndroid Build Coastguard Workerdefine signext i8 @and_i8_256(i8 signext %b) {
630*9880d681SAndroid Build Coastguard Workerentry:
631*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i8_256:
632*9880d681SAndroid Build Coastguard Worker
633*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
634*9880d681SAndroid Build Coastguard Worker
635*9880d681SAndroid Build Coastguard Worker  ; GP64:         addiu   $2, $zero, 0
636*9880d681SAndroid Build Coastguard Worker
637*9880d681SAndroid Build Coastguard Worker  ; MM:           lui     $2, 0
638*9880d681SAndroid Build Coastguard Worker
639*9880d681SAndroid Build Coastguard Worker  %r = and i8 256, %b
640*9880d681SAndroid Build Coastguard Worker  ret i8 %r
641*9880d681SAndroid Build Coastguard Worker}
642*9880d681SAndroid Build Coastguard Worker
643*9880d681SAndroid Build Coastguard Workerdefine signext i16 @and_i16_256(i16 signext %b) {
644*9880d681SAndroid Build Coastguard Workerentry:
645*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i16_256:
646*9880d681SAndroid Build Coastguard Worker
647*9880d681SAndroid Build Coastguard Worker  ; ALL:          andi    $2, $4, 256
648*9880d681SAndroid Build Coastguard Worker
649*9880d681SAndroid Build Coastguard Worker  %r = and i16 256, %b
650*9880d681SAndroid Build Coastguard Worker  ret i16 %r
651*9880d681SAndroid Build Coastguard Worker}
652*9880d681SAndroid Build Coastguard Worker
653*9880d681SAndroid Build Coastguard Workerdefine signext i32 @and_i32_256(i32 signext %b) {
654*9880d681SAndroid Build Coastguard Workerentry:
655*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i32_256:
656*9880d681SAndroid Build Coastguard Worker
657*9880d681SAndroid Build Coastguard Worker  ; ALL:          andi    $2, $4, 256
658*9880d681SAndroid Build Coastguard Worker
659*9880d681SAndroid Build Coastguard Worker  %r = and i32 256, %b
660*9880d681SAndroid Build Coastguard Worker  ret i32 %r
661*9880d681SAndroid Build Coastguard Worker}
662*9880d681SAndroid Build Coastguard Worker
663*9880d681SAndroid Build Coastguard Workerdefine signext i64 @and_i64_256(i64 signext %b) {
664*9880d681SAndroid Build Coastguard Workerentry:
665*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i64_256:
666*9880d681SAndroid Build Coastguard Worker
667*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $3, $5, 256
668*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
669*9880d681SAndroid Build Coastguard Worker
670*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $2, $4, 256
671*9880d681SAndroid Build Coastguard Worker
672*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi    $3, $5, 256
673*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
674*9880d681SAndroid Build Coastguard Worker
675*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $2, $4, 256
676*9880d681SAndroid Build Coastguard Worker
677*9880d681SAndroid Build Coastguard Worker  %r = and i64 256, %b
678*9880d681SAndroid Build Coastguard Worker  ret i64 %r
679*9880d681SAndroid Build Coastguard Worker}
680*9880d681SAndroid Build Coastguard Worker
681*9880d681SAndroid Build Coastguard Workerdefine signext i128 @and_i128_256(i128 signext %b) {
682*9880d681SAndroid Build Coastguard Workerentry:
683*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: and_i128_256:
684*9880d681SAndroid Build Coastguard Worker
685*9880d681SAndroid Build Coastguard Worker  ; GP32:         andi    $5, $7, 256
686*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $2, $zero, 0
687*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $3, $zero, 0
688*9880d681SAndroid Build Coastguard Worker  ; GP32:         addiu   $4, $zero, 0
689*9880d681SAndroid Build Coastguard Worker
690*9880d681SAndroid Build Coastguard Worker  ; GP64:         andi    $3, $5, 256
691*9880d681SAndroid Build Coastguard Worker  ; GP64:         daddiu  $2, $zero, 0
692*9880d681SAndroid Build Coastguard Worker
693*9880d681SAndroid Build Coastguard Worker  ; MM32:         andi    $5, $7, 256
694*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $2, 0
695*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $3, 0
696*9880d681SAndroid Build Coastguard Worker  ; MM32:         lui     $4, 0
697*9880d681SAndroid Build Coastguard Worker
698*9880d681SAndroid Build Coastguard Worker  ; MM64:         andi    $3, $5, 256
699*9880d681SAndroid Build Coastguard Worker  ; MM64:         daddiu  $2, $zero, 0
700*9880d681SAndroid Build Coastguard Worker
701*9880d681SAndroid Build Coastguard Worker  %r = and i128 256, %b
702*9880d681SAndroid Build Coastguard Worker  ret i128 %r
703*9880d681SAndroid Build Coastguard Worker}
704