Hi all, The aarch64_vmls pattern claims to perform a normal vector floating-point multiply-subtract but in fact performs a fused multiply-subtract. This is fine when -ffp-contract=fast, but it's not guarded on anything so will generate the FMLS instruction even when -ffp-contract=off. The solution is just to delete the pattern. If -ffp-contract=fast then an fma operation will have been generated and the fnma4 would be used to generate the FMLS instruction. Bootstrapped and tested on aarch64-none-linux-gnu. Ok for trunk and GCC 6 and 5? GCC 4.9 needs a different -mtune option in the testcase to trigger the testcase... Thanks, Kyrill 2016-05-17 Kyrylo Tkachov PR target/70809 * config/aarch64/aarch64-simd.md (aarch64_vmls): Delete. 2016-05-17 Kyrylo Tkachov PR target/70809 * gcc.target/aarch64/pr70809_1.c: New test.