tools: Make ARM cpu flags imply relevant lower level flags
The --cpumask
flag only takes one single flag name, one can't set
a combination like neon+dotprod
.
Therefore, apply the same pattern as for x86, by adding mask values that contain all the implied lower level flags.
This is somewhat complicated, as the set of features isn't entirely linear - in particular, SVE doesn't imply either dotprod or i8mm, and SVE2 only implies dotprod, but not i8mm.
This makes sure that dav1d --cpumask dotprod
actually uses any
SIMD at all, as it previously only set the dotprod flag but not
neon, which essentially opted out from all SIMD.
CC @another - this is relevant for !1644 (merged).
CC @arpadpanyik-arm - are the feature implications correct? I.e. setting i8mm implies dotprod. But does having SVE imply having dotprod or i8mm? SVE2 obviously implies SVE, but I guessed that SVE2 also implies i8mm, is that right?
If these flags are more decoupled than this, we probably should improve the flags parser, to allow setting combinations of more than one flag.