gcc-bug-i.c: Add little endian variant.

2013-10-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.dg/vmx/gcc-bug-i.c: Add little endian variant.
	* gcc.dg/vmx/eg-5.c: Likewise.

From-SVN: r204138
This commit is contained in:
Bill Schmidt 2013-10-28 21:19:19 +00:00 committed by William Schmidt
parent ff4c81cccb
commit 52898b94fa
3 changed files with 27 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2013-10-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.dg/vmx/gcc-bug-i.c: Add little endian variant.
* gcc.dg/vmx/eg-5.c: Likewise.
2013-10-28 Claudiu Zissulescu <claziss@synopsys.com>
Joern Rennecke <joern.rennecke@embecosm.com>

View file

@ -7,10 +7,17 @@ matvecmul4 (vector float c0, vector float c1, vector float c2,
/* Set result to a vector of f32 0's */
vector float result = ((vector float){0.,0.,0.,0.});
#ifdef __LITTLE_ENDIAN__
result = vec_madd (c0, vec_splat (v, 3), result);
result = vec_madd (c1, vec_splat (v, 2), result);
result = vec_madd (c2, vec_splat (v, 1), result);
result = vec_madd (c3, vec_splat (v, 0), result);
#else
result = vec_madd (c0, vec_splat (v, 0), result);
result = vec_madd (c1, vec_splat (v, 1), result);
result = vec_madd (c2, vec_splat (v, 2), result);
result = vec_madd (c3, vec_splat (v, 3), result);
#endif
return result;
}

View file

@ -13,12 +13,27 @@
#define DO_INLINE __attribute__ ((always_inline))
#define DONT_INLINE __attribute__ ((noinline))
#ifdef __LITTLE_ENDIAN__
static inline DO_INLINE int inline_me(vector signed short data)
{
union {vector signed short v; signed short s[8];} u;
signed short x;
unsigned char x1, x2;
u.v = data;
x = u.s[7];
x1 = (x >> 8) & 0xff;
x2 = x & 0xff;
return ((x2 << 8) | x1);
}
#else
static inline DO_INLINE int inline_me(vector signed short data)
{
union {vector signed short v; signed short s[8];} u;
u.v = data;
return u.s[7];
}
#endif
static DONT_INLINE int foo(vector signed short data)
{