コード例 #1
0
ファイル: avx2-vpmaskloadd-2.c プロジェクト: 0day-ci/gcc
void static
avx2_test (void)
{
  int i;
  int m[4] = { mask_v (0), mask_v (1), mask_v (2), mask_v (3) };
  int s[4] = { 1, 2, 3, 4 };
  union128i_d u, mask;
  int e[4] = { 0 };

  mask.x = _mm_loadu_si128 ((__m128i *) m);
  u.x = _mm_maskload_epi32 (s, mask.x);

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

  if (check_union128i_d (u, e))
    abort ();
}
コード例 #2
0
ファイル: avx-vmaskmovpd-256-1.c プロジェクト: 0day-ci/gcc
void static
avx_test (void)
{
  int i;
  long long m[4] = {mask_v(0), mask_v(1), mask_v(2), mask_v(3)};
  double s[4] = {1.1, 2.2, 3.3, 4.4};
  union256d u;
  union256i_q mask;
  double e [4] = {0.0};

  mask.x = _mm256_loadu_si256 ((__m256i *)m);
  u.x = _mm256_maskload_pd (s, mask.x);

  for (i = 0 ; i < 4; i++) 
    e[i] = m[i] ? s[i] : 0;
   
  if (check_union256d (u, e))
    abort ();
}
コード例 #3
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 ();
}
コード例 #4
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 ();
}
コード例 #5
0
ファイル: sse2-maskmovdqu.c プロジェクト: pjump/gcc
void static
TEST (void)
{
    __m128i src, mask;
    char s[16] = { 1,-2,3,-4,5,-6,7,-8,9,-10,11,-12,13,-14,15,-16 };
    char m[16];

    char u[20] = { 0 };
    int i;

    for (i = 0; i < 16; i++)
        m[i] = mask_v (i);

    src = _mm_loadu_si128 ((__m128i *)s);
    mask = _mm_loadu_si128 ((__m128i *)m);

    _mm_maskmoveu_si128 (src, mask, u+3);

    for (i = 0; i < 16; i++)
        if (u[i+3] != (m[i] ? s[i] : 0))
            abort ();
}