• E
    target/i386: optimize indirect branches · b4aa2977
    Emilio G. Cota 提交于
    Speed up indirect branches by jumping to the target if it is valid.
    
    Softmmu measurements (see later commit for user-mode numbers):
    
    Note: baseline (i.e. speedup == 1x) is QEMU v2.9.0.
    
    -                  SPECint06 (test set), x86_64-softmmu (Ubuntu 16.04 guest). Host: Intel i7-4790K @ 4.00GHz
    
     2.4x +-+--------------------------------------------------------------------------------------------------------------+-+
          |                                                                                                                  |
          |   cross                                                                                                          |
     2.2x +cross+jr..........................................................................+++...........................+-+
          |                                                                                   |                              |
          |                                                                               +++ |                              |
       2x +-+..............................................................................|..|............................+-+
          |                                                                                |  |                              |
          |                                                                                |  |                              |
     1.8x +-+..............................................................................|####...........................+-+
          |                                                                                |# |#                             |
          |                                                                              **** |#                             |
     1.6x +-+............................................................................*.|*.|#...........................+-+
          |                                                                              * |* |#                             |
          |                                                                              * |* |#                             |
     1.4x +-+.......................................................................+++..*.|*.|#...........................+-+
          |                                                      ++++++             #### * |*++#             +++             |
          |                        +++                            |  |              #++# *++*  #          +++ |              |
     1.2x +-+......................###.....####....+++............|..|...........****..#.*..*..#....####...|.###.....####..+-+
          |        +++          **** #  ****  #    ####          ***###          *++*  # *  *  #    #++#  ****|#  +++#++#    |
          |    ****###     +++  *++* #  *++*  #  ++#  #    ####  *|* |#     +++  *  *  # *  *  #  ***  #  *| *|#  ****  #    |
       1x +-++-*++*++#++***###++*++*+#++*+-*++#+****++#++***++#+-*+*++#-+****##++*++*-+#+*++*-+#++*+*++#++*-+*+#++*++*++#-++-+
          |    *  *  #  * *  #  *  * #  *  *  # *  *  #  * *  #  *|* |#  *++* #  *  *  # *  *  #  * *  #  *  * #  *  *  #    |
          |    *  *  #  * *  #  *  * #  *  *  # *  *  #  * *  #  *+*++#  *  * #  *  *  # *  *  #  * *  #  *  * #  *  *  #    |
     0.8x +-+--****###--***###--****##--****###-****###--***###--***###--****##--****###-****###--***###--****##--****###--+-+
             astar   bzip2      gcc   gobmk h264ref   hmmlibquantum      mcf omnetpperlbench   sjengxalancbmk   hmean
      png: http://imgur.com/DU36YFU
    
    NB. 'cross' represents the previous commit.
    Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
    Reviewed-by: NRichard Henderson <rth@twiddle.net>
    Signed-off-by: NEmilio G. Cota <cota@braap.org>
    Message-Id: <1493263764-18657-11-git-send-email-cota@braap.org>
    Signed-off-by: NRichard Henderson <rth@twiddle.net>
    b4aa2977
translate.c 289.8 KB