• Ng Zhi An's avatar
    [x64][ia32] Reconcile supported extensions · 3844a6bd
    Ng Zhi An authored
    This is similar in spirit to https://crrev.com/c/2808621, which is to
    ensure that no matter what combination of --[no-]enable-{extension} flag
    is passed, we end up with a set of supported extensions that make sense.
    
    The 2 rules are:
    
    - If a newer extension is supported (SSE4_2), older extensions are
    supported (SSE4_1, SSSE3, SSE3),
    - If an older extension is not supported (SSE4_1), new extensions are
    not supported (SSE4_2, AVX)
    
    Tests have been added to both ia32 and x64 to check that we follow these
    above 2 rules.
    
    We change the ProbeImpl to have a reconciliation step to ensure that we
    stick to the 2 rules.
    
    E.g. if --enable-avx --no-enable-sse4-2, we will first set AVX to
    supported, then in the second step, fix-up AVX to unsupported. In this
    sense, the --no version of the flags take priority. This more accurately
    follows the intention of the flags.
    
    Bug: chromium:1195579
    Change-Id: I0390f24de9d203fe6bbd4cc02a23771a1f052618
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2818570
    Commit-Queue: Zhi An Ng <zhin@chromium.org>
    Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
    Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#73942}
    3844a6bd
assembler-ia32.cc 85.1 KB