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