[X86] Make FeatureAVX512 imply FeatureFMA.
authorCraig Topper <craig.topper@intel.com>
Mon, 6 Nov 2017 22:49:01 +0000 (22:49 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 6 Nov 2017 22:49:01 +0000 (22:49 +0000)
commitcb6c38612e7b46d92820a5e000ddc9532086b20f
tree425b5ae432edaa72281f963f9ea960a5ddfcb3cf
parent86d24f1668aaeb41362031fa31b4c4269488a68b
[X86] Make FeatureAVX512 imply FeatureFMA.

Previously our VEX patterns were checking Subtarget.hasFMA() which checked FMA || AVX512. So we were behaving as if AVX512 implied it anyway. Which means we'd allow VEX encoded 128/256 FMA when AVX512F was enabled but AVX512VL is off. Regardless of the FMA flag.

EVEX to VEX also transforms scalar EVEX FMA instructions to their VEX versions even without the FMA flag. Similarly for 128/256 under AVX512VL.

So this makes AVX512 imply FeatureFMA to make our current behavior explicit.

All known CPUs that support AVX512 have VEX FMA instructions.

llvm-svn: 317520
llvm/lib/Target/X86/X86.td
llvm/lib/Target/X86/X86Subtarget.h