]> git.lizzy.rs Git - rust.git/blob - src/librustc_platform_intrinsics/powerpc.rs
Auto merge of #43648 - RalfJung:jemalloc-debug, r=alexcrichton
[rust.git] / src / librustc_platform_intrinsics / powerpc.rs
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
16 use {Intrinsic, Type};
17 use 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)]
22 pub 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         },
340         _ => return None,
341     })
342 }