URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [vector-shift2.c] - Rev 849
Go to most recent revision | Compare with Previous | Blame | View Log
#define vector(elcount, type) \ __attribute__((vector_size((elcount)*sizeof(type)))) type #define vidx(type, vec, idx) (*((type *) &(vec) + idx)) #define uint unsigned int int main (int argc, char *argv[]) { vector(4, uint) vuint = { 1, 2, 3, 4}; vector(4, int) vint0 = { 1, 1, 1, 1}; vector(4, int) vint1 = {-1, -1, -1, -1}; vector(4, int) i1, i2, i3; vector(4, uint) u1, u2, u3; i1 = vint1<< vint0; if (vidx(int, i1, 0) != ((int)-1 << (int)1)) __builtin_abort (); if (vidx(int, i1, 1) != ((int)-1 << (int)1)) __builtin_abort (); if (vidx(int, i1, 2) != ((int)-1 << (int)1)) __builtin_abort (); if (vidx(int, i1, 3) != ((int)-1 << (int)1)) __builtin_abort (); u1 = vuint << vint0; if (vidx(int, u1, 0) != ((uint)1 << (int)1)) __builtin_abort (); if (vidx(int, u1, 1) != ((uint)2 << (int)1)) __builtin_abort (); if (vidx(int, u1, 2) != ((uint)3 << (int)1)) __builtin_abort (); if (vidx(int, u1, 3) != ((uint)4 << (int)1)) __builtin_abort (); i2 = vint1 >> vuint; if (vidx(int, i2, 0) != ((int)-1 >> (uint)1)) __builtin_abort (); if (vidx(int, i2, 1) != ((int)-1 >> (uint)2)) __builtin_abort (); if (vidx(int, i2, 2) != ((int)-1 >> (uint)3)) __builtin_abort (); if (vidx(int, i2, 3) != ((int)-1 >> (uint)4)) __builtin_abort (); vint1 >>= vuint; vuint <<= vint0; vuint <<= vint1; return 0; }
Go to most recent revision | Compare with Previous | Blame | View Log