]> git.proxmox.com Git - rustc.git/blame - src/librustc_platform_intrinsics/powerpc.rs
New upstream version 1.22.1+dfsg1
[rustc.git] / src / librustc_platform_intrinsics / powerpc.rs
CommitLineData
3b2f2976
XL
1// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2// file at the top-level directory of this distribution and at
3// http://rust-lang.org/COPYRIGHT.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
11// DO NOT EDIT: autogenerated by etc/platform-intrinsics/generator.py
12// ignore-tidy-linelength
13
14#![allow(unused_imports)]
15
16use {Intrinsic, Type};
17use IntrinsicDef::Named;
18
19// The default inlining settings trigger a pathological behaviour in
20// LLVM, which causes makes compilation very slow. See #28273.
21#[inline(never)]
22pub fn find(name: &str) -> Option<Intrinsic> {
23 if !name.starts_with("powerpc") { return None }
24 Some(match &name["powerpc".len()..] {
25 "_vec_perm" => Intrinsic {
26 inputs: { static INPUTS: [&'static Type; 3] = [&::I32x4, &::I32x4, &::I8x16]; &INPUTS },
27 output: &::I32x4,
28 definition: Named("llvm.ppc.altivec.vperm")
29 },
30 "_vec_mradds" => Intrinsic {
31 inputs: { static INPUTS: [&'static Type; 3] = [&::I16x8, &::I16x8, &::I16x8]; &INPUTS },
32 output: &::I16x8,
33 definition: Named("llvm.ppc.altivec.vmhraddshs")
34 },
35 "_vec_cmpb" => Intrinsic {
36 inputs: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS },
37 output: &::I32x4,
38 definition: Named("llvm.ppc.altivec.vcmpbfp")
39 },
40 "_vec_cmpeqb" => Intrinsic {
41 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
42 output: &::I8x16,
43 definition: Named("llvm.ppc.altivec.vcmpequb")
44 },
45 "_vec_cmpeqh" => Intrinsic {
46 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
47 output: &::I16x8,
48 definition: Named("llvm.ppc.altivec.vcmpequh")
49 },
50 "_vec_cmpeqw" => Intrinsic {
51 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
52 output: &::I32x4,
53 definition: Named("llvm.ppc.altivec.vcmpequw")
54 },
55 "_vec_cmpgtub" => Intrinsic {
56 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
57 output: &::I8x16,
58 definition: Named("llvm.ppc.altivec.vcmpgtub")
59 },
60 "_vec_cmpgtuh" => Intrinsic {
61 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
62 output: &::I16x8,
63 definition: Named("llvm.ppc.altivec.vcmpgtuh")
64 },
65 "_vec_cmpgtuw" => Intrinsic {
66 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
67 output: &::I32x4,
68 definition: Named("llvm.ppc.altivec.vcmpgtuw")
69 },
70 "_vec_cmpgtsb" => Intrinsic {
71 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
72 output: &::I8x16,
73 definition: Named("llvm.ppc.altivec.vcmpgtsb")
74 },
75 "_vec_cmpgtsh" => Intrinsic {
76 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
77 output: &::I16x8,
78 definition: Named("llvm.ppc.altivec.vcmpgtsh")
79 },
80 "_vec_cmpgtsw" => Intrinsic {
81 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
82 output: &::I32x4,
83 definition: Named("llvm.ppc.altivec.vcmpgtsw")
84 },
85 "_vec_maxsb" => Intrinsic {
86 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
87 output: &::I8x16,
88 definition: Named("llvm.ppc.altivec.vmaxsb")
89 },
90 "_vec_maxub" => Intrinsic {
91 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
92 output: &::U8x16,
93 definition: Named("llvm.ppc.altivec.vmaxub")
94 },
95 "_vec_maxsh" => Intrinsic {
96 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
97 output: &::I16x8,
98 definition: Named("llvm.ppc.altivec.vmaxsh")
99 },
100 "_vec_maxuh" => Intrinsic {
101 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
102 output: &::U16x8,
103 definition: Named("llvm.ppc.altivec.vmaxuh")
104 },
105 "_vec_maxsw" => Intrinsic {
106 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
107 output: &::I32x4,
108 definition: Named("llvm.ppc.altivec.vmaxsw")
109 },
110 "_vec_maxuw" => Intrinsic {
111 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
112 output: &::U32x4,
113 definition: Named("llvm.ppc.altivec.vmaxuw")
114 },
115 "_vec_minsb" => Intrinsic {
116 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
117 output: &::I8x16,
118 definition: Named("llvm.ppc.altivec.vminsb")
119 },
120 "_vec_minub" => Intrinsic {
121 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
122 output: &::U8x16,
123 definition: Named("llvm.ppc.altivec.vminub")
124 },
125 "_vec_minsh" => Intrinsic {
126 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
127 output: &::I16x8,
128 definition: Named("llvm.ppc.altivec.vminsh")
129 },
130 "_vec_minuh" => Intrinsic {
131 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
132 output: &::U16x8,
133 definition: Named("llvm.ppc.altivec.vminuh")
134 },
135 "_vec_minsw" => Intrinsic {
136 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
137 output: &::I32x4,
138 definition: Named("llvm.ppc.altivec.vminsw")
139 },
140 "_vec_minuw" => Intrinsic {
141 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
142 output: &::U32x4,
143 definition: Named("llvm.ppc.altivec.vminuw")
144 },
145 "_vec_subsbs" => Intrinsic {
146 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
147 output: &::I8x16,
148 definition: Named("llvm.ppc.altivec.vsubsbs")
149 },
150 "_vec_sububs" => Intrinsic {
151 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
152 output: &::U8x16,
153 definition: Named("llvm.ppc.altivec.vsububs")
154 },
155 "_vec_subshs" => Intrinsic {
156 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
157 output: &::I16x8,
158 definition: Named("llvm.ppc.altivec.vsubshs")
159 },
160 "_vec_subuhs" => Intrinsic {
161 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
162 output: &::U16x8,
163 definition: Named("llvm.ppc.altivec.vsubuhs")
164 },
165 "_vec_subsws" => Intrinsic {
166 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
167 output: &::I32x4,
168 definition: Named("llvm.ppc.altivec.vsubsws")
169 },
170 "_vec_subuws" => Intrinsic {
171 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
172 output: &::U32x4,
173 definition: Named("llvm.ppc.altivec.vsubuws")
174 },
175 "_vec_subc" => Intrinsic {
176 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
177 output: &::U32x4,
178 definition: Named("llvm.ppc.altivec.vsubcuw")
179 },
180 "_vec_addsbs" => Intrinsic {
181 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
182 output: &::I8x16,
183 definition: Named("llvm.ppc.altivec.vaddsbs")
184 },
185 "_vec_addubs" => Intrinsic {
186 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
187 output: &::U8x16,
188 definition: Named("llvm.ppc.altivec.vaddubs")
189 },
190 "_vec_addshs" => Intrinsic {
191 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
192 output: &::I16x8,
193 definition: Named("llvm.ppc.altivec.vaddshs")
194 },
195 "_vec_adduhs" => Intrinsic {
196 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
197 output: &::U16x8,
198 definition: Named("llvm.ppc.altivec.vadduhs")
199 },
200 "_vec_addsws" => Intrinsic {
201 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
202 output: &::I32x4,
203 definition: Named("llvm.ppc.altivec.vaddsws")
204 },
205 "_vec_adduws" => Intrinsic {
206 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
207 output: &::U32x4,
208 definition: Named("llvm.ppc.altivec.vadduws")
209 },
210 "_vec_addc" => Intrinsic {
211 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
212 output: &::U32x4,
213 definition: Named("llvm.ppc.altivec.vaddcuw")
214 },
215 "_vec_mulesb" => Intrinsic {
216 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
217 output: &::I16x8,
218 definition: Named("llvm.ppc.altivec.vmulesb")
219 },
220 "_vec_muleub" => Intrinsic {
221 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
222 output: &::U16x8,
223 definition: Named("llvm.ppc.altivec.vmuleub")
224 },
225 "_vec_mulesh" => Intrinsic {
226 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
227 output: &::I32x4,
228 definition: Named("llvm.ppc.altivec.vmulesh")
229 },
230 "_vec_muleuh" => Intrinsic {
231 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
232 output: &::U32x4,
233 definition: Named("llvm.ppc.altivec.vmuleuh")
234 },
235 "_vec_mulosb" => Intrinsic {
236 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
237 output: &::I16x8,
238 definition: Named("llvm.ppc.altivec.vmulosb")
239 },
240 "_vec_muloub" => Intrinsic {
241 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
242 output: &::U16x8,
243 definition: Named("llvm.ppc.altivec.vmuloub")
244 },
245 "_vec_mulosh" => Intrinsic {
246 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
247 output: &::I32x4,
248 definition: Named("llvm.ppc.altivec.vmulosh")
249 },
250 "_vec_mulouh" => Intrinsic {
251 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
252 output: &::U32x4,
253 definition: Named("llvm.ppc.altivec.vmulouh")
254 },
255 "_vec_avgsb" => Intrinsic {
256 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS },
257 output: &::I8x16,
258 definition: Named("llvm.ppc.altivec.vavgsb")
259 },
260 "_vec_avgub" => Intrinsic {
261 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS },
262 output: &::U8x16,
263 definition: Named("llvm.ppc.altivec.vavgub")
264 },
265 "_vec_avgsh" => Intrinsic {
266 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
267 output: &::I16x8,
268 definition: Named("llvm.ppc.altivec.vavgsh")
269 },
270 "_vec_avguh" => Intrinsic {
271 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
272 output: &::U16x8,
273 definition: Named("llvm.ppc.altivec.vavguh")
274 },
275 "_vec_avgsw" => Intrinsic {
276 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
277 output: &::I32x4,
278 definition: Named("llvm.ppc.altivec.vavgsw")
279 },
280 "_vec_avguw" => Intrinsic {
281 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
282 output: &::U32x4,
283 definition: Named("llvm.ppc.altivec.vavguw")
284 },
285 "_vec_packssh" => Intrinsic {
286 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
287 output: &::I8x16,
288 definition: Named("llvm.ppc.altivec.vpkshss")
289 },
290 "_vec_packsuh" => Intrinsic {
291 inputs: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS },
292 output: &::U8x16,
293 definition: Named("llvm.ppc.altivec.vpkuhus")
294 },
295 "_vec_packssw" => Intrinsic {
296 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
297 output: &::I16x8,
298 definition: Named("llvm.ppc.altivec.vpkswss")
299 },
300 "_vec_packsuw" => Intrinsic {
301 inputs: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS },
302 output: &::U16x8,
303 definition: Named("llvm.ppc.altivec.vpkuwus")
304 },
305 "_vec_packsush" => Intrinsic {
306 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS },
307 output: &::U8x16,
308 definition: Named("llvm.ppc.altivec.vpkshus")
309 },
310 "_vec_packsusw" => Intrinsic {
311 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
312 output: &::U16x8,
313 definition: Named("llvm.ppc.altivec.vpkswus")
314 },
315 "_vec_packpx" => Intrinsic {
316 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
317 output: &::I16x8,
318 definition: Named("llvm.ppc.altivec.vpkpx")
319 },
320 "_vec_unpacklsb" => Intrinsic {
321 inputs: { static INPUTS: [&'static Type; 1] = [&::I8x16]; &INPUTS },
322 output: &::I16x8,
323 definition: Named("llvm.ppc.altivec.vupklsb")
324 },
325 "_vec_unpacklsh" => Intrinsic {
326 inputs: { static INPUTS: [&'static Type; 1] = [&::I16x8]; &INPUTS },
327 output: &::I32x4,
328 definition: Named("llvm.ppc.altivec.vupklsh")
329 },
330 "_vec_unpackhsb" => Intrinsic {
331 inputs: { static INPUTS: [&'static Type; 1] = [&::I8x16]; &INPUTS },
332 output: &::I16x8,
333 definition: Named("llvm.ppc.altivec.vupkhsb")
334 },
335 "_vec_unpackhsh" => Intrinsic {
336 inputs: { static INPUTS: [&'static Type; 1] = [&::I16x8]; &INPUTS },
337 output: &::I32x4,
338 definition: Named("llvm.ppc.altivec.vupkhsh")
339 },
ea8adc8c
XL
340 "_vec_madds" => Intrinsic {
341 inputs: { static INPUTS: [&'static Type; 3] = [&::I16x8, &::I16x8, &::I16x8]; &INPUTS },
342 output: &::I16x8,
343 definition: Named("llvm.ppc.altivec.vmhaddshs")
344 },
345 "_vec_msumubm" => Intrinsic {
346 inputs: { static INPUTS: [&'static Type; 3] = [&::U8x16, &::U8x16, &::U32x4]; &INPUTS },
347 output: &::U32x4,
348 definition: Named("llvm.ppc.altivec.vmsumubm")
349 },
350 "_vec_msumuhm" => Intrinsic {
351 inputs: { static INPUTS: [&'static Type; 3] = [&::U16x8, &::U16x8, &::U32x4]; &INPUTS },
352 output: &::U32x4,
353 definition: Named("llvm.ppc.altivec.vmsumuhm")
354 },
355 "_vec_msummbm" => Intrinsic {
356 inputs: { static INPUTS: [&'static Type; 3] = [&::I8x16, &::U8x16, &::I32x4]; &INPUTS },
357 output: &::I32x4,
358 definition: Named("llvm.ppc.altivec.vmsummbm")
359 },
360 "_vec_msumshm" => Intrinsic {
361 inputs: { static INPUTS: [&'static Type; 3] = [&::I16x8, &::I16x8, &::I32x4]; &INPUTS },
362 output: &::I32x4,
363 definition: Named("llvm.ppc.altivec.vmsumshm")
364 },
365 "_vec_msumshs" => Intrinsic {
366 inputs: { static INPUTS: [&'static Type; 3] = [&::I16x8, &::I16x8, &::I32x4]; &INPUTS },
367 output: &::I32x4,
368 definition: Named("llvm.ppc.altivec.vmsumshs")
369 },
370 "_vec_msumuhs" => Intrinsic {
371 inputs: { static INPUTS: [&'static Type; 3] = [&::U16x8, &::U16x8, &::U32x4]; &INPUTS },
372 output: &::U32x4,
373 definition: Named("llvm.ppc.altivec.vmsumuhs")
374 },
375 "_vec_sum2s" => Intrinsic {
376 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
377 output: &::I32x4,
378 definition: Named("llvm.ppc.altivec.vsum2sws")
379 },
380 "_vec_sum4sbs" => Intrinsic {
381 inputs: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I32x4]; &INPUTS },
382 output: &::I32x4,
383 definition: Named("llvm.ppc.altivec.vsum4sbs")
384 },
385 "_vec_sum4ubs" => Intrinsic {
386 inputs: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U32x4]; &INPUTS },
387 output: &::U32x4,
388 definition: Named("llvm.ppc.altivec.vsum4ubs")
389 },
390 "_vec_sum4shs" => Intrinsic {
391 inputs: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I32x4]; &INPUTS },
392 output: &::I32x4,
393 definition: Named("llvm.ppc.altivec.vsum4shs")
394 },
395 "_vec_sums" => Intrinsic {
396 inputs: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS },
397 output: &::I32x4,
398 definition: Named("llvm.ppc.altivec.vsumsws")
399 },
400 "_vec_madd" => Intrinsic {
401 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS },
402 output: &::F32x4,
403 definition: Named("llvm.ppc.altivec.vmaddfp")
404 },
405 "_vec_nmsub" => Intrinsic {
406 inputs: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS },
407 output: &::F32x4,
408 definition: Named("llvm.ppc.altivec.vnmsubfp")
409 },
410 "_vec_expte" => Intrinsic {
411 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
412 output: &::F32x4,
413 definition: Named("llvm.ppc.altivec.vexptefp")
414 },
415 "_vec_floor" => Intrinsic {
416 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
417 output: &::F32x4,
418 definition: Named("llvm.ppc.altivec.vrfim")
419 },
420 "_vec_ceil" => Intrinsic {
421 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
422 output: &::F32x4,
423 definition: Named("llvm.ppc.altivec.vrfip")
424 },
425 "_vec_round" => Intrinsic {
426 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
427 output: &::F32x4,
428 definition: Named("llvm.ppc.altivec.vrfin")
429 },
430 "_vec_trunc" => Intrinsic {
431 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
432 output: &::F32x4,
433 definition: Named("llvm.ppc.altivec.vrfiz")
434 },
435 "_vec_loge" => Intrinsic {
436 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
437 output: &::F32x4,
438 definition: Named("llvm.ppc.altivec.vlogefp")
439 },
440 "_vec_re" => Intrinsic {
441 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
442 output: &::F32x4,
443 definition: Named("llvm.ppc.altivec.vrefp")
444 },
445 "_vec_rsqrte" => Intrinsic {
446 inputs: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS },
447 output: &::F32x4,
448 definition: Named("llvm.ppc.altivec.vrsqrtefp")
449 },
3b2f2976
XL
450 _ => return None,
451 })
452}