(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
sse4_1-roundpd.c
       1  /* { dg-do run } */
       2  /* { dg-require-effective-target vsx_hw } */
       3  /* { dg-options "-O2 -mvsx" } */
       4  
       5  #define NO_WARN_X86_INTRINSICS 1
       6  #include <smmintrin.h>
       7  
       8  #define VEC_T __m128d
       9  #define FP_T double
      10  
      11  #define ROUND_INTRIN(x, ignored, mode) _mm_round_pd (x, mode)
      12  
      13  #include "sse4_1-round-data.h"
      14  
      15  struct data2 data[] = {
      16    { .value1 = { .f = {  0.00,  0.25 } } },
      17    { .value1 = { .f = {  0.50,  0.75 } } },
      18  
      19    { .value1 = { .f = {  0x1.ffffffffffffcp+50,  0x1.ffffffffffffdp+50 } } },
      20    { .value1 = { .f = {  0x1.ffffffffffffep+50,  0x1.fffffffffffffp+50 } } },
      21    { .value1 = { .f = {  0x1.0000000000000p+51,  0x1.0000000000001p+51 } } },
      22    { .value1 = { .f = {  0x1.0000000000002p+51,  0x1.0000000000003p+51 } } },
      23  
      24    { .value1 = { .f = {  0x1.ffffffffffffep+51,  0x1.fffffffffffffp+51 } } },
      25    { .value1 = { .f = {  0x1.0000000000000p+52,  0x1.0000000000001p+52 } } },
      26  
      27    { .value1 = { .f = { -0x1.0000000000001p+52, -0x1.0000000000000p+52 } } },
      28    { .value1 = { .f = { -0x1.fffffffffffffp+51, -0x1.ffffffffffffep+51 } } },
      29  
      30    { .value1 = { .f = { -0x1.0000000000004p+51, -0x1.0000000000002p+51 } } },
      31    { .value1 = { .f = { -0x1.0000000000001p+51, -0x1.0000000000000p+51 } } },
      32    { .value1 = { .f = { -0x1.ffffffffffffcp+50, -0x1.ffffffffffffep+50 } } },
      33    { .value1 = { .f = { -0x1.ffffffffffffdp+50, -0x1.ffffffffffffcp+50 } } },
      34  
      35    { .value1 = { .f = { -1.00, -0.75 } } },
      36    { .value1 = { .f = { -0.50, -0.25 } } }
      37  };
      38  
      39  union value answers_NEAREST_INT[] = {
      40    { .f = {  0.00,  0.00 } },
      41    { .f = {  0.00,  1.00 } },
      42  
      43    { .f = {  0x1.ffffffffffffcp+50,  0x1.ffffffffffffcp+50 } },
      44    { .f = {  0x1.0000000000000p+51,  0x1.0000000000000p+51 } },
      45    { .f = {  0x1.0000000000000p+51,  0x1.0000000000000p+51 } },
      46    { .f = {  0x1.0000000000002p+51,  0x1.0000000000004p+51 } },
      47  
      48    { .f = {  0x1.ffffffffffffep+51,  0x1.0000000000000p+52 } },
      49    { .f = {  0x1.0000000000000p+52,  0x1.0000000000001p+52 } },
      50  
      51    { .f = { -0x1.0000000000001p+52, -0x1.0000000000000p+52 } },
      52    { .f = { -0x1.0000000000000p+52, -0x1.ffffffffffffep+51 } },
      53  
      54    { .f = { -0x1.0000000000004p+51, -0x1.0000000000002p+51 } },
      55    { .f = { -0x1.0000000000000p+51, -0x1.0000000000000p+51 } },
      56    { .f = { -0x1.ffffffffffffcp+50, -0x1.0000000000000p+51 } },
      57    { .f = { -0x1.ffffffffffffcp+50, -0x1.ffffffffffffcp+50 } },
      58  
      59    { .f = { -1.00, -1.00 } },
      60    { .f = {  0.00,  0.00 } }
      61  };
      62  
      63  union value answers_NEG_INF[] = {
      64    { .f = {  0.00,  0.00 } },
      65    { .f = {  0.00,  0.00 } },
      66  
      67    { .f = {  0x1.ffffffffffffcp+50,  0x1.ffffffffffffcp+50 } },
      68    { .f = {  0x1.ffffffffffffcp+50,  0x1.ffffffffffffcp+50 } },
      69    { .f = {  0x1.0000000000000p+51,  0x1.0000000000000p+51 } },
      70    { .f = {  0x1.0000000000002p+51,  0x1.0000000000002p+51 } },
      71  
      72    { .f = {  0x1.ffffffffffffep+51,  0x1.ffffffffffffep+51 } },
      73    { .f = {  0x1.0000000000000p+52,  0x1.0000000000001p+52 } },
      74  
      75    { .f = { -0x1.0000000000001p+52, -0x1.0000000000000p+52 } },
      76    { .f = { -0x1.0000000000000p+52, -0x1.ffffffffffffep+51 } },
      77  
      78    { .f = { -0x1.0000000000004p+51, -0x1.0000000000002p+51 } },
      79    { .f = { -0x1.0000000000002p+51, -0x1.0000000000000p+51 } },
      80    { .f = { -0x1.ffffffffffffcp+50, -0x1.0000000000000p+51 } },
      81    { .f = { -0x1.0000000000000p+51, -0x1.ffffffffffffcp+50 } },
      82  
      83    { .f = { -1.00, -1.00 } },
      84    { .f = { -1.00, -1.00 } }
      85  };
      86  
      87  union value answers_POS_INF[] = {
      88    { .f = {  0.00,  1.00 } },
      89    { .f = {  1.00,  1.00 } },
      90  
      91    { .f = {  0x1.ffffffffffffcp+50,  0x1.0000000000000p+51 } },
      92    { .f = {  0x1.0000000000000p+51,  0x1.0000000000000p+51 } },
      93    { .f = {  0x1.0000000000000p+51,  0x1.0000000000002p+51 } },
      94    { .f = {  0x1.0000000000002p+51,  0x1.0000000000004p+51 } },
      95  
      96    { .f = {  0x1.ffffffffffffep+51,  0x1.0000000000000p+52 } },
      97    { .f = {  0x1.0000000000000p+52,  0x1.0000000000001p+52 } },
      98  
      99    { .f = { -0x1.0000000000001p+52, -0x1.0000000000000p+52 } },
     100    { .f = { -0x1.ffffffffffffep+51, -0x1.ffffffffffffep+51 } },
     101  
     102    { .f = { -0x1.0000000000004p+51, -0x1.0000000000002p+51 } },
     103    { .f = { -0x1.0000000000000p+51, -0x1.0000000000000p+51 } },
     104    { .f = { -0x1.ffffffffffffcp+50, -0x1.ffffffffffffcp+50 } },
     105    { .f = { -0x1.ffffffffffffcp+50, -0x1.ffffffffffffcp+50 } },
     106  
     107    { .f = { -1.00,  0.00 } },
     108    { .f = {  0.00,  0.00 } }
     109  };
     110  
     111  union value answers_ZERO[] = {
     112    { .f = {  0.00,  0.00 } },
     113    { .f = {  0.00,  0.00 } },
     114  
     115    { .f = {  0x1.ffffffffffffcp+50,  0x1.ffffffffffffcp+50 } },
     116    { .f = {  0x1.ffffffffffffcp+50,  0x1.ffffffffffffcp+50 } },
     117    { .f = {  0x1.0000000000000p+51,  0x1.0000000000000p+51 } },
     118    { .f = {  0x1.0000000000002p+51,  0x1.0000000000002p+51 } },
     119  
     120    { .f = {  0x1.ffffffffffffep+51,  0x1.ffffffffffffep+51 } },
     121    { .f = {  0x1.0000000000000p+52,  0x1.0000000000001p+52 } },
     122  
     123    { .f = { -0x1.0000000000001p+52, -0x1.0000000000000p+52 } },
     124    { .f = { -0x1.ffffffffffffep+51, -0x1.ffffffffffffep+51 } },
     125  
     126    { .f = { -0x1.0000000000004p+51, -0x1.0000000000002p+51 } },
     127    { .f = { -0x1.0000000000000p+51, -0x1.0000000000000p+51 } },
     128    { .f = { -0x1.ffffffffffffcp+50, -0x1.ffffffffffffcp+50 } },
     129    { .f = { -0x1.ffffffffffffcp+50, -0x1.ffffffffffffcp+50 } },
     130  
     131    { .f = { -1.00,  0.00 } },
     132    { .f = {  0.00,  0.00 } }
     133  };
     134  
     135  union value *answers[] = {
     136    answers_NEAREST_INT,
     137    answers_NEG_INF,
     138    answers_POS_INF,
     139    answers_ZERO,
     140    0 /* CUR_DIRECTION answers depend on current rounding mode.  */
     141  };
     142  
     143  #include "sse4_1-round3.h"