コード例 #1
0
ファイル: sse-movss-2.c プロジェクト: 0day-ci/gcc
static void
TEST (void)
{
  union128 u;
  float d[1];
  float e[1];
 
  u.x = _mm_set_ps (2134.3343,1234.635654, 1.2234, 876.8976);

  test (d, u.x);

  e[0] = u.a[0];

  if (checkVf (d, e, 1))
    abort ();
}
コード例 #2
0
void static
avx512er_test (void)
{
  union128 src, res;
  float res_ref[4];
  int i;
  
  for (i = 0; i < 4; i++)
    {
      src.a[i] = 179.345 - 6.5645 * i;
      res_ref[i] = src.a[i];
    }

  res_ref[0] = 1.0 / src.a[0];

  res.x = _mm_rsqrt28_round_ss (src.x, src.x, _MM_FROUND_NO_EXC);

  if (checkVf (res.a, res_ref, 4))
    abort ();
}
コード例 #3
0
void static
avx_test (void)
{
    int i;
    int m[8] = {mask_v(0), mask_v(1), mask_v(2), mask_v(3), mask_v(4), mask_v(5), mask_v(6), mask_v(7)};
    float s[8] = {1,2,3,4,5,6,7,8};
    union256 src, mask;
    float e [8] = {0.0};
    float d [8] = {0.0};

    src.x = _mm256_loadu_ps (s);
    mask.x = _mm256_loadu_ps ((float *)m);
    _mm256_maskstore_ps (d, mask.x, src.x);

    for (i = 0 ; i < 8; i++)
        e[i] = m[i] ? s[i] : 0;

    if (checkVf (d, e, 8))
        abort ();
}
コード例 #4
0
ファイル: avx-vmaskmovps-2.c プロジェクト: 0day-ci/gcc
void static
avx_test (void)
{
  int i;
  int m[4] = {mask_v(0), mask_v(1), mask_v(2), mask_v(3)};
  float s[4] = {1,2,3,4};
  union128 src;
  union128i_d mask;
  float e[4] = {0.0};
  float d[4] = {0.0};

  src.x = _mm_loadu_ps (s);
  mask.x = _mm_loadu_si128 ((__m128i *)m);
  _mm_maskstore_ps (d, mask.x, src.x);

  for (i = 0 ; i < 4; i++) 
    e[i] = m[i] ? s[i] : 0;
   
  if (checkVf (d, e, 4))
    abort ();
}