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-2005, 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 2, 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. See the GNU General Public License --
18 -- for more details. You should have received a copy of the GNU General --
19 -- Public License distributed with GNAT; see file COPYING. If not, write --
20 -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
21 -- MA 02111-1307, USA. --
23 -- As a special exception, if other files instantiate generics from this --
24 -- unit, or you link this unit with other files to produce an executable, --
25 -- this unit does not by itself cause the resulting executable to be --
26 -- covered by the GNU General Public License. This exception does not --
27 -- however invalidate any other reasons why the executable file might be --
28 -- covered by the GNU Public License. --
30 -- GNAT was originally developed by the GNAT team at New York University. --
31 -- Extensive contributions were provided by Ada Core Technologies Inc. --
33 ------------------------------------------------------------------------------
35 -- This unit exposes the low level vector support for the Soft binding,
36 -- intended for non AltiVec capable targets. See Altivec.Design for a
37 -- description of what is expected to be exposed.
39 with GNAT
.Altivec
.Vector_Views
; use GNAT
.Altivec
.Vector_Views
;
41 package GNAT
.Altivec
.Low_Level_Vectors
is
43 ----------------------------------------
44 -- Low level vector type declarations --
45 ----------------------------------------
47 type LL_VUC
is private;
48 type LL_VSC
is private;
49 type LL_VBC
is private;
51 type LL_VUS
is private;
52 type LL_VSS
is private;
53 type LL_VBS
is private;
55 type LL_VUI
is private;
56 type LL_VSI
is private;
57 type LL_VBI
is private;
59 type LL_VF
is private;
60 type LL_VP
is private;
62 ------------------------------------
63 -- Low level functional interface --
64 ------------------------------------
66 function abs_v16qi
(A
: LL_VSC
) return LL_VSC
;
67 function abs_v8hi
(A
: LL_VSS
) return LL_VSS
;
68 function abs_v4si
(A
: LL_VSI
) return LL_VSI
;
69 function abs_v4sf
(A
: LL_VF
) return LL_VF
;
71 function abss_v16qi
(A
: LL_VSC
) return LL_VSC
;
72 function abss_v8hi
(A
: LL_VSS
) return LL_VSS
;
73 function abss_v4si
(A
: LL_VSI
) return LL_VSI
;
75 function vaddubm
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
76 function vadduhm
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
77 function vadduwm
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
78 function vaddfp
(A
: LL_VF
; B
: LL_VF
) return LL_VF
;
80 function vaddcuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
82 function vaddubs
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
83 function vaddsbs
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
84 function vadduhs
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
85 function vaddshs
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
86 function vadduws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
87 function vaddsws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
89 function vand
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
90 function vandc
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
92 function vavgub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
93 function vavgsb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
94 function vavguh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
95 function vavgsh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
96 function vavguw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
97 function vavgsw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
99 function vcmpbfp
(A
: LL_VF
; B
: LL_VF
) return LL_VSI
;
101 function vcmpequb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
102 function vcmpequh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
103 function vcmpequw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
104 function vcmpeqfp
(A
: LL_VF
; B
: LL_VF
) return LL_VSI
;
106 function vcmpgefp
(A
: LL_VF
; B
: LL_VF
) return LL_VSI
;
108 function vcmpgtub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
109 function vcmpgtsb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
110 function vcmpgtuh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
111 function vcmpgtsh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
112 function vcmpgtuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
113 function vcmpgtsw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
114 function vcmpgtfp
(A
: LL_VF
; B
: LL_VF
) return LL_VSI
;
116 function vcfux
(A
: LL_VSI
; B
: c_int
) return LL_VF
;
117 function vcfsx
(A
: LL_VSI
; B
: c_int
) return LL_VF
;
119 function vctsxs
(A
: LL_VF
; B
: c_int
) return LL_VSI
;
120 function vctuxs
(A
: LL_VF
; B
: c_int
) return LL_VSI
;
122 procedure dss
(A
: c_int
);
125 procedure dst
(A
: c_ptr
; B
: c_int
; C
: c_int
);
126 procedure dstst
(A
: c_ptr
; B
: c_int
; C
: c_int
);
127 procedure dststt
(A
: c_ptr
; B
: c_int
; C
: c_int
);
128 procedure dstt
(A
: c_ptr
; B
: c_int
; C
: c_int
);
130 function vexptefp
(A
: LL_VF
) return LL_VF
;
132 function vrfim
(A
: LL_VF
) return LL_VF
;
134 function lvx
(A
: c_long
; B
: c_ptr
) return LL_VSI
;
135 function lvebx
(A
: c_long
; B
: c_ptr
) return LL_VSC
;
136 function lvehx
(A
: c_long
; B
: c_ptr
) return LL_VSS
;
137 function lvewx
(A
: c_long
; B
: c_ptr
) return LL_VSI
;
138 function lvxl
(A
: c_long
; B
: c_ptr
) return LL_VSI
;
140 function vlogefp
(A
: LL_VF
) return LL_VF
;
142 function lvsl
(A
: c_long
; B
: c_ptr
) return LL_VSC
;
143 function lvsr
(A
: c_long
; B
: c_ptr
) return LL_VSC
;
145 function vmaddfp
(A
: LL_VF
; B
: LL_VF
; C
: LL_VF
) return LL_VF
;
147 function vmhaddshs
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSS
) return LL_VSS
;
149 function vmaxub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
150 function vmaxsb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
151 function vmaxuh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
152 function vmaxsh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
153 function vmaxuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
154 function vmaxsw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
155 function vmaxfp
(A
: LL_VF
; B
: LL_VF
) return LL_VF
;
157 function vmrghb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
158 function vmrghh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
159 function vmrghw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
160 function vmrglb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
161 function vmrglh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
162 function vmrglw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
164 function mfvscr
return LL_VSS
;
166 function vminfp
(A
: LL_VF
; B
: LL_VF
) return LL_VF
;
167 function vminsb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
168 function vminsh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
169 function vminsw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
170 function vminub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
171 function vminuh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
172 function vminuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
174 function vmladduhm
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSS
) return LL_VSS
;
176 function vmhraddshs
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSS
) return LL_VSS
;
178 function vmsumubm
(A
: LL_VSC
; B
: LL_VSC
; C
: LL_VSI
) return LL_VSI
;
179 function vmsummbm
(A
: LL_VSC
; B
: LL_VSC
; C
: LL_VSI
) return LL_VSI
;
180 function vmsumuhm
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSI
) return LL_VSI
;
181 function vmsumshm
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSI
) return LL_VSI
;
182 function vmsumuhs
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSI
) return LL_VSI
;
183 function vmsumshs
(A
: LL_VSS
; B
: LL_VSS
; C
: LL_VSI
) return LL_VSI
;
185 procedure mtvscr
(A
: LL_VSI
);
187 function vmuleub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSS
;
188 function vmuleuh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSI
;
189 function vmulesb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSS
;
190 function vmulesh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSI
;
192 function vmulosb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSS
;
193 function vmulosh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSI
;
194 function vmuloub
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSS
;
195 function vmulouh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSI
;
197 function vnmsubfp
(A
: LL_VF
; B
: LL_VF
; C
: LL_VF
) return LL_VF
;
199 function vxor
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
200 function vnor
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
201 function vor
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
203 function vpkuhum
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSC
;
204 function vpkuwum
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
205 function vpkpx
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
206 function vpkuhus
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSC
;
207 function vpkuwus
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
208 function vpkshss
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSC
;
209 function vpkswss
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
210 function vpkshus
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSC
;
211 function vpkswus
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSS
;
213 function vperm_4si
(A
: LL_VSI
; B
: LL_VSI
; C
: LL_VSC
) return LL_VSI
;
215 function vrefp
(A
: LL_VF
) return LL_VF
;
217 function vrlb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
218 function vrlh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
219 function vrlw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
221 function vrfin
(A
: LL_VF
) return LL_VF
;
222 function vrfip
(A
: LL_VF
) return LL_VF
;
223 function vrfiz
(A
: LL_VF
) return LL_VF
;
225 function vrsqrtefp
(A
: LL_VF
) return LL_VF
;
227 function vsel_4si
(A
: LL_VSI
; B
: LL_VSI
; C
: LL_VSI
) return LL_VSI
;
229 function vslb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
230 function vslh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
231 function vslw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
233 function vsldoi_4si
(A
: LL_VSI
; B
: LL_VSI
; C
: c_int
) return LL_VSI
;
234 function vsldoi_8hi
(A
: LL_VSS
; B
: LL_VSS
; C
: c_int
) return LL_VSS
;
235 function vsldoi_16qi
(A
: LL_VSC
; B
: LL_VSC
; C
: c_int
) return LL_VSC
;
236 function vsldoi_4sf
(A
: LL_VF
; B
: LL_VF
; C
: c_int
) return LL_VF
;
238 function vsl
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
239 function vslo
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
241 function vspltb
(A
: LL_VSC
; B
: c_int
) return LL_VSC
;
242 function vsplth
(A
: LL_VSS
; B
: c_int
) return LL_VSS
;
243 function vspltw
(A
: LL_VSI
; B
: c_int
) return LL_VSI
;
245 function vspltisb
(A
: c_int
) return LL_VSC
;
246 function vspltish
(A
: c_int
) return LL_VSS
;
247 function vspltisw
(A
: c_int
) return LL_VSI
;
249 function vsrb
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
250 function vsrh
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
251 function vsrw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
253 function vsrab
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
254 function vsrah
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
255 function vsraw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
257 function vsr
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
258 function vsro
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
260 procedure stvx
(A
: LL_VSI
; B
: c_int
; C
: c_ptr
);
261 procedure stvebx
(A
: LL_VSC
; B
: c_int
; C
: c_ptr
);
262 procedure stvehx
(A
: LL_VSS
; B
: c_int
; C
: c_ptr
);
263 procedure stvewx
(A
: LL_VSI
; B
: c_int
; C
: c_ptr
);
264 procedure stvxl
(A
: LL_VSI
; B
: c_int
; C
: c_ptr
);
266 function vsububm
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
267 function vsubuhm
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
268 function vsubuwm
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
269 function vsubfp
(A
: LL_VF
; B
: LL_VF
) return LL_VF
;
271 function vsubcuw
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
273 function vsububs
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
274 function vsubsbs
(A
: LL_VSC
; B
: LL_VSC
) return LL_VSC
;
275 function vsubuhs
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
276 function vsubshs
(A
: LL_VSS
; B
: LL_VSS
) return LL_VSS
;
277 function vsubuws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
278 function vsubsws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
280 function vsum4ubs
(A
: LL_VSC
; B
: LL_VSI
) return LL_VSI
;
281 function vsum4sbs
(A
: LL_VSC
; B
: LL_VSI
) return LL_VSI
;
282 function vsum4shs
(A
: LL_VSS
; B
: LL_VSI
) return LL_VSI
;
284 function vsum2sws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
285 function vsumsws
(A
: LL_VSI
; B
: LL_VSI
) return LL_VSI
;
287 function vupkhsb
(A
: LL_VSC
) return LL_VSS
;
288 function vupkhsh
(A
: LL_VSS
) return LL_VSI
;
289 function vupkhpx
(A
: LL_VSS
) return LL_VSI
;
291 function vupklsb
(A
: LL_VSC
) return LL_VSS
;
292 function vupklsh
(A
: LL_VSS
) return LL_VSI
;
293 function vupklpx
(A
: LL_VSS
) return LL_VSI
;
295 function vcmpequb_p
(A
: c_int
; B
: LL_VSC
; C
: LL_VSC
) return c_int
;
296 function vcmpequh_p
(A
: c_int
; B
: LL_VSS
; C
: LL_VSS
) return c_int
;
297 function vcmpequw_p
(A
: c_int
; B
: LL_VSI
; C
: LL_VSI
) return c_int
;
298 function vcmpeqfp_p
(A
: c_int
; B
: LL_VF
; C
: LL_VF
) return c_int
;
300 function vcmpgtub_p
(A
: c_int
; B
: LL_VSC
; C
: LL_VSC
) return c_int
;
301 function vcmpgtuh_p
(A
: c_int
; B
: LL_VSS
; C
: LL_VSS
) return c_int
;
302 function vcmpgtuw_p
(A
: c_int
; B
: LL_VSI
; C
: LL_VSI
) return c_int
;
303 function vcmpgtsb_p
(A
: c_int
; B
: LL_VSC
; C
: LL_VSC
) return c_int
;
304 function vcmpgtsh_p
(A
: c_int
; B
: LL_VSS
; C
: LL_VSS
) return c_int
;
305 function vcmpgtsw_p
(A
: c_int
; B
: LL_VSI
; C
: LL_VSI
) return c_int
;
306 function vcmpgtfp_p
(A
: c_int
; B
: LL_VF
; C
: LL_VF
) return c_int
;
308 function vcmpgefp_p
(A
: c_int
; B
: LL_VF
; C
: LL_VF
) return c_int
;
309 function vcmpbfp_p
(A
: c_int
; B
: LL_VF
; C
: LL_VF
) return c_int
;
313 ---------------------------------------
314 -- Low level vector type definitions --
315 ---------------------------------------
317 -- We simply use the natural array definitions corresponding to each
318 -- user-level vector type.
320 type LL_VUI
is new VUC_View
;
321 type LL_VSI
is new VUC_View
;
323 type LL_VUS
is new VUC_View
;
324 type LL_VSS
is new VUC_View
;
326 type LL_VUC
is new VUC_View
;
327 type LL_VSC
is new VUC_View
;
329 type LL_VF
is new VUC_View
;
331 type LL_VBC
is new VUC_View
;
332 type LL_VBS
is new VUC_View
;
333 type LL_VBI
is new VUC_View
;
334 type LL_VP
is new VUC_View
;
336 ------------------------------------
337 -- Low level functional interface --
338 ------------------------------------
340 pragma Convention_Identifier
(LL_Altivec
, C
);
342 pragma Export
(LL_Altivec
, dss
, "__builtin_altivec_dss");
343 pragma Export
(LL_Altivec
, dssall
, "__builtin_altivec_dssall");
344 pragma Export
(LL_Altivec
, dst
, "__builtin_altivec_dst");
345 pragma Export
(LL_Altivec
, dstst
, "__builtin_altivec_dstst");
346 pragma Export
(LL_Altivec
, dststt
, "__builtin_altivec_dststt");
347 pragma Export
(LL_Altivec
, dstt
, "__builtin_altivec_dstt");
348 pragma Export
(LL_Altivec
, mtvscr
, "__builtin_altivec_mtvscr");
349 pragma Export
(LL_Altivec
, mfvscr
, "__builtin_altivec_mfvscr");
350 pragma Export
(LL_Altivec
, stvebx
, "__builtin_altivec_stvebx");
351 pragma Export
(LL_Altivec
, stvehx
, "__builtin_altivec_stvehx");
352 pragma Export
(LL_Altivec
, stvewx
, "__builtin_altivec_stvewx");
353 pragma Export
(LL_Altivec
, stvx
, "__builtin_altivec_stvx");
354 pragma Export
(LL_Altivec
, stvxl
, "__builtin_altivec_stvxl");
355 pragma Export
(LL_Altivec
, lvebx
, "__builtin_altivec_lvebx");
356 pragma Export
(LL_Altivec
, lvehx
, "__builtin_altivec_lvehx");
357 pragma Export
(LL_Altivec
, lvewx
, "__builtin_altivec_lvewx");
358 pragma Export
(LL_Altivec
, lvx
, "__builtin_altivec_lvx");
359 pragma Export
(LL_Altivec
, lvxl
, "__builtin_altivec_lvxl");
360 pragma Export
(LL_Altivec
, lvsl
, "__builtin_altivec_lvsl");
361 pragma Export
(LL_Altivec
, lvsr
, "__builtin_altivec_lvsr");
362 pragma Export
(LL_Altivec
, abs_v16qi
, "__builtin_altivec_abs_v16qi");
363 pragma Export
(LL_Altivec
, abs_v8hi
, "__builtin_altivec_abs_v8hi");
364 pragma Export
(LL_Altivec
, abs_v4si
, "__builtin_altivec_abs_v4si");
365 pragma Export
(LL_Altivec
, abs_v4sf
, "__builtin_altivec_abs_v4sf");
366 pragma Export
(LL_Altivec
, abss_v16qi
, "__builtin_altivec_abss_v16qi");
367 pragma Export
(LL_Altivec
, abss_v8hi
, "__builtin_altivec_abss_v8hi");
368 pragma Export
(LL_Altivec
, abss_v4si
, "__builtin_altivec_abss_v4si");
369 pragma Export
(LL_Altivec
, vaddcuw
, "__builtin_altivec_vaddcuw");
370 pragma Export
(LL_Altivec
, vaddfp
, "__builtin_altivec_vaddfp");
371 pragma Export
(LL_Altivec
, vaddsbs
, "__builtin_altivec_vaddsbs");
372 pragma Export
(LL_Altivec
, vaddshs
, "__builtin_altivec_vaddshs");
373 pragma Export
(LL_Altivec
, vaddsws
, "__builtin_altivec_vaddsws");
374 pragma Export
(LL_Altivec
, vaddubm
, "__builtin_altivec_vaddubm");
375 pragma Export
(LL_Altivec
, vaddubs
, "__builtin_altivec_vaddubs");
376 pragma Export
(LL_Altivec
, vadduhm
, "__builtin_altivec_vadduhm");
377 pragma Export
(LL_Altivec
, vadduhs
, "__builtin_altivec_vadduhs");
378 pragma Export
(LL_Altivec
, vadduwm
, "__builtin_altivec_vadduwm");
379 pragma Export
(LL_Altivec
, vadduws
, "__builtin_altivec_vadduws");
380 pragma Export
(LL_Altivec
, vand
, "__builtin_altivec_vand");
381 pragma Export
(LL_Altivec
, vandc
, "__builtin_altivec_vandc");
382 pragma Export
(LL_Altivec
, vavgsb
, "__builtin_altivec_vavgsb");
383 pragma Export
(LL_Altivec
, vavgsh
, "__builtin_altivec_vavgsh");
384 pragma Export
(LL_Altivec
, vavgsw
, "__builtin_altivec_vavgsw");
385 pragma Export
(LL_Altivec
, vavgub
, "__builtin_altivec_vavgub");
386 pragma Export
(LL_Altivec
, vavguh
, "__builtin_altivec_vavguh");
387 pragma Export
(LL_Altivec
, vavguw
, "__builtin_altivec_vavguw");
388 pragma Export
(LL_Altivec
, vcfsx
, "__builtin_altivec_vcfsx");
389 pragma Export
(LL_Altivec
, vcfux
, "__builtin_altivec_vcfux");
390 pragma Export
(LL_Altivec
, vcmpbfp
, "__builtin_altivec_vcmpbfp");
391 pragma Export
(LL_Altivec
, vcmpeqfp
, "__builtin_altivec_vcmpeqfp");
392 pragma Export
(LL_Altivec
, vcmpequb
, "__builtin_altivec_vcmpequb");
393 pragma Export
(LL_Altivec
, vcmpequh
, "__builtin_altivec_vcmpequh");
394 pragma Export
(LL_Altivec
, vcmpequw
, "__builtin_altivec_vcmpequw");
395 pragma Export
(LL_Altivec
, vcmpgefp
, "__builtin_altivec_vcmpgefp");
396 pragma Export
(LL_Altivec
, vcmpgtfp
, "__builtin_altivec_vcmpgtfp");
397 pragma Export
(LL_Altivec
, vcmpgtsb
, "__builtin_altivec_vcmpgtsb");
398 pragma Export
(LL_Altivec
, vcmpgtsh
, "__builtin_altivec_vcmpgtsh");
399 pragma Export
(LL_Altivec
, vcmpgtsw
, "__builtin_altivec_vcmpgtsw");
400 pragma Export
(LL_Altivec
, vcmpgtub
, "__builtin_altivec_vcmpgtub");
401 pragma Export
(LL_Altivec
, vcmpgtuh
, "__builtin_altivec_vcmpgtuh");
402 pragma Export
(LL_Altivec
, vcmpgtuw
, "__builtin_altivec_vcmpgtuw");
403 pragma Export
(LL_Altivec
, vctsxs
, "__builtin_altivec_vctsxs");
404 pragma Export
(LL_Altivec
, vctuxs
, "__builtin_altivec_vctuxs");
405 pragma Export
(LL_Altivec
, vexptefp
, "__builtin_altivec_vexptefp");
406 pragma Export
(LL_Altivec
, vlogefp
, "__builtin_altivec_vlogefp");
407 pragma Export
(LL_Altivec
, vmaddfp
, "__builtin_altivec_vmaddfp");
408 pragma Export
(LL_Altivec
, vmaxfp
, "__builtin_altivec_vmaxfp");
409 pragma Export
(LL_Altivec
, vmaxsb
, "__builtin_altivec_vmaxsb");
410 pragma Export
(LL_Altivec
, vmaxsh
, "__builtin_altivec_vmaxsh");
411 pragma Export
(LL_Altivec
, vmaxsw
, "__builtin_altivec_vmaxsw");
412 pragma Export
(LL_Altivec
, vmaxub
, "__builtin_altivec_vmaxub");
413 pragma Export
(LL_Altivec
, vmaxuh
, "__builtin_altivec_vmaxuh");
414 pragma Export
(LL_Altivec
, vmaxuw
, "__builtin_altivec_vmaxuw");
415 pragma Export
(LL_Altivec
, vmhaddshs
, "__builtin_altivec_vmhaddshs");
416 pragma Export
(LL_Altivec
, vmhraddshs
, "__builtin_altivec_vmhraddshs");
417 pragma Export
(LL_Altivec
, vminfp
, "__builtin_altivec_vminfp");
418 pragma Export
(LL_Altivec
, vminsb
, "__builtin_altivec_vminsb");
419 pragma Export
(LL_Altivec
, vminsh
, "__builtin_altivec_vminsh");
420 pragma Export
(LL_Altivec
, vminsw
, "__builtin_altivec_vminsw");
421 pragma Export
(LL_Altivec
, vminub
, "__builtin_altivec_vminub");
422 pragma Export
(LL_Altivec
, vminuh
, "__builtin_altivec_vminuh");
423 pragma Export
(LL_Altivec
, vminuw
, "__builtin_altivec_vminuw");
424 pragma Export
(LL_Altivec
, vmladduhm
, "__builtin_altivec_vmladduhm");
425 pragma Export
(LL_Altivec
, vmrghb
, "__builtin_altivec_vmrghb");
426 pragma Export
(LL_Altivec
, vmrghh
, "__builtin_altivec_vmrghh");
427 pragma Export
(LL_Altivec
, vmrghw
, "__builtin_altivec_vmrghw");
428 pragma Export
(LL_Altivec
, vmrglb
, "__builtin_altivec_vmrglb");
429 pragma Export
(LL_Altivec
, vmrglh
, "__builtin_altivec_vmrglh");
430 pragma Export
(LL_Altivec
, vmrglw
, "__builtin_altivec_vmrglw");
431 pragma Export
(LL_Altivec
, vmsummbm
, "__builtin_altivec_vmsummbm");
432 pragma Export
(LL_Altivec
, vmsumshm
, "__builtin_altivec_vmsumshm");
433 pragma Export
(LL_Altivec
, vmsumshs
, "__builtin_altivec_vmsumshs");
434 pragma Export
(LL_Altivec
, vmsumubm
, "__builtin_altivec_vmsumubm");
435 pragma Export
(LL_Altivec
, vmsumuhm
, "__builtin_altivec_vmsumuhm");
436 pragma Export
(LL_Altivec
, vmsumuhs
, "__builtin_altivec_vmsumuhs");
437 pragma Export
(LL_Altivec
, vmulesb
, "__builtin_altivec_vmulesb");
438 pragma Export
(LL_Altivec
, vmulesh
, "__builtin_altivec_vmulesh");
439 pragma Export
(LL_Altivec
, vmuleub
, "__builtin_altivec_vmuleub");
440 pragma Export
(LL_Altivec
, vmuleuh
, "__builtin_altivec_vmuleuh");
441 pragma Export
(LL_Altivec
, vmulosb
, "__builtin_altivec_vmulosb");
442 pragma Export
(LL_Altivec
, vmulosh
, "__builtin_altivec_vmulosh");
443 pragma Export
(LL_Altivec
, vmuloub
, "__builtin_altivec_vmuloub");
444 pragma Export
(LL_Altivec
, vmulouh
, "__builtin_altivec_vmulouh");
445 pragma Export
(LL_Altivec
, vnmsubfp
, "__builtin_altivec_vnmsubfp");
446 pragma Export
(LL_Altivec
, vnor
, "__builtin_altivec_vnor");
447 pragma Export
(LL_Altivec
, vxor
, "__builtin_altivec_vxor");
448 pragma Export
(LL_Altivec
, vor
, "__builtin_altivec_vor");
449 pragma Export
(LL_Altivec
, vperm_4si
, "__builtin_altivec_vperm_4si");
450 pragma Export
(LL_Altivec
, vpkpx
, "__builtin_altivec_vpkpx");
451 pragma Export
(LL_Altivec
, vpkshss
, "__builtin_altivec_vpkshss");
452 pragma Export
(LL_Altivec
, vpkshus
, "__builtin_altivec_vpkshus");
453 pragma Export
(LL_Altivec
, vpkswss
, "__builtin_altivec_vpkswss");
454 pragma Export
(LL_Altivec
, vpkswus
, "__builtin_altivec_vpkswus");
455 pragma Export
(LL_Altivec
, vpkuhum
, "__builtin_altivec_vpkuhum");
456 pragma Export
(LL_Altivec
, vpkuhus
, "__builtin_altivec_vpkuhus");
457 pragma Export
(LL_Altivec
, vpkuwum
, "__builtin_altivec_vpkuwum");
458 pragma Export
(LL_Altivec
, vpkuwus
, "__builtin_altivec_vpkuwus");
459 pragma Export
(LL_Altivec
, vrefp
, "__builtin_altivec_vrefp");
460 pragma Export
(LL_Altivec
, vrfim
, "__builtin_altivec_vrfim");
461 pragma Export
(LL_Altivec
, vrfin
, "__builtin_altivec_vrfin");
462 pragma Export
(LL_Altivec
, vrfip
, "__builtin_altivec_vrfip");
463 pragma Export
(LL_Altivec
, vrfiz
, "__builtin_altivec_vrfiz");
464 pragma Export
(LL_Altivec
, vrlb
, "__builtin_altivec_vrlb");
465 pragma Export
(LL_Altivec
, vrlh
, "__builtin_altivec_vrlh");
466 pragma Export
(LL_Altivec
, vrlw
, "__builtin_altivec_vrlw");
467 pragma Export
(LL_Altivec
, vrsqrtefp
, "__builtin_altivec_vrsqrtefp");
468 pragma Export
(LL_Altivec
, vsel_4si
, "__builtin_altivec_vsel_4si");
469 pragma Export
(LL_Altivec
, vsldoi_4si
, "__builtin_altivec_vsldoi_4si");
470 pragma Export
(LL_Altivec
, vsldoi_8hi
, "__builtin_altivec_vsldoi_8hi");
471 pragma Export
(LL_Altivec
, vsldoi_16qi
, "__builtin_altivec_vsldoi_16qi");
472 pragma Export
(LL_Altivec
, vsldoi_4sf
, "__builtin_altivec_vsldoi_4sf");
473 pragma Export
(LL_Altivec
, vsl
, "__builtin_altivec_vsl");
474 pragma Export
(LL_Altivec
, vslb
, "__builtin_altivec_vslb");
475 pragma Export
(LL_Altivec
, vslh
, "__builtin_altivec_vslh");
476 pragma Export
(LL_Altivec
, vslo
, "__builtin_altivec_vslo");
477 pragma Export
(LL_Altivec
, vslw
, "__builtin_altivec_vslw");
478 pragma Export
(LL_Altivec
, vspltb
, "__builtin_altivec_vspltb");
479 pragma Export
(LL_Altivec
, vsplth
, "__builtin_altivec_vsplth");
480 pragma Export
(LL_Altivec
, vspltisb
, "__builtin_altivec_vspltisb");
481 pragma Export
(LL_Altivec
, vspltish
, "__builtin_altivec_vspltish");
482 pragma Export
(LL_Altivec
, vspltisw
, "__builtin_altivec_vspltisw");
483 pragma Export
(LL_Altivec
, vspltw
, "__builtin_altivec_vspltw");
484 pragma Export
(LL_Altivec
, vsr
, "__builtin_altivec_vsr");
485 pragma Export
(LL_Altivec
, vsrab
, "__builtin_altivec_vsrab");
486 pragma Export
(LL_Altivec
, vsrah
, "__builtin_altivec_vsrah");
487 pragma Export
(LL_Altivec
, vsraw
, "__builtin_altivec_vsraw");
488 pragma Export
(LL_Altivec
, vsrb
, "__builtin_altivec_vsrb");
489 pragma Export
(LL_Altivec
, vsrh
, "__builtin_altivec_vsrh");
490 pragma Export
(LL_Altivec
, vsro
, "__builtin_altivec_vsro");
491 pragma Export
(LL_Altivec
, vsrw
, "__builtin_altivec_vsrw");
492 pragma Export
(LL_Altivec
, vsubcuw
, "__builtin_altivec_vsubcuw");
493 pragma Export
(LL_Altivec
, vsubfp
, "__builtin_altivec_vsubfp");
494 pragma Export
(LL_Altivec
, vsubsbs
, "__builtin_altivec_vsubsbs");
495 pragma Export
(LL_Altivec
, vsubshs
, "__builtin_altivec_vsubshs");
496 pragma Export
(LL_Altivec
, vsubsws
, "__builtin_altivec_vsubsws");
497 pragma Export
(LL_Altivec
, vsububm
, "__builtin_altivec_vsububm");
498 pragma Export
(LL_Altivec
, vsububs
, "__builtin_altivec_vsububs");
499 pragma Export
(LL_Altivec
, vsubuhm
, "__builtin_altivec_vsubuhm");
500 pragma Export
(LL_Altivec
, vsubuhs
, "__builtin_altivec_vsubuhs");
501 pragma Export
(LL_Altivec
, vsubuwm
, "__builtin_altivec_vsubuwm");
502 pragma Export
(LL_Altivec
, vsubuws
, "__builtin_altivec_vsubuws");
503 pragma Export
(LL_Altivec
, vsum2sws
, "__builtin_altivec_vsum2sws");
504 pragma Export
(LL_Altivec
, vsum4sbs
, "__builtin_altivec_vsum4sbs");
505 pragma Export
(LL_Altivec
, vsum4shs
, "__builtin_altivec_vsum4shs");
506 pragma Export
(LL_Altivec
, vsum4ubs
, "__builtin_altivec_vsum4ubs");
507 pragma Export
(LL_Altivec
, vsumsws
, "__builtin_altivec_vsumsws");
508 pragma Export
(LL_Altivec
, vupkhpx
, "__builtin_altivec_vupkhpx");
509 pragma Export
(LL_Altivec
, vupkhsb
, "__builtin_altivec_vupkhsb");
510 pragma Export
(LL_Altivec
, vupkhsh
, "__builtin_altivec_vupkhsh");
511 pragma Export
(LL_Altivec
, vupklpx
, "__builtin_altivec_vupklpx");
512 pragma Export
(LL_Altivec
, vupklsb
, "__builtin_altivec_vupklsb");
513 pragma Export
(LL_Altivec
, vupklsh
, "__builtin_altivec_vupklsh");
514 pragma Export
(LL_Altivec
, vcmpbfp_p
, "__builtin_altivec_vcmpbfp_p");
515 pragma Export
(LL_Altivec
, vcmpeqfp_p
, "__builtin_altivec_vcmpeqfp_p");
516 pragma Export
(LL_Altivec
, vcmpgefp_p
, "__builtin_altivec_vcmpgefp_p");
517 pragma Export
(LL_Altivec
, vcmpgtfp_p
, "__builtin_altivec_vcmpgtfp_p");
518 pragma Export
(LL_Altivec
, vcmpequw_p
, "__builtin_altivec_vcmpequw_p");
519 pragma Export
(LL_Altivec
, vcmpgtsw_p
, "__builtin_altivec_vcmpgtsw_p");
520 pragma Export
(LL_Altivec
, vcmpgtuw_p
, "__builtin_altivec_vcmpgtuw_p");
521 pragma Export
(LL_Altivec
, vcmpgtuh_p
, "__builtin_altivec_vcmpgtuh_p");
522 pragma Export
(LL_Altivec
, vcmpgtsh_p
, "__builtin_altivec_vcmpgtsh_p");
523 pragma Export
(LL_Altivec
, vcmpequh_p
, "__builtin_altivec_vcmpequh_p");
524 pragma Export
(LL_Altivec
, vcmpequb_p
, "__builtin_altivec_vcmpequb_p");
525 pragma Export
(LL_Altivec
, vcmpgtsb_p
, "__builtin_altivec_vcmpgtsb_p");
526 pragma Export
(LL_Altivec
, vcmpgtub_p
, "__builtin_altivec_vcmpgtub_p");
528 end GNAT
.Altivec
.Low_Level_Vectors
;