Skip to content

tools: Make ARM cpu flags imply relevant lower level flags

Martin Storsjö requested to merge mstorsjo/dav1d:arm-cpumask into master

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.

Edited by Martin Storsjö

Merge request reports