home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / perl / 5.10.0 / bits / byteswap.ph next >
Encoding:
Text File  |  2009-06-26  |  3.6 KB  |  67 lines

  1. require '_h2ph_pre.ph';
  2.  
  3. no warnings 'redefine';
  4.  
  5. if(!defined (defined(&_BYTESWAP_H) ? &_BYTESWAP_H : undef)  && !defined (defined(&_NETINET_IN_H) ? &_NETINET_IN_H : undef)  && !defined (defined(&_ENDIAN_H) ? &_ENDIAN_H : undef)) {
  6.     die("Never use <bits/byteswap.h> directly; include <byteswap.h> instead.");
  7. }
  8. unless(defined(&_BITS_BYTESWAP_H)) {
  9.     eval 'sub _BITS_BYTESWAP_H () {1;}' unless defined(&_BITS_BYTESWAP_H);
  10.     require 'bits/wordsize.ph';
  11.     eval 'sub __bswap_constant_16 {
  12.         my($x) = @_;
  13.         eval q((((($x) >> 8) & 0xff) | ((($x) & 0xff) << 8)));
  14.     }' unless defined(&__bswap_constant_16);
  15.     if(defined (defined(&__GNUC__) ? &__GNUC__ : undef)  && (defined(&__GNUC__) ? &__GNUC__ : undef) >= 2) {
  16.     eval 'sub __bswap_16 {
  17.         my($x) = @_;
  18.             eval q(\\"(assembly code)\\");
  19.     }' unless defined(&__bswap_16);
  20.     } else {
  21.     eval 'sub __bswap_16 {
  22.         my($x) = @_;
  23.             eval q(( &__extension__ ({  ®ister \'unsigned short int __x\' = ($x);  &__bswap_constant_16 ( &__x); })));
  24.     }' unless defined(&__bswap_16);
  25.     }
  26.     eval 'sub __bswap_constant_32 {
  27.         my($x) = @_;
  28.         eval q((((($x) & 0xff000000) >> 24) | ((($x) & 0xff0000) >> 8) | ((($x) & 0xff00) << 8) | ((($x) & 0xff) << 24)));
  29.     }' unless defined(&__bswap_constant_32);
  30.     if(defined (defined(&__GNUC__) ? &__GNUC__ : undef)  && (defined(&__GNUC__) ? &__GNUC__ : undef) >= 2) {
  31.     if((defined(&__WORDSIZE) ? &__WORDSIZE : undef) == 64|| (defined (defined(&__i486__) ? &__i486__ : undef) || defined (defined(&__pentium__) ? &__pentium__ : undef) || defined (defined(&__pentiumpro__) ? &__pentiumpro__ : undef) || defined (defined(&__pentium4__) ? &__pentium4__ : undef) || defined (defined(&__k8__) ? &__k8__ : undef) || defined (defined(&__athlon__) ? &__athlon__ : undef) || defined (defined(&__k6__) ? &__k6__ : undef) || defined (defined(&__nocona__) ? &__nocona__ : undef) || defined (defined(&__core2__) ? &__core2__ : undef) || defined (defined(&__geode__) ? &__geode__ : undef) || defined (defined(&__amdfam10__) ? &__amdfam10__ : undef))) {
  32.         eval 'sub __bswap_32 {
  33.             my($x) = @_;
  34.             eval q(\\"(assembly code)\\");
  35.         }' unless defined(&__bswap_32);
  36.     } else {
  37.         eval 'sub __bswap_32 {
  38.             my($x) = @_;
  39.             eval q(\\"(assembly code)\\");
  40.         }' unless defined(&__bswap_32);
  41.     }
  42.     } else {
  43.     eval 'sub __bswap_32 {
  44.         my($x) = @_;
  45.             eval q(( &__extension__ ({  ®ister \'unsigned int __x\' = ($x);  &__bswap_constant_32 ( &__x); })));
  46.     }' unless defined(&__bswap_32);
  47.     }
  48.     if(defined (defined(&__GNUC__) ? &__GNUC__ : undef)  && (defined(&__GNUC__) ? &__GNUC__ : undef) >= 2) {
  49.     eval 'sub __bswap_constant_64 {
  50.         my($x) = @_;
  51.             eval q((((($x) & 1.83746864796716e+19) >> 56) | ((($x) & 7.17761190612173e+16) >> 40) | ((($x) & 280375465082880) >> 24) | ((($x) & 1095216660480) >> 8) | ((($x) & 0xff000000) << 8) | ((($x) & 0xff0000) << 24) | ((($x) & 0xff00) << 40) | ((($x) & 0xff) << 56)));
  52.     }' unless defined(&__bswap_constant_64);
  53.     if((defined(&__WORDSIZE) ? &__WORDSIZE : undef) == 64) {
  54.         eval 'sub __bswap_64 {
  55.             my($x) = @_;
  56.             eval q(\\"(assembly code)\\");
  57.         }' unless defined(&__bswap_64);
  58.     } else {
  59.         eval 'sub __bswap_64 {
  60.             my($x) = @_;
  61.             eval q(( &__extension__ ({ \'union union\' {  &__extension__ \'unsigned long long int __ll\'; \'unsigned int __l\'[2]; }  &__w,  &__r;  &if ( &__builtin_constant_p ($x))  ($__r->{__ll}) =  &__bswap_constant_64 ($x);  &else {  ($__w->{__ll}) = ($x);  ($__r->{__l[0]}) =  &__bswap_32 ( ($__w->{__l[1]}));  ($__r->{__l[1]}) =  &__bswap_32 ( ($__w->{__l[0]})); }  ($__r->{__ll}); })));
  62.         }' unless defined(&__bswap_64);
  63.     }
  64.     }
  65. }
  66. 1;
  67.