(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
ieee/
20000320-1.c
       1  #if __INT_MAX__ != 2147483647 || (__LONG_LONG_MAX__ != 9223372036854775807ll && __LONG_MAX__ != 9223372036854775807ll)
       2  int main(void) { exit (0); }
       3  #else
       4  #if __LONG_MAX__ != 9223372036854775807ll
       5  typedef unsigned long long ull;
       6  #else
       7  typedef unsigned long ull;
       8  #endif
       9  typedef unsigned ul;
      10  
      11  union fl {
      12    float	f;
      13    ul l;
      14  } uf;
      15  union dl {
      16    double d;
      17    ull ll;
      18  } ud;
      19  
      20  int failed = 0;
      21  
      22  void c(ull d, ul f)
      23  {
      24    ud.ll = d;
      25    uf.f = (float) ud.d;
      26    if (uf.l != f)
      27      {
      28        failed++;
      29      }
      30  }
      31  
      32  int main()
      33  {
      34    if (sizeof (float) != sizeof (ul)
      35        || sizeof (double) != sizeof (ull))
      36      exit (0);
      37    
      38  #if (defined __arm__ || defined __thumb__) && ! (defined __ARMEB__ || defined __VFP_FP__)
      39    /* The ARM always stores FP numbers in big-wordian format,
      40       even when running in little-byteian mode.  */
      41    c(0x0000000036900000ULL, 0x00000000U);
      42    c(0x0000000136900000ULL, 0x00000001U);
      43    c(0xffffffff369fffffULL, 0x00000001U);
      44    c(0x0000000036A00000ULL, 0x00000001U);
      45    c(0xffffffff36A7ffffULL, 0x00000001U);
      46    c(0x0000000036A80000ULL, 0x00000002U);
      47    c(0xffffffff36AfffffULL, 0x00000002U);
      48    c(0x0000000036b00000ULL, 0x00000002U);
      49    c(0x0000000136b00000ULL, 0x00000002U);
      50    
      51    c(0xdfffffff380fffffULL, 0x007fffffU);
      52    c(0xe0000000380fffffULL, 0x00800000U);
      53    c(0xe0000001380fffffULL, 0x00800000U);
      54    c(0xffffffff380fffffULL, 0x00800000U);
      55    c(0x0000000038100000ULL, 0x00800000U);
      56    c(0x0000000138100000ULL, 0x00800000U);
      57    c(0x1000000038100000ULL, 0x00800000U);
      58    c(0x1000000138100000ULL, 0x00800001U);
      59    c(0x2fffffff38100000ULL, 0x00800001U);
      60    c(0x3000000038100000ULL, 0x00800002U);
      61    c(0x5000000038100000ULL, 0x00800002U);
      62    c(0x5000000138100000ULL, 0x00800003U);
      63  #else
      64    c(0x3690000000000000ULL, 0x00000000U);
      65    c(0x3690000000000001ULL, 0x00000001U);
      66    c(0x369fffffffffffffULL, 0x00000001U);
      67    c(0x36A0000000000000ULL, 0x00000001U);
      68    c(0x36A7ffffffffffffULL, 0x00000001U);
      69    c(0x36A8000000000000ULL, 0x00000002U);
      70    c(0x36AfffffffffffffULL, 0x00000002U);
      71    c(0x36b0000000000000ULL, 0x00000002U);
      72    c(0x36b0000000000001ULL, 0x00000002U);
      73    
      74    c(0x380fffffdfffffffULL, 0x007fffffU);
      75    c(0x380fffffe0000000ULL, 0x00800000U);
      76    c(0x380fffffe0000001ULL, 0x00800000U);
      77    c(0x380fffffffffffffULL, 0x00800000U);
      78    c(0x3810000000000000ULL, 0x00800000U);
      79    c(0x3810000000000001ULL, 0x00800000U);
      80    c(0x3810000010000000ULL, 0x00800000U);
      81    c(0x3810000010000001ULL, 0x00800001U);
      82    c(0x381000002fffffffULL, 0x00800001U);
      83    c(0x3810000030000000ULL, 0x00800002U);
      84    c(0x3810000050000000ULL, 0x00800002U);
      85    c(0x3810000050000001ULL, 0x00800003U);
      86  #endif
      87  
      88    if (failed)
      89      abort ();
      90    else
      91      exit (0);
      92  }
      93  #endif