(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
tic6x/
builtins/
arith24.c
       1  /* { dg-require-effective-target ti_c64xp } */
       2  
       3  #include <c6x_intrinsics.h>
       4  
       5  extern void abort (void);
       6  
       7  typedef short  __v2hi __attribute ((vector_size(4)));
       8  
       9  int a = 0x5000d000;
      10  int b = 0xc0002000;
      11  int c = 0x40009000;
      12  int d = 0x80000001;
      13  int e = 0x50002001;
      14  int f = 0xc0008000;
      15  
      16  int a4 = 0x50d03080;
      17  int b4 = 0xc020f080;
      18  int c4 = 0xc0202080;
      19  int d4 = 0x50003080;
      20  int e4 = 0xc0202180;
      21  
      22  int main ()
      23  {
      24    int v;
      25    long long vll;
      26  
      27    v = _add2 (a, b);
      28    if (v != 0x1000f000)
      29      abort ();
      30    v = _sub2 (a, b);
      31    if (v != 0x9000b000)
      32      abort ();
      33    v = _sub2 (b, a);
      34    if (v != 0x70005000)
      35      abort ();
      36  
      37    v = _add4 (a4, b4);
      38    if (v != 0x10f02000)
      39      abort ();
      40    v = _sub4 (a4, b4);
      41    if (v != 0x90b04000)
      42      abort ();
      43    v = _saddu4 (a4, c4);
      44    if (v != 0xfff050ff)
      45      abort ();
      46  
      47    v = _sadd2 (a, b);
      48    if (v != 0x1000f000)
      49      abort ();
      50    v = _sadd2 (a, c);
      51    if (v != 0x7fff8000)
      52      abort ();
      53  
      54    v = _ssub2 (a, b);
      55    if (v != 0x7fffb000)
      56      abort ();
      57    v = _ssub2 (b, a);
      58    if (v != 0x80005000)
      59      abort ();
      60  
      61    vll = _smpy2ll (a, b);
      62    if (vll != 0xd8000000f4000000ll)
      63      abort ();
      64    vll = _smpy2ll (d, d);
      65    if (vll != 0x7fffffff00000002ll)
      66      abort ();
      67  
      68    v = _avg2 (b, e);
      69    if (v != 0x08002001)
      70      abort ();
      71    v = _avgu4 (d4, e4);
      72    if (v != 0x88102980)
      73      abort ();
      74  
      75    v = _abs2 (a);
      76    if (v != 0x50003000)
      77      abort ();
      78    v = _abs2 (f);
      79    if (v != 0x40007fff)
      80      abort ();
      81  
      82    return 0;
      83  }