OSDN Git Service

2010-05-16 Manuel López-Ibáñez <manu@gcc.gnu.org>
[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-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
44 with GNAT.Altivec.Vector_Types;
45 with GNAT.Altivec.Low_Level_Vectors;
46
47 with Ada.Unchecked_Conversion;
48
49 package 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
1354 end GNAT.Altivec.Low_Level_Interface;