(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
bswap-1.c
       1  /* Test __builtin_bswap64 . */
       2  
       3  unsigned long long g(unsigned long long a) __attribute__((noinline));
       4  unsigned long long g(unsigned long long a)
       5  {
       6    return __builtin_bswap64(a);
       7  }
       8  
       9  
      10  unsigned long long f(unsigned long long c)
      11  {
      12    union {
      13      unsigned long long a;
      14      unsigned char b[8];
      15    } a, b;
      16    a.a = c;
      17    b.b[0] = a.b[7];
      18    b.b[1] = a.b[6];
      19    b.b[2] = a.b[5];
      20    b.b[3] = a.b[4];
      21    b.b[4] = a.b[3];
      22    b.b[5] = a.b[2];
      23    b.b[6] = a.b[1];
      24    b.b[7] = a.b[0];
      25    return b.a;
      26  }
      27  
      28  int main(void)
      29  {
      30    unsigned long long i;
      31    /* The rest of the testcase assumes 8 byte long long. */
      32    if (sizeof(i) != sizeof(char)*8)
      33      return 0;
      34    if (f(0x12) != g(0x12))
      35      __builtin_abort();
      36    if (f(0x1234) != g(0x1234))
      37      __builtin_abort();
      38    if (f(0x123456) != g(0x123456))
      39      __builtin_abort();
      40    if (f(0x12345678ull) != g(0x12345678ull))
      41      __builtin_abort();
      42    if (f(0x1234567890ull) != g(0x1234567890ull))
      43      __builtin_abort();
      44    if (f(0x123456789012ull) != g(0x123456789012ull))
      45      __builtin_abort();
      46    if (f(0x12345678901234ull) != g(0x12345678901234ull))
      47      __builtin_abort();
      48    if (f(0x1234567890123456ull) != g(0x1234567890123456ull))
      49      __builtin_abort();
      50    return 0;
      51  }