1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
5 -- G N A T . A L T I V E C . L O W _ L E V E L _ V E C T O R S --
8 -- (Soft Binding Version) --
10 -- Copyright (C) 2004-2018, Free Software Foundation, Inc. --
12 -- GNAT is free software; you can redistribute it and/or modify it under --
13 -- terms of the GNU General Public License as published by the Free Soft- --
14 -- ware Foundation; either version 3, or (at your option) any later ver- --
15 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
16 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
17 -- or FITNESS FOR A PARTICULAR PURPOSE. --
19 -- As a special exception under Section 7 of GPL version 3, you are granted --
20 -- additional permissions described in the GCC Runtime Library Exception, --
21 -- version 3.1, as published by the Free Software Foundation. --
23 -- You should have received a copy of the GNU General Public License and --
24 -- a copy of the GCC Runtime Library Exception along with this program; --
25 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
26 -- <http://www.gnu.org/licenses/>. --
28 -- GNAT was originally developed by the GNAT team at New York University. --
29 -- Extensive contributions were provided by Ada Core Technologies Inc. --
31 ------------------------------------------------------------------------------
33 -- This unit exposes the low level vector support for the Soft binding,
34 -- intended for non AltiVec capable targets. See Altivec.Design for a
35 -- description of what is expected to be exposed.
37 with GNAT
.Altivec
.Vector_Views
; use GNAT
.Altivec
.Vector_Views
;
39 package GNAT
.Altivec
.Low_Level_Vectors
is
41 ----------------------------------------
42 -- Low level vector type declarations --
43 ----------------------------------------
45 type LL_VUC
is private;
46 type LL_VSC
is private;
47 type LL_VBC
is private;
49 type LL_VUS
is private;
50 type LL_VSS
is private;
51 type LL_VBS
is private;
53 type LL_VUI
is private;
54 type LL_VSI
is private;
55 type LL_VBI
is private;
57 type LL_VF
is private;
58 type LL_VP
is private;
60 ------------------------------------
61 -- Low level functional interface --
62 ------------------------------------
64 function abs_v16qi
(A
: LL_VSC
) return LL_VSC
;
65 function abs_v8hi
(A
: LL_VSS
) return LL_VSS
;
66 function abs_v4si
(A
: LL_VSI
) return LL_VSI
;
67 function abs_v4sf
(A
: LL_VF
) return LL_VF
;
69 function abss_v16qi
(A
: LL_VSC
) return LL_VSC
;
70 function abss_v8hi
(A
: LL_VSS
) return LL_VSS
;
71 function abss_v4si
(A
: LL_VSI
) return LL_VSI
;
73 function vaddubm
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
74 function vadduhm
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
75 function vadduwm
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
76 function vaddfp
(A
: LL_VF
; B
: LL_VF
) return LL_VF
;
78 function vaddcuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
80 function vaddubs
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
81 function vaddsbs
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
82 function vadduhs
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
83 function vaddshs
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
84 function vadduws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
85 function vaddsws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
87 function vand
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
88 function vandc
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
90 function vavgub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
91 function vavgsb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
92 function vavguh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
93 function vavgsh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
94 function vavguw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
95 function vavgsw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
97 function vcmpbfp
(A
: LL_VF
; B
: LL_VF
) return LL_VSI
;
99 function vcmpequb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
100 function vcmpequh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
101 function vcmpequw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
102 function vcmpeqfp
(A
: LL_VF
; B
: LL_VF
) return LL_VSI
;
104 function vcmpgefp
(A
: LL_VF
; B
: LL_VF
) return LL_VSI
;
106 function vcmpgtub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
107 function vcmpgtsb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
108 function vcmpgtuh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
109 function vcmpgtsh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
110 function vcmpgtuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
111 function vcmpgtsw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
112 function vcmpgtfp
(A
: LL_VF
; B
: LL_VF
) return LL_VSI
;
114 function vcfux
(A
: LL_VUI
; B
: c_int
) return LL_VF
;
115 function vcfsx
(A
: LL_VSI
; B
: c_int
) return LL_VF
;
117 function vctsxs
(A
: LL_VF
; B
: c_int
) return LL_VSI
;
118 function vctuxs
(A
: LL_VF
; B
: c_int
) return LL_VUI
;
120 procedure dss
(A
: c_int
);
123 procedure dst
(A
: c_ptr
; B
: c_int
; C
: c_int
);
124 procedure dstst
(A
: c_ptr
; B
: c_int
; C
: c_int
);
125 procedure dststt
(A
: c_ptr
; B
: c_int
; C
: c_int
);
126 procedure dstt
(A
: c_ptr
; B
: c_int
; C
: c_int
);
128 function vexptefp
(A
: LL_VF
) return LL_VF
;
130 function vrfim
(A
: LL_VF
) return LL_VF
;
132 function lvx
(A
: c_long
; B
: c_ptr
) return LL_VSI
;
133 function lvebx
(A
: c_long
; B
: c_ptr
) return LL_VSC
;
134 function lvehx
(A
: c_long
; B
: c_ptr
) return LL_VSS
;
135 function lvewx
(A
: c_long
; B
: c_ptr
) return LL_VSI
;
136 function lvxl
(A
: c_long
; B
: c_ptr
) return LL_VSI
;
138 function vlogefp
(A
: LL_VF
) return LL_VF
;
140 function lvsl
(A
: c_long
; B
: c_ptr
) return LL_VSC
;
141 function lvsr
(A
: c_long
; B
: c_ptr
) return LL_VSC
;
143 function vmaddfp
(A
: LL_VF
; B
: LL_VF
; C
: LL_VF
) return LL_VF
;
145 function vmhaddshs
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSS
) return LL_VSS
;
147 function vmaxub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
148 function vmaxsb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
149 function vmaxuh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
150 function vmaxsh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
151 function vmaxuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
152 function vmaxsw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
153 function vmaxfp
(A
: LL_VF
; B
: LL_VF
) return LL_VF
;
155 function vmrghb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
156 function vmrghh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
157 function vmrghw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
158 function vmrglb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
159 function vmrglh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
160 function vmrglw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
162 function mfvscr
return LL_VSS
;
164 function vminfp
(A
: LL_VF
; B
: LL_VF
) return LL_VF
;
165 function vminsb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
166 function vminsh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
167 function vminsw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
168 function vminub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
169 function vminuh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
170 function vminuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
172 function vmladduhm
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSS
) return LL_VSS
;
174 function vmhraddshs
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSS
) return LL_VSS
;
176 function vmsumubm
(A
: LL_VSC
; B
: LL_VSC
; C
: LL_VSI
) return LL_VSI
;
177 function vmsummbm
(A
: LL_VSC
; B
: LL_VSC
; C
: LL_VSI
) return LL_VSI
;
178 function vmsumuhm
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSI
) return LL_VSI
;
179 function vmsumshm
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSI
) return LL_VSI
;
180 function vmsumuhs
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSI
) return LL_VSI
;
181 function vmsumshs
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSI
) return LL_VSI
;
183 procedure mtvscr
(A
: LL_VSI
);
185 function vmuleub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSS
;
186 function vmuleuh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSI
;
187 function vmulesb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSS
;
188 function vmulesh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSI
;
190 function vmulosb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSS
;
191 function vmulosh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSI
;
192 function vmuloub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSS
;
193 function vmulouh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSI
;
195 function vnmsubfp
(A
: LL_VF
; B
: LL_VF
; C
: LL_VF
) return LL_VF
;
197 function vxor
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
198 function vnor
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
199 function vor
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
201 function vpkuhum
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSC
;
202 function vpkuwum
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
203 function vpkpx
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
204 function vpkuhus
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSC
;
205 function vpkuwus
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
206 function vpkshss
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSC
;
207 function vpkswss
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
208 function vpkshus
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSC
;
209 function vpkswus
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
211 function vperm_4si
(A
: LL_VSI
; B
: LL_VSI
; C
: LL_VSC
) return LL_VSI
;
213 function vrefp
(A
: LL_VF
) return LL_VF
;
215 function vrlb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
216 function vrlh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
217 function vrlw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
219 function vrfin
(A
: LL_VF
) return LL_VF
;
220 function vrfip
(A
: LL_VF
) return LL_VF
;
221 function vrfiz
(A
: LL_VF
) return LL_VF
;
223 function vrsqrtefp
(A
: LL_VF
) return LL_VF
;
225 function vsel_4si
(A
: LL_VSI
; B
: LL_VSI
; C
: LL_VSI
) return LL_VSI
;
227 function vslb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
228 function vslh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
229 function vslw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
231 function vsldoi_4si
(A
: LL_VSI
; B
: LL_VSI
; C
: c_int
) return LL_VSI
;
232 function vsldoi_8hi
(A
: LL_VSS
; B
: LL_VSS
; C
: c_int
) return LL_VSS
;
233 function vsldoi_16qi
(A
: LL_VSC
; B
: LL_VSC
; C
: c_int
) return LL_VSC
;
234 function vsldoi_4sf
(A
: LL_VF
; B
: LL_VF
; C
: c_int
) return LL_VF
;
236 function vsl
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
237 function vslo
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
239 function vspltb
(A
: LL_VSC
; B
: c_int
) return LL_VSC
;
240 function vsplth
(A
: LL_VSS
; B
: c_int
) return LL_VSS
;
241 function vspltw
(A
: LL_VSI
; B
: c_int
) return LL_VSI
;
243 function vspltisb
(A
: c_int
) return LL_VSC
;
244 function vspltish
(A
: c_int
) return LL_VSS
;
245 function vspltisw
(A
: c_int
) return LL_VSI
;
247 function vsrb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
248 function vsrh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
249 function vsrw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
251 function vsrab
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
252 function vsrah
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
253 function vsraw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
255 function vsr
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
256 function vsro
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
258 procedure stvx
(A
: LL_VSI
; B
: c_int
; C
: c_ptr
);
259 procedure stvebx
(A
: LL_VSC
; B
: c_int
; C
: c_ptr
);
260 procedure stvehx
(A
: LL_VSS
; B
: c_int
; C
: c_ptr
);
261 procedure stvewx
(A
: LL_VSI
; B
: c_int
; C
: c_ptr
);
262 procedure stvxl
(A
: LL_VSI
; B
: c_int
; C
: c_ptr
);
264 function vsububm
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
265 function vsubuhm
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
266 function vsubuwm
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
267 function vsubfp
(A
: LL_VF
; B
: LL_VF
) return LL_VF
;
269 function vsubcuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
271 function vsububs
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
272 function vsubsbs
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
273 function vsubuhs
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
274 function vsubshs
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
275 function vsubuws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
276 function vsubsws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
278 function vsum4ubs
(A
: LL_VSC
; B
: LL_VSI
) return LL_VSI
;
279 function vsum4sbs
(A
: LL_VSC
; B
: LL_VSI
) return LL_VSI
;
280 function vsum4shs
(A
: LL_VSS
; B
: LL_VSI
) return LL_VSI
;
282 function vsum2sws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
283 function vsumsws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
285 function vupkhsb
(A
: LL_VSC
) return LL_VSS
;
286 function vupkhsh
(A
: LL_VSS
) return LL_VSI
;
287 function vupkhpx
(A
: LL_VSS
) return LL_VSI
;
289 function vupklsb
(A
: LL_VSC
) return LL_VSS
;
290 function vupklsh
(A
: LL_VSS
) return LL_VSI
;
291 function vupklpx
(A
: LL_VSS
) return LL_VSI
;
293 function vcmpequb_p
(A
: c_int
; B
: LL_VSC
; C
: LL_VSC
) return c_int
;
294 function vcmpequh_p
(A
: c_int
; B
: LL_VSS
; C
: LL_VSS
) return c_int
;
295 function vcmpequw_p
(A
: c_int
; B
: LL_VSI
; C
: LL_VSI
) return c_int
;
296 function vcmpeqfp_p
(A
: c_int
; B
: LL_VF
; C
: LL_VF
) return c_int
;
298 function vcmpgtub_p
(A
: c_int
; B
: LL_VSC
; C
: LL_VSC
) return c_int
;
299 function vcmpgtuh_p
(A
: c_int
; B
: LL_VSS
; C
: LL_VSS
) return c_int
;
300 function vcmpgtuw_p
(A
: c_int
; B
: LL_VSI
; C
: LL_VSI
) return c_int
;
301 function vcmpgtsb_p
(A
: c_int
; B
: LL_VSC
; C
: LL_VSC
) return c_int
;
302 function vcmpgtsh_p
(A
: c_int
; B
: LL_VSS
; C
: LL_VSS
) return c_int
;
303 function vcmpgtsw_p
(A
: c_int
; B
: LL_VSI
; C
: LL_VSI
) return c_int
;
304 function vcmpgtfp_p
(A
: c_int
; B
: LL_VF
; C
: LL_VF
) return c_int
;
306 function vcmpgefp_p
(A
: c_int
; B
: LL_VF
; C
: LL_VF
) return c_int
;
307 function vcmpbfp_p
(A
: c_int
; B
: LL_VF
; C
: LL_VF
) return c_int
;
311 ---------------------------------------
312 -- Low level vector type definitions --
313 ---------------------------------------
315 -- We simply use the natural array definitions corresponding to each
316 -- user-level vector type.
318 type LL_VUI
is new VUI_View
;
319 type LL_VSI
is new VSI_View
;
320 type LL_VBI
is new VBI_View
;
322 type LL_VUS
is new VUS_View
;
323 type LL_VSS
is new VSS_View
;
324 type LL_VBS
is new VBS_View
;
326 type LL_VUC
is new VUC_View
;
327 type LL_VSC
is new VSC_View
;
328 type LL_VBC
is new VBC_View
;
330 type LL_VF
is new VF_View
;
331 type LL_VP
is new VP_View
;
333 ------------------------------------
334 -- Low level functional interface --
335 ------------------------------------
337 pragma Convention_Identifier
(LL_Altivec
, C
);
339 pragma Export
(LL_Altivec
, dss
, "__builtin_altivec_dss");
340 pragma Export
(LL_Altivec
, dssall
, "__builtin_altivec_dssall");
341 pragma Export
(LL_Altivec
, dst
, "__builtin_altivec_dst");
342 pragma Export
(LL_Altivec
, dstst
, "__builtin_altivec_dstst");
343 pragma Export
(LL_Altivec
, dststt
, "__builtin_altivec_dststt");
344 pragma Export
(LL_Altivec
, dstt
, "__builtin_altivec_dstt");
345 pragma Export
(LL_Altivec
, mtvscr
, "__builtin_altivec_mtvscr");
346 pragma Export
(LL_Altivec
, mfvscr
, "__builtin_altivec_mfvscr");
347 pragma Export
(LL_Altivec
, stvebx
, "__builtin_altivec_stvebx");
348 pragma Export
(LL_Altivec
, stvehx
, "__builtin_altivec_stvehx");
349 pragma Export
(LL_Altivec
, stvewx
, "__builtin_altivec_stvewx");
350 pragma Export
(LL_Altivec
, stvx
, "__builtin_altivec_stvx");
351 pragma Export
(LL_Altivec
, stvxl
, "__builtin_altivec_stvxl");
352 pragma Export
(LL_Altivec
, lvebx
, "__builtin_altivec_lvebx");
353 pragma Export
(LL_Altivec
, lvehx
, "__builtin_altivec_lvehx");
354 pragma Export
(LL_Altivec
, lvewx
, "__builtin_altivec_lvewx");
355 pragma Export
(LL_Altivec
, lvx
, "__builtin_altivec_lvx");
356 pragma Export
(LL_Altivec
, lvxl
, "__builtin_altivec_lvxl");
357 pragma Export
(LL_Altivec
, lvsl
, "__builtin_altivec_lvsl");
358 pragma Export
(LL_Altivec
, lvsr
, "__builtin_altivec_lvsr");
359 pragma Export
(LL_Altivec
, abs_v16qi
, "__builtin_altivec_abs_v16qi");
360 pragma Export
(LL_Altivec
, abs_v8hi
, "__builtin_altivec_abs_v8hi");
361 pragma Export
(LL_Altivec
, abs_v4si
, "__builtin_altivec_abs_v4si");
362 pragma Export
(LL_Altivec
, abs_v4sf
, "__builtin_altivec_abs_v4sf");
363 pragma Export
(LL_Altivec
, abss_v16qi
, "__builtin_altivec_abss_v16qi");
364 pragma Export
(LL_Altivec
, abss_v8hi
, "__builtin_altivec_abss_v8hi");
365 pragma Export
(LL_Altivec
, abss_v4si
, "__builtin_altivec_abss_v4si");
366 pragma Export
(LL_Altivec
, vaddcuw
, "__builtin_altivec_vaddcuw");
367 pragma Export
(LL_Altivec
, vaddfp
, "__builtin_altivec_vaddfp");
368 pragma Export
(LL_Altivec
, vaddsbs
, "__builtin_altivec_vaddsbs");
369 pragma Export
(LL_Altivec
, vaddshs
, "__builtin_altivec_vaddshs");
370 pragma Export
(LL_Altivec
, vaddsws
, "__builtin_altivec_vaddsws");
371 pragma Export
(LL_Altivec
, vaddubm
, "__builtin_altivec_vaddubm");
372 pragma Export
(LL_Altivec
, vaddubs
, "__builtin_altivec_vaddubs");
373 pragma Export
(LL_Altivec
, vadduhm
, "__builtin_altivec_vadduhm");
374 pragma Export
(LL_Altivec
, vadduhs
, "__builtin_altivec_vadduhs");
375 pragma Export
(LL_Altivec
, vadduwm
, "__builtin_altivec_vadduwm");
376 pragma Export
(LL_Altivec
, vadduws
, "__builtin_altivec_vadduws");
377 pragma Export
(LL_Altivec
, vand
, "__builtin_altivec_vand");
378 pragma Export
(LL_Altivec
, vandc
, "__builtin_altivec_vandc");
379 pragma Export
(LL_Altivec
, vavgsb
, "__builtin_altivec_vavgsb");
380 pragma Export
(LL_Altivec
, vavgsh
, "__builtin_altivec_vavgsh");
381 pragma Export
(LL_Altivec
, vavgsw
, "__builtin_altivec_vavgsw");
382 pragma Export
(LL_Altivec
, vavgub
, "__builtin_altivec_vavgub");
383 pragma Export
(LL_Altivec
, vavguh
, "__builtin_altivec_vavguh");
384 pragma Export
(LL_Altivec
, vavguw
, "__builtin_altivec_vavguw");
385 pragma Export
(LL_Altivec
, vcfsx
, "__builtin_altivec_vcfsx");
386 pragma Export
(LL_Altivec
, vcfux
, "__builtin_altivec_vcfux");
387 pragma Export
(LL_Altivec
, vcmpbfp
, "__builtin_altivec_vcmpbfp");
388 pragma Export
(LL_Altivec
, vcmpeqfp
, "__builtin_altivec_vcmpeqfp");
389 pragma Export
(LL_Altivec
, vcmpequb
, "__builtin_altivec_vcmpequb");
390 pragma Export
(LL_Altivec
, vcmpequh
, "__builtin_altivec_vcmpequh");
391 pragma Export
(LL_Altivec
, vcmpequw
, "__builtin_altivec_vcmpequw");
392 pragma Export
(LL_Altivec
, vcmpgefp
, "__builtin_altivec_vcmpgefp");
393 pragma Export
(LL_Altivec
, vcmpgtfp
, "__builtin_altivec_vcmpgtfp");
394 pragma Export
(LL_Altivec
, vcmpgtsb
, "__builtin_altivec_vcmpgtsb");
395 pragma Export
(LL_Altivec
, vcmpgtsh
, "__builtin_altivec_vcmpgtsh");
396 pragma Export
(LL_Altivec
, vcmpgtsw
, "__builtin_altivec_vcmpgtsw");
397 pragma Export
(LL_Altivec
, vcmpgtub
, "__builtin_altivec_vcmpgtub");
398 pragma Export
(LL_Altivec
, vcmpgtuh
, "__builtin_altivec_vcmpgtuh");
399 pragma Export
(LL_Altivec
, vcmpgtuw
, "__builtin_altivec_vcmpgtuw");
400 pragma Export
(LL_Altivec
, vctsxs
, "__builtin_altivec_vctsxs");
401 pragma Export
(LL_Altivec
, vctuxs
, "__builtin_altivec_vctuxs");
402 pragma Export
(LL_Altivec
, vexptefp
, "__builtin_altivec_vexptefp");
403 pragma Export
(LL_Altivec
, vlogefp
, "__builtin_altivec_vlogefp");
404 pragma Export
(LL_Altivec
, vmaddfp
, "__builtin_altivec_vmaddfp");
405 pragma Export
(LL_Altivec
, vmaxfp
, "__builtin_altivec_vmaxfp");
406 pragma Export
(LL_Altivec
, vmaxsb
, "__builtin_altivec_vmaxsb");
407 pragma Export
(LL_Altivec
, vmaxsh
, "__builtin_altivec_vmaxsh");
408 pragma Export
(LL_Altivec
, vmaxsw
, "__builtin_altivec_vmaxsw");
409 pragma Export
(LL_Altivec
, vmaxub
, "__builtin_altivec_vmaxub");
410 pragma Export
(LL_Altivec
, vmaxuh
, "__builtin_altivec_vmaxuh");
411 pragma Export
(LL_Altivec
, vmaxuw
, "__builtin_altivec_vmaxuw");
412 pragma Export
(LL_Altivec
, vmhaddshs
, "__builtin_altivec_vmhaddshs");
413 pragma Export
(LL_Altivec
, vmhraddshs
, "__builtin_altivec_vmhraddshs");
414 pragma Export
(LL_Altivec
, vminfp
, "__builtin_altivec_vminfp");
415 pragma Export
(LL_Altivec
, vminsb
, "__builtin_altivec_vminsb");
416 pragma Export
(LL_Altivec
, vminsh
, "__builtin_altivec_vminsh");
417 pragma Export
(LL_Altivec
, vminsw
, "__builtin_altivec_vminsw");
418 pragma Export
(LL_Altivec
, vminub
, "__builtin_altivec_vminub");
419 pragma Export
(LL_Altivec
, vminuh
, "__builtin_altivec_vminuh");
420 pragma Export
(LL_Altivec
, vminuw
, "__builtin_altivec_vminuw");
421 pragma Export
(LL_Altivec
, vmladduhm
, "__builtin_altivec_vmladduhm");
422 pragma Export
(LL_Altivec
, vmrghb
, "__builtin_altivec_vmrghb");
423 pragma Export
(LL_Altivec
, vmrghh
, "__builtin_altivec_vmrghh");
424 pragma Export
(LL_Altivec
, vmrghw
, "__builtin_altivec_vmrghw");
425 pragma Export
(LL_Altivec
, vmrglb
, "__builtin_altivec_vmrglb");
426 pragma Export
(LL_Altivec
, vmrglh
, "__builtin_altivec_vmrglh");
427 pragma Export
(LL_Altivec
, vmrglw
, "__builtin_altivec_vmrglw");
428 pragma Export
(LL_Altivec
, vmsummbm
, "__builtin_altivec_vmsummbm");
429 pragma Export
(LL_Altivec
, vmsumshm
, "__builtin_altivec_vmsumshm");
430 pragma Export
(LL_Altivec
, vmsumshs
, "__builtin_altivec_vmsumshs");
431 pragma Export
(LL_Altivec
, vmsumubm
, "__builtin_altivec_vmsumubm");
432 pragma Export
(LL_Altivec
, vmsumuhm
, "__builtin_altivec_vmsumuhm");
433 pragma Export
(LL_Altivec
, vmsumuhs
, "__builtin_altivec_vmsumuhs");
434 pragma Export
(LL_Altivec
, vmulesb
, "__builtin_altivec_vmulesb");
435 pragma Export
(LL_Altivec
, vmulesh
, "__builtin_altivec_vmulesh");
436 pragma Export
(LL_Altivec
, vmuleub
, "__builtin_altivec_vmuleub");
437 pragma Export
(LL_Altivec
, vmuleuh
, "__builtin_altivec_vmuleuh");
438 pragma Export
(LL_Altivec
, vmulosb
, "__builtin_altivec_vmulosb");
439 pragma Export
(LL_Altivec
, vmulosh
, "__builtin_altivec_vmulosh");
440 pragma Export
(LL_Altivec
, vmuloub
, "__builtin_altivec_vmuloub");
441 pragma Export
(LL_Altivec
, vmulouh
, "__builtin_altivec_vmulouh");
442 pragma Export
(LL_Altivec
, vnmsubfp
, "__builtin_altivec_vnmsubfp");
443 pragma Export
(LL_Altivec
, vnor
, "__builtin_altivec_vnor");
444 pragma Export
(LL_Altivec
, vxor
, "__builtin_altivec_vxor");
445 pragma Export
(LL_Altivec
, vor
, "__builtin_altivec_vor");
446 pragma Export
(LL_Altivec
, vperm_4si
, "__builtin_altivec_vperm_4si");
447 pragma Export
(LL_Altivec
, vpkpx
, "__builtin_altivec_vpkpx");
448 pragma Export
(LL_Altivec
, vpkshss
, "__builtin_altivec_vpkshss");
449 pragma Export
(LL_Altivec
, vpkshus
, "__builtin_altivec_vpkshus");
450 pragma Export
(LL_Altivec
, vpkswss
, "__builtin_altivec_vpkswss");
451 pragma Export
(LL_Altivec
, vpkswus
, "__builtin_altivec_vpkswus");
452 pragma Export
(LL_Altivec
, vpkuhum
, "__builtin_altivec_vpkuhum");
453 pragma Export
(LL_Altivec
, vpkuhus
, "__builtin_altivec_vpkuhus");
454 pragma Export
(LL_Altivec
, vpkuwum
, "__builtin_altivec_vpkuwum");
455 pragma Export
(LL_Altivec
, vpkuwus
, "__builtin_altivec_vpkuwus");
456 pragma Export
(LL_Altivec
, vrefp
, "__builtin_altivec_vrefp");
457 pragma Export
(LL_Altivec
, vrfim
, "__builtin_altivec_vrfim");
458 pragma Export
(LL_Altivec
, vrfin
, "__builtin_altivec_vrfin");
459 pragma Export
(LL_Altivec
, vrfip
, "__builtin_altivec_vrfip");
460 pragma Export
(LL_Altivec
, vrfiz
, "__builtin_altivec_vrfiz");
461 pragma Export
(LL_Altivec
, vrlb
, "__builtin_altivec_vrlb");
462 pragma Export
(LL_Altivec
, vrlh
, "__builtin_altivec_vrlh");
463 pragma Export
(LL_Altivec
, vrlw
, "__builtin_altivec_vrlw");
464 pragma Export
(LL_Altivec
, vrsqrtefp
, "__builtin_altivec_vrsqrtefp");
465 pragma Export
(LL_Altivec
, vsel_4si
, "__builtin_altivec_vsel_4si");
466 pragma Export
(LL_Altivec
, vsldoi_4si
, "__builtin_altivec_vsldoi_4si");
467 pragma Export
(LL_Altivec
, vsldoi_8hi
, "__builtin_altivec_vsldoi_8hi");
468 pragma Export
(LL_Altivec
, vsldoi_16qi
, "__builtin_altivec_vsldoi_16qi");
469 pragma Export
(LL_Altivec
, vsldoi_4sf
, "__builtin_altivec_vsldoi_4sf");
470 pragma Export
(LL_Altivec
, vsl
, "__builtin_altivec_vsl");
471 pragma Export
(LL_Altivec
, vslb
, "__builtin_altivec_vslb");
472 pragma Export
(LL_Altivec
, vslh
, "__builtin_altivec_vslh");
473 pragma Export
(LL_Altivec
, vslo
, "__builtin_altivec_vslo");
474 pragma Export
(LL_Altivec
, vslw
, "__builtin_altivec_vslw");
475 pragma Export
(LL_Altivec
, vspltb
, "__builtin_altivec_vspltb");
476 pragma Export
(LL_Altivec
, vsplth
, "__builtin_altivec_vsplth");
477 pragma Export
(LL_Altivec
, vspltisb
, "__builtin_altivec_vspltisb");
478 pragma Export
(LL_Altivec
, vspltish
, "__builtin_altivec_vspltish");
479 pragma Export
(LL_Altivec
, vspltisw
, "__builtin_altivec_vspltisw");
480 pragma Export
(LL_Altivec
, vspltw
, "__builtin_altivec_vspltw");
481 pragma Export
(LL_Altivec
, vsr
, "__builtin_altivec_vsr");
482 pragma Export
(LL_Altivec
, vsrab
, "__builtin_altivec_vsrab");
483 pragma Export
(LL_Altivec
, vsrah
, "__builtin_altivec_vsrah");
484 pragma Export
(LL_Altivec
, vsraw
, "__builtin_altivec_vsraw");
485 pragma Export
(LL_Altivec
, vsrb
, "__builtin_altivec_vsrb");
486 pragma Export
(LL_Altivec
, vsrh
, "__builtin_altivec_vsrh");
487 pragma Export
(LL_Altivec
, vsro
, "__builtin_altivec_vsro");
488 pragma Export
(LL_Altivec
, vsrw
, "__builtin_altivec_vsrw");
489 pragma Export
(LL_Altivec
, vsubcuw
, "__builtin_altivec_vsubcuw");
490 pragma Export
(LL_Altivec
, vsubfp
, "__builtin_altivec_vsubfp");
491 pragma Export
(LL_Altivec
, vsubsbs
, "__builtin_altivec_vsubsbs");
492 pragma Export
(LL_Altivec
, vsubshs
, "__builtin_altivec_vsubshs");
493 pragma Export
(LL_Altivec
, vsubsws
, "__builtin_altivec_vsubsws");
494 pragma Export
(LL_Altivec
, vsububm
, "__builtin_altivec_vsububm");
495 pragma Export
(LL_Altivec
, vsububs
, "__builtin_altivec_vsububs");
496 pragma Export
(LL_Altivec
, vsubuhm
, "__builtin_altivec_vsubuhm");
497 pragma Export
(LL_Altivec
, vsubuhs
, "__builtin_altivec_vsubuhs");
498 pragma Export
(LL_Altivec
, vsubuwm
, "__builtin_altivec_vsubuwm");
499 pragma Export
(LL_Altivec
, vsubuws
, "__builtin_altivec_vsubuws");
500 pragma Export
(LL_Altivec
, vsum2sws
, "__builtin_altivec_vsum2sws");
501 pragma Export
(LL_Altivec
, vsum4sbs
, "__builtin_altivec_vsum4sbs");
502 pragma Export
(LL_Altivec
, vsum4shs
, "__builtin_altivec_vsum4shs");
503 pragma Export
(LL_Altivec
, vsum4ubs
, "__builtin_altivec_vsum4ubs");
504 pragma Export
(LL_Altivec
, vsumsws
, "__builtin_altivec_vsumsws");
505 pragma Export
(LL_Altivec
, vupkhpx
, "__builtin_altivec_vupkhpx");
506 pragma Export
(LL_Altivec
, vupkhsb
, "__builtin_altivec_vupkhsb");
507 pragma Export
(LL_Altivec
, vupkhsh
, "__builtin_altivec_vupkhsh");
508 pragma Export
(LL_Altivec
, vupklpx
, "__builtin_altivec_vupklpx");
509 pragma Export
(LL_Altivec
, vupklsb
, "__builtin_altivec_vupklsb");
510 pragma Export
(LL_Altivec
, vupklsh
, "__builtin_altivec_vupklsh");
511 pragma Export
(LL_Altivec
, vcmpbfp_p
, "__builtin_altivec_vcmpbfp_p");
512 pragma Export
(LL_Altivec
, vcmpeqfp_p
, "__builtin_altivec_vcmpeqfp_p");
513 pragma Export
(LL_Altivec
, vcmpgefp_p
, "__builtin_altivec_vcmpgefp_p");
514 pragma Export
(LL_Altivec
, vcmpgtfp_p
, "__builtin_altivec_vcmpgtfp_p");
515 pragma Export
(LL_Altivec
, vcmpequw_p
, "__builtin_altivec_vcmpequw_p");
516 pragma Export
(LL_Altivec
, vcmpgtsw_p
, "__builtin_altivec_vcmpgtsw_p");
517 pragma Export
(LL_Altivec
, vcmpgtuw_p
, "__builtin_altivec_vcmpgtuw_p");
518 pragma Export
(LL_Altivec
, vcmpgtuh_p
, "__builtin_altivec_vcmpgtuh_p");
519 pragma Export
(LL_Altivec
, vcmpgtsh_p
, "__builtin_altivec_vcmpgtsh_p");
520 pragma Export
(LL_Altivec
, vcmpequh_p
, "__builtin_altivec_vcmpequh_p");
521 pragma Export
(LL_Altivec
, vcmpequb_p
, "__builtin_altivec_vcmpequb_p");
522 pragma Export
(LL_Altivec
, vcmpgtsb_p
, "__builtin_altivec_vcmpgtsb_p");
523 pragma Export
(LL_Altivec
, vcmpgtub_p
, "__builtin_altivec_vcmpgtub_p");
525 end GNAT
.Altivec
.Low_Level_Vectors
;