• Emilio G. Cota's avatar
    target/arm: optimize indirect branches · 8a6b28c7
    Emilio G. Cota authored
    Speed up indirect branches by jumping to the target if it is valid.
    
    Softmmu measurements (see later commit for user-mode results):
    
    Note: baseline (i.e. speedup == 1x) is QEMU v2.9.0.
    
    - Impact on Boot time
    
    | setup  | ARM debian jessie boot+shutdown time | stddev |
    |--------+--------------------------------------+--------|
    | v2.9.0 |                                 8.84 |   0.07 |
    | +cross |                                 8.85 |   0.03 |
    | +jr    |                                 8.83 |   0.06 |
    
    -                            NBench, arm-softmmu (debian jessie guest). Host: Intel i7-4790K @ 4.00GHz
    
      1.3x +-+-------------------------------------------------------------------------------------------------------------+-+
           |                                                                                                                 |
           |   cross                                                          ####                                           |
     1.25x +cross+jr..........................................................#++#.........................................+-+
           |                                                        ####      #  #                                           |
           |                                                     +++#  #      #  #                                           |
           |                                      +++            ****  #      #  #                                           |
      1.2x +-+...................................####............*..*..#......#..#.........................................+-+
           |                                  ****  #            *  *  #      #  #     ####                                  |
           |                                  *  *  #            *  *  #      #  #     #  #                                  |
     1.15x +-+................................*..*..#............*..*..#......#..#.....#..#................................+-+
           |                                  *  *  #            *  *  #      #  #     #  #                                  |
           |                                  *  *  #      ####  *  *  #      #  #     #  #                                  |
           |                                  *  *  #      #  #  *  *  #      #  #     #  #                         ####     |
      1.1x +-+................................*..*..#......#..#..*..*..#......#..#.....#..#.........................#..#...+-+
           |                                  *  *  #      #  #  *  *  #      #  #     #  #                         #  #     |
           |                                  *  *  #      #  #  *  *  #      #  #     #  #                         #  #     |
     1.05x +-+..........................####..*..*..#......#..#..*..*..#......#..#.....#..#......+++............*****..#...+-+
           |                        *****  #  *  *  #      #  #  *  *  #  *****  #     #  #   +++ |    ****###  *   *  #     |
           |                        *+++*  #  *  *  #      #  #  *  *  #  *+++*  #  ****  #  *****###  *  *  #  *   *  #     |
           |     *****###  +++####  *   *  #  *  *  #  *****  #  *  *  #  *   *  #  *  *  #  * | *++#  *  *  #  *   *  #     |
        1x +-++-+*+++*-+#++****++#++*+-+*++#+-*++*++#-+*+++*-+#++*++*++#++*+-+*++#+-*++*++#-+*+++*-+#++*++*++#++*+-+*++#+-++-+
           |     *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #     |
           |     *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #     |
     0.95x +-+---*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###---+-+
           ASSIGNMENT BITFIELD   FOURFP EMULATION   HUFFMAN   LU DECOMPOSITIONEURAL NNUMERIC SOSTRING SORT     hmean
      png: http://imgur.com/eOLmZNR
    
    NB. 'cross' represents the previous commit.
    Signed-off-by: 's avatarEmilio G. Cota <cota@braap.org>
    Message-Id: <1493263764-18657-8-git-send-email-cota@braap.org>
    [rth: Replace gen_jr global variable with DISAS_EXIT state.]
    Signed-off-by: 's avatarRichard Henderson <rth@twiddle.net>
    8a6b28c7
translate.h 5.82 KB