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