Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove useless function multiversioning features #315

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Commits on Apr 3, 2024

  1. Remove useless function multiversioning features

    Supporting a feature in function multiversioning requires that the rest of the
    toolchain can support enabling the feature.  In GCC/Binutils, this requires
    either that there is an equivalent feature extension available in the `-march`
    command line option, or that the feature introduces no new instructions (and
    therefore does not need to be enabled when passing to the assembler).  However,
    many of the features listed in in the original function multiversioning
    specification do not meet this criteria. These fall into four categories:
    
    1. Features that were originally linked to a specific architecture version
    (fcma, jscvt, frintts, flagm2, wfxt, rcpc2): these should get their own flags
    across the toolchain (and I've already added this support in Binutils).
    
    2. Features that are combined with other features in existing command line
    options: these should also be merged in the function multiversioning
    specification.
    
    3. Features that indicate support for hint instructions: these can be dropped,
    since the instructions can be used unconditionally.
    
    4. Features that enable existing instruction behaviour to be changed when a
    system register flag is set: the function multiversioning resolvers don't check
    for runtime enablement of the control flags, so this isn't a suitable way of
    exploiting the behaviour enabled by those flags.
    
    5. Features that can also be expressed as a combination of two other features.
    
    We therefore remove support for the following features from the specification:
    
    - sha1 (2): included within +sha2
    - pmull (2): included within +aes
    - dit (4)
    - dgh (3)
    - ebf16 (4)
    - sve-bf16 (5)
    - sve-ebf16 (4)
    - sve-i8mm (5)
    - sve2-pmull128 (2): included within +sve2-aes
    - memtag2 (2): included within +memtag
    - memtag3 (4)
    - ssbs2 (2): included within +ssbs
    - bti (3)
    - ls64_v, ls64_accdata (2): included within +ls64
    andrewcarlotti committed Apr 3, 2024
    Configuration menu
    Copy the full SHA
    1d0e035 View commit details
    Browse the repository at this point in the history