static void
sse5_test (void)
{
  int i;
  
  /* Check haddbw */
  init_sbyte ();
  
  for (i = 0; i < NUM; i++)
    dst.x[i] = _mm_haddw_epi8 (src1.x[i]);
  
  if (check_sbyte2word())
  abort ();
  
  /* Check haddbd */
  for (i = 0; i < (NUM ); i++)
    dst.x[i] = _mm_haddd_epi8 (src1.x[i]);
  
  if (check_sbyte2dword())
    abort (); 
  
  /* Check haddbq */
  for (i = 0; i < NUM; i++)
    dst.x[i] = _mm_haddq_epi8 (src1.x[i]);
  
  if (check_sbyte2qword())
    abort ();

  /* Check haddwd */
  init_sword ();

  for (i = 0; i < (NUM ); i++)
    dst.x[i] = _mm_haddd_epi16 (src1.x[i]);
  
  if (check_sword2dword())
    abort (); 
   
  /* Check haddbwq */
 
  for (i = 0; i < NUM; i++)
    dst.x[i] = _mm_haddq_epi16 (src1.x[i]);
  
  if (check_sword2qword())
    abort ();
 
  /* Check haddq */
  init_sdword ();

    for (i = 0; i < NUM; i++)
    dst.x[i] = _mm_haddq_epi32 (src1.x[i]);
  
  if (check_dword2qword())
    abort ();
}
Beispiel #2
0
__m128i test_mm_haddq_epi16(__m128i a) {
  // CHECK-LABEL: test_mm_haddq_epi16
  // CHECK: call <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16> %{{.*}})
  return _mm_haddq_epi16(a);
}
Beispiel #3
0
__m128i test_mm_haddq_epi16(__m128i a) {
  // CHECK: @llvm.x86.xop.vphaddwq
  // CHECK-ASM: vphaddwq %xmm{{.*}}, %xmm{{.*}}
  return _mm_haddq_epi16(a);
}
Beispiel #4
0
__m128i test_mm_haddq_epi16(__m128i a) {
  // CHECK-LABEL: test_mm_haddq_epi16
  // CHECK: @llvm.x86.xop.vphaddwq
  return _mm_haddq_epi16(a);
}