summaryrefslogtreecommitdiffstats
path: root/gcc/testsuite/gcc.target/tic6x/builtins/sarith1.c
blob: 4ea35700377f0dd155888dc27553426413a04f0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <c6x_intrinsics.h>

extern void abort (void);

int a1 = 0x50000000;
int b1 = 0xc0000000;
int c1 = 0x40000000;
int a2 = 0xd0000000;
int b2 = 0x20000000;
int c2 = 0x90000000;
int d = 0x80000000;

int main ()
{
  if (_sadd (a1, b1) != 0x10000000)
    abort ();
  if (_sadd (a2, b2) != 0xf0000000)
    abort ();
  if (_sadd (a1, c1) != 0x7fffffff)
    abort ();
  if (_sadd (a2, c2) != 0x80000000)
    abort ();

  if (_ssub (a1, b1) != 0x7fffffff)
    abort ();
  if (_ssub (a2, b2) != 0xb0000000)
    abort ();
  if (_ssub (b1, a1) != 0x80000000)
    abort ();
  if (_ssub (b2, a2) != 0x50000000)
    abort ();

  if (_abs (a1) != 0x50000000)
    abort ();
  if (_abs (b1) != 0x40000000)
    abort ();
  if (_abs (d) != 0x7fffffff)
    abort ();

  if (_sshl (a1, 1) != 0x7fffffff
      || _sshl (b2, 1) != 0x40000000
      || _sshl (a2, 1) != 0xa0000000
      || _sshl (a2, 4) != 0x80000000)
    abort ();

  return 0;
}
OpenPOWER on IntegriCloud