(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
vect.c
       1  
       2  /* { dg-do run } */
       3  /* { dg-options "-O3" } */
       4  
       5  #include "vect.x"
       6  
       7  extern void abort (void);
       8  
       9  void set_vector (int *a, int n)
      10  {
      11    int i;
      12    for (i=0; i<16; i++)
      13      a[i] = n;
      14  }
      15  
      16  void check_vector (pRINT c, pRINT result, char *str)
      17  {
      18    int i;
      19    for (i=0; i<16 ; i++)
      20      if (c[i] != result[i])
      21        abort ();
      22  }
      23  
      24  #define TEST(func, sign) set_vector (sign##c, 0); \
      25  		         func (sign##a, sign##b, sign##c);    \
      26  		         check_vector (sign##c, func##_vector, #func);
      27  
      28  
      29  #define TESTV(func, sign)  \
      30                      if (func (sign##a) != func##_value) \
      31  		      abort ();
      32  
      33  #define TESTVLL(func, sign)  \
      34                      if (func (ll##sign##a) != func##_value) \
      35  		      abort ();
      36  		          
      37  int main (void)
      38  {
      39    int sa[16];
      40    int sb[16];
      41    int sc[16];
      42    unsigned int ua[16];
      43    unsigned int ub[16];
      44    unsigned int uc[16];
      45    long long llsa[16];
      46    unsigned long long llua[16];
      47    int i;
      48  
      49    /* Table of standard values to compare against.  */
      50    unsigned int test_bic_vector[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
      51    unsigned int test_orn_vector[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
      52    int mla_vector[] = {0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225};
      53    int mls_vector[] = {0, -1, -4, -9, -16, -25, -36, -49, -64, -81, -100, -121, -144, -169, -196, -225};
      54    int smax_vector[] = {0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15};
      55    int smin_vector[] = {0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15};
      56    unsigned int umax_vector[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
      57    unsigned int umin_vector[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
      58    int sabd_vector[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
      59    int saba_vector[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
      60    int reduce_smax_value = 0;
      61    int reduce_smin_value = -15;
      62    unsigned int reduce_umax_value = 15;
      63    unsigned int reduce_umin_value = 0;
      64    unsigned int reduce_add_u32_value = 120;
      65    int reduce_add_s32_value = -120;
      66    long long reduce_add_s64_value = -120;
      67    unsigned long long reduce_add_u64_value = 120;
      68  
      69    /* Set up input vectors.  */
      70    for (i=0; i < 16; i++)
      71      {
      72        sa[i] = sb[i] = -i;
      73        llsa[i] = (long long)-i;
      74        ua[i] = ub[i] = i;
      75        llua[i] = (unsigned long long)i;
      76      }
      77  
      78    TEST (test_bic, s);
      79    TEST (test_orn, s);
      80    TEST (mla, s);
      81    TEST (mls, s);
      82    TEST (smax, s);
      83    TEST (smin, s);
      84    TEST (umax, u);
      85    TEST (umin, u);
      86    TEST (sabd, s);
      87    TEST (saba, s);
      88    TESTV (reduce_smax, s);
      89    TESTV (reduce_smin, s);
      90    TESTV (reduce_umax, u);
      91    TESTV (reduce_umin, u);
      92    TESTV (reduce_add_u32, u);
      93    TESTV (reduce_add_s32, s);
      94    TESTVLL (reduce_add_u64, u);
      95    TESTVLL (reduce_add_s64, s);
      96    return 0;
      97  }