blob: 5e52284463ccf3a03f570d0db768ea7d20b2cc08 [file] [log] [blame]
/* { dg-require-effective-target ti_c64xp } */
#include <c6x_intrinsics.h>
extern void abort (void);
typedef short __v2hi __attribute ((vector_size(4)));
int a = 0x5000d000;
int b = 0xc0002000;
int c = 0x40009000;
int d = 0x80000001;
int e = 0x50002001;
int f = 0xc0008000;
int a4 = 0x50d03080;
int b4 = 0xc020f080;
int c4 = 0xc0202080;
int d4 = 0x50003080;
int e4 = 0xc0202180;
int main ()
{
int v;
long long vll;
v = _add2 (a, b);
if (v != 0x1000f000)
abort ();
v = _sub2 (a, b);
if (v != 0x9000b000)
abort ();
v = _sub2 (b, a);
if (v != 0x70005000)
abort ();
v = _add4 (a4, b4);
if (v != 0x10f02000)
abort ();
v = _sub4 (a4, b4);
if (v != 0x90b04000)
abort ();
v = _saddu4 (a4, c4);
if (v != 0xfff050ff)
abort ();
v = _sadd2 (a, b);
if (v != 0x1000f000)
abort ();
v = _sadd2 (a, c);
if (v != 0x7fff8000)
abort ();
v = _ssub2 (a, b);
if (v != 0x7fffb000)
abort ();
v = _ssub2 (b, a);
if (v != 0x80005000)
abort ();
vll = _smpy2ll (a, b);
if (vll != 0xd8000000f4000000ll)
abort ();
vll = _smpy2ll (d, d);
if (vll != 0x7fffffff00000002ll)
abort ();
v = _avg2 (b, e);
if (v != 0x08002001)
abort ();
v = _avgu4 (d4, e4);
if (v != 0x88102980)
abort ();
v = _abs2 (a);
if (v != 0x50003000)
abort ();
v = _abs2 (f);
if (v != 0x40007fff)
abort ();
return 0;
}