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 (); }
__m128i test_mm_haddd_epi16(__m128i a) { // CHECK-LABEL: test_mm_haddd_epi16 // CHECK: call <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16> %{{.*}}) return _mm_haddd_epi16(a); }
__m128i test_mm_haddd_epi16(__m128i a) { // CHECK: @llvm.x86.xop.vphaddwd // CHECK-ASM: vphaddwd %xmm{{.*}}, %xmm{{.*}} return _mm_haddd_epi16(a); }
__m128i test_mm_haddd_epi16(__m128i a) { // CHECK-LABEL: test_mm_haddd_epi16 // CHECK: @llvm.x86.xop.vphaddwd return _mm_haddd_epi16(a); }