コード例 #1
0
ファイル: hex_array_simd.hpp プロジェクト: sfegan/calin
inline __m256i avx2_uv_to_ringid(const __m256i u, const __m256i v)
{
  // return static_cast<unsigned>(std::max({std::abs(u), std::abs(v),
  //           std::abs(u+v)}));
  __m256i ringid = _mm256_abs_epi32(u);
  ringid = _mm256_max_epu32(ringid, _mm256_abs_epi32(v));
  ringid = _mm256_max_epu32(ringid, _mm256_abs_epi32(_mm256_add_epi32(u,v)));
  return ringid;
}
コード例 #2
0
ファイル: avx2-vpmaxud-2.c プロジェクト: 0day-ci/gcc
static void
avx2_test (void)
{
  union256i_d s1, s2, res;
  unsigned int res_ref[8];
  int i, j;
  int fail = 0;

  for (i = 0; i < 10; i++)
    {
      for (j = 0; j < 8; j++)
	{
	  s1.a[j] = j * i;
	  s2.a[j] = i + 2000;
	}

      res.x = _mm256_max_epu32 (s1.x, s2.x);

      compute_pmaxud256 ((unsigned *) s1.a, (unsigned *) s2.a,
			 (unsigned *) res_ref);

      fail += check_union256i_d (res, res_ref);
    }

  if (fail != 0)
    abort ();
}
コード例 #3
0
ファイル: avx2-builtins.c プロジェクト: mgranberry/clang
__m256i test_mm256_max_epu32(__m256i a, __m256i b) {
  // CHECK: @llvm.x86.avx2.pmaxu.d
  return _mm256_max_epu32(a, b);
}
コード例 #4
0
__m256i test_mm256_max_epu32(__m256i a, __m256i b) {
  // CHECK-LABEL: test_mm256_max_epu32
  // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i32> [[X:%.*]], [[Y:%.*]]
  // CHECK-NEXT:  select <8 x i1> [[CMP]], <8 x i32> [[X]], <8 x i32> [[Y]]
  return _mm256_max_epu32(a, b);
}