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.
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.
11 // DO NOT EDIT: autogenerated by etc/platform-intrinsics/generator.py
12 // ignore-tidy-linelength
14 #![allow(unused_imports)]
16 use {Intrinsic, Type}
;
17 use IntrinsicDef
::Named
;
19 pub fn find(name
: &str) -> Option
<Intrinsic
> {
20 if !name
.starts_with("powerpc") { return None }
21 Some(match &name
["powerpc".len()..] {
22 "_vec_perm" => Intrinsic
{
23 inputs
: { static INPUTS: [&'static Type; 3] = [&::I32x4, &::I32x4, &::I8x16]; &INPUTS }
,
25 definition
: Named("llvm.ppc.altivec.vperm")
27 "_vec_mradds" => Intrinsic
{
28 inputs
: { static INPUTS: [&'static Type; 3] = [&::I16x8, &::I16x8, &::I16x8]; &INPUTS }
,
30 definition
: Named("llvm.ppc.altivec.vmhraddshs")
32 "_vec_cmpb" => Intrinsic
{
33 inputs
: { static INPUTS: [&'static Type; 2] = [&::F32x4, &::F32x4]; &INPUTS }
,
35 definition
: Named("llvm.ppc.altivec.vcmpbfp")
37 "_vec_cmpeqb" => Intrinsic
{
38 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS }
,
40 definition
: Named("llvm.ppc.altivec.vcmpequb")
42 "_vec_cmpeqh" => Intrinsic
{
43 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
45 definition
: Named("llvm.ppc.altivec.vcmpequh")
47 "_vec_cmpeqw" => Intrinsic
{
48 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
50 definition
: Named("llvm.ppc.altivec.vcmpequw")
52 "_vec_cmpgtub" => Intrinsic
{
53 inputs
: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS }
,
55 definition
: Named("llvm.ppc.altivec.vcmpgtub")
57 "_vec_cmpgtuh" => Intrinsic
{
58 inputs
: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS }
,
60 definition
: Named("llvm.ppc.altivec.vcmpgtuh")
62 "_vec_cmpgtuw" => Intrinsic
{
63 inputs
: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS }
,
65 definition
: Named("llvm.ppc.altivec.vcmpgtuw")
67 "_vec_cmpgtsb" => Intrinsic
{
68 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS }
,
70 definition
: Named("llvm.ppc.altivec.vcmpgtsb")
72 "_vec_cmpgtsh" => Intrinsic
{
73 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
75 definition
: Named("llvm.ppc.altivec.vcmpgtsh")
77 "_vec_cmpgtsw" => Intrinsic
{
78 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
80 definition
: Named("llvm.ppc.altivec.vcmpgtsw")
82 "_vec_maxsb" => Intrinsic
{
83 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS }
,
85 definition
: Named("llvm.ppc.altivec.vmaxsb")
87 "_vec_maxub" => Intrinsic
{
88 inputs
: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS }
,
90 definition
: Named("llvm.ppc.altivec.vmaxub")
92 "_vec_maxsh" => Intrinsic
{
93 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
95 definition
: Named("llvm.ppc.altivec.vmaxsh")
97 "_vec_maxuh" => Intrinsic
{
98 inputs
: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS }
,
100 definition
: Named("llvm.ppc.altivec.vmaxuh")
102 "_vec_maxsw" => Intrinsic
{
103 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
105 definition
: Named("llvm.ppc.altivec.vmaxsw")
107 "_vec_maxuw" => Intrinsic
{
108 inputs
: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS }
,
110 definition
: Named("llvm.ppc.altivec.vmaxuw")
112 "_vec_minsb" => Intrinsic
{
113 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS }
,
115 definition
: Named("llvm.ppc.altivec.vminsb")
117 "_vec_minub" => Intrinsic
{
118 inputs
: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS }
,
120 definition
: Named("llvm.ppc.altivec.vminub")
122 "_vec_minsh" => Intrinsic
{
123 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
125 definition
: Named("llvm.ppc.altivec.vminsh")
127 "_vec_minuh" => Intrinsic
{
128 inputs
: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS }
,
130 definition
: Named("llvm.ppc.altivec.vminuh")
132 "_vec_minsw" => Intrinsic
{
133 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
135 definition
: Named("llvm.ppc.altivec.vminsw")
137 "_vec_minuw" => Intrinsic
{
138 inputs
: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS }
,
140 definition
: Named("llvm.ppc.altivec.vminuw")
142 "_vec_subsbs" => Intrinsic
{
143 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS }
,
145 definition
: Named("llvm.ppc.altivec.vsubsbs")
147 "_vec_sububs" => Intrinsic
{
148 inputs
: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS }
,
150 definition
: Named("llvm.ppc.altivec.vsububs")
152 "_vec_subshs" => Intrinsic
{
153 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
155 definition
: Named("llvm.ppc.altivec.vsubshs")
157 "_vec_subuhs" => Intrinsic
{
158 inputs
: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS }
,
160 definition
: Named("llvm.ppc.altivec.vsubuhs")
162 "_vec_subsws" => Intrinsic
{
163 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
165 definition
: Named("llvm.ppc.altivec.vsubsws")
167 "_vec_subuws" => Intrinsic
{
168 inputs
: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS }
,
170 definition
: Named("llvm.ppc.altivec.vsubuws")
172 "_vec_subc" => Intrinsic
{
173 inputs
: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS }
,
175 definition
: Named("llvm.ppc.altivec.vsubcuw")
177 "_vec_addsbs" => Intrinsic
{
178 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS }
,
180 definition
: Named("llvm.ppc.altivec.vaddsbs")
182 "_vec_addubs" => Intrinsic
{
183 inputs
: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS }
,
185 definition
: Named("llvm.ppc.altivec.vaddubs")
187 "_vec_addshs" => Intrinsic
{
188 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
190 definition
: Named("llvm.ppc.altivec.vaddshs")
192 "_vec_adduhs" => Intrinsic
{
193 inputs
: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS }
,
195 definition
: Named("llvm.ppc.altivec.vadduhs")
197 "_vec_addsws" => Intrinsic
{
198 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
200 definition
: Named("llvm.ppc.altivec.vaddsws")
202 "_vec_adduws" => Intrinsic
{
203 inputs
: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS }
,
205 definition
: Named("llvm.ppc.altivec.vadduws")
207 "_vec_addc" => Intrinsic
{
208 inputs
: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS }
,
210 definition
: Named("llvm.ppc.altivec.vaddcuw")
212 "_vec_mulesb" => Intrinsic
{
213 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS }
,
215 definition
: Named("llvm.ppc.altivec.vmulesb")
217 "_vec_muleub" => Intrinsic
{
218 inputs
: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS }
,
220 definition
: Named("llvm.ppc.altivec.vmuleub")
222 "_vec_mulesh" => Intrinsic
{
223 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
225 definition
: Named("llvm.ppc.altivec.vmulesh")
227 "_vec_muleuh" => Intrinsic
{
228 inputs
: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS }
,
230 definition
: Named("llvm.ppc.altivec.vmuleuh")
232 "_vec_mulosb" => Intrinsic
{
233 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS }
,
235 definition
: Named("llvm.ppc.altivec.vmulosb")
237 "_vec_muloub" => Intrinsic
{
238 inputs
: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS }
,
240 definition
: Named("llvm.ppc.altivec.vmuloub")
242 "_vec_mulosh" => Intrinsic
{
243 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
245 definition
: Named("llvm.ppc.altivec.vmulosh")
247 "_vec_mulouh" => Intrinsic
{
248 inputs
: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS }
,
250 definition
: Named("llvm.ppc.altivec.vmulouh")
252 "_vec_avgsb" => Intrinsic
{
253 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I8x16]; &INPUTS }
,
255 definition
: Named("llvm.ppc.altivec.vavgsb")
257 "_vec_avgub" => Intrinsic
{
258 inputs
: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U8x16]; &INPUTS }
,
260 definition
: Named("llvm.ppc.altivec.vavgub")
262 "_vec_avgsh" => Intrinsic
{
263 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
265 definition
: Named("llvm.ppc.altivec.vavgsh")
267 "_vec_avguh" => Intrinsic
{
268 inputs
: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS }
,
270 definition
: Named("llvm.ppc.altivec.vavguh")
272 "_vec_avgsw" => Intrinsic
{
273 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
275 definition
: Named("llvm.ppc.altivec.vavgsw")
277 "_vec_avguw" => Intrinsic
{
278 inputs
: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS }
,
280 definition
: Named("llvm.ppc.altivec.vavguw")
282 "_vec_packssh" => Intrinsic
{
283 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
285 definition
: Named("llvm.ppc.altivec.vpkshss")
287 "_vec_packsuh" => Intrinsic
{
288 inputs
: { static INPUTS: [&'static Type; 2] = [&::U16x8, &::U16x8]; &INPUTS }
,
290 definition
: Named("llvm.ppc.altivec.vpkuhus")
292 "_vec_packssw" => Intrinsic
{
293 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
295 definition
: Named("llvm.ppc.altivec.vpkswss")
297 "_vec_packsuw" => Intrinsic
{
298 inputs
: { static INPUTS: [&'static Type; 2] = [&::U32x4, &::U32x4]; &INPUTS }
,
300 definition
: Named("llvm.ppc.altivec.vpkuwus")
302 "_vec_packsush" => Intrinsic
{
303 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I16x8]; &INPUTS }
,
305 definition
: Named("llvm.ppc.altivec.vpkshus")
307 "_vec_packsusw" => Intrinsic
{
308 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
310 definition
: Named("llvm.ppc.altivec.vpkswus")
312 "_vec_packpx" => Intrinsic
{
313 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
315 definition
: Named("llvm.ppc.altivec.vpkpx")
317 "_vec_unpacklsb" => Intrinsic
{
318 inputs
: { static INPUTS: [&'static Type; 1] = [&::I8x16]; &INPUTS }
,
320 definition
: Named("llvm.ppc.altivec.vupklsb")
322 "_vec_unpacklsh" => Intrinsic
{
323 inputs
: { static INPUTS: [&'static Type; 1] = [&::I16x8]; &INPUTS }
,
325 definition
: Named("llvm.ppc.altivec.vupklsh")
327 "_vec_unpackhsb" => Intrinsic
{
328 inputs
: { static INPUTS: [&'static Type; 1] = [&::I8x16]; &INPUTS }
,
330 definition
: Named("llvm.ppc.altivec.vupkhsb")
332 "_vec_unpackhsh" => Intrinsic
{
333 inputs
: { static INPUTS: [&'static Type; 1] = [&::I16x8]; &INPUTS }
,
335 definition
: Named("llvm.ppc.altivec.vupkhsh")
337 "_vec_madds" => Intrinsic
{
338 inputs
: { static INPUTS: [&'static Type; 3] = [&::I16x8, &::I16x8, &::I16x8]; &INPUTS }
,
340 definition
: Named("llvm.ppc.altivec.vmhaddshs")
342 "_vec_msumubm" => Intrinsic
{
343 inputs
: { static INPUTS: [&'static Type; 3] = [&::U8x16, &::U8x16, &::U32x4]; &INPUTS }
,
345 definition
: Named("llvm.ppc.altivec.vmsumubm")
347 "_vec_msumuhm" => Intrinsic
{
348 inputs
: { static INPUTS: [&'static Type; 3] = [&::U16x8, &::U16x8, &::U32x4]; &INPUTS }
,
350 definition
: Named("llvm.ppc.altivec.vmsumuhm")
352 "_vec_msummbm" => Intrinsic
{
353 inputs
: { static INPUTS: [&'static Type; 3] = [&::I8x16, &::U8x16, &::I32x4]; &INPUTS }
,
355 definition
: Named("llvm.ppc.altivec.vmsummbm")
357 "_vec_msumshm" => Intrinsic
{
358 inputs
: { static INPUTS: [&'static Type; 3] = [&::I16x8, &::I16x8, &::I32x4]; &INPUTS }
,
360 definition
: Named("llvm.ppc.altivec.vmsumshm")
362 "_vec_msumshs" => Intrinsic
{
363 inputs
: { static INPUTS: [&'static Type; 3] = [&::I16x8, &::I16x8, &::I32x4]; &INPUTS }
,
365 definition
: Named("llvm.ppc.altivec.vmsumshs")
367 "_vec_msumuhs" => Intrinsic
{
368 inputs
: { static INPUTS: [&'static Type; 3] = [&::U16x8, &::U16x8, &::U32x4]; &INPUTS }
,
370 definition
: Named("llvm.ppc.altivec.vmsumuhs")
372 "_vec_sum2s" => Intrinsic
{
373 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
375 definition
: Named("llvm.ppc.altivec.vsum2sws")
377 "_vec_sum4sbs" => Intrinsic
{
378 inputs
: { static INPUTS: [&'static Type; 2] = [&::I8x16, &::I32x4]; &INPUTS }
,
380 definition
: Named("llvm.ppc.altivec.vsum4sbs")
382 "_vec_sum4ubs" => Intrinsic
{
383 inputs
: { static INPUTS: [&'static Type; 2] = [&::U8x16, &::U32x4]; &INPUTS }
,
385 definition
: Named("llvm.ppc.altivec.vsum4ubs")
387 "_vec_sum4shs" => Intrinsic
{
388 inputs
: { static INPUTS: [&'static Type; 2] = [&::I16x8, &::I32x4]; &INPUTS }
,
390 definition
: Named("llvm.ppc.altivec.vsum4shs")
392 "_vec_sums" => Intrinsic
{
393 inputs
: { static INPUTS: [&'static Type; 2] = [&::I32x4, &::I32x4]; &INPUTS }
,
395 definition
: Named("llvm.ppc.altivec.vsumsws")
397 "_vec_madd" => Intrinsic
{
398 inputs
: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS }
,
400 definition
: Named("llvm.ppc.altivec.vmaddfp")
402 "_vec_nmsub" => Intrinsic
{
403 inputs
: { static INPUTS: [&'static Type; 3] = [&::F32x4, &::F32x4, &::F32x4]; &INPUTS }
,
405 definition
: Named("llvm.ppc.altivec.vnmsubfp")
407 "_vec_expte" => Intrinsic
{
408 inputs
: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS }
,
410 definition
: Named("llvm.ppc.altivec.vexptefp")
412 "_vec_floor" => Intrinsic
{
413 inputs
: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS }
,
415 definition
: Named("llvm.ppc.altivec.vrfim")
417 "_vec_ceil" => Intrinsic
{
418 inputs
: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS }
,
420 definition
: Named("llvm.ppc.altivec.vrfip")
422 "_vec_round" => Intrinsic
{
423 inputs
: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS }
,
425 definition
: Named("llvm.ppc.altivec.vrfin")
427 "_vec_trunc" => Intrinsic
{
428 inputs
: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS }
,
430 definition
: Named("llvm.ppc.altivec.vrfiz")
432 "_vec_loge" => Intrinsic
{
433 inputs
: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS }
,
435 definition
: Named("llvm.ppc.altivec.vlogefp")
437 "_vec_re" => Intrinsic
{
438 inputs
: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS }
,
440 definition
: Named("llvm.ppc.altivec.vrefp")
442 "_vec_rsqrte" => Intrinsic
{
443 inputs
: { static INPUTS: [&'static Type; 1] = [&::F32x4]; &INPUTS }
,
445 definition
: Named("llvm.ppc.altivec.vrsqrtefp")