(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
float128-cmp2-runnable.c
       1  /* { dg-do run } */
       2  /* { dg-require-effective-target ppc_float128_sw } */
       3  /* { dg-require-effective-target p9vector_hw } */
       4  /* { dg-options "-O2 -mdejagnu-cpu=power9 " } */
       5  
       6  #define NAN_Q __builtin_nanq ("")
       7  #define SNAN_Q __builtin_nansq ("")
       8  #define NAN __builtin_nan ("")
       9  #define SNAN __builtin_nans ("")
      10  
      11  #ifdef DEBUG
      12  #include <stdio.h>
      13  #endif
      14  
      15  void abort (void);
      16  
      17  int main(void)
      18  {
      19    int result;
      20    double a_dble, b_dble;
      21    __ieee128 a_ieee128, b_ieee128;
      22    
      23    a_dble = 3.10;
      24    b_dble = 3.10;
      25    
      26    if (__builtin_vec_scalar_cmp_exp_eq(a_dble, b_dble))
      27  #ifdef DEBUG
      28      printf("Double EQ result is true, expecting true\n");
      29  #else
      30      ;
      31  #endif
      32    else
      33  #ifdef DEBUG
      34      printf("ERROR: Double EQ result is false, expecting true\n");
      35  #else
      36      abort();
      37  #endif
      38  
      39    a_dble = 3.10;
      40    b_dble = 31.0;
      41    
      42    if (__builtin_vec_scalar_cmp_exp_eq(a_dble, b_dble))
      43  #ifdef DEBUG
      44      printf("ERROR: Double EQ result is true, expecting false\n");
      45  #else
      46      abort();
      47  #endif
      48    else
      49  #ifdef DEBUG
      50      printf("Double EQ result is false, expecting false\n");
      51  #else
      52      ;
      53  #endif
      54  
      55    a_dble = 3.10;
      56    b_dble = 3.10;
      57  
      58    if (__builtin_vec_scalar_cmp_exp_lt(a_dble, b_dble))
      59  #ifdef DEBUG
      60      printf("ERROR: Double LT result is true, expecting false\n");
      61  #else
      62      abort();
      63  #endif
      64    else
      65  #ifdef DEBUG
      66      printf("Double LT result is false, expecting false\n");
      67  #else
      68      ;
      69  #endif
      70  
      71    a_dble = 0.31;
      72    b_dble = 3.10;
      73    
      74    if (__builtin_vec_scalar_cmp_exp_lt(a_dble, b_dble))
      75  #ifdef DEBUG
      76      printf("Double LT result is true, expecting true\n");
      77  #else
      78      ;
      79  #endif
      80    else
      81  #ifdef DEBUG
      82      printf("ERROR: Double LT result is false, expecting true\n");
      83  #else
      84      abort();
      85  #endif
      86  
      87    a_dble = 0.31;
      88    b_dble = 3.10;
      89  
      90    if (__builtin_vec_scalar_cmp_exp_gt(a_dble, b_dble))
      91  #ifdef DEBUG
      92      printf("ERROR: Double GT result is true, expecting false\n");
      93  #else
      94      abort();
      95  #endif
      96    else
      97  #ifdef DEBUG
      98      printf("Double GT result is false, expecting false\n");
      99  #else
     100      ;
     101  #endif
     102  
     103    a_dble = 3.10;
     104    b_dble = 0.31;
     105    
     106    if (__builtin_vec_scalar_cmp_exp_gt(a_dble, b_dble))
     107  #ifdef DEBUG
     108      printf("Double GT result is true, expecting true\n");
     109  #else
     110      ;
     111  #endif
     112    else
     113  #ifdef DEBUG
     114      printf("ERROR: Double GT result is false, expecting true\n");
     115  #else
     116      abort();
     117  #endif
     118  
     119    a_dble = NAN;
     120    b_dble = NAN;
     121    
     122    if (__builtin_vec_scalar_cmp_exp_unordered(a_dble, b_dble))
     123  #ifdef DEBUG
     124      printf("Double unordered result is true, expecting true\n");
     125  #else
     126      ;
     127  #endif
     128    else
     129  #ifdef DEBUG
     130      printf("ERROR: Double unordered result is false, expecting true\n");
     131  #else
     132      abort();
     133  #endif
     134  
     135    a_dble = 3.10;
     136    b_dble = 3.10;
     137    
     138    if (__builtin_vec_scalar_cmp_exp_unordered(a_dble, b_dble))
     139  #ifdef DEBUG
     140      printf("ERROR: Double unordered result is true, expecting false\n");
     141  #else
     142      abort();
     143  #endif
     144    else
     145  #ifdef DEBUG
     146      printf("Double unordered result is false, expecting false\n");
     147  #else
     148      ;
     149  #endif
     150      
     151    /* IEEE 128 */
     152    a_ieee128 = 3.10;
     153    b_ieee128 = 3.10;
     154    
     155    if (__builtin_vec_scalar_cmp_exp_eq(a_ieee128, b_ieee128))
     156  #ifdef DEBUG
     157      printf("IEEE 128 EQ result is true, expecting true\n");
     158  #else
     159      ;
     160  #endif
     161    else
     162  #ifdef DEBUG
     163      printf("ERROR: IEEE 128 EQ result is false, expecting true\n");
     164  #else
     165      abort();
     166  #endif
     167  
     168    a_ieee128 = 3.10;
     169    b_ieee128 = 31.0;
     170    
     171    if (__builtin_vec_scalar_cmp_exp_eq(a_ieee128, b_ieee128))
     172  #ifdef DEBUG
     173      printf("ERROR: IEEE 128 EQ result is true, expecting false\n");
     174  #else
     175      abort();
     176  #endif
     177    else
     178  #ifdef DEBUG
     179      printf("IEEE 128 EQ result is false, expecting false\n");
     180  #else
     181      ;
     182  #endif
     183  
     184    a_ieee128 = 3.10;
     185    b_ieee128 = 3.10;
     186  
     187    if (__builtin_vec_scalar_cmp_exp_lt(a_ieee128, b_ieee128))
     188  #ifdef DEBUG
     189      printf("ERROR: IEEE 128 LT result is true, expecting false\n");
     190  #else
     191      abort();
     192  #endif
     193    else
     194  #ifdef DEBUG
     195      printf("IEEE 128 LT result is false, expecting false\n");
     196  #else
     197      ;
     198  #endif
     199  
     200    a_ieee128 = 0.31;
     201    b_ieee128 = 3.10;
     202    
     203    if (__builtin_vec_scalar_cmp_exp_lt(a_ieee128, b_ieee128))
     204  #ifdef DEBUG
     205      printf("IEEE 128 LT result is true, expecting true\n");
     206  #else
     207      ;
     208  #endif
     209    else
     210  #ifdef DEBUG
     211      printf("ERROR: IEEE 128 LT result is false, expecting true\n");
     212  #else
     213      abort();
     214  #endif
     215  
     216    a_ieee128 = 0.31;
     217    b_ieee128 = 3.10;
     218  
     219    if (__builtin_vec_scalar_cmp_exp_gt(a_ieee128, b_ieee128))
     220  #ifdef DEBUG
     221      printf("ERROR: IEEE 128 GT result is true, expecting false\n");
     222  #else
     223      abort();
     224  #endif
     225    else
     226  #ifdef DEBUG
     227      printf("IEEE 128 GT result is false, expecting false\n");
     228  #else
     229      ;
     230  #endif
     231  
     232    a_ieee128 = 3.10;
     233    b_ieee128 = 0.31;
     234    
     235    if (__builtin_vec_scalar_cmp_exp_gt(a_ieee128, b_ieee128))
     236  #ifdef DEBUG
     237      printf("IEEE 128 GT result is true, expecting true\n");
     238  #else
     239      ;
     240  #endif
     241    else
     242  #ifdef DEBUG
     243      printf("ERROR: IEEE 128 GT result is false, expecting true\n");
     244  #else
     245      abort();
     246  #endif
     247  
     248    a_ieee128 = NAN_Q;
     249    b_ieee128 = NAN_Q;
     250    
     251    if (__builtin_vec_scalar_cmp_exp_unordered(a_ieee128, b_ieee128))
     252  #ifdef DEBUG
     253      printf("IEEE unordered result is true, expecting true\n");
     254  #else
     255      ;
     256  #endif
     257    else
     258  #ifdef DEBUG
     259      printf("ERROR: IEEE unordered result is false, expecting true\n");
     260  #else
     261      abort();
     262  #endif
     263  
     264    a_ieee128 = 3.10;
     265    b_ieee128 = 3.10;
     266    
     267    if (__builtin_vec_scalar_cmp_exp_unordered(a_ieee128, b_ieee128))
     268  #ifdef DEBUG
     269      printf("ERROR: IEEE unordered result is true, expecting false\n");
     270  #else
     271      abort();
     272  #endif
     273    else
     274  #ifdef DEBUG
     275      printf("IEEE unordered result is false, expecting false\n");
     276  #else
     277      ;
     278  #endif
     279  }