xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/llvm-ir/not.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips2 | FileCheck %s -check-prefixes=ALL,GP32
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32 | FileCheck %s -check-prefixes=ALL,GP32
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r2 | FileCheck %s \
4*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r3 | FileCheck %s \
6*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r5 | FileCheck %s \
8*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
9*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 | FileCheck %s \
10*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP32
11*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips3 | FileCheck %s \
12*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
13*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips4 | FileCheck %s \
14*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
15*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64 | FileCheck %s \
16*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
17*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r2 | FileCheck %s \
18*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
19*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r3 | FileCheck %s \
20*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
21*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r5 | FileCheck %s \
22*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
23*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r6 | FileCheck %s \
24*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,GP64
25*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \
26*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,MM,MM32
27*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 -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=mips64r6 -target-abi n64 -mattr=+micromips | FileCheck %s \
30*9880d681SAndroid Build Coastguard Worker; RUN:    -check-prefixes=ALL,MM,MM64
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerdefine signext i1 @not_i1(i1 signext %a) {
33*9880d681SAndroid Build Coastguard Workerentry:
34*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: not_i1:
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $2, $4
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker  ; GP64:         not     $2, $4
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker  ; MM:           not16   $2, $4
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker  %r = xor i1 %a, -1
43*9880d681SAndroid Build Coastguard Worker  ret i1 %r
44*9880d681SAndroid Build Coastguard Worker}
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Workerdefine signext i8 @not_i8(i8 signext %a) {
47*9880d681SAndroid Build Coastguard Workerentry:
48*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: not_i8:
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $2, $4
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker  ; GP64:         not     $2, $4
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker  ; MM:           not16   $2, $4
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Worker  %r = xor i8 %a, -1
57*9880d681SAndroid Build Coastguard Worker  ret i8 %r
58*9880d681SAndroid Build Coastguard Worker}
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerdefine signext i16 @not_i16(i16 signext %a) {
61*9880d681SAndroid Build Coastguard Workerentry:
62*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: not_i16:
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $2, $4
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Worker  ; GP64:         not     $2, $4
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker  ; MM:           not16   $2, $4
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Worker  %r = xor i16 %a, -1
71*9880d681SAndroid Build Coastguard Worker  ret i16 %r
72*9880d681SAndroid Build Coastguard Worker}
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Workerdefine signext i32 @not_i32(i32 signext %a) {
75*9880d681SAndroid Build Coastguard Workerentry:
76*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: not_i32:
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $2, $4
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Worker  ; GP64:         not     $2, $4
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Worker  ; MM:           not16   $2, $4
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Worker  %r = xor i32 %a, -1
85*9880d681SAndroid Build Coastguard Worker  ret i32 %r
86*9880d681SAndroid Build Coastguard Worker}
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Workerdefine signext i64 @not_i64(i64 signext %a) {
89*9880d681SAndroid Build Coastguard Workerentry:
90*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: not_i64:
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $2, $4
93*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $3, $5
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Worker  ; GP64:         daddiu  $[[T0:[0-9]+]], $zero, -1
96*9880d681SAndroid Build Coastguard Worker  ; GP64:         xor     $2, $4, $[[T0]]
97*9880d681SAndroid Build Coastguard Worker
98*9880d681SAndroid Build Coastguard Worker  ; MM32:         not16   $2, $4
99*9880d681SAndroid Build Coastguard Worker  ; MM32:         not16   $3, $5
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Worker  ; MM64:         daddiu  $[[T0:[0-9]+]], $zero, -1
102*9880d681SAndroid Build Coastguard Worker  ; MM64:         xor     $2, $4, $[[T0]]
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Worker  %r = xor i64 %a, -1
105*9880d681SAndroid Build Coastguard Worker  ret i64 %r
106*9880d681SAndroid Build Coastguard Worker}
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Workerdefine signext i128 @not_i128(i128 signext %a) {
109*9880d681SAndroid Build Coastguard Workerentry:
110*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: not_i128:
111*9880d681SAndroid Build Coastguard Worker
112*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $2, $4
113*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $3, $5
114*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $4, $6
115*9880d681SAndroid Build Coastguard Worker  ; GP32:         not     $5, $7
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Worker  ; GP64:         daddiu  $[[T0:[0-9]+]], $zero, -1
118*9880d681SAndroid Build Coastguard Worker  ; GP64:         xor     $2, $4, $[[T0]]
119*9880d681SAndroid Build Coastguard Worker  ; GP64:         xor     $3, $5, $[[T0]]
120*9880d681SAndroid Build Coastguard Worker
121*9880d681SAndroid Build Coastguard Worker  ; MM32:         not16   $2, $4
122*9880d681SAndroid Build Coastguard Worker  ; MM32:         not16   $3, $5
123*9880d681SAndroid Build Coastguard Worker  ; MM32:         not16   $4, $6
124*9880d681SAndroid Build Coastguard Worker  ; MM32:         not16   $5, $7
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Worker  ; MM64:         daddiu  $[[T0:[0-9]+]], $zero, -1
127*9880d681SAndroid Build Coastguard Worker  ; MM64:         xor     $2, $4, $[[T0]]
128*9880d681SAndroid Build Coastguard Worker  ; MM64:         xor     $3, $5, $[[T0]]
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Worker  %r = xor i128 %a, -1
131*9880d681SAndroid Build Coastguard Worker  ret i128 %r
132*9880d681SAndroid Build Coastguard Worker}
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Workerdefine signext i1 @nor_i1(i1 signext %a, i1 signext %b) {
135*9880d681SAndroid Build Coastguard Workerentry:
136*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: nor_i1:
137*9880d681SAndroid Build Coastguard Worker
138*9880d681SAndroid Build Coastguard Worker  ; ALL:          nor     $2, $5, $4
139*9880d681SAndroid Build Coastguard Worker
140*9880d681SAndroid Build Coastguard Worker  %or = or i1 %b, %a
141*9880d681SAndroid Build Coastguard Worker  %r = xor i1 %or, -1
142*9880d681SAndroid Build Coastguard Worker  ret i1 %r
143*9880d681SAndroid Build Coastguard Worker}
144*9880d681SAndroid Build Coastguard Worker
145*9880d681SAndroid Build Coastguard Workerdefine signext i8 @nor_i8(i8 signext %a, i8 signext %b) {
146*9880d681SAndroid Build Coastguard Workerentry:
147*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: nor_i8:
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Worker  ; ALL:          nor     $2, $5, $4
150*9880d681SAndroid Build Coastguard Worker
151*9880d681SAndroid Build Coastguard Worker  %or = or i8 %b, %a
152*9880d681SAndroid Build Coastguard Worker  %r = xor i8 %or, -1
153*9880d681SAndroid Build Coastguard Worker  ret i8 %r
154*9880d681SAndroid Build Coastguard Worker}
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Workerdefine signext i16 @nor_i16(i16 signext %a, i16 signext %b) {
157*9880d681SAndroid Build Coastguard Workerentry:
158*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: nor_i16:
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Worker  ; ALL:          nor     $2, $5, $4
161*9880d681SAndroid Build Coastguard Worker
162*9880d681SAndroid Build Coastguard Worker  %or = or i16 %b, %a
163*9880d681SAndroid Build Coastguard Worker  %r = xor i16 %or, -1
164*9880d681SAndroid Build Coastguard Worker  ret i16 %r
165*9880d681SAndroid Build Coastguard Worker}
166*9880d681SAndroid Build Coastguard Worker
167*9880d681SAndroid Build Coastguard Workerdefine signext i32 @nor_i32(i32 signext %a, i32 signext %b) {
168*9880d681SAndroid Build Coastguard Workerentry:
169*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: nor_i32:
170*9880d681SAndroid Build Coastguard Worker
171*9880d681SAndroid Build Coastguard Worker  ; GP32:         nor     $2, $5, $4
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Worker  ; GP64:         or      $[[T0:[0-9]+]], $5, $4
174*9880d681SAndroid Build Coastguard Worker  ; GP64:         sll     $[[T1:[0-9]+]], $[[T0]], 0
175*9880d681SAndroid Build Coastguard Worker  ; GP64:         not     $2, $[[T1]]
176*9880d681SAndroid Build Coastguard Worker
177*9880d681SAndroid Build Coastguard Worker  ; MM32:         nor     $2, $5, $4
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Worker  ; MM64:         or      $[[T0:[0-9]+]], $5, $4
180*9880d681SAndroid Build Coastguard Worker  ; MM64:         sll     $[[T1:[0-9]+]], $[[T0]], 0
181*9880d681SAndroid Build Coastguard Worker  ; MM64:         not16   $2, $[[T1]]
182*9880d681SAndroid Build Coastguard Worker
183*9880d681SAndroid Build Coastguard Worker  %or = or i32 %b, %a
184*9880d681SAndroid Build Coastguard Worker  %r = xor i32 %or, -1
185*9880d681SAndroid Build Coastguard Worker  ret i32 %r
186*9880d681SAndroid Build Coastguard Worker}
187*9880d681SAndroid Build Coastguard Worker
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard Workerdefine signext i64 @nor_i64(i64 signext %a, i64 signext %b) {
190*9880d681SAndroid Build Coastguard Workerentry:
191*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: nor_i64:
192*9880d681SAndroid Build Coastguard Worker
193*9880d681SAndroid Build Coastguard Worker  ; GP32:         nor     $2, $6, $4
194*9880d681SAndroid Build Coastguard Worker  ; GP32:         nor     $3, $7, $5
195*9880d681SAndroid Build Coastguard Worker
196*9880d681SAndroid Build Coastguard Worker  ; GP64:         nor     $2, $5, $4
197*9880d681SAndroid Build Coastguard Worker
198*9880d681SAndroid Build Coastguard Worker  ; MM32:         nor     $2, $6, $4
199*9880d681SAndroid Build Coastguard Worker  ; MM32:         nor     $3, $7, $5
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Worker  ; MM64:         nor     $2, $5, $4
202*9880d681SAndroid Build Coastguard Worker
203*9880d681SAndroid Build Coastguard Worker  %or = or i64 %b, %a
204*9880d681SAndroid Build Coastguard Worker  %r = xor i64 %or, -1
205*9880d681SAndroid Build Coastguard Worker  ret i64 %r
206*9880d681SAndroid Build Coastguard Worker}
207*9880d681SAndroid Build Coastguard Worker
208*9880d681SAndroid Build Coastguard Workerdefine signext i128 @nor_i128(i128 signext %a, i128 signext %b) {
209*9880d681SAndroid Build Coastguard Workerentry:
210*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: nor_i128:
211*9880d681SAndroid Build Coastguard Worker
212*9880d681SAndroid Build Coastguard Worker  ; GP32:         lw      $[[T0:[0-9]+]], 24($sp)
213*9880d681SAndroid Build Coastguard Worker  ; GP32:         lw      $[[T1:[0-9]+]], 20($sp)
214*9880d681SAndroid Build Coastguard Worker  ; GP32:         lw      $[[T2:[0-9]+]], 16($sp)
215*9880d681SAndroid Build Coastguard Worker  ; GP32:         nor     $2, $[[T2]], $4
216*9880d681SAndroid Build Coastguard Worker  ; GP32:         nor     $3, $[[T1]], $5
217*9880d681SAndroid Build Coastguard Worker  ; GP32:         nor     $4, $[[T0]], $6
218*9880d681SAndroid Build Coastguard Worker  ; GP32:         lw      $[[T3:[0-9]+]], 28($sp)
219*9880d681SAndroid Build Coastguard Worker  ; GP32:         nor     $5, $[[T3]], $7
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Worker  ; GP64:         nor     $2, $6, $4
222*9880d681SAndroid Build Coastguard Worker  ; GP64:         nor     $3, $7, $5
223*9880d681SAndroid Build Coastguard Worker
224*9880d681SAndroid Build Coastguard Worker  ; MM32:         lw      $[[T0:[0-9]+]], 20($sp)
225*9880d681SAndroid Build Coastguard Worker  ; MM32:         lw      $[[T1:[0-9]+]], 16($sp)
226*9880d681SAndroid Build Coastguard Worker  ; MM32:         nor     $2, $[[T1]], $4
227*9880d681SAndroid Build Coastguard Worker  ; MM32:         nor     $3, $[[T0]], $5
228*9880d681SAndroid Build Coastguard Worker  ; MM32:         lw      $[[T2:[0-9]+]], 24($sp)
229*9880d681SAndroid Build Coastguard Worker  ; MM32:         nor     $4, $[[T2]], $6
230*9880d681SAndroid Build Coastguard Worker  ; MM32:         lw      $[[T3:[0-9]+]], 28($sp)
231*9880d681SAndroid Build Coastguard Worker  ; MM32:         nor     $5, $[[T3]], $7
232*9880d681SAndroid Build Coastguard Worker
233*9880d681SAndroid Build Coastguard Worker  ; MM64:         nor     $2, $6, $4
234*9880d681SAndroid Build Coastguard Worker  ; MM64:         nor     $3, $7, $5
235*9880d681SAndroid Build Coastguard Worker
236*9880d681SAndroid Build Coastguard Worker  %or = or i128 %b, %a
237*9880d681SAndroid Build Coastguard Worker  %r = xor i128 %or, -1
238*9880d681SAndroid Build Coastguard Worker  ret i128 %r
239*9880d681SAndroid Build Coastguard Worker}
240