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-2024, 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. We need to put pragma Universal_Aliasing
317 -- on these types because the common operations are implemented by
318 -- means of Unchecked_Conversion betwwen different representations.
320 --------------------------
321 -- char Core Components --
322 --------------------------
324 type LL_VUC
is new VUC_View
;
325 pragma Universal_Aliasing
(LL_VUC
);
327 type LL_VSC
is new VSC_View
;
328 pragma Universal_Aliasing
(LL_VSC
);
330 type LL_VBC
is new VBC_View
;
331 pragma Universal_Aliasing
(LL_VBC
);
333 ---------------------------
334 -- short Core Components --
335 ---------------------------
337 type LL_VUS
is new VUS_View
;
338 pragma Universal_Aliasing
(LL_VUS
);
340 type LL_VSS
is new VSS_View
;
341 pragma Universal_Aliasing
(LL_VSS
);
343 type LL_VBS
is new VBS_View
;
344 pragma Universal_Aliasing
(LL_VBS
);
346 -------------------------
347 -- int Core Components --
348 -------------------------
350 type LL_VUI
is new VUI_View
;
351 pragma Universal_Aliasing
(LL_VUI
);
353 type LL_VSI
is new VSI_View
;
354 pragma Universal_Aliasing
(LL_VSI
);
356 type LL_VBI
is new VBI_View
;
357 pragma Universal_Aliasing
(LL_VBI
);
359 ---------------------------
360 -- Float Core Components --
361 ---------------------------
363 type LL_VF
is new VF_View
;
364 pragma Universal_Aliasing
(LL_VF
);
366 ---------------------------
367 -- pixel Core Components --
368 ---------------------------
370 type LL_VP
is new VP_View
;
371 pragma Universal_Aliasing
(LL_VP
);
373 ------------------------------------
374 -- Low level functional interface --
375 ------------------------------------
377 pragma Convention_Identifier
(LL_Altivec
, C
);
379 pragma Export
(LL_Altivec
, dss
, "__builtin_altivec_dss");
380 pragma Export
(LL_Altivec
, dssall
, "__builtin_altivec_dssall");
381 pragma Export
(LL_Altivec
, dst
, "__builtin_altivec_dst");
382 pragma Export
(LL_Altivec
, dstst
, "__builtin_altivec_dstst");
383 pragma Export
(LL_Altivec
, dststt
, "__builtin_altivec_dststt");
384 pragma Export
(LL_Altivec
, dstt
, "__builtin_altivec_dstt");
385 pragma Export
(LL_Altivec
, mtvscr
, "__builtin_altivec_mtvscr");
386 pragma Export
(LL_Altivec
, mfvscr
, "__builtin_altivec_mfvscr");
387 pragma Export
(LL_Altivec
, stvebx
, "__builtin_altivec_stvebx");
388 pragma Export
(LL_Altivec
, stvehx
, "__builtin_altivec_stvehx");
389 pragma Export
(LL_Altivec
, stvewx
, "__builtin_altivec_stvewx");
390 pragma Export
(LL_Altivec
, stvx
, "__builtin_altivec_stvx");
391 pragma Export
(LL_Altivec
, stvxl
, "__builtin_altivec_stvxl");
392 pragma Export
(LL_Altivec
, lvebx
, "__builtin_altivec_lvebx");
393 pragma Export
(LL_Altivec
, lvehx
, "__builtin_altivec_lvehx");
394 pragma Export
(LL_Altivec
, lvewx
, "__builtin_altivec_lvewx");
395 pragma Export
(LL_Altivec
, lvx
, "__builtin_altivec_lvx");
396 pragma Export
(LL_Altivec
, lvxl
, "__builtin_altivec_lvxl");
397 pragma Export
(LL_Altivec
, lvsl
, "__builtin_altivec_lvsl");
398 pragma Export
(LL_Altivec
, lvsr
, "__builtin_altivec_lvsr");
399 pragma Export
(LL_Altivec
, abs_v16qi
, "__builtin_altivec_abs_v16qi");
400 pragma Export
(LL_Altivec
, abs_v8hi
, "__builtin_altivec_abs_v8hi");
401 pragma Export
(LL_Altivec
, abs_v4si
, "__builtin_altivec_abs_v4si");
402 pragma Export
(LL_Altivec
, abs_v4sf
, "__builtin_altivec_abs_v4sf");
403 pragma Export
(LL_Altivec
, abss_v16qi
, "__builtin_altivec_abss_v16qi");
404 pragma Export
(LL_Altivec
, abss_v8hi
, "__builtin_altivec_abss_v8hi");
405 pragma Export
(LL_Altivec
, abss_v4si
, "__builtin_altivec_abss_v4si");
406 pragma Export
(LL_Altivec
, vaddcuw
, "__builtin_altivec_vaddcuw");
407 pragma Export
(LL_Altivec
, vaddfp
, "__builtin_altivec_vaddfp");
408 pragma Export
(LL_Altivec
, vaddsbs
, "__builtin_altivec_vaddsbs");
409 pragma Export
(LL_Altivec
, vaddshs
, "__builtin_altivec_vaddshs");
410 pragma Export
(LL_Altivec
, vaddsws
, "__builtin_altivec_vaddsws");
411 pragma Export
(LL_Altivec
, vaddubm
, "__builtin_altivec_vaddubm");
412 pragma Export
(LL_Altivec
, vaddubs
, "__builtin_altivec_vaddubs");
413 pragma Export
(LL_Altivec
, vadduhm
, "__builtin_altivec_vadduhm");
414 pragma Export
(LL_Altivec
, vadduhs
, "__builtin_altivec_vadduhs");
415 pragma Export
(LL_Altivec
, vadduwm
, "__builtin_altivec_vadduwm");
416 pragma Export
(LL_Altivec
, vadduws
, "__builtin_altivec_vadduws");
417 pragma Export
(LL_Altivec
, vand
, "__builtin_altivec_vand");
418 pragma Export
(LL_Altivec
, vandc
, "__builtin_altivec_vandc");
419 pragma Export
(LL_Altivec
, vavgsb
, "__builtin_altivec_vavgsb");
420 pragma Export
(LL_Altivec
, vavgsh
, "__builtin_altivec_vavgsh");
421 pragma Export
(LL_Altivec
, vavgsw
, "__builtin_altivec_vavgsw");
422 pragma Export
(LL_Altivec
, vavgub
, "__builtin_altivec_vavgub");
423 pragma Export
(LL_Altivec
, vavguh
, "__builtin_altivec_vavguh");
424 pragma Export
(LL_Altivec
, vavguw
, "__builtin_altivec_vavguw");
425 pragma Export
(LL_Altivec
, vcfsx
, "__builtin_altivec_vcfsx");
426 pragma Export
(LL_Altivec
, vcfux
, "__builtin_altivec_vcfux");
427 pragma Export
(LL_Altivec
, vcmpbfp
, "__builtin_altivec_vcmpbfp");
428 pragma Export
(LL_Altivec
, vcmpeqfp
, "__builtin_altivec_vcmpeqfp");
429 pragma Export
(LL_Altivec
, vcmpequb
, "__builtin_altivec_vcmpequb");
430 pragma Export
(LL_Altivec
, vcmpequh
, "__builtin_altivec_vcmpequh");
431 pragma Export
(LL_Altivec
, vcmpequw
, "__builtin_altivec_vcmpequw");
432 pragma Export
(LL_Altivec
, vcmpgefp
, "__builtin_altivec_vcmpgefp");
433 pragma Export
(LL_Altivec
, vcmpgtfp
, "__builtin_altivec_vcmpgtfp");
434 pragma Export
(LL_Altivec
, vcmpgtsb
, "__builtin_altivec_vcmpgtsb");
435 pragma Export
(LL_Altivec
, vcmpgtsh
, "__builtin_altivec_vcmpgtsh");
436 pragma Export
(LL_Altivec
, vcmpgtsw
, "__builtin_altivec_vcmpgtsw");
437 pragma Export
(LL_Altivec
, vcmpgtub
, "__builtin_altivec_vcmpgtub");
438 pragma Export
(LL_Altivec
, vcmpgtuh
, "__builtin_altivec_vcmpgtuh");
439 pragma Export
(LL_Altivec
, vcmpgtuw
, "__builtin_altivec_vcmpgtuw");
440 pragma Export
(LL_Altivec
, vctsxs
, "__builtin_altivec_vctsxs");
441 pragma Export
(LL_Altivec
, vctuxs
, "__builtin_altivec_vctuxs");
442 pragma Export
(LL_Altivec
, vexptefp
, "__builtin_altivec_vexptefp");
443 pragma Export
(LL_Altivec
, vlogefp
, "__builtin_altivec_vlogefp");
444 pragma Export
(LL_Altivec
, vmaddfp
, "__builtin_altivec_vmaddfp");
445 pragma Export
(LL_Altivec
, vmaxfp
, "__builtin_altivec_vmaxfp");
446 pragma Export
(LL_Altivec
, vmaxsb
, "__builtin_altivec_vmaxsb");
447 pragma Export
(LL_Altivec
, vmaxsh
, "__builtin_altivec_vmaxsh");
448 pragma Export
(LL_Altivec
, vmaxsw
, "__builtin_altivec_vmaxsw");
449 pragma Export
(LL_Altivec
, vmaxub
, "__builtin_altivec_vmaxub");
450 pragma Export
(LL_Altivec
, vmaxuh
, "__builtin_altivec_vmaxuh");
451 pragma Export
(LL_Altivec
, vmaxuw
, "__builtin_altivec_vmaxuw");
452 pragma Export
(LL_Altivec
, vmhaddshs
, "__builtin_altivec_vmhaddshs");
453 pragma Export
(LL_Altivec
, vmhraddshs
, "__builtin_altivec_vmhraddshs");
454 pragma Export
(LL_Altivec
, vminfp
, "__builtin_altivec_vminfp");
455 pragma Export
(LL_Altivec
, vminsb
, "__builtin_altivec_vminsb");
456 pragma Export
(LL_Altivec
, vminsh
, "__builtin_altivec_vminsh");
457 pragma Export
(LL_Altivec
, vminsw
, "__builtin_altivec_vminsw");
458 pragma Export
(LL_Altivec
, vminub
, "__builtin_altivec_vminub");
459 pragma Export
(LL_Altivec
, vminuh
, "__builtin_altivec_vminuh");
460 pragma Export
(LL_Altivec
, vminuw
, "__builtin_altivec_vminuw");
461 pragma Export
(LL_Altivec
, vmladduhm
, "__builtin_altivec_vmladduhm");
462 pragma Export
(LL_Altivec
, vmrghb
, "__builtin_altivec_vmrghb");
463 pragma Export
(LL_Altivec
, vmrghh
, "__builtin_altivec_vmrghh");
464 pragma Export
(LL_Altivec
, vmrghw
, "__builtin_altivec_vmrghw");
465 pragma Export
(LL_Altivec
, vmrglb
, "__builtin_altivec_vmrglb");
466 pragma Export
(LL_Altivec
, vmrglh
, "__builtin_altivec_vmrglh");
467 pragma Export
(LL_Altivec
, vmrglw
, "__builtin_altivec_vmrglw");
468 pragma Export
(LL_Altivec
, vmsummbm
, "__builtin_altivec_vmsummbm");
469 pragma Export
(LL_Altivec
, vmsumshm
, "__builtin_altivec_vmsumshm");
470 pragma Export
(LL_Altivec
, vmsumshs
, "__builtin_altivec_vmsumshs");
471 pragma Export
(LL_Altivec
, vmsumubm
, "__builtin_altivec_vmsumubm");
472 pragma Export
(LL_Altivec
, vmsumuhm
, "__builtin_altivec_vmsumuhm");
473 pragma Export
(LL_Altivec
, vmsumuhs
, "__builtin_altivec_vmsumuhs");
474 pragma Export
(LL_Altivec
, vmulesb
, "__builtin_altivec_vmulesb");
475 pragma Export
(LL_Altivec
, vmulesh
, "__builtin_altivec_vmulesh");
476 pragma Export
(LL_Altivec
, vmuleub
, "__builtin_altivec_vmuleub");
477 pragma Export
(LL_Altivec
, vmuleuh
, "__builtin_altivec_vmuleuh");
478 pragma Export
(LL_Altivec
, vmulosb
, "__builtin_altivec_vmulosb");
479 pragma Export
(LL_Altivec
, vmulosh
, "__builtin_altivec_vmulosh");
480 pragma Export
(LL_Altivec
, vmuloub
, "__builtin_altivec_vmuloub");
481 pragma Export
(LL_Altivec
, vmulouh
, "__builtin_altivec_vmulouh");
482 pragma Export
(LL_Altivec
, vnmsubfp
, "__builtin_altivec_vnmsubfp");
483 pragma Export
(LL_Altivec
, vnor
, "__builtin_altivec_vnor");
484 pragma Export
(LL_Altivec
, vxor
, "__builtin_altivec_vxor");
485 pragma Export
(LL_Altivec
, vor
, "__builtin_altivec_vor");
486 pragma Export
(LL_Altivec
, vperm_4si
, "__builtin_altivec_vperm_4si");
487 pragma Export
(LL_Altivec
, vpkpx
, "__builtin_altivec_vpkpx");
488 pragma Export
(LL_Altivec
, vpkshss
, "__builtin_altivec_vpkshss");
489 pragma Export
(LL_Altivec
, vpkshus
, "__builtin_altivec_vpkshus");
490 pragma Export
(LL_Altivec
, vpkswss
, "__builtin_altivec_vpkswss");
491 pragma Export
(LL_Altivec
, vpkswus
, "__builtin_altivec_vpkswus");
492 pragma Export
(LL_Altivec
, vpkuhum
, "__builtin_altivec_vpkuhum");
493 pragma Export
(LL_Altivec
, vpkuhus
, "__builtin_altivec_vpkuhus");
494 pragma Export
(LL_Altivec
, vpkuwum
, "__builtin_altivec_vpkuwum");
495 pragma Export
(LL_Altivec
, vpkuwus
, "__builtin_altivec_vpkuwus");
496 pragma Export
(LL_Altivec
, vrefp
, "__builtin_altivec_vrefp");
497 pragma Export
(LL_Altivec
, vrfim
, "__builtin_altivec_vrfim");
498 pragma Export
(LL_Altivec
, vrfin
, "__builtin_altivec_vrfin");
499 pragma Export
(LL_Altivec
, vrfip
, "__builtin_altivec_vrfip");
500 pragma Export
(LL_Altivec
, vrfiz
, "__builtin_altivec_vrfiz");
501 pragma Export
(LL_Altivec
, vrlb
, "__builtin_altivec_vrlb");
502 pragma Export
(LL_Altivec
, vrlh
, "__builtin_altivec_vrlh");
503 pragma Export
(LL_Altivec
, vrlw
, "__builtin_altivec_vrlw");
504 pragma Export
(LL_Altivec
, vrsqrtefp
, "__builtin_altivec_vrsqrtefp");
505 pragma Export
(LL_Altivec
, vsel_4si
, "__builtin_altivec_vsel_4si");
506 pragma Export
(LL_Altivec
, vsldoi_4si
, "__builtin_altivec_vsldoi_4si");
507 pragma Export
(LL_Altivec
, vsldoi_8hi
, "__builtin_altivec_vsldoi_8hi");
508 pragma Export
(LL_Altivec
, vsldoi_16qi
, "__builtin_altivec_vsldoi_16qi");
509 pragma Export
(LL_Altivec
, vsldoi_4sf
, "__builtin_altivec_vsldoi_4sf");
510 pragma Export
(LL_Altivec
, vsl
, "__builtin_altivec_vsl");
511 pragma Export
(LL_Altivec
, vslb
, "__builtin_altivec_vslb");
512 pragma Export
(LL_Altivec
, vslh
, "__builtin_altivec_vslh");
513 pragma Export
(LL_Altivec
, vslo
, "__builtin_altivec_vslo");
514 pragma Export
(LL_Altivec
, vslw
, "__builtin_altivec_vslw");
515 pragma Export
(LL_Altivec
, vspltb
, "__builtin_altivec_vspltb");
516 pragma Export
(LL_Altivec
, vsplth
, "__builtin_altivec_vsplth");
517 pragma Export
(LL_Altivec
, vspltisb
, "__builtin_altivec_vspltisb");
518 pragma Export
(LL_Altivec
, vspltish
, "__builtin_altivec_vspltish");
519 pragma Export
(LL_Altivec
, vspltisw
, "__builtin_altivec_vspltisw");
520 pragma Export
(LL_Altivec
, vspltw
, "__builtin_altivec_vspltw");
521 pragma Export
(LL_Altivec
, vsr
, "__builtin_altivec_vsr");
522 pragma Export
(LL_Altivec
, vsrab
, "__builtin_altivec_vsrab");
523 pragma Export
(LL_Altivec
, vsrah
, "__builtin_altivec_vsrah");
524 pragma Export
(LL_Altivec
, vsraw
, "__builtin_altivec_vsraw");
525 pragma Export
(LL_Altivec
, vsrb
, "__builtin_altivec_vsrb");
526 pragma Export
(LL_Altivec
, vsrh
, "__builtin_altivec_vsrh");
527 pragma Export
(LL_Altivec
, vsro
, "__builtin_altivec_vsro");
528 pragma Export
(LL_Altivec
, vsrw
, "__builtin_altivec_vsrw");
529 pragma Export
(LL_Altivec
, vsubcuw
, "__builtin_altivec_vsubcuw");
530 pragma Export
(LL_Altivec
, vsubfp
, "__builtin_altivec_vsubfp");
531 pragma Export
(LL_Altivec
, vsubsbs
, "__builtin_altivec_vsubsbs");
532 pragma Export
(LL_Altivec
, vsubshs
, "__builtin_altivec_vsubshs");
533 pragma Export
(LL_Altivec
, vsubsws
, "__builtin_altivec_vsubsws");
534 pragma Export
(LL_Altivec
, vsububm
, "__builtin_altivec_vsububm");
535 pragma Export
(LL_Altivec
, vsububs
, "__builtin_altivec_vsububs");
536 pragma Export
(LL_Altivec
, vsubuhm
, "__builtin_altivec_vsubuhm");
537 pragma Export
(LL_Altivec
, vsubuhs
, "__builtin_altivec_vsubuhs");
538 pragma Export
(LL_Altivec
, vsubuwm
, "__builtin_altivec_vsubuwm");
539 pragma Export
(LL_Altivec
, vsubuws
, "__builtin_altivec_vsubuws");
540 pragma Export
(LL_Altivec
, vsum2sws
, "__builtin_altivec_vsum2sws");
541 pragma Export
(LL_Altivec
, vsum4sbs
, "__builtin_altivec_vsum4sbs");
542 pragma Export
(LL_Altivec
, vsum4shs
, "__builtin_altivec_vsum4shs");
543 pragma Export
(LL_Altivec
, vsum4ubs
, "__builtin_altivec_vsum4ubs");
544 pragma Export
(LL_Altivec
, vsumsws
, "__builtin_altivec_vsumsws");
545 pragma Export
(LL_Altivec
, vupkhpx
, "__builtin_altivec_vupkhpx");
546 pragma Export
(LL_Altivec
, vupkhsb
, "__builtin_altivec_vupkhsb");
547 pragma Export
(LL_Altivec
, vupkhsh
, "__builtin_altivec_vupkhsh");
548 pragma Export
(LL_Altivec
, vupklpx
, "__builtin_altivec_vupklpx");
549 pragma Export
(LL_Altivec
, vupklsb
, "__builtin_altivec_vupklsb");
550 pragma Export
(LL_Altivec
, vupklsh
, "__builtin_altivec_vupklsh");
551 pragma Export
(LL_Altivec
, vcmpbfp_p
, "__builtin_altivec_vcmpbfp_p");
552 pragma Export
(LL_Altivec
, vcmpeqfp_p
, "__builtin_altivec_vcmpeqfp_p");
553 pragma Export
(LL_Altivec
, vcmpgefp_p
, "__builtin_altivec_vcmpgefp_p");
554 pragma Export
(LL_Altivec
, vcmpgtfp_p
, "__builtin_altivec_vcmpgtfp_p");
555 pragma Export
(LL_Altivec
, vcmpequw_p
, "__builtin_altivec_vcmpequw_p");
556 pragma Export
(LL_Altivec
, vcmpgtsw_p
, "__builtin_altivec_vcmpgtsw_p");
557 pragma Export
(LL_Altivec
, vcmpgtuw_p
, "__builtin_altivec_vcmpgtuw_p");
558 pragma Export
(LL_Altivec
, vcmpgtuh_p
, "__builtin_altivec_vcmpgtuh_p");
559 pragma Export
(LL_Altivec
, vcmpgtsh_p
, "__builtin_altivec_vcmpgtsh_p");
560 pragma Export
(LL_Altivec
, vcmpequh_p
, "__builtin_altivec_vcmpequh_p");
561 pragma Export
(LL_Altivec
, vcmpequb_p
, "__builtin_altivec_vcmpequb_p");
562 pragma Export
(LL_Altivec
, vcmpgtsb_p
, "__builtin_altivec_vcmpgtsb_p");
563 pragma Export
(LL_Altivec
, vcmpgtub_p
, "__builtin_altivec_vcmpgtub_p");
565 end GNAT
.Altivec
.Low_Level_Vectors
;