OSDN Git Service

2007-04-20 Javier Miranda <miranda@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / g-allein.ads
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT COMPILER COMPONENTS                         --
4 --                                                                          --
5 --     G N A T . A L T I V E C . L O W _ L E V E L _ I N T E R F A C E      --
6 --                                                                          --
7 --                                 S p e c                                  --
8 --                                                                          --
9 --          Copyright (C) 2004-2005, Free Software Foundation, Inc.         --
10 --                                                                          --
11 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
12 -- terms of the  GNU General Public License as published  by the Free Soft- --
13 -- ware  Foundation;  either version 2,  or (at your option) any later ver- --
14 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
17 -- for  more details.  You should have  received  a copy of the GNU General --
18 -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
19 -- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
20 -- MA 02111-1307, USA.                                                      --
21 --                                                                          --
22 -- As a special exception,  if other files  instantiate  generics from this --
23 -- unit, or you link  this unit with other files  to produce an executable, --
24 -- this  unit  does not  by itself cause  the resulting  executable  to  be --
25 -- covered  by the  GNU  General  Public  License.  This exception does not --
26 -- however invalidate  any other reasons why  the executable file  might be --
27 -- covered by the  GNU Public License.                                      --
28 --                                                                          --
29 -- GNAT was originally developed  by the GNAT team at  New York University. --
30 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
31 --                                                                          --
32 ------------------------------------------------------------------------------
33
34 --  This unit provides entities to be used internally by the units common to
35 --  both bindings (Hard or Soft), and relevant to the interfacing with the
36 --  underlying Low Level support.
37
38 --  The set of "services" includes:
39 --
40 --  o Imports to the low level routines for which a direct binding is
41 --    mandatory (or just possible when analyzed as such).
42 --
43 --  o Conversion routines (unchecked) between low level types, or between
44 --    various pointer representations.
45
46 with GNAT.Altivec.Vector_Types;
47 with GNAT.Altivec.Low_Level_Vectors;
48
49 with Ada.Unchecked_Conversion;
50
51 package GNAT.Altivec.Low_Level_Interface is
52
53    ----------------------------------------------------------------------------
54    -- Imports for "argument must be literal" constraints in the Hard binding --
55    ----------------------------------------------------------------------------
56
57    use GNAT.Altivec.Vector_Types;
58
59    -- vec_ctf --
60
61    function vec_ctf_vui_cint_r_vf
62      (A : vector_unsigned_int;
63       B : c_int) return vector_float;
64
65    pragma Import
66      (LL_Altivec, vec_ctf_vui_cint_r_vf, "__builtin_altivec_vcfux");
67
68    function vec_ctf_vsi_cint_r_vf
69      (A : vector_signed_int;
70       B : c_int) return vector_float;
71
72    pragma Import
73      (LL_Altivec, vec_ctf_vsi_cint_r_vf, "__builtin_altivec_vcfsx");
74
75    -- vec_vcfsx --
76
77    function vec_vcfsx_vsi_cint_r_vf
78      (A : vector_signed_int;
79       B : c_int) return vector_float;
80
81    pragma Import
82      (LL_Altivec, vec_vcfsx_vsi_cint_r_vf, "__builtin_altivec_vcfsx");
83
84    -- vec_vcfux --
85
86    function vec_vcfux_vui_cint_r_vf
87      (A : vector_unsigned_int;
88       B : c_int) return vector_float;
89
90    pragma Import
91      (LL_Altivec, vec_vcfux_vui_cint_r_vf, "__builtin_altivec_vcfux");
92
93    -- vec_cts --
94
95    function vec_cts_vf_cint_r_vsi
96      (A : vector_float;
97       B : c_int) return vector_signed_int;
98
99    pragma Import
100      (LL_Altivec, vec_cts_vf_cint_r_vsi, "__builtin_altivec_vctsxs");
101
102    -- vec_ctu --
103
104    function vec_ctu_vf_cint_r_vui
105      (A : vector_float;
106       B : c_int) return vector_unsigned_int;
107
108    pragma Import
109      (LL_Altivec, vec_ctu_vf_cint_r_vui, "__builtin_altivec_vctuxs");
110
111    -- vec_dss --
112
113    procedure vec_dss_cint
114      (A : c_int);
115
116    pragma Import
117      (LL_Altivec, vec_dss_cint, "__builtin_altivec_dss");
118
119    -- vec_dst --
120
121    procedure vec_dst_kvucp_cint_cint
122      (A : const_vector_unsigned_char_ptr;
123       B : c_int;
124       C : c_int);
125
126    pragma Import
127      (LL_Altivec, vec_dst_kvucp_cint_cint, "__builtin_altivec_dst");
128
129    procedure vec_dst_kvscp_cint_cint
130      (A : const_vector_signed_char_ptr;
131       B : c_int;
132       C : c_int);
133
134    pragma Import
135      (LL_Altivec, vec_dst_kvscp_cint_cint, "__builtin_altivec_dst");
136
137    procedure vec_dst_kvbcp_cint_cint
138      (A : const_vector_bool_char_ptr;
139       B : c_int;
140       C : c_int);
141
142    pragma Import
143      (LL_Altivec, vec_dst_kvbcp_cint_cint, "__builtin_altivec_dst");
144
145    procedure vec_dst_kvusp_cint_cint
146      (A : const_vector_unsigned_short_ptr;
147       B : c_int;
148       C : c_int);
149
150    pragma Import
151      (LL_Altivec, vec_dst_kvusp_cint_cint, "__builtin_altivec_dst");
152
153    procedure vec_dst_kvssp_cint_cint
154      (A : const_vector_signed_short_ptr;
155       B : c_int;
156       C : c_int);
157
158    pragma Import
159      (LL_Altivec, vec_dst_kvssp_cint_cint, "__builtin_altivec_dst");
160
161    procedure vec_dst_kvbsp_cint_cint
162      (A : const_vector_bool_short_ptr;
163       B : c_int;
164       C : c_int);
165
166    pragma Import
167      (LL_Altivec, vec_dst_kvbsp_cint_cint, "__builtin_altivec_dst");
168
169    procedure vec_dst_kvxp_cint_cint
170      (A : const_vector_pixel_ptr;
171       B : c_int;
172       C : c_int);
173
174    pragma Import
175      (LL_Altivec, vec_dst_kvxp_cint_cint, "__builtin_altivec_dst");
176
177    procedure vec_dst_kvuip_cint_cint
178      (A : const_vector_unsigned_int_ptr;
179       B : c_int;
180       C : c_int);
181
182    pragma Import
183      (LL_Altivec, vec_dst_kvuip_cint_cint, "__builtin_altivec_dst");
184
185    procedure vec_dst_kvsip_cint_cint
186      (A : const_vector_signed_int_ptr;
187       B : c_int;
188       C : c_int);
189
190    pragma Import
191      (LL_Altivec, vec_dst_kvsip_cint_cint, "__builtin_altivec_dst");
192
193    procedure vec_dst_kvbip_cint_cint
194      (A : const_vector_bool_int_ptr;
195       B : c_int;
196       C : c_int);
197
198    pragma Import
199      (LL_Altivec, vec_dst_kvbip_cint_cint, "__builtin_altivec_dst");
200
201    procedure vec_dst_kvfp_cint_cint
202      (A : const_vector_float_ptr;
203       B : c_int;
204       C : c_int);
205
206    pragma Import
207      (LL_Altivec, vec_dst_kvfp_cint_cint, "__builtin_altivec_dst");
208
209    procedure vec_dst_kucp_cint_cint
210      (A : const_unsigned_char_ptr;
211       B : c_int;
212       C : c_int);
213
214    pragma Import
215      (LL_Altivec, vec_dst_kucp_cint_cint, "__builtin_altivec_dst");
216
217    procedure vec_dst_kscp_cint_cint
218      (A : const_signed_char_ptr;
219       B : c_int;
220       C : c_int);
221
222    pragma Import
223      (LL_Altivec, vec_dst_kscp_cint_cint, "__builtin_altivec_dst");
224
225    procedure vec_dst_kusp_cint_cint
226      (A : const_unsigned_short_ptr;
227       B : c_int;
228       C : c_int);
229
230    pragma Import
231      (LL_Altivec, vec_dst_kusp_cint_cint, "__builtin_altivec_dst");
232
233    procedure vec_dst_ksp_cint_cint
234      (A : const_short_ptr;
235       B : c_int;
236       C : c_int);
237
238    pragma Import
239      (LL_Altivec, vec_dst_ksp_cint_cint, "__builtin_altivec_dst");
240
241    procedure vec_dst_kuip_cint_cint
242      (A : const_unsigned_int_ptr;
243       B : c_int;
244       C : c_int);
245
246    pragma Import
247      (LL_Altivec, vec_dst_kuip_cint_cint, "__builtin_altivec_dst");
248
249    procedure vec_dst_kip_cint_cint
250      (A : const_int_ptr;
251       B : c_int;
252       C : c_int);
253
254    pragma Import
255      (LL_Altivec, vec_dst_kip_cint_cint, "__builtin_altivec_dst");
256
257    procedure vec_dst_kulongp_cint_cint
258      (A : const_unsigned_long_ptr;
259       B : c_int;
260       C : c_int);
261
262    pragma Import
263      (LL_Altivec, vec_dst_kulongp_cint_cint, "__builtin_altivec_dst");
264
265    procedure vec_dst_klongp_cint_cint
266      (A : const_long_ptr;
267       B : c_int;
268       C : c_int);
269
270    pragma Import
271      (LL_Altivec, vec_dst_klongp_cint_cint, "__builtin_altivec_dst");
272
273    procedure vec_dst_kfp_cint_cint
274      (A : const_float_ptr;
275       B : c_int;
276       C : c_int);
277
278    pragma Import
279      (LL_Altivec, vec_dst_kfp_cint_cint, "__builtin_altivec_dst");
280
281    -- vec_dstst --
282
283    procedure vec_dstst_kvucp_cint_cint
284      (A : const_vector_unsigned_char_ptr;
285       B : c_int;
286       C : c_int);
287
288    pragma Import
289      (LL_Altivec, vec_dstst_kvucp_cint_cint, "__builtin_altivec_dstst");
290
291    procedure vec_dstst_kvscp_cint_cint
292      (A : const_vector_signed_char_ptr;
293       B : c_int;
294       C : c_int);
295
296    pragma Import
297      (LL_Altivec, vec_dstst_kvscp_cint_cint, "__builtin_altivec_dstst");
298
299    procedure vec_dstst_kvbcp_cint_cint
300      (A : const_vector_bool_char_ptr;
301       B : c_int;
302       C : c_int);
303
304    pragma Import
305      (LL_Altivec, vec_dstst_kvbcp_cint_cint, "__builtin_altivec_dstst");
306
307    procedure vec_dstst_kvusp_cint_cint
308      (A : const_vector_unsigned_short_ptr;
309       B : c_int;
310       C : c_int);
311
312    pragma Import
313      (LL_Altivec, vec_dstst_kvusp_cint_cint, "__builtin_altivec_dstst");
314
315    procedure vec_dstst_kvssp_cint_cint
316      (A : const_vector_signed_short_ptr;
317       B : c_int;
318       C : c_int);
319
320    pragma Import
321      (LL_Altivec, vec_dstst_kvssp_cint_cint, "__builtin_altivec_dstst");
322
323    procedure vec_dstst_kvbsp_cint_cint
324      (A : const_vector_bool_short_ptr;
325       B : c_int;
326       C : c_int);
327
328    pragma Import
329      (LL_Altivec, vec_dstst_kvbsp_cint_cint, "__builtin_altivec_dstst");
330
331    procedure vec_dstst_kvxp_cint_cint
332      (A : const_vector_pixel_ptr;
333       B : c_int;
334       C : c_int);
335
336    pragma Import
337      (LL_Altivec, vec_dstst_kvxp_cint_cint, "__builtin_altivec_dstst");
338
339    procedure vec_dstst_kvuip_cint_cint
340      (A : const_vector_unsigned_int_ptr;
341       B : c_int;
342       C : c_int);
343
344    pragma Import
345      (LL_Altivec, vec_dstst_kvuip_cint_cint, "__builtin_altivec_dstst");
346
347    procedure vec_dstst_kvsip_cint_cint
348      (A : const_vector_signed_int_ptr;
349       B : c_int;
350       C : c_int);
351
352    pragma Import
353      (LL_Altivec, vec_dstst_kvsip_cint_cint, "__builtin_altivec_dstst");
354
355    procedure vec_dstst_kvbip_cint_cint
356      (A : const_vector_bool_int_ptr;
357       B : c_int;
358       C : c_int);
359
360    pragma Import
361      (LL_Altivec, vec_dstst_kvbip_cint_cint, "__builtin_altivec_dstst");
362
363    procedure vec_dstst_kvfp_cint_cint
364      (A : const_vector_float_ptr;
365       B : c_int;
366       C : c_int);
367
368    pragma Import
369      (LL_Altivec, vec_dstst_kvfp_cint_cint, "__builtin_altivec_dstst");
370
371    procedure vec_dstst_kucp_cint_cint
372      (A : const_unsigned_char_ptr;
373       B : c_int;
374       C : c_int);
375
376    pragma Import
377      (LL_Altivec, vec_dstst_kucp_cint_cint, "__builtin_altivec_dstst");
378
379    procedure vec_dstst_kscp_cint_cint
380      (A : const_signed_char_ptr;
381       B : c_int;
382       C : c_int);
383
384    pragma Import
385      (LL_Altivec, vec_dstst_kscp_cint_cint, "__builtin_altivec_dstst");
386
387    procedure vec_dstst_kusp_cint_cint
388      (A : const_unsigned_short_ptr;
389       B : c_int;
390       C : c_int);
391
392    pragma Import
393      (LL_Altivec, vec_dstst_kusp_cint_cint, "__builtin_altivec_dstst");
394
395    procedure vec_dstst_ksp_cint_cint
396      (A : const_short_ptr;
397       B : c_int;
398       C : c_int);
399
400    pragma Import
401      (LL_Altivec, vec_dstst_ksp_cint_cint, "__builtin_altivec_dstst");
402
403    procedure vec_dstst_kuip_cint_cint
404      (A : const_unsigned_int_ptr;
405       B : c_int;
406       C : c_int);
407
408    pragma Import
409      (LL_Altivec, vec_dstst_kuip_cint_cint, "__builtin_altivec_dstst");
410
411    procedure vec_dstst_kip_cint_cint
412      (A : const_int_ptr;
413       B : c_int;
414       C : c_int);
415
416    pragma Import
417      (LL_Altivec, vec_dstst_kip_cint_cint, "__builtin_altivec_dstst");
418
419    procedure vec_dstst_kulongp_cint_cint
420      (A : const_unsigned_long_ptr;
421       B : c_int;
422       C : c_int);
423
424    pragma Import
425      (LL_Altivec, vec_dstst_kulongp_cint_cint, "__builtin_altivec_dstst");
426
427    procedure vec_dstst_klongp_cint_cint
428      (A : const_long_ptr;
429       B : c_int;
430       C : c_int);
431
432    pragma Import
433      (LL_Altivec, vec_dstst_klongp_cint_cint, "__builtin_altivec_dstst");
434
435    procedure vec_dstst_kfp_cint_cint
436      (A : const_float_ptr;
437       B : c_int;
438       C : c_int);
439
440    pragma Import
441      (LL_Altivec, vec_dstst_kfp_cint_cint, "__builtin_altivec_dstst");
442
443    -- vec_dststt --
444
445    procedure vec_dststt_kvucp_cint_cint
446      (A : const_vector_unsigned_char_ptr;
447       B : c_int;
448       C : c_int);
449
450    pragma Import
451      (LL_Altivec, vec_dststt_kvucp_cint_cint, "__builtin_altivec_dststt");
452
453    procedure vec_dststt_kvscp_cint_cint
454      (A : const_vector_signed_char_ptr;
455       B : c_int;
456       C : c_int);
457
458    pragma Import
459      (LL_Altivec, vec_dststt_kvscp_cint_cint, "__builtin_altivec_dststt");
460
461    procedure vec_dststt_kvbcp_cint_cint
462      (A : const_vector_bool_char_ptr;
463       B : c_int;
464       C : c_int);
465
466    pragma Import
467      (LL_Altivec, vec_dststt_kvbcp_cint_cint, "__builtin_altivec_dststt");
468
469    procedure vec_dststt_kvusp_cint_cint
470      (A : const_vector_unsigned_short_ptr;
471       B : c_int;
472       C : c_int);
473
474    pragma Import
475      (LL_Altivec, vec_dststt_kvusp_cint_cint, "__builtin_altivec_dststt");
476
477    procedure vec_dststt_kvssp_cint_cint
478      (A : const_vector_signed_short_ptr;
479       B : c_int;
480       C : c_int);
481
482    pragma Import
483      (LL_Altivec, vec_dststt_kvssp_cint_cint, "__builtin_altivec_dststt");
484
485    procedure vec_dststt_kvbsp_cint_cint
486      (A : const_vector_bool_short_ptr;
487       B : c_int;
488       C : c_int);
489
490    pragma Import
491      (LL_Altivec, vec_dststt_kvbsp_cint_cint, "__builtin_altivec_dststt");
492
493    procedure vec_dststt_kvxp_cint_cint
494      (A : const_vector_pixel_ptr;
495       B : c_int;
496       C : c_int);
497
498    pragma Import
499      (LL_Altivec, vec_dststt_kvxp_cint_cint, "__builtin_altivec_dststt");
500
501    procedure vec_dststt_kvuip_cint_cint
502      (A : const_vector_unsigned_int_ptr;
503       B : c_int;
504       C : c_int);
505
506    pragma Import
507      (LL_Altivec, vec_dststt_kvuip_cint_cint, "__builtin_altivec_dststt");
508
509    procedure vec_dststt_kvsip_cint_cint
510      (A : const_vector_signed_int_ptr;
511       B : c_int;
512       C : c_int);
513
514    pragma Import
515      (LL_Altivec, vec_dststt_kvsip_cint_cint, "__builtin_altivec_dststt");
516
517    procedure vec_dststt_kvbip_cint_cint
518      (A : const_vector_bool_int_ptr;
519       B : c_int;
520       C : c_int);
521
522    pragma Import
523      (LL_Altivec, vec_dststt_kvbip_cint_cint, "__builtin_altivec_dststt");
524
525    procedure vec_dststt_kvfp_cint_cint
526      (A : const_vector_float_ptr;
527       B : c_int;
528       C : c_int);
529
530    pragma Import
531      (LL_Altivec, vec_dststt_kvfp_cint_cint, "__builtin_altivec_dststt");
532
533    procedure vec_dststt_kucp_cint_cint
534      (A : const_unsigned_char_ptr;
535       B : c_int;
536       C : c_int);
537
538    pragma Import
539      (LL_Altivec, vec_dststt_kucp_cint_cint, "__builtin_altivec_dststt");
540
541    procedure vec_dststt_kscp_cint_cint
542      (A : const_signed_char_ptr;
543       B : c_int;
544       C : c_int);
545
546    pragma Import
547      (LL_Altivec, vec_dststt_kscp_cint_cint, "__builtin_altivec_dststt");
548
549    procedure vec_dststt_kusp_cint_cint
550      (A : const_unsigned_short_ptr;
551       B : c_int;
552       C : c_int);
553
554    pragma Import
555      (LL_Altivec, vec_dststt_kusp_cint_cint, "__builtin_altivec_dststt");
556
557    procedure vec_dststt_ksp_cint_cint
558      (A : const_short_ptr;
559       B : c_int;
560       C : c_int);
561
562    pragma Import
563      (LL_Altivec, vec_dststt_ksp_cint_cint, "__builtin_altivec_dststt");
564
565    procedure vec_dststt_kuip_cint_cint
566      (A : const_unsigned_int_ptr;
567       B : c_int;
568       C : c_int);
569
570    pragma Import
571      (LL_Altivec, vec_dststt_kuip_cint_cint, "__builtin_altivec_dststt");
572
573    procedure vec_dststt_kip_cint_cint
574      (A : const_int_ptr;
575       B : c_int;
576       C : c_int);
577
578    pragma Import
579      (LL_Altivec, vec_dststt_kip_cint_cint, "__builtin_altivec_dststt");
580
581    procedure vec_dststt_kulongp_cint_cint
582      (A : const_unsigned_long_ptr;
583       B : c_int;
584       C : c_int);
585
586    pragma Import
587      (LL_Altivec, vec_dststt_kulongp_cint_cint, "__builtin_altivec_dststt");
588
589    procedure vec_dststt_klongp_cint_cint
590      (A : const_long_ptr;
591       B : c_int;
592       C : c_int);
593
594    pragma Import
595      (LL_Altivec, vec_dststt_klongp_cint_cint, "__builtin_altivec_dststt");
596
597    procedure vec_dststt_kfp_cint_cint
598      (A : const_float_ptr;
599       B : c_int;
600       C : c_int);
601
602    pragma Import
603      (LL_Altivec, vec_dststt_kfp_cint_cint, "__builtin_altivec_dststt");
604
605    -- vec_dstt --
606
607    procedure vec_dstt_kvucp_cint_cint
608      (A : const_vector_unsigned_char_ptr;
609       B : c_int;
610       C : c_int);
611
612    pragma Import
613      (LL_Altivec, vec_dstt_kvucp_cint_cint, "__builtin_altivec_dstt");
614
615    procedure vec_dstt_kvscp_cint_cint
616      (A : const_vector_signed_char_ptr;
617       B : c_int;
618       C : c_int);
619
620    pragma Import
621      (LL_Altivec, vec_dstt_kvscp_cint_cint, "__builtin_altivec_dstt");
622
623    procedure vec_dstt_kvbcp_cint_cint
624      (A : const_vector_bool_char_ptr;
625       B : c_int;
626       C : c_int);
627
628    pragma Import
629      (LL_Altivec, vec_dstt_kvbcp_cint_cint, "__builtin_altivec_dstt");
630
631    procedure vec_dstt_kvusp_cint_cint
632      (A : const_vector_unsigned_short_ptr;
633       B : c_int;
634       C : c_int);
635
636    pragma Import
637      (LL_Altivec, vec_dstt_kvusp_cint_cint, "__builtin_altivec_dstt");
638
639    procedure vec_dstt_kvssp_cint_cint
640      (A : const_vector_signed_short_ptr;
641       B : c_int;
642       C : c_int);
643
644    pragma Import
645      (LL_Altivec, vec_dstt_kvssp_cint_cint, "__builtin_altivec_dstt");
646
647    procedure vec_dstt_kvbsp_cint_cint
648      (A : const_vector_bool_short_ptr;
649       B : c_int;
650       C : c_int);
651
652    pragma Import
653      (LL_Altivec, vec_dstt_kvbsp_cint_cint, "__builtin_altivec_dstt");
654
655    procedure vec_dstt_kvxp_cint_cint
656      (A : const_vector_pixel_ptr;
657       B : c_int;
658       C : c_int);
659
660    pragma Import
661      (LL_Altivec, vec_dstt_kvxp_cint_cint, "__builtin_altivec_dstt");
662
663    procedure vec_dstt_kvuip_cint_cint
664      (A : const_vector_unsigned_int_ptr;
665       B : c_int;
666       C : c_int);
667
668    pragma Import
669      (LL_Altivec, vec_dstt_kvuip_cint_cint, "__builtin_altivec_dstt");
670
671    procedure vec_dstt_kvsip_cint_cint
672      (A : const_vector_signed_int_ptr;
673       B : c_int;
674       C : c_int);
675
676    pragma Import
677      (LL_Altivec, vec_dstt_kvsip_cint_cint, "__builtin_altivec_dstt");
678
679    procedure vec_dstt_kvbip_cint_cint
680      (A : const_vector_bool_int_ptr;
681       B : c_int;
682       C : c_int);
683
684    pragma Import
685      (LL_Altivec, vec_dstt_kvbip_cint_cint, "__builtin_altivec_dstt");
686
687    procedure vec_dstt_kvfp_cint_cint
688      (A : const_vector_float_ptr;
689       B : c_int;
690       C : c_int);
691
692    pragma Import
693      (LL_Altivec, vec_dstt_kvfp_cint_cint, "__builtin_altivec_dstt");
694
695    procedure vec_dstt_kucp_cint_cint
696      (A : const_unsigned_char_ptr;
697       B : c_int;
698       C : c_int);
699
700    pragma Import
701      (LL_Altivec, vec_dstt_kucp_cint_cint, "__builtin_altivec_dstt");
702
703    procedure vec_dstt_kscp_cint_cint
704      (A : const_signed_char_ptr;
705       B : c_int;
706       C : c_int);
707
708    pragma Import
709      (LL_Altivec, vec_dstt_kscp_cint_cint, "__builtin_altivec_dstt");
710
711    procedure vec_dstt_kusp_cint_cint
712      (A : const_unsigned_short_ptr;
713       B : c_int;
714       C : c_int);
715
716    pragma Import
717      (LL_Altivec, vec_dstt_kusp_cint_cint, "__builtin_altivec_dstt");
718
719    procedure vec_dstt_ksp_cint_cint
720      (A : const_short_ptr;
721       B : c_int;
722       C : c_int);
723
724    pragma Import
725      (LL_Altivec, vec_dstt_ksp_cint_cint, "__builtin_altivec_dstt");
726
727    procedure vec_dstt_kuip_cint_cint
728      (A : const_unsigned_int_ptr;
729       B : c_int;
730       C : c_int);
731
732    pragma Import
733      (LL_Altivec, vec_dstt_kuip_cint_cint, "__builtin_altivec_dstt");
734
735    procedure vec_dstt_kip_cint_cint
736      (A : const_int_ptr;
737       B : c_int;
738       C : c_int);
739
740    pragma Import
741      (LL_Altivec, vec_dstt_kip_cint_cint, "__builtin_altivec_dstt");
742
743    procedure vec_dstt_kulongp_cint_cint
744      (A : const_unsigned_long_ptr;
745       B : c_int;
746       C : c_int);
747
748    pragma Import
749      (LL_Altivec, vec_dstt_kulongp_cint_cint, "__builtin_altivec_dstt");
750
751    procedure vec_dstt_klongp_cint_cint
752      (A : const_long_ptr;
753       B : c_int;
754       C : c_int);
755
756    pragma Import
757      (LL_Altivec, vec_dstt_klongp_cint_cint, "__builtin_altivec_dstt");
758
759    procedure vec_dstt_kfp_cint_cint
760      (A : const_float_ptr;
761       B : c_int;
762       C : c_int);
763
764    pragma Import
765      (LL_Altivec, vec_dstt_kfp_cint_cint, "__builtin_altivec_dstt");
766
767    -- vec_sld --
768
769    --  ??? The base GCC implementation maps everything to vsldoi_4si, while
770    --  it defines builtin variants for all the modes. Adjust here, to avoid
771    --  the infamous argument mode mismatch.
772
773    function vec_sld_vf_vf_cint_r_vf
774      (A : vector_float;
775       B : vector_float;
776       C : c_int) return vector_float;
777
778    pragma Import
779      (LL_Altivec, vec_sld_vf_vf_cint_r_vf, "__builtin_altivec_vsldoi_4sf");
780
781    function vec_sld_vsi_vsi_cint_r_vsi
782      (A : vector_signed_int;
783       B : vector_signed_int;
784       C : c_int) return vector_signed_int;
785
786    pragma Import
787      (LL_Altivec, vec_sld_vsi_vsi_cint_r_vsi, "__builtin_altivec_vsldoi_4si");
788
789    function vec_sld_vui_vui_cint_r_vui
790      (A : vector_unsigned_int;
791       B : vector_unsigned_int;
792       C : c_int) return vector_unsigned_int;
793
794    pragma Import
795      (LL_Altivec, vec_sld_vui_vui_cint_r_vui, "__builtin_altivec_vsldoi_4si");
796
797    function vec_sld_vbi_vbi_cint_r_vbi
798      (A : vector_bool_int;
799       B : vector_bool_int;
800       C : c_int) return vector_bool_int;
801
802    pragma Import
803      (LL_Altivec, vec_sld_vbi_vbi_cint_r_vbi, "__builtin_altivec_vsldoi_4si");
804
805    function vec_sld_vss_vss_cint_r_vss
806      (A : vector_signed_short;
807       B : vector_signed_short;
808       C : c_int) return vector_signed_short;
809
810    pragma Import
811      (LL_Altivec, vec_sld_vss_vss_cint_r_vss, "__builtin_altivec_vsldoi_8hi");
812
813    function vec_sld_vus_vus_cint_r_vus
814      (A : vector_unsigned_short;
815       B : vector_unsigned_short;
816       C : c_int) return vector_unsigned_short;
817
818    pragma Import
819      (LL_Altivec, vec_sld_vus_vus_cint_r_vus, "__builtin_altivec_vsldoi_8hi");
820
821    function vec_sld_vbs_vbs_cint_r_vbs
822      (A : vector_bool_short;
823       B : vector_bool_short;
824       C : c_int) return vector_bool_short;
825
826    pragma Import
827      (LL_Altivec, vec_sld_vbs_vbs_cint_r_vbs, "__builtin_altivec_vsldoi_8hi");
828
829    function vec_sld_vx_vx_cint_r_vx
830      (A : vector_pixel;
831       B : vector_pixel;
832       C : c_int) return vector_pixel;
833
834    pragma Import
835      (LL_Altivec, vec_sld_vx_vx_cint_r_vx, "__builtin_altivec_vsldoi_4si");
836
837    function vec_sld_vsc_vsc_cint_r_vsc
838      (A : vector_signed_char;
839       B : vector_signed_char;
840       C : c_int) return vector_signed_char;
841
842    pragma Import
843      (LL_Altivec, vec_sld_vsc_vsc_cint_r_vsc, "__builtin_altivec_vsldoi_16qi");
844
845    function vec_sld_vuc_vuc_cint_r_vuc
846      (A : vector_unsigned_char;
847       B : vector_unsigned_char;
848       C : c_int) return vector_unsigned_char;
849
850    pragma Import
851      (LL_Altivec, vec_sld_vuc_vuc_cint_r_vuc, "__builtin_altivec_vsldoi_16qi");
852
853    function vec_sld_vbc_vbc_cint_r_vbc
854      (A : vector_bool_char;
855       B : vector_bool_char;
856       C : c_int) return vector_bool_char;
857
858    pragma Import
859      (LL_Altivec, vec_sld_vbc_vbc_cint_r_vbc, "__builtin_altivec_vsldoi_16qi");
860
861    -- vec_splat --
862
863    function vec_splat_vsc_cint_r_vsc
864      (A : vector_signed_char;
865       B : c_int) return vector_signed_char;
866
867    pragma Import
868      (LL_Altivec, vec_splat_vsc_cint_r_vsc, "__builtin_altivec_vspltb");
869
870    function vec_splat_vuc_cint_r_vuc
871      (A : vector_unsigned_char;
872       B : c_int) return vector_unsigned_char;
873
874    pragma Import
875      (LL_Altivec, vec_splat_vuc_cint_r_vuc, "__builtin_altivec_vspltb");
876
877    function vec_splat_vbc_cint_r_vbc
878      (A : vector_bool_char;
879       B : c_int) return vector_bool_char;
880
881    pragma Import
882      (LL_Altivec, vec_splat_vbc_cint_r_vbc, "__builtin_altivec_vspltb");
883
884    function vec_splat_vss_cint_r_vss
885      (A : vector_signed_short;
886       B : c_int) return vector_signed_short;
887
888    pragma Import
889      (LL_Altivec, vec_splat_vss_cint_r_vss, "__builtin_altivec_vsplth");
890
891    function vec_splat_vus_cint_r_vus
892      (A : vector_unsigned_short;
893       B : c_int) return vector_unsigned_short;
894
895    pragma Import
896      (LL_Altivec, vec_splat_vus_cint_r_vus, "__builtin_altivec_vsplth");
897
898    function vec_splat_vbs_cint_r_vbs
899      (A : vector_bool_short;
900       B : c_int) return vector_bool_short;
901
902    pragma Import
903      (LL_Altivec, vec_splat_vbs_cint_r_vbs, "__builtin_altivec_vsplth");
904
905    function vec_splat_vx_cint_r_vx
906      (A : vector_pixel;
907       B : c_int) return vector_pixel;
908
909    pragma Import
910      (LL_Altivec, vec_splat_vx_cint_r_vx, "__builtin_altivec_vsplth");
911
912    function vec_splat_vf_cint_r_vf
913      (A : vector_float;
914       B : c_int) return vector_float;
915
916    pragma Import
917      (LL_Altivec, vec_splat_vf_cint_r_vf, "__builtin_altivec_vspltw");
918
919    function vec_splat_vsi_cint_r_vsi
920      (A : vector_signed_int;
921       B : c_int) return vector_signed_int;
922
923    pragma Import
924      (LL_Altivec, vec_splat_vsi_cint_r_vsi, "__builtin_altivec_vspltw");
925
926    function vec_splat_vui_cint_r_vui
927      (A : vector_unsigned_int;
928       B : c_int) return vector_unsigned_int;
929
930    pragma Import
931      (LL_Altivec, vec_splat_vui_cint_r_vui, "__builtin_altivec_vspltw");
932
933    function vec_splat_vbi_cint_r_vbi
934      (A : vector_bool_int;
935       B : c_int) return vector_bool_int;
936
937    pragma Import
938      (LL_Altivec, vec_splat_vbi_cint_r_vbi, "__builtin_altivec_vspltw");
939
940    -- vec_vspltw --
941
942    function vec_vspltw_vf_cint_r_vf
943      (A : vector_float;
944       B : c_int) return vector_float;
945
946    pragma Import
947      (LL_Altivec, vec_vspltw_vf_cint_r_vf, "__builtin_altivec_vspltw");
948
949    function vec_vspltw_vsi_cint_r_vsi
950      (A : vector_signed_int;
951       B : c_int) return vector_signed_int;
952
953    pragma Import
954      (LL_Altivec, vec_vspltw_vsi_cint_r_vsi, "__builtin_altivec_vspltw");
955
956    function vec_vspltw_vui_cint_r_vui
957      (A : vector_unsigned_int;
958       B : c_int) return vector_unsigned_int;
959
960    pragma Import
961      (LL_Altivec, vec_vspltw_vui_cint_r_vui, "__builtin_altivec_vspltw");
962
963    function vec_vspltw_vbi_cint_r_vbi
964      (A : vector_bool_int;
965       B : c_int) return vector_bool_int;
966
967    pragma Import
968      (LL_Altivec, vec_vspltw_vbi_cint_r_vbi, "__builtin_altivec_vspltw");
969
970    -- vec_vsplth --
971
972    function vec_vsplth_vbs_cint_r_vbs
973      (A : vector_bool_short;
974       B : c_int) return vector_bool_short;
975
976    pragma Import
977      (LL_Altivec, vec_vsplth_vbs_cint_r_vbs, "__builtin_altivec_vsplth");
978
979    function vec_vsplth_vss_cint_r_vss
980      (A : vector_signed_short;
981       B : c_int) return vector_signed_short;
982
983    pragma Import
984      (LL_Altivec, vec_vsplth_vss_cint_r_vss, "__builtin_altivec_vsplth");
985
986    function vec_vsplth_vus_cint_r_vus
987      (A : vector_unsigned_short;
988       B : c_int) return vector_unsigned_short;
989
990    pragma Import
991      (LL_Altivec, vec_vsplth_vus_cint_r_vus, "__builtin_altivec_vsplth");
992
993    function vec_vsplth_vx_cint_r_vx
994      (A : vector_pixel;
995       B : c_int) return vector_pixel;
996
997    pragma Import
998      (LL_Altivec, vec_vsplth_vx_cint_r_vx, "__builtin_altivec_vsplth");
999
1000    -- vec_vspltb --
1001
1002    function vec_vspltb_vsc_cint_r_vsc
1003      (A : vector_signed_char;
1004       B : c_int) return vector_signed_char;
1005
1006    pragma Import
1007      (LL_Altivec, vec_vspltb_vsc_cint_r_vsc, "__builtin_altivec_vspltb");
1008
1009    function vec_vspltb_vuc_cint_r_vuc
1010      (A : vector_unsigned_char;
1011       B : c_int) return vector_unsigned_char;
1012
1013    pragma Import
1014      (LL_Altivec, vec_vspltb_vuc_cint_r_vuc, "__builtin_altivec_vspltb");
1015
1016    function vec_vspltb_vbc_cint_r_vbc
1017      (A : vector_bool_char;
1018       B : c_int) return vector_bool_char;
1019
1020    pragma Import
1021      (LL_Altivec, vec_vspltb_vbc_cint_r_vbc, "__builtin_altivec_vspltb");
1022
1023    -- vec_splat_s8 --
1024
1025    function vec_splat_s8_cint_r_vsc
1026      (A : c_int) return vector_signed_char;
1027
1028    pragma Import
1029      (LL_Altivec, vec_splat_s8_cint_r_vsc, "__builtin_altivec_vspltisb");
1030
1031    -- vec_splat_s16 --
1032
1033    function vec_splat_s16_cint_r_vss
1034      (A : c_int) return vector_signed_short;
1035
1036    pragma Import
1037      (LL_Altivec, vec_splat_s16_cint_r_vss, "__builtin_altivec_vspltish");
1038
1039    -- vec_splat_s32 --
1040
1041    function vec_splat_s32_cint_r_vsi
1042      (A : c_int) return vector_signed_int;
1043
1044    pragma Import
1045      (LL_Altivec, vec_splat_s32_cint_r_vsi, "__builtin_altivec_vspltisw");
1046
1047    -- vec_splat_u8 --
1048
1049    function vec_splat_u8_cint_r_vuc
1050      (A : c_int) return vector_unsigned_char;
1051
1052    pragma Import
1053      (LL_Altivec, vec_splat_u8_cint_r_vuc, "__builtin_altivec_vspltisb");
1054
1055    -- vec_splat_u16 --
1056
1057    function vec_splat_u16_cint_r_vus
1058      (A : c_int) return vector_unsigned_short;
1059
1060    pragma Import
1061      (LL_Altivec, vec_splat_u16_cint_r_vus, "__builtin_altivec_vspltish");
1062
1063    -- vec_splat_u32 --
1064
1065    function vec_splat_u32_cint_r_vui
1066      (A : c_int) return vector_unsigned_int;
1067
1068    pragma Import
1069      (LL_Altivec, vec_splat_u32_cint_r_vui, "__builtin_altivec_vspltisw");
1070
1071    ------------------------------------------------------------
1072    -- Imports for low-level signature consistent subprograms --
1073    ------------------------------------------------------------
1074
1075    -- vec_dssall --
1076
1077    procedure vec_dssall;
1078
1079    pragma Import
1080      (LL_Altivec, vec_dssall, "__builtin_altivec_dssall");
1081
1082    -----------------------------------------
1083    -- Conversions between low level types --
1084    -----------------------------------------
1085
1086    use GNAT.Altivec.Low_Level_Vectors;
1087
1088    --  Something like...
1089    --
1090    --  TYPES="LL_VBC LL_VUC LL_VSC LL_VBS LL_VUS LL_VSS \
1091    --         LL_VBI LL_VUI LL_VSI LL_VF LL_VP"
1092    --  for TT in `echo $TYPES`; do
1093    --  for ST in `echo $TYPES`; do
1094    --  echo "function To_$TT is new Ada.Unchecked_Conversion ($ST, $TT);"
1095    --  done
1096    --  echo ""
1097    --  done
1098
1099    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VBC, LL_VBC);
1100    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VUC, LL_VBC);
1101    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VSC, LL_VBC);
1102    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VBS, LL_VBC);
1103    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VUS, LL_VBC);
1104    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VSS, LL_VBC);
1105    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VBI, LL_VBC);
1106    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VUI, LL_VBC);
1107    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VSI, LL_VBC);
1108    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VF, LL_VBC);
1109    function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VP, LL_VBC);
1110
1111    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VBC, LL_VUC);
1112    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VUC, LL_VUC);
1113    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VSC, LL_VUC);
1114    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VBS, LL_VUC);
1115    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VUS, LL_VUC);
1116    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VSS, LL_VUC);
1117    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VBI, LL_VUC);
1118    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VUI, LL_VUC);
1119    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VSI, LL_VUC);
1120    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VF, LL_VUC);
1121    function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VP, LL_VUC);
1122
1123    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VBC, LL_VSC);
1124    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VUC, LL_VSC);
1125    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VSC, LL_VSC);
1126    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VBS, LL_VSC);
1127    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VUS, LL_VSC);
1128    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VSS, LL_VSC);
1129    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VBI, LL_VSC);
1130    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VUI, LL_VSC);
1131    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VSI, LL_VSC);
1132    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VF, LL_VSC);
1133    function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VP, LL_VSC);
1134
1135    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VBC, LL_VBS);
1136    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VUC, LL_VBS);
1137    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VSC, LL_VBS);
1138    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VBS, LL_VBS);
1139    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VUS, LL_VBS);
1140    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VSS, LL_VBS);
1141    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VBI, LL_VBS);
1142    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VUI, LL_VBS);
1143    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VSI, LL_VBS);
1144    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VF, LL_VBS);
1145    function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VP, LL_VBS);
1146
1147    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VBC, LL_VUS);
1148    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VUC, LL_VUS);
1149    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VSC, LL_VUS);
1150    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VBS, LL_VUS);
1151    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VUS, LL_VUS);
1152    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VSS, LL_VUS);
1153    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VBI, LL_VUS);
1154    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VUI, LL_VUS);
1155    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VSI, LL_VUS);
1156    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VF, LL_VUS);
1157    function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VP, LL_VUS);
1158
1159    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VBC, LL_VSS);
1160    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VUC, LL_VSS);
1161    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VSC, LL_VSS);
1162    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VBS, LL_VSS);
1163    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VUS, LL_VSS);
1164    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VSS, LL_VSS);
1165    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VBI, LL_VSS);
1166    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VUI, LL_VSS);
1167    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VSI, LL_VSS);
1168    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VF, LL_VSS);
1169    function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VP, LL_VSS);
1170
1171    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VBC, LL_VBI);
1172    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VUC, LL_VBI);
1173    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VSC, LL_VBI);
1174    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VBS, LL_VBI);
1175    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VUS, LL_VBI);
1176    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VSS, LL_VBI);
1177    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VBI, LL_VBI);
1178    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VUI, LL_VBI);
1179    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VSI, LL_VBI);
1180    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VF, LL_VBI);
1181    function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VP, LL_VBI);
1182
1183    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VBC, LL_VUI);
1184    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VUC, LL_VUI);
1185    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VSC, LL_VUI);
1186    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VBS, LL_VUI);
1187    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VUS, LL_VUI);
1188    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VSS, LL_VUI);
1189    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VBI, LL_VUI);
1190    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VUI, LL_VUI);
1191    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VSI, LL_VUI);
1192    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VF, LL_VUI);
1193    function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VP, LL_VUI);
1194
1195    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VBC, LL_VSI);
1196    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VUC, LL_VSI);
1197    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VSC, LL_VSI);
1198    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VBS, LL_VSI);
1199    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VUS, LL_VSI);
1200    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VSS, LL_VSI);
1201    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VBI, LL_VSI);
1202    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VUI, LL_VSI);
1203    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VSI, LL_VSI);
1204    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VF, LL_VSI);
1205    function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VP, LL_VSI);
1206
1207    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VBC, LL_VF);
1208    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VUC, LL_VF);
1209    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VSC, LL_VF);
1210    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VBS, LL_VF);
1211    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VUS, LL_VF);
1212    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VSS, LL_VF);
1213    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VBI, LL_VF);
1214    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VUI, LL_VF);
1215    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VSI, LL_VF);
1216    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VF, LL_VF);
1217    function To_LL_VF is new Ada.Unchecked_Conversion (LL_VP, LL_VF);
1218
1219    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VBC, LL_VP);
1220    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VUC, LL_VP);
1221    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VSC, LL_VP);
1222    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VBS, LL_VP);
1223    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VUS, LL_VP);
1224    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VSS, LL_VP);
1225    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VBI, LL_VP);
1226    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VUI, LL_VP);
1227    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VSI, LL_VP);
1228    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VF, LL_VP);
1229    function To_LL_VP is new Ada.Unchecked_Conversion (LL_VP, LL_VP);
1230
1231    ----------------------------------------------
1232    -- Conversions between pointer/access types --
1233    ----------------------------------------------
1234
1235    function To_PTR is
1236       new Ada.Unchecked_Conversion (vector_unsigned_char_ptr, c_ptr);
1237    function To_PTR is
1238       new Ada.Unchecked_Conversion (vector_signed_char_ptr, c_ptr);
1239    function To_PTR is
1240       new Ada.Unchecked_Conversion (vector_bool_char_ptr, c_ptr);
1241    function To_PTR is
1242       new Ada.Unchecked_Conversion (vector_unsigned_short_ptr, c_ptr);
1243    function To_PTR is
1244       new Ada.Unchecked_Conversion (vector_signed_short_ptr, c_ptr);
1245    function To_PTR is
1246       new Ada.Unchecked_Conversion (vector_bool_short_ptr, c_ptr);
1247    function To_PTR is
1248       new Ada.Unchecked_Conversion (vector_unsigned_int_ptr, c_ptr);
1249    function To_PTR is
1250       new Ada.Unchecked_Conversion (vector_signed_int_ptr, c_ptr);
1251    function To_PTR is
1252       new Ada.Unchecked_Conversion (vector_bool_int_ptr, c_ptr);
1253    function To_PTR is
1254       new Ada.Unchecked_Conversion (vector_float_ptr, c_ptr);
1255    function To_PTR is
1256       new Ada.Unchecked_Conversion (vector_pixel_ptr, c_ptr);
1257    function To_PTR is
1258       new Ada.Unchecked_Conversion (const_vector_bool_char_ptr, c_ptr);
1259    function To_PTR is
1260       new Ada.Unchecked_Conversion (const_vector_signed_char_ptr, c_ptr);
1261    function To_PTR is
1262       new Ada.Unchecked_Conversion (const_vector_unsigned_char_ptr, c_ptr);
1263    function To_PTR is
1264       new Ada.Unchecked_Conversion (const_vector_bool_short_ptr, c_ptr);
1265    function To_PTR is
1266       new Ada.Unchecked_Conversion (const_vector_signed_short_ptr, c_ptr);
1267    function To_PTR is
1268       new Ada.Unchecked_Conversion (const_vector_unsigned_short_ptr, c_ptr);
1269    function To_PTR is
1270       new Ada.Unchecked_Conversion (const_vector_bool_int_ptr, c_ptr);
1271    function To_PTR is
1272       new Ada.Unchecked_Conversion (const_vector_signed_int_ptr, c_ptr);
1273    function To_PTR is
1274       new Ada.Unchecked_Conversion (const_vector_unsigned_int_ptr, c_ptr);
1275    function To_PTR is
1276       new Ada.Unchecked_Conversion (const_vector_float_ptr, c_ptr);
1277    function To_PTR is
1278       new Ada.Unchecked_Conversion (const_vector_pixel_ptr, c_ptr);
1279    function To_PTR is
1280       new Ada.Unchecked_Conversion (c_ptr, c_ptr);
1281    function To_PTR is
1282       new Ada.Unchecked_Conversion (signed_char_ptr, c_ptr);
1283    function To_PTR is
1284       new Ada.Unchecked_Conversion (unsigned_char_ptr, c_ptr);
1285    function To_PTR is
1286       new Ada.Unchecked_Conversion (short_ptr, c_ptr);
1287    function To_PTR is
1288       new Ada.Unchecked_Conversion (signed_short_ptr, c_ptr);
1289    function To_PTR is
1290       new Ada.Unchecked_Conversion (unsigned_short_ptr, c_ptr);
1291    function To_PTR is
1292       new Ada.Unchecked_Conversion (int_ptr, c_ptr);
1293    function To_PTR is
1294       new Ada.Unchecked_Conversion (signed_int_ptr, c_ptr);
1295    function To_PTR is
1296       new Ada.Unchecked_Conversion (unsigned_int_ptr, c_ptr);
1297    function To_PTR is
1298       new Ada.Unchecked_Conversion (long_ptr, c_ptr);
1299    function To_PTR is
1300       new Ada.Unchecked_Conversion (signed_long_ptr, c_ptr);
1301    function To_PTR is
1302       new Ada.Unchecked_Conversion (unsigned_long_ptr, c_ptr);
1303    function To_PTR is
1304       new Ada.Unchecked_Conversion (float_ptr, c_ptr);
1305    function To_PTR is
1306       new Ada.Unchecked_Conversion (const_signed_char_ptr, c_ptr);
1307    function To_PTR is
1308       new Ada.Unchecked_Conversion (const_unsigned_char_ptr, c_ptr);
1309    function To_PTR is
1310       new Ada.Unchecked_Conversion (const_short_ptr, c_ptr);
1311    function To_PTR is
1312       new Ada.Unchecked_Conversion (const_signed_short_ptr, c_ptr);
1313    function To_PTR is
1314       new Ada.Unchecked_Conversion (const_unsigned_short_ptr, c_ptr);
1315    function To_PTR is
1316       new Ada.Unchecked_Conversion (const_int_ptr, c_ptr);
1317    function To_PTR is
1318       new Ada.Unchecked_Conversion (const_signed_int_ptr, c_ptr);
1319    function To_PTR is
1320       new Ada.Unchecked_Conversion (const_unsigned_int_ptr, c_ptr);
1321    function To_PTR is
1322       new Ada.Unchecked_Conversion (const_long_ptr, c_ptr);
1323    function To_PTR is
1324       new Ada.Unchecked_Conversion (const_signed_long_ptr, c_ptr);
1325    function To_PTR is
1326       new Ada.Unchecked_Conversion (const_unsigned_long_ptr, c_ptr);
1327    function To_PTR is
1328       new Ada.Unchecked_Conversion (const_float_ptr, c_ptr);
1329    function To_PTR is
1330       new Ada.Unchecked_Conversion (constv_char_ptr, c_ptr);
1331    function To_PTR is
1332       new Ada.Unchecked_Conversion (constv_signed_char_ptr, c_ptr);
1333    function To_PTR is
1334       new Ada.Unchecked_Conversion (constv_unsigned_char_ptr, c_ptr);
1335    function To_PTR is
1336       new Ada.Unchecked_Conversion (constv_short_ptr, c_ptr);
1337    function To_PTR is
1338       new Ada.Unchecked_Conversion (constv_signed_short_ptr, c_ptr);
1339    function To_PTR is
1340       new Ada.Unchecked_Conversion (constv_unsigned_short_ptr, c_ptr);
1341    function To_PTR is
1342       new Ada.Unchecked_Conversion (constv_int_ptr, c_ptr);
1343    function To_PTR is
1344       new Ada.Unchecked_Conversion (constv_signed_int_ptr, c_ptr);
1345    function To_PTR is
1346       new Ada.Unchecked_Conversion (constv_unsigned_int_ptr, c_ptr);
1347    function To_PTR is
1348       new Ada.Unchecked_Conversion (constv_long_ptr, c_ptr);
1349    function To_PTR is
1350       new Ada.Unchecked_Conversion (constv_signed_long_ptr, c_ptr);
1351    function To_PTR is
1352       new Ada.Unchecked_Conversion (constv_unsigned_long_ptr, c_ptr);
1353    function To_PTR is
1354       new Ada.Unchecked_Conversion (constv_float_ptr, c_ptr);
1355
1356 end GNAT.Altivec.Low_Level_Interface;