This patch adds the fp16fml feature parser as well fixes
the FPU and the HW_FP flags when +fullfp16 and +dotprod
features are passed, to account for pre-requisite features.
The ARM backend (ARM.td) defines this tree of feature dependencies:
fp16 vfp3 | / | vfp4 neon | \ fp-armv8 FeatureDotProd | fullfp16 | fp16fml
However, clang does not capture that when using +fullfp16 we
also have vfp4, so compiling
tools/clang/test/CodeGen/arm_neon_intrinsics.c
with
clang -target armv8a-linux-eabi -march=armv8.4-a+fp16 -S -emit-llvm
will give an error because vfp4 is not added to the FPU flag.
As test now we can compile that test file with the command
clang -target armv8a-linux-eabi -march=armv8-a+fp16fml -S -emit-llvm
Is it always correct to set HW_FP_DP here, now that MVE can have full fp16 without double-precision? I'll add Simon since he's working on that.