2 /* { dg-require-effective-target fma } */
3 /* { dg-options "-O2 -mfma" } */
8 #include "m256-check.h"
12 check_mm256_fmsub_pd (__m256d __A
, __m256d __B
, __m256d __C
)
20 e
.x
= _mm256_fmsub_pd (__A
, __B
, __C
);
21 for (i
= 0; i
< 4; i
++)
23 d
[i
] = a
.a
[i
] * b
.a
[i
] - c
.a
[i
];
25 if (check_union256d (e
, d
))
30 check_mm256_fmsub_ps (__m256 __A
, __m256 __B
, __m256 __C
)
38 e
.x
= _mm256_fmsub_ps (__A
, __B
, __C
);
39 for (i
= 0; i
< 8; i
++)
41 d
[i
] = a
.a
[i
] * b
.a
[i
] - c
.a
[i
];
43 if (check_union256 (e
, d
))
53 for (i
= 0; i
< 3; i
++)
55 for (j
= 0; j
< 8; j
++)
56 c
[i
].a
[j
] = i
* j
+ 3.5;
57 for (j
= 0; j
< 4; j
++)
58 d
[i
].a
[j
] = i
* j
+ 3.5;
60 check_mm256_fmsub_pd (d
[0].x
, d
[1].x
, d
[2].x
);
61 check_mm256_fmsub_ps (c
[0].x
, c
[1].x
, c
[2].x
);