• Milton Miller's avatar
    [POWERPC] Optimize account_system_vtime · 53024fe2
    Milton Miller authored
    We have multiple calls to has_feature being inlined, but gcc can't
    be sure that the store via get_paca() doesn't alias the path to
    cur_cpu_spec->feature.
    
    Reorder to put the calls to read_purr and read_spurr adjacent to each
    other.  To add a sense of consistency, reorder the remaining lines to
    perform parallel steps on purr and scaled purr of each line instead of
    calculating and then using one value before going on to the next.
    
    In addition, we can tell gcc that no SPURR means no PURR.  The test is
    completely hidden in the PURR case, and in the !PURR case the second test
    is eliminated resulting in the simple register copy in the out-of-line
    branch.
    
    Further, gcc sees get_paca()->system_time referenced several times and
    allocates a register to address it (shadowing r13) instead of caching its
    value.  Reading into a local varable saves the shadow of r13 and removes
    a potentially duplicate load (between the nested if and its parent).
    Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    53024fe2
time.c 30.5 KB