Ejemplo n.º 1
0
bool	Interlocked::Data128::operator != (const Data128 & other) const
{
	__m128i var1 = _mm_load_si128((__m128i*)_data);
	__m128i var2 = _mm_load_si128((__m128i*)other._data);
	__m128i result = _mm_cmpeq_epi64(var1, var2);
	result = _mm_and_si128(result, _mm_srli_si128(result, 8));
	return !_mm_cvtsi128_si32(result);
}
Ejemplo n.º 2
0
/*
 * mixed endian increment, low 64bits stored in hi word to be compatible
 * with _icm's BSWAP.
 */
static inline __m128i
nextc(__m128i x)
{
	const __m128i ONE = _mm_setr_epi32(0, 0, 1, 0);
	const __m128i ZERO = _mm_setzero_si128();

	x = _mm_add_epi64(x, ONE);
	__m128i t = _mm_cmpeq_epi64(x, ZERO);
	t = _mm_unpackhi_epi64(t, ZERO);
	x = _mm_sub_epi64(x, t);

	return x;
}
Ejemplo n.º 3
0
__m128i
foo (const __m128i x, const __m128i y)
{
  return _mm_cmpeq_epi64 (x, y);
}
Ejemplo n.º 4
0
__m128i test_mm_cmpeq_epi64(__m128i A, __m128i B) {
  // CHECK-LABEL: test_mm_cmpeq_epi64
  // CHECK: icmp eq <2 x i64>
  // CHECK-ASM: pcmpeqq %xmm{{.*}}, %xmm{{.*}}
  return _mm_cmpeq_epi64(A, B);
}
Ejemplo n.º 5
0
__m128i test_mm_cmpeq_epi64(__m128i A, __m128i B) {
  // CHECK-LABEL: test_mm_cmpeq_epi64
  // CHECK: icmp eq <2 x i64>
  // CHECK: sext <2 x i1> %{{.*}} to <2 x i64>
  return _mm_cmpeq_epi64(A, B);
}