static long long 
sse4a_test_extrq (long long in)
{
  __m128i v1, v2;
  long long index_length, pad;
  LI v_out;
  index_length = 0x0000000000000810LL; 
  pad = 0x0;
  v1 = _mm_set_epi64x (pad, in);
  v2 = _mm_set_epi64x (pad, index_length); 
  v_out.vec = _mm_extract_si64 (v1, v2);
  return (v_out.i[0]); 
}
예제 #2
0
__m128i test_mm_extract_si64(__m128i x, __m128i y) {
  // CHECK-LABEL: test_mm_extract_si64
  // CHECK: call <2 x i64> @llvm.x86.sse4a.extrq(<2 x i64> %{{[^,]+}}, <16 x i8> %{{[^,]+}})
  return _mm_extract_si64(x, y);
}
예제 #3
0
__m128i __attribute__((__target__("sse4a"))) mm_extract_si64_wrap(__m128i x, __m128i y) {
  return _mm_extract_si64(x, y);
}