• Pierre Langlois's avatar
    [arm64] Correctly print V registers. · 77a643e3
    Pierre Langlois authored
    The arm64 backend defines registers with a common base `CPURegister` class which
    can represent both general purpose and vector registers. We would use it to
    define the `RegisterName` function which results in printing all registers with
    `xN` when using the --trace-turbo-graph flag:
    
    ~~~
    [x0|R|f64] = Arm64LdrD : MRR [x7|R|tp] [x5|R|w64]
     ^^
     This is the d0 register, not x0
    ~~~
    
    We have `Register` and `VRegister` classes to distinguish general purpose
    registers from vector registers, use those to define `RegisterName` functions
    and print vector registers as `vN` intead:
    
    ~~~
    [v0|R|f64] = Arm64LdrD : MRR [x7|R|tp] [x5|R|w64]
    ~~~
    
    Since FloatRegister, DoubleRegister and Simd128Register are typedef of
    VRegister, we cannot differentiate them with the current `DEFINE_REGISTER_NAMES`
    abstraction. Architecturaly, S, D and Q registers are aliases of V registers so
    that's not a problem.
    
    Change-Id: Ic43036117c834070d3311b65c99ad1e24e1f9c3f
    Reviewed-on: https://chromium-review.googlesource.com/c/1445990Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
    Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
    Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
    Cr-Commit-Position: refs/heads/master@{#59234}
    77a643e3
register-arm64.h 26.7 KB