(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
l_fma_main.h
       1  
       2  #ifndef l_fma_main
       3  #define l_fma_main
       4  
       5  #if DEBUG
       6  #include <stdio.h>
       7  #endif
       8  
       9  TYPE m1[32] = {
      10  		1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
      11  	       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
      12  	      };
      13  TYPE m2[32] = {
      14  		2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
      15  	       18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33
      16  	      };
      17  TYPE m3[32] = {
      18  		3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
      19  	       19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34
      20  	      };
      21  TYPE m4[32];
      22  int test_fails = 0;
      23  
      24  void
      25  compare_result(char *title, TYPE *res)
      26  {
      27    int i;
      28    int good = 1;
      29    for (i =0; i < 32; i++)
      30      if (m4[i] != res[i])
      31        {
      32          if (good)
      33            {
      34  #if DEBUG
      35               printf ("!!!! %s miscompare\n", title);
      36  #endif
      37               good = 0;
      38            }
      39  #if DEBUG
      40          printf ("res[%d] = %d, must be %d\n", i, (int)res[i], (int) m4[i]);
      41  #endif
      42        }
      43    if (!good)
      44      test_fails = 1;
      45  }
      46  
      47  static void fma_test ()
      48  {
      49    test_noneg_add_noneg_add (m1, m2, m3, m4, 32);
      50    compare_result ("test0000", res_test0000);
      51  
      52    test_noneg_add_noneg_sub (m1, m2, m3, m4, 32);
      53    compare_result ("test0001", res_test0001);
      54  
      55    test_noneg_add_neg_add (m1, m2, m3, m4, 32);
      56    compare_result ("test0010", res_test0010);
      57  
      58    test_noneg_add_neg_sub (m1, m2, m3, m4, 32);
      59    compare_result ("test0011", res_test0011);
      60  
      61    test_noneg_sub_noneg_add (m1, m2, m3, m4, 32);
      62    compare_result ("test0100", res_test0100);
      63  
      64    test_noneg_sub_noneg_sub (m1, m2, m3, m4, 32);
      65    compare_result ("test0101", res_test0101);
      66  
      67    test_noneg_sub_neg_add (m1, m2, m3, m4, 32);
      68    compare_result ("test0110", res_test0110);
      69  
      70    test_noneg_sub_neg_sub (m1, m2, m3, m4, 32);
      71    compare_result ("test0111", res_test0111);
      72  
      73    test_neg_add_noneg_add (m1, m2, m3, m4, 32);
      74    compare_result ("test1000", res_test1000);
      75  
      76    test_neg_add_noneg_sub (m1, m2, m3, m4, 32);
      77    compare_result ("test1001", res_test1001);
      78  
      79    test_neg_add_neg_add (m1, m2, m3, m4, 32);
      80    compare_result ("test1010", res_test1010);
      81  
      82    test_neg_add_neg_sub (m1, m2, m3, m4, 32);
      83    compare_result ("test1011", res_test1011);
      84  
      85    test_neg_sub_noneg_add (m1, m2, m3, m4, 32);
      86    compare_result ("test1100", res_test1100);
      87  
      88    test_neg_sub_noneg_sub (m1, m2, m3, m4, 32);
      89    compare_result ("test1101", res_test1101);
      90  
      91    test_neg_sub_neg_add (m1, m2, m3, m4, 32);
      92    compare_result ("test1110", res_test1110);
      93  
      94    test_neg_sub_neg_sub (m1, m2, m3, m4, 32);
      95    compare_result ("test1111", res_test1111);
      96  
      97    if (test_fails) abort ();
      98  }
      99  
     100  #endif