1 //===- IntrinsicsMips.td - Defines Mips intrinsics ---------*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines all of the MIPS-specific intrinsics.
12 //===----------------------------------------------------------------------===//
14 //===----------------------------------------------------------------------===//
15 // MIPS DSP data types
16 def mips_v2q15_ty: LLVMType<v2i16>;
17 def mips_v4q7_ty: LLVMType<v4i8>;
18 def mips_q31_ty: LLVMType<i32>;
20 let TargetPrefix = "mips" in { // All intrinsics start with "llvm.mips.".
22 //===----------------------------------------------------------------------===//
25 //===----------------------------------------------------------------------===//
26 // Addition/subtraction
28 def int_mips_addu_qb : GCCBuiltin<"__builtin_mips_addu_qb">,
29 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
30 def int_mips_addu_s_qb : GCCBuiltin<"__builtin_mips_addu_s_qb">,
31 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
32 def int_mips_subu_qb : GCCBuiltin<"__builtin_mips_subu_qb">,
33 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
34 def int_mips_subu_s_qb : GCCBuiltin<"__builtin_mips_subu_s_qb">,
35 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
37 def int_mips_addq_ph : GCCBuiltin<"__builtin_mips_addq_ph">,
38 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
39 def int_mips_addq_s_ph : GCCBuiltin<"__builtin_mips_addq_s_ph">,
40 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
41 def int_mips_subq_ph : GCCBuiltin<"__builtin_mips_subq_ph">,
42 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], []>;
43 def int_mips_subq_s_ph : GCCBuiltin<"__builtin_mips_subq_s_ph">,
44 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], []>;
46 def int_mips_madd: GCCBuiltin<"__builtin_mips_madd">,
47 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
48 [IntrNoMem, Commutative]>;
49 def int_mips_maddu: GCCBuiltin<"__builtin_mips_maddu">,
50 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
51 [IntrNoMem, Commutative]>;
53 def int_mips_msub: GCCBuiltin<"__builtin_mips_msub">,
54 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
56 def int_mips_msubu: GCCBuiltin<"__builtin_mips_msubu">,
57 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty],
60 def int_mips_addq_s_w: GCCBuiltin<"__builtin_mips_addq_s_w">,
61 Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [Commutative]>;
62 def int_mips_subq_s_w: GCCBuiltin<"__builtin_mips_subq_s_w">,
63 Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], []>;
65 def int_mips_addsc: GCCBuiltin<"__builtin_mips_addsc">,
66 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [Commutative]>;
67 def int_mips_addwc: GCCBuiltin<"__builtin_mips_addwc">,
68 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [Commutative]>;
70 def int_mips_modsub: GCCBuiltin<"__builtin_mips_modsub">,
71 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
73 def int_mips_raddu_w_qb: GCCBuiltin<"__builtin_mips_raddu_w_qb">,
74 Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty], [IntrNoMem]>;
76 //===----------------------------------------------------------------------===//
79 def int_mips_absq_s_ph: GCCBuiltin<"__builtin_mips_absq_s_ph">,
80 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty], []>;
81 def int_mips_absq_s_w: GCCBuiltin<"__builtin_mips_absq_s_w">,
82 Intrinsic<[mips_q31_ty], [mips_q31_ty], []>;
84 //===----------------------------------------------------------------------===//
85 // Precision reduce/expand
87 def int_mips_precrq_qb_ph: GCCBuiltin<"__builtin_mips_precrq_qb_ph">,
88 Intrinsic<[llvm_v4i8_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
89 def int_mips_precrqu_s_qb_ph: GCCBuiltin<"__builtin_mips_precrqu_s_qb_ph">,
90 Intrinsic<[llvm_v4i8_ty], [mips_v2q15_ty, mips_v2q15_ty], []>;
91 def int_mips_precrq_ph_w: GCCBuiltin<"__builtin_mips_precrq_ph_w">,
92 Intrinsic<[mips_v2q15_ty], [mips_q31_ty, mips_q31_ty], [IntrNoMem]>;
93 def int_mips_precrq_rs_ph_w: GCCBuiltin<"__builtin_mips_precrq_rs_ph_w">,
94 Intrinsic<[mips_v2q15_ty], [mips_q31_ty, mips_q31_ty], []>;
95 def int_mips_preceq_w_phl: GCCBuiltin<"__builtin_mips_preceq_w_phl">,
96 Intrinsic<[mips_q31_ty], [mips_v2q15_ty], [IntrNoMem]>;
97 def int_mips_preceq_w_phr: GCCBuiltin<"__builtin_mips_preceq_w_phr">,
98 Intrinsic<[mips_q31_ty], [mips_v2q15_ty], [IntrNoMem]>;
99 def int_mips_precequ_ph_qbl: GCCBuiltin<"__builtin_mips_precequ_ph_qbl">,
100 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
101 def int_mips_precequ_ph_qbr: GCCBuiltin<"__builtin_mips_precequ_ph_qbr">,
102 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
103 def int_mips_precequ_ph_qbla: GCCBuiltin<"__builtin_mips_precequ_ph_qbla">,
104 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
105 def int_mips_precequ_ph_qbra: GCCBuiltin<"__builtin_mips_precequ_ph_qbra">,
106 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
107 def int_mips_preceu_ph_qbl: GCCBuiltin<"__builtin_mips_preceu_ph_qbl">,
108 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
109 def int_mips_preceu_ph_qbr: GCCBuiltin<"__builtin_mips_preceu_ph_qbr">,
110 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
111 def int_mips_preceu_ph_qbla: GCCBuiltin<"__builtin_mips_preceu_ph_qbla">,
112 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
113 def int_mips_preceu_ph_qbra: GCCBuiltin<"__builtin_mips_preceu_ph_qbra">,
114 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty], [IntrNoMem]>;
116 //===----------------------------------------------------------------------===//
119 def int_mips_shll_qb: GCCBuiltin<"__builtin_mips_shll_qb">,
120 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], []>;
121 def int_mips_shrl_qb: GCCBuiltin<"__builtin_mips_shrl_qb">,
122 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
123 def int_mips_shll_ph: GCCBuiltin<"__builtin_mips_shll_ph">,
124 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], []>;
125 def int_mips_shll_s_ph: GCCBuiltin<"__builtin_mips_shll_s_ph">,
126 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], []>;
127 def int_mips_shra_ph: GCCBuiltin<"__builtin_mips_shra_ph">,
128 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], [IntrNoMem]>;
129 def int_mips_shra_r_ph: GCCBuiltin<"__builtin_mips_shra_r_ph">,
130 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, llvm_i32_ty], [IntrNoMem]>;
131 def int_mips_shll_s_w: GCCBuiltin<"__builtin_mips_shll_s_w">,
132 Intrinsic<[mips_q31_ty], [mips_q31_ty, llvm_i32_ty], []>;
133 def int_mips_shra_r_w: GCCBuiltin<"__builtin_mips_shra_r_w">,
134 Intrinsic<[mips_q31_ty], [mips_q31_ty, llvm_i32_ty], [IntrNoMem]>;
135 def int_mips_shilo: GCCBuiltin<"__builtin_mips_shilo">,
136 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty], [IntrNoMem]>;
138 //===----------------------------------------------------------------------===//
141 def int_mips_muleu_s_ph_qbl: GCCBuiltin<"__builtin_mips_muleu_s_ph_qbl">,
142 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty, mips_v2q15_ty], []>;
143 def int_mips_muleu_s_ph_qbr: GCCBuiltin<"__builtin_mips_muleu_s_ph_qbr">,
144 Intrinsic<[mips_v2q15_ty], [llvm_v4i8_ty, mips_v2q15_ty], []>;
145 def int_mips_mulq_rs_ph: GCCBuiltin<"__builtin_mips_mulq_rs_ph">,
146 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
147 def int_mips_muleq_s_w_phl: GCCBuiltin<"__builtin_mips_muleq_s_w_phl">,
148 Intrinsic<[mips_q31_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
149 def int_mips_muleq_s_w_phr: GCCBuiltin<"__builtin_mips_muleq_s_w_phr">,
150 Intrinsic<[mips_q31_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
151 def int_mips_mulsaq_s_w_ph: GCCBuiltin<"__builtin_mips_mulsaq_s_w_ph">,
152 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
153 def int_mips_maq_s_w_phl: GCCBuiltin<"__builtin_mips_maq_s_w_phl">,
154 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
155 def int_mips_maq_s_w_phr: GCCBuiltin<"__builtin_mips_maq_s_w_phr">,
156 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
157 def int_mips_maq_sa_w_phl: GCCBuiltin<"__builtin_mips_maq_sa_w_phl">,
158 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
159 def int_mips_maq_sa_w_phr: GCCBuiltin<"__builtin_mips_maq_sa_w_phr">,
160 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
161 def int_mips_mult: GCCBuiltin<"__builtin_mips_mult">,
162 Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i32_ty],
163 [IntrNoMem, Commutative]>;
164 def int_mips_multu: GCCBuiltin<"__builtin_mips_multu">,
165 Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i32_ty],
166 [IntrNoMem, Commutative]>;
168 //===----------------------------------------------------------------------===//
169 // Dot product with accumulate/subtract
171 def int_mips_dpau_h_qbl: GCCBuiltin<"__builtin_mips_dpau_h_qbl">,
172 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
174 def int_mips_dpau_h_qbr: GCCBuiltin<"__builtin_mips_dpau_h_qbr">,
175 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
177 def int_mips_dpsu_h_qbl: GCCBuiltin<"__builtin_mips_dpsu_h_qbl">,
178 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
180 def int_mips_dpsu_h_qbr: GCCBuiltin<"__builtin_mips_dpsu_h_qbr">,
181 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v4i8_ty, llvm_v4i8_ty],
183 def int_mips_dpaq_s_w_ph: GCCBuiltin<"__builtin_mips_dpaq_s_w_ph">,
184 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
185 def int_mips_dpsq_s_w_ph: GCCBuiltin<"__builtin_mips_dpsq_s_w_ph">,
186 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
187 def int_mips_dpaq_sa_l_w: GCCBuiltin<"__builtin_mips_dpaq_sa_l_w">,
188 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_q31_ty, mips_q31_ty], []>;
189 def int_mips_dpsq_sa_l_w: GCCBuiltin<"__builtin_mips_dpsq_sa_l_w">,
190 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_q31_ty, mips_q31_ty], []>;
192 //===----------------------------------------------------------------------===//
195 def int_mips_cmpu_eq_qb: GCCBuiltin<"__builtin_mips_cmpu_eq_qb">,
196 Intrinsic<[], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
197 def int_mips_cmpu_lt_qb: GCCBuiltin<"__builtin_mips_cmpu_lt_qb">,
198 Intrinsic<[], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
199 def int_mips_cmpu_le_qb: GCCBuiltin<"__builtin_mips_cmpu_le_qb">,
200 Intrinsic<[], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
201 def int_mips_cmpgu_eq_qb: GCCBuiltin<"__builtin_mips_cmpgu_eq_qb">,
202 Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
203 def int_mips_cmpgu_lt_qb: GCCBuiltin<"__builtin_mips_cmpgu_lt_qb">,
204 Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
205 def int_mips_cmpgu_le_qb: GCCBuiltin<"__builtin_mips_cmpgu_le_qb">,
206 Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
207 def int_mips_cmp_eq_ph: GCCBuiltin<"__builtin_mips_cmp_eq_ph">,
208 Intrinsic<[], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
209 def int_mips_cmp_lt_ph: GCCBuiltin<"__builtin_mips_cmp_lt_ph">,
210 Intrinsic<[], [mips_v2q15_ty, mips_v2q15_ty], []>;
211 def int_mips_cmp_le_ph: GCCBuiltin<"__builtin_mips_cmp_le_ph">,
212 Intrinsic<[], [mips_v2q15_ty, mips_v2q15_ty], []>;
214 //===----------------------------------------------------------------------===//
217 def int_mips_extr_s_h: GCCBuiltin<"__builtin_mips_extr_s_h">,
218 Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
219 def int_mips_extr_w: GCCBuiltin<"__builtin_mips_extr_w">,
220 Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
221 def int_mips_extr_rs_w: GCCBuiltin<"__builtin_mips_extr_rs_w">,
222 Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
223 def int_mips_extr_r_w: GCCBuiltin<"__builtin_mips_extr_r_w">,
224 Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
225 def int_mips_extp: GCCBuiltin<"__builtin_mips_extp">,
226 Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
227 def int_mips_extpdp: GCCBuiltin<"__builtin_mips_extpdp">,
228 Intrinsic<[llvm_i32_ty], [llvm_i64_ty, llvm_i32_ty], []>;
230 //===----------------------------------------------------------------------===//
233 def int_mips_wrdsp: GCCBuiltin<"__builtin_mips_wrdsp">,
234 Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], []>;
235 def int_mips_rddsp: GCCBuiltin<"__builtin_mips_rddsp">,
236 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrReadMem]>;
238 def int_mips_insv: GCCBuiltin<"__builtin_mips_insv">,
239 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrReadMem]>;
240 def int_mips_bitrev: GCCBuiltin<"__builtin_mips_bitrev">,
241 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem]>;
243 def int_mips_packrl_ph: GCCBuiltin<"__builtin_mips_packrl_ph">,
244 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
246 def int_mips_repl_qb: GCCBuiltin<"__builtin_mips_repl_qb">,
247 Intrinsic<[llvm_v4i8_ty], [llvm_i32_ty], [IntrNoMem]>;
248 def int_mips_repl_ph: GCCBuiltin<"__builtin_mips_repl_ph">,
249 Intrinsic<[mips_v2q15_ty], [llvm_i32_ty], [IntrNoMem]>;
251 def int_mips_pick_qb: GCCBuiltin<"__builtin_mips_pick_qb">,
252 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrReadMem]>;
253 def int_mips_pick_ph: GCCBuiltin<"__builtin_mips_pick_ph">,
254 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrReadMem]>;
256 def int_mips_mthlip: GCCBuiltin<"__builtin_mips_mthlip">,
257 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty], []>;
259 def int_mips_bposge32: GCCBuiltin<"__builtin_mips_bposge32">,
260 Intrinsic<[llvm_i32_ty], [], [IntrReadMem]>;
262 def int_mips_lbux: GCCBuiltin<"__builtin_mips_lbux">,
263 Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;
264 def int_mips_lhx: GCCBuiltin<"__builtin_mips_lhx">,
265 Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;
266 def int_mips_lwx: GCCBuiltin<"__builtin_mips_lwx">,
267 Intrinsic<[llvm_i32_ty], [llvm_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;
269 //===----------------------------------------------------------------------===//
272 def int_mips_absq_s_qb: GCCBuiltin<"__builtin_mips_absq_s_qb">,
273 Intrinsic<[mips_v4q7_ty], [mips_v4q7_ty], []>;
275 def int_mips_addqh_ph: GCCBuiltin<"__builtin_mips_addqh_ph">,
276 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty],
277 [IntrNoMem, Commutative]>;
278 def int_mips_addqh_r_ph: GCCBuiltin<"__builtin_mips_addqh_r_ph">,
279 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty],
280 [IntrNoMem, Commutative]>;
281 def int_mips_addqh_w: GCCBuiltin<"__builtin_mips_addqh_w">,
282 Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty],
283 [IntrNoMem, Commutative]>;
284 def int_mips_addqh_r_w: GCCBuiltin<"__builtin_mips_addqh_r_w">,
285 Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty],
286 [IntrNoMem, Commutative]>;
288 def int_mips_addu_ph: GCCBuiltin<"__builtin_mips_addu_ph">,
289 Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
290 def int_mips_addu_s_ph: GCCBuiltin<"__builtin_mips_addu_s_ph">,
291 Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
293 def int_mips_adduh_qb: GCCBuiltin<"__builtin_mips_adduh_qb">,
294 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty],
295 [IntrNoMem, Commutative]>;
296 def int_mips_adduh_r_qb: GCCBuiltin<"__builtin_mips_adduh_r_qb">,
297 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty],
298 [IntrNoMem, Commutative]>;
300 def int_mips_append: GCCBuiltin<"__builtin_mips_append">,
301 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
303 def int_mips_balign: GCCBuiltin<"__builtin_mips_balign">,
304 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
307 def int_mips_cmpgdu_eq_qb: GCCBuiltin<"__builtin_mips_cmpgdu_eq_qb">,
308 Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [Commutative]>;
309 def int_mips_cmpgdu_lt_qb: GCCBuiltin<"__builtin_mips_cmpgdu_lt_qb">,
310 Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
311 def int_mips_cmpgdu_le_qb: GCCBuiltin<"__builtin_mips_cmpgdu_le_qb">,
312 Intrinsic<[llvm_i32_ty], [llvm_v4i8_ty, llvm_v4i8_ty], []>;
314 def int_mips_dpa_w_ph: GCCBuiltin<"__builtin_mips_dpa_w_ph">,
315 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
317 def int_mips_dps_w_ph: GCCBuiltin<"__builtin_mips_dps_w_ph">,
318 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
321 def int_mips_dpaqx_s_w_ph: GCCBuiltin<"__builtin_mips_dpaqx_s_w_ph">,
322 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
323 def int_mips_dpaqx_sa_w_ph: GCCBuiltin<"__builtin_mips_dpaqx_sa_w_ph">,
324 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
325 def int_mips_dpax_w_ph: GCCBuiltin<"__builtin_mips_dpax_w_ph">,
326 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
328 def int_mips_dpsx_w_ph: GCCBuiltin<"__builtin_mips_dpsx_w_ph">,
329 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
331 def int_mips_dpsqx_s_w_ph: GCCBuiltin<"__builtin_mips_dpsqx_s_w_ph">,
332 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
333 def int_mips_dpsqx_sa_w_ph: GCCBuiltin<"__builtin_mips_dpsqx_sa_w_ph">,
334 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, mips_v2q15_ty, mips_v2q15_ty], []>;
336 def int_mips_mul_ph: GCCBuiltin<"__builtin_mips_mul_ph">,
337 Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
338 def int_mips_mul_s_ph: GCCBuiltin<"__builtin_mips_mul_s_ph">,
339 Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], [Commutative]>;
341 def int_mips_mulq_rs_w: GCCBuiltin<"__builtin_mips_mulq_rs_w">,
342 Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [Commutative]>;
343 def int_mips_mulq_s_ph: GCCBuiltin<"__builtin_mips_mulq_s_ph">,
344 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [Commutative]>;
345 def int_mips_mulq_s_w: GCCBuiltin<"__builtin_mips_mulq_s_w">,
346 Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [Commutative]>;
347 def int_mips_mulsa_w_ph: GCCBuiltin<"__builtin_mips_mulsa_w_ph">,
348 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_v2i16_ty, llvm_v2i16_ty],
351 def int_mips_precr_qb_ph: GCCBuiltin<"__builtin_mips_precr_qb_ph">,
352 Intrinsic<[llvm_v4i8_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
353 def int_mips_precr_sra_ph_w: GCCBuiltin<"__builtin_mips_precr_sra_ph_w">,
354 Intrinsic<[llvm_v2i16_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
356 def int_mips_precr_sra_r_ph_w: GCCBuiltin<"__builtin_mips_precr_sra_r_ph_w">,
357 Intrinsic<[llvm_v2i16_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
360 def int_mips_prepend: GCCBuiltin<"__builtin_mips_prepend">,
361 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
364 def int_mips_shra_qb: GCCBuiltin<"__builtin_mips_shra_qb">,
365 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
366 def int_mips_shra_r_qb: GCCBuiltin<"__builtin_mips_shra_r_qb">,
367 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_i32_ty], [IntrNoMem]>;
368 def int_mips_shrl_ph: GCCBuiltin<"__builtin_mips_shrl_ph">,
369 Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_i32_ty], [IntrNoMem]>;
371 def int_mips_subqh_ph: GCCBuiltin<"__builtin_mips_subqh_ph">,
372 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
373 def int_mips_subqh_r_ph: GCCBuiltin<"__builtin_mips_subqh_r_ph">,
374 Intrinsic<[mips_v2q15_ty], [mips_v2q15_ty, mips_v2q15_ty], [IntrNoMem]>;
375 def int_mips_subqh_w: GCCBuiltin<"__builtin_mips_subqh_w">,
376 Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [IntrNoMem]>;
377 def int_mips_subqh_r_w: GCCBuiltin<"__builtin_mips_subqh_r_w">,
378 Intrinsic<[mips_q31_ty], [mips_q31_ty, mips_q31_ty], [IntrNoMem]>;
380 def int_mips_subu_ph: GCCBuiltin<"__builtin_mips_subu_ph">,
381 Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
382 def int_mips_subu_s_ph: GCCBuiltin<"__builtin_mips_subu_s_ph">,
383 Intrinsic<[llvm_v2i16_ty], [llvm_v2i16_ty, llvm_v2i16_ty], []>;
385 def int_mips_subuh_qb: GCCBuiltin<"__builtin_mips_subuh_qb">,
386 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrNoMem]>;
387 def int_mips_subuh_r_qb: GCCBuiltin<"__builtin_mips_subuh_r_qb">,
388 Intrinsic<[llvm_v4i8_ty], [llvm_v4i8_ty, llvm_v4i8_ty], [IntrNoMem]>;
390 //===----------------------------------------------------------------------===//
393 //===----------------------------------------------------------------------===//
394 // Addition/subtraction
396 def int_mips_add_a_b : GCCBuiltin<"__builtin_msa_add_a_b">,
397 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
398 def int_mips_add_a_h : GCCBuiltin<"__builtin_msa_add_a_h">,
399 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
400 def int_mips_add_a_w : GCCBuiltin<"__builtin_msa_add_a_w">,
401 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
402 def int_mips_add_a_d : GCCBuiltin<"__builtin_msa_add_a_d">,
403 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
405 def int_mips_adds_a_b : GCCBuiltin<"__builtin_msa_adds_a_b">,
406 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
407 def int_mips_adds_a_h : GCCBuiltin<"__builtin_msa_adds_a_h">,
408 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
409 def int_mips_adds_a_w : GCCBuiltin<"__builtin_msa_adds_a_w">,
410 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
411 def int_mips_adds_a_d : GCCBuiltin<"__builtin_msa_adds_a_d">,
412 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
414 def int_mips_adds_s_b : GCCBuiltin<"__builtin_msa_adds_s_b">,
415 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
416 def int_mips_adds_s_h : GCCBuiltin<"__builtin_msa_adds_s_h">,
417 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
418 def int_mips_adds_s_w : GCCBuiltin<"__builtin_msa_adds_s_w">,
419 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
420 def int_mips_adds_s_d : GCCBuiltin<"__builtin_msa_adds_s_d">,
421 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
423 def int_mips_adds_u_b : GCCBuiltin<"__builtin_msa_adds_u_b">,
424 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
425 def int_mips_adds_u_h : GCCBuiltin<"__builtin_msa_adds_u_h">,
426 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
427 def int_mips_adds_u_w : GCCBuiltin<"__builtin_msa_adds_u_w">,
428 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
429 def int_mips_adds_u_d : GCCBuiltin<"__builtin_msa_adds_u_d">,
430 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
432 def int_mips_addv_b : GCCBuiltin<"__builtin_msa_addv_b">,
433 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
434 def int_mips_addv_h : GCCBuiltin<"__builtin_msa_addv_h">,
435 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
436 def int_mips_addv_w : GCCBuiltin<"__builtin_msa_addv_w">,
437 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
438 def int_mips_addv_d : GCCBuiltin<"__builtin_msa_addv_d">,
439 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
441 def int_mips_addvi_b : GCCBuiltin<"__builtin_msa_addvi_b">,
442 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], [Commutative]>;
443 def int_mips_addvi_h : GCCBuiltin<"__builtin_msa_addvi_h">,
444 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], [Commutative]>;
445 def int_mips_addvi_w : GCCBuiltin<"__builtin_msa_addvi_w">,
446 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], [Commutative]>;
447 def int_mips_addvi_d : GCCBuiltin<"__builtin_msa_addvi_d">,
448 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], [Commutative]>;
450 def int_mips_andi_b : GCCBuiltin<"__builtin_msa_andi_b">,
451 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
453 def int_mips_asub_s_b : GCCBuiltin<"__builtin_msa_asub_s_b">,
454 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
455 def int_mips_asub_s_h : GCCBuiltin<"__builtin_msa_asub_s_h">,
456 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
457 def int_mips_asub_s_w : GCCBuiltin<"__builtin_msa_asub_s_w">,
458 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
459 def int_mips_asub_s_d : GCCBuiltin<"__builtin_msa_asub_s_d">,
460 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
462 def int_mips_asub_u_b : GCCBuiltin<"__builtin_msa_asub_u_b">,
463 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
464 def int_mips_asub_u_h : GCCBuiltin<"__builtin_msa_asub_u_h">,
465 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
466 def int_mips_asub_u_w : GCCBuiltin<"__builtin_msa_asub_u_w">,
467 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
468 def int_mips_asub_u_d : GCCBuiltin<"__builtin_msa_asub_u_d">,
469 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
471 def int_mips_ave_s_b : GCCBuiltin<"__builtin_msa_ave_s_b">,
472 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
473 def int_mips_ave_s_h : GCCBuiltin<"__builtin_msa_ave_s_h">,
474 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
475 def int_mips_ave_s_w : GCCBuiltin<"__builtin_msa_ave_s_w">,
476 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
477 def int_mips_ave_s_d : GCCBuiltin<"__builtin_msa_ave_s_d">,
478 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
480 def int_mips_ave_u_b : GCCBuiltin<"__builtin_msa_ave_u_b">,
481 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
482 def int_mips_ave_u_h : GCCBuiltin<"__builtin_msa_ave_u_h">,
483 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
484 def int_mips_ave_u_w : GCCBuiltin<"__builtin_msa_ave_u_w">,
485 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
486 def int_mips_ave_u_d : GCCBuiltin<"__builtin_msa_ave_u_d">,
487 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
489 def int_mips_aver_s_b : GCCBuiltin<"__builtin_msa_aver_s_b">,
490 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
491 def int_mips_aver_s_h : GCCBuiltin<"__builtin_msa_aver_s_h">,
492 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
493 def int_mips_aver_s_w : GCCBuiltin<"__builtin_msa_aver_s_w">,
494 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
495 def int_mips_aver_s_d : GCCBuiltin<"__builtin_msa_aver_s_d">,
496 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
498 def int_mips_aver_u_b : GCCBuiltin<"__builtin_msa_aver_u_b">,
499 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], [Commutative]>;
500 def int_mips_aver_u_h : GCCBuiltin<"__builtin_msa_aver_u_h">,
501 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], [Commutative]>;
502 def int_mips_aver_u_w : GCCBuiltin<"__builtin_msa_aver_u_w">,
503 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], [Commutative]>;
504 def int_mips_aver_u_d : GCCBuiltin<"__builtin_msa_aver_u_d">,
505 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], [Commutative]>;
507 def int_mips_bclr_b : GCCBuiltin<"__builtin_msa_bclr_b">,
508 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
509 def int_mips_bclr_h : GCCBuiltin<"__builtin_msa_bclr_h">,
510 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
511 def int_mips_bclr_w : GCCBuiltin<"__builtin_msa_bclr_w">,
512 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
513 def int_mips_bclr_d : GCCBuiltin<"__builtin_msa_bclr_d">,
514 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
516 def int_mips_bclri_b : GCCBuiltin<"__builtin_msa_bclri_b">,
517 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
518 def int_mips_bclri_h : GCCBuiltin<"__builtin_msa_bclri_h">,
519 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
520 def int_mips_bclri_w : GCCBuiltin<"__builtin_msa_bclri_w">,
521 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
522 def int_mips_bclri_d : GCCBuiltin<"__builtin_msa_bclri_d">,
523 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
525 def int_mips_binsl_b : GCCBuiltin<"__builtin_msa_binsl_b">,
526 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
527 def int_mips_binsl_h : GCCBuiltin<"__builtin_msa_binsl_h">,
528 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
529 def int_mips_binsl_w : GCCBuiltin<"__builtin_msa_binsl_w">,
530 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
531 def int_mips_binsl_d : GCCBuiltin<"__builtin_msa_binsl_d">,
532 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
534 def int_mips_binsli_b : GCCBuiltin<"__builtin_msa_binsli_b">,
535 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
536 def int_mips_binsli_h : GCCBuiltin<"__builtin_msa_binsli_h">,
537 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
538 def int_mips_binsli_w : GCCBuiltin<"__builtin_msa_binsli_w">,
539 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
540 def int_mips_binsli_d : GCCBuiltin<"__builtin_msa_binsli_d">,
541 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
543 def int_mips_binsr_b : GCCBuiltin<"__builtin_msa_binsr_b">,
544 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
545 def int_mips_binsr_h : GCCBuiltin<"__builtin_msa_binsr_h">,
546 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
547 def int_mips_binsr_w : GCCBuiltin<"__builtin_msa_binsr_w">,
548 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
549 def int_mips_binsr_d : GCCBuiltin<"__builtin_msa_binsr_d">,
550 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
552 def int_mips_binsri_b : GCCBuiltin<"__builtin_msa_binsri_b">,
553 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
554 def int_mips_binsri_h : GCCBuiltin<"__builtin_msa_binsri_h">,
555 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
556 def int_mips_binsri_w : GCCBuiltin<"__builtin_msa_binsri_w">,
557 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
558 def int_mips_binsri_d : GCCBuiltin<"__builtin_msa_binsri_d">,
559 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
561 def int_mips_bmnzi_b : GCCBuiltin<"__builtin_msa_bmnzi_b">,
562 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
564 def int_mips_bmzi_b : GCCBuiltin<"__builtin_msa_bmzi_b">,
565 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
567 def int_mips_bneg_b : GCCBuiltin<"__builtin_msa_bneg_b">,
568 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
569 def int_mips_bneg_h : GCCBuiltin<"__builtin_msa_bneg_h">,
570 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
571 def int_mips_bneg_w : GCCBuiltin<"__builtin_msa_bneg_w">,
572 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
573 def int_mips_bneg_d : GCCBuiltin<"__builtin_msa_bneg_d">,
574 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
576 def int_mips_bnegi_b : GCCBuiltin<"__builtin_msa_bnegi_b">,
577 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
578 def int_mips_bnegi_h : GCCBuiltin<"__builtin_msa_bnegi_h">,
579 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
580 def int_mips_bnegi_w : GCCBuiltin<"__builtin_msa_bnegi_w">,
581 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
582 def int_mips_bnegi_d : GCCBuiltin<"__builtin_msa_bnegi_d">,
583 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
585 def int_mips_bseli_b : GCCBuiltin<"__builtin_msa_bseli_b">,
586 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
587 def int_mips_bseli_h : GCCBuiltin<"__builtin_msa_bseli_h">,
588 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
589 def int_mips_bseli_w : GCCBuiltin<"__builtin_msa_bseli_w">,
590 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
591 def int_mips_bseli_d : GCCBuiltin<"__builtin_msa_bseli_d">,
592 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
594 def int_mips_bset_b : GCCBuiltin<"__builtin_msa_bset_b">,
595 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
596 def int_mips_bset_h : GCCBuiltin<"__builtin_msa_bset_h">,
597 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
598 def int_mips_bset_w : GCCBuiltin<"__builtin_msa_bset_w">,
599 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
600 def int_mips_bset_d : GCCBuiltin<"__builtin_msa_bset_d">,
601 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
603 def int_mips_bseti_b : GCCBuiltin<"__builtin_msa_bseti_b">,
604 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
605 def int_mips_bseti_h : GCCBuiltin<"__builtin_msa_bseti_h">,
606 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
607 def int_mips_bseti_w : GCCBuiltin<"__builtin_msa_bseti_w">,
608 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
609 def int_mips_bseti_d : GCCBuiltin<"__builtin_msa_bseti_d">,
610 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
612 def int_mips_ceq_b : GCCBuiltin<"__builtin_msa_ceq_b">,
613 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
614 def int_mips_ceq_h : GCCBuiltin<"__builtin_msa_ceq_h">,
615 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
616 def int_mips_ceq_w : GCCBuiltin<"__builtin_msa_ceq_w">,
617 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
618 def int_mips_ceq_d : GCCBuiltin<"__builtin_msa_ceq_d">,
619 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
621 def int_mips_ceqi_b : GCCBuiltin<"__builtin_msa_ceqi_b">,
622 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
623 def int_mips_ceqi_h : GCCBuiltin<"__builtin_msa_ceqi_h">,
624 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
625 def int_mips_ceqi_w : GCCBuiltin<"__builtin_msa_ceqi_w">,
626 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
627 def int_mips_ceqi_d : GCCBuiltin<"__builtin_msa_ceqi_d">,
628 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
630 def int_mips_cle_s_b : GCCBuiltin<"__builtin_msa_cle_s_b">,
631 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
632 def int_mips_cle_s_h : GCCBuiltin<"__builtin_msa_cle_s_h">,
633 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
634 def int_mips_cle_s_w : GCCBuiltin<"__builtin_msa_cle_s_w">,
635 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
636 def int_mips_cle_s_d : GCCBuiltin<"__builtin_msa_cle_s_d">,
637 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
639 def int_mips_cle_u_b : GCCBuiltin<"__builtin_msa_cle_u_b">,
640 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
641 def int_mips_cle_u_h : GCCBuiltin<"__builtin_msa_cle_u_h">,
642 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
643 def int_mips_cle_u_w : GCCBuiltin<"__builtin_msa_cle_u_w">,
644 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
645 def int_mips_cle_u_d : GCCBuiltin<"__builtin_msa_cle_u_d">,
646 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
648 def int_mips_clei_s_b : GCCBuiltin<"__builtin_msa_clei_s_b">,
649 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
650 def int_mips_clei_s_h : GCCBuiltin<"__builtin_msa_clei_s_h">,
651 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
652 def int_mips_clei_s_w : GCCBuiltin<"__builtin_msa_clei_s_w">,
653 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
654 def int_mips_clei_s_d : GCCBuiltin<"__builtin_msa_clei_s_d">,
655 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
657 def int_mips_clei_u_b : GCCBuiltin<"__builtin_msa_clei_u_b">,
658 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
659 def int_mips_clei_u_h : GCCBuiltin<"__builtin_msa_clei_u_h">,
660 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
661 def int_mips_clei_u_w : GCCBuiltin<"__builtin_msa_clei_u_w">,
662 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
663 def int_mips_clei_u_d : GCCBuiltin<"__builtin_msa_clei_u_d">,
664 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
666 def int_mips_clt_s_b : GCCBuiltin<"__builtin_msa_clt_s_b">,
667 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
668 def int_mips_clt_s_h : GCCBuiltin<"__builtin_msa_clt_s_h">,
669 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
670 def int_mips_clt_s_w : GCCBuiltin<"__builtin_msa_clt_s_w">,
671 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
672 def int_mips_clt_s_d : GCCBuiltin<"__builtin_msa_clt_s_d">,
673 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
675 def int_mips_clt_u_b : GCCBuiltin<"__builtin_msa_clt_u_b">,
676 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
677 def int_mips_clt_u_h : GCCBuiltin<"__builtin_msa_clt_u_h">,
678 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
679 def int_mips_clt_u_w : GCCBuiltin<"__builtin_msa_clt_u_w">,
680 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
681 def int_mips_clt_u_d : GCCBuiltin<"__builtin_msa_clt_u_d">,
682 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
684 def int_mips_clti_s_b : GCCBuiltin<"__builtin_msa_clti_s_b">,
685 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
686 def int_mips_clti_s_h : GCCBuiltin<"__builtin_msa_clti_s_h">,
687 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
688 def int_mips_clti_s_w : GCCBuiltin<"__builtin_msa_clti_s_w">,
689 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
690 def int_mips_clti_s_d : GCCBuiltin<"__builtin_msa_clti_s_d">,
691 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
693 def int_mips_clti_u_b : GCCBuiltin<"__builtin_msa_clti_u_b">,
694 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
695 def int_mips_clti_u_h : GCCBuiltin<"__builtin_msa_clti_u_h">,
696 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
697 def int_mips_clti_u_w : GCCBuiltin<"__builtin_msa_clti_u_w">,
698 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
699 def int_mips_clti_u_d : GCCBuiltin<"__builtin_msa_clti_u_d">,
700 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_i32_ty], []>;
702 def int_mips_copy_s_b : GCCBuiltin<"__builtin_msa_copy_s_b">,
703 Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
704 def int_mips_copy_s_h : GCCBuiltin<"__builtin_msa_copy_s_h">,
705 Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
706 def int_mips_copy_s_w : GCCBuiltin<"__builtin_msa_copy_s_w">,
707 Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
709 def int_mips_copy_u_b : GCCBuiltin<"__builtin_msa_copy_u_b">,
710 Intrinsic<[llvm_i32_ty], [llvm_v16i8_ty, llvm_i32_ty], []>;
711 def int_mips_copy_u_h : GCCBuiltin<"__builtin_msa_copy_u_h">,
712 Intrinsic<[llvm_i32_ty], [llvm_v8i16_ty, llvm_i32_ty], []>;
713 def int_mips_copy_u_w : GCCBuiltin<"__builtin_msa_copy_u_w">,
714 Intrinsic<[llvm_i32_ty], [llvm_v4i32_ty, llvm_i32_ty], []>;
716 def int_mips_div_s_b : GCCBuiltin<"__builtin_msa_div_s_b">,
717 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
718 def int_mips_div_s_h : GCCBuiltin<"__builtin_msa_div_s_h">,
719 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
720 def int_mips_div_s_w : GCCBuiltin<"__builtin_msa_div_s_w">,
721 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
722 def int_mips_div_s_d : GCCBuiltin<"__builtin_msa_div_s_d">,
723 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
725 def int_mips_div_u_b : GCCBuiltin<"__builtin_msa_div_u_b">,
726 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
727 def int_mips_div_u_h : GCCBuiltin<"__builtin_msa_div_u_h">,
728 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
729 def int_mips_div_u_w : GCCBuiltin<"__builtin_msa_div_u_w">,
730 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
731 def int_mips_div_u_d : GCCBuiltin<"__builtin_msa_div_u_d">,
732 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
734 def int_mips_dotp_s_b : GCCBuiltin<"__builtin_msa_dotp_s_b">,
735 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
736 def int_mips_dotp_s_h : GCCBuiltin<"__builtin_msa_dotp_s_h">,
737 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
738 def int_mips_dotp_s_w : GCCBuiltin<"__builtin_msa_dotp_s_w">,
739 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
740 def int_mips_dotp_s_d : GCCBuiltin<"__builtin_msa_dotp_s_d">,
741 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
743 def int_mips_dotp_u_b : GCCBuiltin<"__builtin_msa_dotp_u_b">,
744 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
745 def int_mips_dotp_u_h : GCCBuiltin<"__builtin_msa_dotp_u_h">,
746 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
747 def int_mips_dotp_u_w : GCCBuiltin<"__builtin_msa_dotp_u_w">,
748 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
749 def int_mips_dotp_u_d : GCCBuiltin<"__builtin_msa_dotp_u_d">,
750 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
752 def int_mips_dpadd_s_h : GCCBuiltin<"__builtin_msa_dpadd_s_h">,
753 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
754 def int_mips_dpadd_s_w : GCCBuiltin<"__builtin_msa_dpadd_s_w">,
755 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
756 def int_mips_dpadd_s_d : GCCBuiltin<"__builtin_msa_dpadd_s_d">,
757 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
759 def int_mips_dpadd_u_h : GCCBuiltin<"__builtin_msa_dpadd_u_h">,
760 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
761 def int_mips_dpadd_u_w : GCCBuiltin<"__builtin_msa_dpadd_u_w">,
762 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
763 def int_mips_dpadd_u_d : GCCBuiltin<"__builtin_msa_dpadd_u_d">,
764 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
766 def int_mips_dpsub_s_h : GCCBuiltin<"__builtin_msa_dpsub_s_h">,
767 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
768 def int_mips_dpsub_s_w : GCCBuiltin<"__builtin_msa_dpsub_s_w">,
769 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
770 def int_mips_dpsub_s_d : GCCBuiltin<"__builtin_msa_dpsub_s_d">,
771 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
773 def int_mips_dpsub_u_h : GCCBuiltin<"__builtin_msa_dpsub_u_h">,
774 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v16i8_ty, llvm_v16i8_ty], []>;
775 def int_mips_dpsub_u_w : GCCBuiltin<"__builtin_msa_dpsub_u_w">,
776 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v8i16_ty, llvm_v8i16_ty], []>;
777 def int_mips_dpsub_u_d : GCCBuiltin<"__builtin_msa_dpsub_u_d">,
778 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v4i32_ty, llvm_v4i32_ty], []>;
780 def int_mips_fadd_w : GCCBuiltin<"__builtin_msa_fadd_w">,
781 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
782 def int_mips_fadd_d : GCCBuiltin<"__builtin_msa_fadd_d">,
783 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
785 def int_mips_fceq_w : GCCBuiltin<"__builtin_msa_fceq_w">,
786 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
787 def int_mips_fceq_d : GCCBuiltin<"__builtin_msa_fceq_d">,
788 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
790 def int_mips_fcle_w : GCCBuiltin<"__builtin_msa_fcle_w">,
791 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
792 def int_mips_fcle_d : GCCBuiltin<"__builtin_msa_fcle_d">,
793 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
795 def int_mips_fclt_w : GCCBuiltin<"__builtin_msa_fclt_w">,
796 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
797 def int_mips_fclt_d : GCCBuiltin<"__builtin_msa_fclt_d">,
798 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
800 def int_mips_fclass_w : GCCBuiltin<"__builtin_msa_fclass_w">,
801 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], []>;
802 def int_mips_fclass_d : GCCBuiltin<"__builtin_msa_fclass_d">,
803 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], []>;
805 def int_mips_fcge_w : GCCBuiltin<"__builtin_msa_fcge_w">,
806 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
807 def int_mips_fcge_d : GCCBuiltin<"__builtin_msa_fcge_d">,
808 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
810 def int_mips_fcgt_w : GCCBuiltin<"__builtin_msa_fcgt_w">,
811 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
812 def int_mips_fcgt_d : GCCBuiltin<"__builtin_msa_fcgt_d">,
813 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
815 def int_mips_fcne_w : GCCBuiltin<"__builtin_msa_fcne_w">,
816 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
817 def int_mips_fcne_d : GCCBuiltin<"__builtin_msa_fcne_d">,
818 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
820 def int_mips_fcun_w : GCCBuiltin<"__builtin_msa_fcun_w">,
821 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
822 def int_mips_fcun_d : GCCBuiltin<"__builtin_msa_fcun_d">,
823 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
825 def int_mips_fdiv_w : GCCBuiltin<"__builtin_msa_fdiv_w">,
826 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
827 def int_mips_fdiv_d : GCCBuiltin<"__builtin_msa_fdiv_d">,
828 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
830 def int_mips_fexdo_h : GCCBuiltin<"__builtin_msa_fexdo_h">,
831 Intrinsic<[llvm_v8f16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
832 def int_mips_fexdo_w : GCCBuiltin<"__builtin_msa_fexdo_w">,
833 Intrinsic<[llvm_v4f32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
835 def int_mips_fexp2_w : GCCBuiltin<"__builtin_msa_fexp2_w">,
836 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4i32_ty], []>;
837 def int_mips_fexp2_d : GCCBuiltin<"__builtin_msa_fexp2_d">,
838 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2i64_ty], []>;
840 def int_mips_fexupl_w : GCCBuiltin<"__builtin_msa_fexupl_w">,
841 Intrinsic<[llvm_v4f32_ty], [llvm_v8f16_ty], []>;
842 def int_mips_fexupl_d : GCCBuiltin<"__builtin_msa_fexupl_d">,
843 Intrinsic<[llvm_v2f64_ty], [llvm_v4f32_ty], []>;
845 def int_mips_fexupr_w : GCCBuiltin<"__builtin_msa_fexupr_w">,
846 Intrinsic<[llvm_v4f32_ty], [llvm_v8f16_ty], []>;
847 def int_mips_fexupr_d : GCCBuiltin<"__builtin_msa_fexupr_d">,
848 Intrinsic<[llvm_v2f64_ty], [llvm_v4f32_ty], []>;
850 def int_mips_ffint_s_w : GCCBuiltin<"__builtin_msa_ffint_s_w">,
851 Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], []>;
852 def int_mips_ffint_s_d : GCCBuiltin<"__builtin_msa_ffint_s_d">,
853 Intrinsic<[llvm_v2f64_ty], [llvm_v2i64_ty], []>;
855 def int_mips_ffint_u_w : GCCBuiltin<"__builtin_msa_ffint_u_w">,
856 Intrinsic<[llvm_v4f32_ty], [llvm_v4i32_ty], []>;
857 def int_mips_ffint_u_d : GCCBuiltin<"__builtin_msa_ffint_u_d">,
858 Intrinsic<[llvm_v2f64_ty], [llvm_v2i64_ty], []>;
860 def int_mips_ffql_w : GCCBuiltin<"__builtin_msa_ffql_w">,
861 Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], []>;
862 def int_mips_ffql_d : GCCBuiltin<"__builtin_msa_ffql_d">,
863 Intrinsic<[llvm_v2f64_ty], [llvm_v4i32_ty], []>;
865 def int_mips_ffqr_w : GCCBuiltin<"__builtin_msa_ffqr_w">,
866 Intrinsic<[llvm_v4f32_ty], [llvm_v8i16_ty], []>;
867 def int_mips_ffqr_d : GCCBuiltin<"__builtin_msa_ffqr_d">,
868 Intrinsic<[llvm_v2f64_ty], [llvm_v4i32_ty], []>;
870 def int_mips_fill_b : GCCBuiltin<"__builtin_msa_fill_b">,
871 Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], []>;
872 def int_mips_fill_h : GCCBuiltin<"__builtin_msa_fill_h">,
873 Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], []>;
874 def int_mips_fill_w : GCCBuiltin<"__builtin_msa_fill_w">,
875 Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], []>;
877 def int_mips_flog2_w : GCCBuiltin<"__builtin_msa_flog2_w">,
878 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
879 def int_mips_flog2_d : GCCBuiltin<"__builtin_msa_flog2_d">,
880 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
882 def int_mips_fmadd_w : GCCBuiltin<"__builtin_msa_fmadd_w">,
883 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], []>;
884 def int_mips_fmadd_d : GCCBuiltin<"__builtin_msa_fmadd_d">,
885 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], []>;
887 def int_mips_fmax_w : GCCBuiltin<"__builtin_msa_fmax_w">,
888 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
889 def int_mips_fmax_d : GCCBuiltin<"__builtin_msa_fmax_d">,
890 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
892 def int_mips_fmax_a_w : GCCBuiltin<"__builtin_msa_fmax_a_w">,
893 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
894 def int_mips_fmax_a_d : GCCBuiltin<"__builtin_msa_fmax_a_d">,
895 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
897 def int_mips_fmin_w : GCCBuiltin<"__builtin_msa_fmin_w">,
898 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
899 def int_mips_fmin_d : GCCBuiltin<"__builtin_msa_fmin_d">,
900 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
902 def int_mips_fmin_a_w : GCCBuiltin<"__builtin_msa_fmin_a_w">,
903 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
904 def int_mips_fmin_a_d : GCCBuiltin<"__builtin_msa_fmin_a_d">,
905 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
907 def int_mips_fmsub_w : GCCBuiltin<"__builtin_msa_fmsub_w">,
908 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty, llvm_v4f32_ty], []>;
909 def int_mips_fmsub_d : GCCBuiltin<"__builtin_msa_fmsub_d">,
910 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty, llvm_v2f64_ty], []>;
912 def int_mips_fmul_w : GCCBuiltin<"__builtin_msa_fmul_w">,
913 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
914 def int_mips_fmul_d : GCCBuiltin<"__builtin_msa_fmul_d">,
915 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
917 def int_mips_frint_w : GCCBuiltin<"__builtin_msa_frint_w">,
918 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
919 def int_mips_frint_d : GCCBuiltin<"__builtin_msa_frint_d">,
920 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
922 def int_mips_frcp_w : GCCBuiltin<"__builtin_msa_frcp_w">,
923 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
924 def int_mips_frcp_d : GCCBuiltin<"__builtin_msa_frcp_d">,
925 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
927 def int_mips_frsqrt_w : GCCBuiltin<"__builtin_msa_frsqrt_w">,
928 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
929 def int_mips_frsqrt_d : GCCBuiltin<"__builtin_msa_frsqrt_d">,
930 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
932 def int_mips_fseq_w : GCCBuiltin<"__builtin_msa_fseq_w">,
933 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
934 def int_mips_fseq_d : GCCBuiltin<"__builtin_msa_fseq_d">,
935 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
937 def int_mips_fsle_w : GCCBuiltin<"__builtin_msa_fsle_w">,
938 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
939 def int_mips_fsle_d : GCCBuiltin<"__builtin_msa_fsle_d">,
940 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
942 def int_mips_fslt_w : GCCBuiltin<"__builtin_msa_fslt_w">,
943 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
944 def int_mips_fslt_d : GCCBuiltin<"__builtin_msa_fslt_d">,
945 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
947 def int_mips_fsge_w : GCCBuiltin<"__builtin_msa_fsge_w">,
948 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
949 def int_mips_fsge_d : GCCBuiltin<"__builtin_msa_fsge_d">,
950 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
952 def int_mips_fsgt_w : GCCBuiltin<"__builtin_msa_fsgt_w">,
953 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
954 def int_mips_fsgt_d : GCCBuiltin<"__builtin_msa_fsgt_d">,
955 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
957 def int_mips_fsne_w : GCCBuiltin<"__builtin_msa_fsne_w">,
958 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
959 def int_mips_fsne_d : GCCBuiltin<"__builtin_msa_fsne_d">,
960 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
962 def int_mips_fsqrt_w : GCCBuiltin<"__builtin_msa_fsqrt_w">,
963 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty], []>;
964 def int_mips_fsqrt_d : GCCBuiltin<"__builtin_msa_fsqrt_d">,
965 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty], []>;
967 def int_mips_fsub_w : GCCBuiltin<"__builtin_msa_fsub_w">,
968 Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
969 def int_mips_fsub_d : GCCBuiltin<"__builtin_msa_fsub_d">,
970 Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
972 def int_mips_ftint_s_w : GCCBuiltin<"__builtin_msa_ftint_s_w">,
973 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], []>;
974 def int_mips_ftint_s_d : GCCBuiltin<"__builtin_msa_ftint_s_d">,
975 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], []>;
977 def int_mips_ftint_u_w : GCCBuiltin<"__builtin_msa_ftint_u_w">,
978 Intrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty], []>;
979 def int_mips_ftint_u_d : GCCBuiltin<"__builtin_msa_ftint_u_d">,
980 Intrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty], []>;
982 def int_mips_ftq_h : GCCBuiltin<"__builtin_msa_ftq_h">,
983 Intrinsic<[llvm_v8i16_ty], [llvm_v4f32_ty, llvm_v4f32_ty], []>;
984 def int_mips_ftq_w : GCCBuiltin<"__builtin_msa_ftq_w">,
985 Intrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty, llvm_v2f64_ty], []>;
987 def int_mips_ilvev_b : GCCBuiltin<"__builtin_msa_ilvev_b">,
988 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
989 def int_mips_ilvev_h : GCCBuiltin<"__builtin_msa_ilvev_h">,
990 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
991 def int_mips_ilvev_w : GCCBuiltin<"__builtin_msa_ilvev_w">,
992 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
993 def int_mips_ilvev_d : GCCBuiltin<"__builtin_msa_ilvev_d">,
994 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
996 def int_mips_ilvl_b : GCCBuiltin<"__builtin_msa_ilvl_b">,
997 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
998 def int_mips_ilvl_h : GCCBuiltin<"__builtin_msa_ilvl_h">,
999 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1000 def int_mips_ilvl_w : GCCBuiltin<"__builtin_msa_ilvl_w">,
1001 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1002 def int_mips_ilvl_d : GCCBuiltin<"__builtin_msa_ilvl_d">,
1003 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1005 def int_mips_ilvod_b : GCCBuiltin<"__builtin_msa_ilvod_b">,
1006 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1007 def int_mips_ilvod_h : GCCBuiltin<"__builtin_msa_ilvod_h">,
1008 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1009 def int_mips_ilvod_w : GCCBuiltin<"__builtin_msa_ilvod_w">,
1010 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1011 def int_mips_ilvod_d : GCCBuiltin<"__builtin_msa_ilvod_d">,
1012 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1014 def int_mips_ilvr_b : GCCBuiltin<"__builtin_msa_ilvr_b">,
1015 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_v16i8_ty], []>;
1016 def int_mips_ilvr_h : GCCBuiltin<"__builtin_msa_ilvr_h">,
1017 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_v8i16_ty], []>;
1018 def int_mips_ilvr_w : GCCBuiltin<"__builtin_msa_ilvr_w">,
1019 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_v4i32_ty], []>;
1020 def int_mips_ilvr_d : GCCBuiltin<"__builtin_msa_ilvr_d">,
1021 Intrinsic<[llvm_v2i64_ty], [llvm_v2i64_ty, llvm_v2i64_ty], []>;
1023 def int_mips_insert_b : GCCBuiltin<"__builtin_msa_insert_b">,
1024 Intrinsic<[llvm_v16i8_ty], [llvm_v16i8_ty, llvm_i32_ty, llvm_i32_ty], []>;
1025 def int_mips_insert_h : GCCBuiltin<"__builtin_msa_insert_h">,
1026 Intrinsic<[llvm_v8i16_ty], [llvm_v8i16_ty, llvm_i32_ty, llvm_i32_ty], []>;
1027 def int_mips_insert_w : GCCBuiltin<"__builtin_msa_insert_w">,
1028 Intrinsic<[llvm_v4i32_ty], [llvm_v4i32_ty, llvm_i32_ty, llvm_i32_ty], []>;
1030 def int_mips_ldi_b : GCCBuiltin<"__builtin_msa_ldi_b">,
1031 Intrinsic<[llvm_v16i8_ty], [llvm_i32_ty], []>;
1032 def int_mips_ldi_h : GCCBuiltin<"__builtin_msa_ldi_h">,
1033 Intrinsic<[llvm_v8i16_ty], [llvm_i32_ty], []>;
1034 def int_mips_ldi_w : GCCBuiltin<"__builtin_msa_ldi_w">,
1035 Intrinsic<[llvm_v4i32_ty], [llvm_i32_ty], []>;
1036 def int_mips_ldi_d : GCCBuiltin<"__builtin_msa_ldi_d">,
1037 Intrinsic<[llvm_v2i64_ty], [llvm_i32_ty], []>;