Пример #1
0
__m128 test_mm_fnmsub_ps(__m128 a, __m128 b, __m128 c) {
  // CHECK-LABEL: test_mm_fnmsub_ps
  // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
  // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.+}}
  // CHECK: @llvm.x86.fma.vfmadd.ps(<4 x float> [[NEG]], <4 x float> %{{.+}}, <4 x float> [[NEG2]])
  return _mm_fnmsub_ps(a, b, c);
}
Пример #2
0
void
check_mm_fnmsub_ps (__m128 __A, __m128 __B, __m128 __C)
{
  union128 a, b, c, e;
  a.x = __A;
  b.x = __B;
  c.x = __C;
  float d[4];
  int i;
  e.x = _mm_fnmsub_ps (__A, __B, __C);
  for (i = 0; i < 4; i++)
    {
      d[i] = -a.a[i] * b.a[i] - c.a[i];
    }
  if (check_union128 (e, d))
    abort ();
}
Пример #3
0
__m128 test_mm_fnmsub_ps(__m128 a, __m128 b, __m128 c) {
  // CHECK: @llvm.x86.fma.vfnmsub.ps
  return _mm_fnmsub_ps(a, b, c);
}
Пример #4
0
__m128
check_mm_fnmsub_ps (__m128 a, __m128 b, __m128 c)
{
  return _mm_fnmsub_ps (a, b, c);
}