PR rtl-optimization/79386
[official-gcc.git] / gcc / ada / g-allein.ads
blobbbadf8e708871548cb3142d835b0afcb5ae79d2f
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-2015, 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 ------------------------------------------------------------------------------
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.
36 with GNAT.Altivec.Vector_Types; use GNAT.Altivec.Vector_Types;
37 with GNAT.Altivec.Low_Level_Vectors; use GNAT.Altivec.Low_Level_Vectors;
39 with Ada.Unchecked_Conversion;
41 package GNAT.Altivec.Low_Level_Interface is
43 -----------------------------------------
44 -- Conversions between low level types --
45 -----------------------------------------
47 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VBC, LL_VBC);
48 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VUC, LL_VBC);
49 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VSC, LL_VBC);
50 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VBS, LL_VBC);
51 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VUS, LL_VBC);
52 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VSS, LL_VBC);
53 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VBI, LL_VBC);
54 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VUI, LL_VBC);
55 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VSI, LL_VBC);
56 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VF, LL_VBC);
57 function To_LL_VBC is new Ada.Unchecked_Conversion (LL_VP, LL_VBC);
59 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VBC, LL_VUC);
60 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VUC, LL_VUC);
61 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VSC, LL_VUC);
62 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VBS, LL_VUC);
63 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VUS, LL_VUC);
64 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VSS, LL_VUC);
65 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VBI, LL_VUC);
66 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VUI, LL_VUC);
67 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VSI, LL_VUC);
68 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VF, LL_VUC);
69 function To_LL_VUC is new Ada.Unchecked_Conversion (LL_VP, LL_VUC);
71 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VBC, LL_VSC);
72 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VUC, LL_VSC);
73 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VSC, LL_VSC);
74 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VBS, LL_VSC);
75 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VUS, LL_VSC);
76 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VSS, LL_VSC);
77 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VBI, LL_VSC);
78 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VUI, LL_VSC);
79 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VSI, LL_VSC);
80 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VF, LL_VSC);
81 function To_LL_VSC is new Ada.Unchecked_Conversion (LL_VP, LL_VSC);
83 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VBC, LL_VBS);
84 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VUC, LL_VBS);
85 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VSC, LL_VBS);
86 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VBS, LL_VBS);
87 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VUS, LL_VBS);
88 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VSS, LL_VBS);
89 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VBI, LL_VBS);
90 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VUI, LL_VBS);
91 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VSI, LL_VBS);
92 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VF, LL_VBS);
93 function To_LL_VBS is new Ada.Unchecked_Conversion (LL_VP, LL_VBS);
95 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VBC, LL_VUS);
96 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VUC, LL_VUS);
97 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VSC, LL_VUS);
98 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VBS, LL_VUS);
99 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VUS, LL_VUS);
100 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VSS, LL_VUS);
101 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VBI, LL_VUS);
102 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VUI, LL_VUS);
103 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VSI, LL_VUS);
104 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VF, LL_VUS);
105 function To_LL_VUS is new Ada.Unchecked_Conversion (LL_VP, LL_VUS);
107 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VBC, LL_VSS);
108 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VUC, LL_VSS);
109 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VSC, LL_VSS);
110 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VBS, LL_VSS);
111 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VUS, LL_VSS);
112 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VSS, LL_VSS);
113 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VBI, LL_VSS);
114 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VUI, LL_VSS);
115 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VSI, LL_VSS);
116 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VF, LL_VSS);
117 function To_LL_VSS is new Ada.Unchecked_Conversion (LL_VP, LL_VSS);
119 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VBC, LL_VBI);
120 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VUC, LL_VBI);
121 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VSC, LL_VBI);
122 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VBS, LL_VBI);
123 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VUS, LL_VBI);
124 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VSS, LL_VBI);
125 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VBI, LL_VBI);
126 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VUI, LL_VBI);
127 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VSI, LL_VBI);
128 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VF, LL_VBI);
129 function To_LL_VBI is new Ada.Unchecked_Conversion (LL_VP, LL_VBI);
131 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VBC, LL_VUI);
132 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VUC, LL_VUI);
133 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VSC, LL_VUI);
134 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VBS, LL_VUI);
135 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VUS, LL_VUI);
136 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VSS, LL_VUI);
137 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VBI, LL_VUI);
138 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VUI, LL_VUI);
139 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VSI, LL_VUI);
140 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VF, LL_VUI);
141 function To_LL_VUI is new Ada.Unchecked_Conversion (LL_VP, LL_VUI);
143 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VBC, LL_VSI);
144 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VUC, LL_VSI);
145 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VSC, LL_VSI);
146 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VBS, LL_VSI);
147 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VUS, LL_VSI);
148 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VSS, LL_VSI);
149 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VBI, LL_VSI);
150 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VUI, LL_VSI);
151 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VSI, LL_VSI);
152 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VF, LL_VSI);
153 function To_LL_VSI is new Ada.Unchecked_Conversion (LL_VP, LL_VSI);
155 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VBC, LL_VF);
156 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VUC, LL_VF);
157 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VSC, LL_VF);
158 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VBS, LL_VF);
159 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VUS, LL_VF);
160 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VSS, LL_VF);
161 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VBI, LL_VF);
162 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VUI, LL_VF);
163 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VSI, LL_VF);
164 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VF, LL_VF);
165 function To_LL_VF is new Ada.Unchecked_Conversion (LL_VP, LL_VF);
167 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VBC, LL_VP);
168 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VUC, LL_VP);
169 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VSC, LL_VP);
170 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VBS, LL_VP);
171 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VUS, LL_VP);
172 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VSS, LL_VP);
173 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VBI, LL_VP);
174 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VUI, LL_VP);
175 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VSI, LL_VP);
176 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VF, LL_VP);
177 function To_LL_VP is new Ada.Unchecked_Conversion (LL_VP, LL_VP);
179 ----------------------------------------------
180 -- Conversions Between Pointer/Access Types --
181 ----------------------------------------------
183 function To_PTR is
184 new Ada.Unchecked_Conversion (vector_unsigned_char_ptr, c_ptr);
185 function To_PTR is
186 new Ada.Unchecked_Conversion (vector_signed_char_ptr, c_ptr);
187 function To_PTR is
188 new Ada.Unchecked_Conversion (vector_bool_char_ptr, c_ptr);
189 function To_PTR is
190 new Ada.Unchecked_Conversion (vector_unsigned_short_ptr, c_ptr);
191 function To_PTR is
192 new Ada.Unchecked_Conversion (vector_signed_short_ptr, c_ptr);
193 function To_PTR is
194 new Ada.Unchecked_Conversion (vector_bool_short_ptr, c_ptr);
195 function To_PTR is
196 new Ada.Unchecked_Conversion (vector_unsigned_int_ptr, c_ptr);
197 function To_PTR is
198 new Ada.Unchecked_Conversion (vector_signed_int_ptr, c_ptr);
199 function To_PTR is
200 new Ada.Unchecked_Conversion (vector_bool_int_ptr, c_ptr);
201 function To_PTR is
202 new Ada.Unchecked_Conversion (vector_float_ptr, c_ptr);
203 function To_PTR is
204 new Ada.Unchecked_Conversion (vector_pixel_ptr, c_ptr);
205 function To_PTR is
206 new Ada.Unchecked_Conversion (const_vector_bool_char_ptr, c_ptr);
207 function To_PTR is
208 new Ada.Unchecked_Conversion (const_vector_signed_char_ptr, c_ptr);
209 function To_PTR is
210 new Ada.Unchecked_Conversion (const_vector_unsigned_char_ptr, c_ptr);
211 function To_PTR is
212 new Ada.Unchecked_Conversion (const_vector_bool_short_ptr, c_ptr);
213 function To_PTR is
214 new Ada.Unchecked_Conversion (const_vector_signed_short_ptr, c_ptr);
215 function To_PTR is
216 new Ada.Unchecked_Conversion (const_vector_unsigned_short_ptr, c_ptr);
217 function To_PTR is
218 new Ada.Unchecked_Conversion (const_vector_bool_int_ptr, c_ptr);
219 function To_PTR is
220 new Ada.Unchecked_Conversion (const_vector_signed_int_ptr, c_ptr);
221 function To_PTR is
222 new Ada.Unchecked_Conversion (const_vector_unsigned_int_ptr, c_ptr);
223 function To_PTR is
224 new Ada.Unchecked_Conversion (const_vector_float_ptr, c_ptr);
225 function To_PTR is
226 new Ada.Unchecked_Conversion (const_vector_pixel_ptr, c_ptr);
227 function To_PTR is
228 new Ada.Unchecked_Conversion (c_ptr, c_ptr);
229 function To_PTR is
230 new Ada.Unchecked_Conversion (signed_char_ptr, c_ptr);
231 function To_PTR is
232 new Ada.Unchecked_Conversion (unsigned_char_ptr, c_ptr);
233 function To_PTR is
234 new Ada.Unchecked_Conversion (short_ptr, c_ptr);
235 function To_PTR is
236 new Ada.Unchecked_Conversion (signed_short_ptr, c_ptr);
237 function To_PTR is
238 new Ada.Unchecked_Conversion (unsigned_short_ptr, c_ptr);
239 function To_PTR is
240 new Ada.Unchecked_Conversion (int_ptr, c_ptr);
241 function To_PTR is
242 new Ada.Unchecked_Conversion (signed_int_ptr, c_ptr);
243 function To_PTR is
244 new Ada.Unchecked_Conversion (unsigned_int_ptr, c_ptr);
245 function To_PTR is
246 new Ada.Unchecked_Conversion (long_ptr, c_ptr);
247 function To_PTR is
248 new Ada.Unchecked_Conversion (signed_long_ptr, c_ptr);
249 function To_PTR is
250 new Ada.Unchecked_Conversion (unsigned_long_ptr, c_ptr);
251 function To_PTR is
252 new Ada.Unchecked_Conversion (float_ptr, c_ptr);
253 function To_PTR is
254 new Ada.Unchecked_Conversion (const_signed_char_ptr, c_ptr);
255 function To_PTR is
256 new Ada.Unchecked_Conversion (const_unsigned_char_ptr, c_ptr);
257 function To_PTR is
258 new Ada.Unchecked_Conversion (const_short_ptr, c_ptr);
259 function To_PTR is
260 new Ada.Unchecked_Conversion (const_signed_short_ptr, c_ptr);
261 function To_PTR is
262 new Ada.Unchecked_Conversion (const_unsigned_short_ptr, c_ptr);
263 function To_PTR is
264 new Ada.Unchecked_Conversion (const_int_ptr, c_ptr);
265 function To_PTR is
266 new Ada.Unchecked_Conversion (const_signed_int_ptr, c_ptr);
267 function To_PTR is
268 new Ada.Unchecked_Conversion (const_unsigned_int_ptr, c_ptr);
269 function To_PTR is
270 new Ada.Unchecked_Conversion (const_long_ptr, c_ptr);
271 function To_PTR is
272 new Ada.Unchecked_Conversion (const_signed_long_ptr, c_ptr);
273 function To_PTR is
274 new Ada.Unchecked_Conversion (const_unsigned_long_ptr, c_ptr);
275 function To_PTR is
276 new Ada.Unchecked_Conversion (const_float_ptr, c_ptr);
277 function To_PTR is
278 new Ada.Unchecked_Conversion (constv_char_ptr, c_ptr);
279 function To_PTR is
280 new Ada.Unchecked_Conversion (constv_signed_char_ptr, c_ptr);
281 function To_PTR is
282 new Ada.Unchecked_Conversion (constv_unsigned_char_ptr, c_ptr);
283 function To_PTR is
284 new Ada.Unchecked_Conversion (constv_short_ptr, c_ptr);
285 function To_PTR is
286 new Ada.Unchecked_Conversion (constv_signed_short_ptr, c_ptr);
287 function To_PTR is
288 new Ada.Unchecked_Conversion (constv_unsigned_short_ptr, c_ptr);
289 function To_PTR is
290 new Ada.Unchecked_Conversion (constv_int_ptr, c_ptr);
291 function To_PTR is
292 new Ada.Unchecked_Conversion (constv_signed_int_ptr, c_ptr);
293 function To_PTR is
294 new Ada.Unchecked_Conversion (constv_unsigned_int_ptr, c_ptr);
295 function To_PTR is
296 new Ada.Unchecked_Conversion (constv_long_ptr, c_ptr);
297 function To_PTR is
298 new Ada.Unchecked_Conversion (constv_signed_long_ptr, c_ptr);
299 function To_PTR is
300 new Ada.Unchecked_Conversion (constv_unsigned_long_ptr, c_ptr);
301 function To_PTR is
302 new Ada.Unchecked_Conversion (constv_float_ptr, c_ptr);
304 end GNAT.Altivec.Low_Level_Interface;