URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 318 |
Rev 338 |
/* { dg-do run } */
|
/* { dg-do run } */
|
/* { dg-require-effective-target avx } */
|
/* { dg-require-effective-target avx } */
|
/* { dg-options "-O2 -mavx" } */
|
/* { dg-options "-O2 -mavx" } */
|
|
|
#include "avx-check.h"
|
#include "avx-check.h"
|
|
|
#ifndef CTRL
|
#ifndef CTRL
|
#define CTRL 2
|
#define CTRL 2
|
#endif
|
#endif
|
|
|
#define mask_v(pos) (((CTRL & (1ULL << (pos))) >> (pos)) << 1)
|
#define mask_v(pos) (((CTRL & (1ULL << (pos))) >> (pos)) << 1)
|
|
|
void static
|
void static
|
avx_test ()
|
avx_test ()
|
{
|
{
|
union128d u, src;
|
union128d u, src;
|
union128i_q ctl;
|
union128i_q ctl;
|
|
|
double s[2] = {9674.67456, 13543.9788};
|
double s[2] = {9674.67456, 13543.9788};
|
long long m[2] = {mask_v(0), mask_v(1)};
|
long long m[2] = {mask_v(0), mask_v(1)};
|
double e[2];
|
double e[2];
|
|
|
src.x = _mm_loadu_pd(s);
|
src.x = _mm_loadu_pd(s);
|
ctl.x = _mm_loadu_si128((__m128i*) m);
|
ctl.x = _mm_loadu_si128((__m128i*) m);
|
u.x = _mm_permutevar_pd(src.x, ctl.x);
|
u.x = _mm_permutevar_pd(src.x, ctl.x);
|
|
|
e[0] = s[((m[0] & 0x02) >> 1)];
|
e[0] = s[((m[0] & 0x02) >> 1)];
|
e[1] = s[((m[1] & 0x02) >> 1)];
|
e[1] = s[((m[1] & 0x02) >> 1)];
|
|
|
if (check_union128d (u, e))
|
if (check_union128d (u, e))
|
abort ();
|
abort ();
|
}
|
}
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.