1. 06 6月, 2017 29 次提交
    • M
      target/xtensa: fix return value of read/write simcalls · 347ec030
      Max Filippov 提交于
      Return value of read/write simcalls is not calculated correctly in case
      of operations crossing page boundary and in case of short reads/writes.
      Read and write simcalls should return the size of data actually
      read/written or -1 in case of error.
      
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      347ec030
    • M
      target/xtensa: fix mapping direction in read/write simcalls · 30c2afd1
      Max Filippov 提交于
      Read and write simcalls map physical memory to access I/O buffers, but
      'read' simcall need to map it for writing and 'write' simcall need to
      map it for reading, i.e. the opposite of what they do now. Fix that.
      
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      30c2afd1
    • P
      Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20170605' into staging · a0d4aac7
      Peter Maydell 提交于
      Queued TCG patches
      
      # gpg: Signature made Mon 05 Jun 2017 17:48:42 BST
      # gpg:                using RSA key 0xAD1270CC4DD0279B
      # gpg: Good signature from "Richard Henderson <rth7680@gmail.com>"
      # gpg:                 aka "Richard Henderson <rth@redhat.com>"
      # gpg:                 aka "Richard Henderson <rth@twiddle.net>"
      # Primary key fingerprint: 9CB1 8DDA F8E8 49AD 2AFC  16A4 AD12 70CC 4DD0 279B
      
      * remotes/rth/tags/pull-tcg-20170605: (26 commits)
        target/alpha: Use goto_tb for fallthru between TBs
        target/alpha: Implement WTINT inline
        target/mips: optimize indirect branches
        target/mips: optimize cross-page direct jumps in softmmu
        target/aarch64: optimize indirect branches
        target/aarch64: optimize cross-page direct jumps in softmmu
        target/hppa: Use tcg_gen_lookup_and_goto_ptr
        target/s390: Use tcg_gen_lookup_and_goto_ptr
        tcg/mips: implement goto_ptr
        tcg/arm: Implement goto_ptr
        tcg/arm: Clarify tcg_out_bx for arm4 host
        tcg/s390: Implement goto_ptr
        tcg/sparc: Implement goto_ptr
        tcg/aarch64: Implement goto_ptr
        tcg/ppc: Implement goto_ptr
        tb-hash: improve tb_jmp_cache hash function in user mode
        target/i386: optimize indirect branches
        target/i386: optimize cross-page direct jumps in softmmu
        target/i386: introduce gen_jr helper to generate lookup_and_goto_ptr
        target/arm: optimize indirect branches
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      a0d4aac7
    • R
      2d826cdc
    • R
      target/alpha: Implement WTINT inline · bec5e2b9
      Richard Henderson 提交于
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      bec5e2b9
    • A
      target/mips: optimize indirect branches · e350d8ca
      Aurelien Jarno 提交于
      Cc: Yongbok Kim <yongbok.kim@imgtec.com>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      Message-Id: <20170430145254.25616-4-aurelien@aurel32.net>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      e350d8ca
    • A
      target/mips: optimize cross-page direct jumps in softmmu · d9a9acde
      Aurelien Jarno 提交于
      Cc: Yongbok Kim <yongbok.kim@imgtec.com>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      Message-Id: <20170430145254.25616-3-aurelien@aurel32.net>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      d9a9acde
    • E
      target/aarch64: optimize indirect branches · e75449a3
      Emilio G. Cota 提交于
      Measurements:
      
      [Baseline performance is that before applying this and the previous commit]
      
      -                                    NBench, aarch64-softmmu. Host: Intel i7-4790K @ 4.00GHz
      
       1.7x +-+--------------------------------------------------------------------------------------------------------------+-+
            |                                                                                                                  |
            |   cross                                                                                                          |
       1.6x +cross+jr.................................................####...................................................+-+
            |                                                         #++#                                                     |
            |                                                         #  #                                                     |
       1.5x +-+...................................................*****..#...................................................+-+
            |                                                     *+++*  #                                                     |
            |                                                     *   *  #                                                     |
       1.4x +-+...................................................*...*..#...................................................+-+
            |                                                     *   *  #                                                     |
            |                                     #####           *   *  #                                                     |
       1.3x +-+................................****+++#...........*...*..#...................................................+-+
            |                                  *++*   #           *   *  #                                                     |
            |                                  *  *   #           *   *  #                                                     |
       1.2x +-+................................*..*...#...........*...*..#...................................................+-+
            |                                  *  *   #           *   *  #                                                     |
            |                            ####  *  *   #           *   *  #                                                     |
       1.1x +-+.......................+++#..#..*..*...#...........*...*..#...................................................+-+
            |                         ****  #  *  *   #           *   *  #                                        ****####     |
            |                         *  *  #  *  *   #           *   *  #  ****###   +++####            ****###  *  *   #     |
         1x +-++-++++++-++++****###++-*++*++#++*++*+-+#++****+++++*+++*++#++*++*-+#++*****++#++****###-++*++*-+#++*+-*+++#+-++-+
            |     *****###  *  *  #   *  *  #  *  *   #  *++*###  *   *  #  *  *  #  *   *  #  *  *++#   *  *  #  *  *   #     |
            |     *   *++#  *  *  #   *  *  #  *  *   #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #   *  *  #  *  *   #     |
       0.9x +-+---*****###--****###---****###--****####--****###--*****###--****###--*****###--****###---****###--****####---+-+
            ASSIGNMENT BITFIELD   FOURFP EMULATION   HUFFMAN   LU DECOMPOSITIONNEURAL NUMERIC SORSTRING SORT    hmean
        png: http://imgur.com/qO9ubtk
      NB. cross here represents the previous commit.
      
      -                            SPECint06 (test set), aarch64-linux-user. Host: Intel i7-4790K @ 4.00GHz
      
       1.5x +-+--------------------------------------------------------------------------------------------------------------+-+
            |                                                                       *****                                      |
            |                                                                       *+++*                           jr         |
            |                                                                       *   *                                      |
       1.4x +-+.....................................................................*...*.....................+++............+-+
            |                                                                       *   *                      |               |
            |                                      *****                            *   *                      |               |
            |                                      *   *                            *   *                    *****             |
       1.3x +-+....................................*...*............................*...*....................*.|.*...........+-+
            |                       +++            *   *                            *   *                    * | *             |
            |                      *****           *   *                            *   *                    *+++*             |
            |                      *   *           *   *                            *   *                    *   *             |
       1.2x +-+....................*...*...........*...*............................*...*...........*****....*...*...........+-+
            |     *****            *   *           *   *                            *   *           *   *    *   *    +++      |
            |     *   *            *   *           *   *                            *   *           *   *    *   *   *****     |
            |     *   *            *   *   *****   *   *                            *   *           *   *    *   *   *   *     |
       1.1x +-+...*...*............*...*...*...*...*...*............................*...*....+++....*...*....*...*...*...*...+-+
            |     *   *            *   *   *   *   *   *                            *   *   *****   *   *    *   *   *   *     |
            |     *   *            *   *   *   *   *   *   *****                    *   *   *   *   *   *    *   *   *   *     |
            |     *   *   *****    *   *   *   *   *   *   *   *   ******           *   *   *   *   *   *    *   *   *   *     |
         1x +-++-+*+++*-++*+++*++++*+-+*+++*-++*+++*-++*+++*+++*++-*++++*-++*****+++*++-*+++*++-*+++*+-+*++++*+++*++-*+++*+-++-+
            |     *   *   *   *    *   *   *   *   *   *   *   *   *    *   *+++*   *   *   *   *   *   *    *   *   *   *     |
            |     *   *   *   *    *   *   *   *   *   *   *   *   *    *   *   *   *   *   *   *   *   *    *   *   *   *     |
            |     *   *   *   *    *   *   *   *   *   *   *   *   *    *   *   *   *   *   *   *   *   *    *   *   *   *     |
       0.9x +-+---*****---*****----*****---*****---*****---*****---******---*****---*****---*****---*****----*****---*****---+-+
               astar   bzip2      gcc   gobmk h264ref   hmmlibquantum      mcf omnetpperlbench   sjengxalancbmk   hmean
        png: http://imgur.com/3Dp4vvq
      
      -                           SPECint06 (train set), aarch64-linux-user. Host: Intel i7-4790K @ 4.00GHz
      
       1.7x +-+--------------------------------------------------------------------------------------------------------------+-+
            |                                                                                                                  |
            |                                                                                                       jr         |
       1.6x +-+...............................................................................................+++............+-+
            |                                                                                                *****             |
            |                                                                                                *+++*             |
            |                                                                                                *   *             |
       1.5x +-+..............................................................................................*...*...........+-+
            |                                                                        +++                     *   *             |
            |                                                                       *****                    *   *             |
       1.4x +-+.....................................................................*+++*....................*...*...........+-+
            |                                                                       *   *                    *   *             |
            |                                      *****                            *   *                    *   *             |
            |                                      *   *                            *   *   *****            *   *             |
       1.3x +-+....................................*...*............................*...*...*...*............*...*...........+-+
            |                       +++            *   *                            *   *   *   *            *   *             |
            |                      *****           *   *                            *   *   *   *   *****    *   *             |
       1.2x +-+....................*...*...........*...*............................*...*...*...*...*+++*....*...*...*****...+-+
            |                      *   *           *   *                            *   *   *   *   *   *    *   *   *+++*     |
            |     *****            *   *   *****   *   *                            *   *   *   *   *   *    *   *   *   *     |
            |     *   *            *   *   *+++*   *   *                            *   *   *   *   *   *    *   *   *   *     |
       1.1x +-+...*...*............*...*...*...*...*...*............................*...*...*...*...*...*....*...*...*...*...+-+
            |     *   *   *****    *   *   *   *   *   *                    *****   *   *   *   *   *   *    *   *   *   *     |
            |     *   *   *   *    *   *   *   *   *   *    +++    ******   *+++*   *   *   *   *   *   *    *   *   *   *     |
         1x +-+---*****---*****----*****---*****---*****---*****---******---*****---*****---*****---*****----*****---*****---+-+
               astar   bzip2      gcc   gobmk h264ref   hmmlibquantum      mcf omnetpperlbench   sjengxalancbmk   hmean
        png: http://imgur.com/vRrdc9jSigned-off-by: NEmilio G. Cota <cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      e75449a3
    • E
      target/aarch64: optimize cross-page direct jumps in softmmu · e7872236
      Emilio G. Cota 提交于
      Perf numbers in next commit's log.
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      e7872236
    • R
      4137cb83
    • R
    • A
      tcg/mips: implement goto_ptr · 5786e068
      Aurelien Jarno 提交于
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      Message-Id: <20170430145254.25616-2-aurelien@aurel32.net>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      5786e068
    • R
      tcg/arm: Implement goto_ptr · 085c648b
      Richard Henderson 提交于
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      085c648b
    • R
      tcg/arm: Clarify tcg_out_bx for arm4 host · 702a9474
      Richard Henderson 提交于
      In theory this would re-enable usage of QEMU on an armv4 host.
      Whether this is worthwhile is debatable -- we've been unconditionally
      issuing the armv5t BX instruction in the prologue since 2011 without
      complaint.  Possibly we should simply require an armv6 host.
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      702a9474
    • R
      46644483
    • R
      tcg/sparc: Implement goto_ptr · 38f81dc5
      Richard Henderson 提交于
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      38f81dc5
    • R
      tcg/aarch64: Implement goto_ptr · b19f0c2e
      Richard Henderson 提交于
      Measurements:
      
                            SPECint06 (test set), x86_64-linux-user. Host: APM 64-bit ARMv8 (Atlas/A57) @ 2.4 GHz
      
       1.45x +-+-------------------------------------------------------------------------------------------------------------+-+
             |                                      *****                                                                      |
             |      +++                             *   *                                                    +goto-ptr         |
        1.4x +-+...*****............................*...*....................................................................+-+
             |     *+++*                            *   *                            +++                                       |
       1.35x +-+...*...*............................*...*...........................*****....................................+-+
             |     *   *                            *   *                           *+++*                                      |
             |     *   *                            *   *                           *   *                                      |
        1.3x +-+...*...*............................*...*...........................*...*....................................+-+
             |     *   *                            *   *                           *   *                                      |
             |     *   *                            *   *                           *   *                    *****             |
       1.25x +-+...*...*...........*****............*...*...........................*...*............*****...*...*...........+-+
             |     *   *           *   *            *   *                           *   *            *+++*   *   *             |
        1.2x +-+...*...*...........*...*............*...*...........................*...*............*...*...*...*...........+-+
             |     *   *           *   *            *   *                           *   *            *   *   *   *             |
             |     *   *           *   *            *   *                           *   *            *   *   *   *   *****     |
       1.15x +-+...*...*...........*...*............*...*...........................*...*............*...*...*...*...*...*...+-+
             |     *   *           *   *            *   *                           *   *    +++     *   *   *   *   *   *     |
             |     *   *           *   *            *   *                           *   *   *****    *   *   *   *   *   *     |
        1.1x +-+...*...*...........*...*....*****...*...*...*****...................*...*...*...*....*...*...*...*...*...*...+-+
             |     *   *           *   *    *   *   *   *   *   *                   *   *   *   *    *   *   *   *   *   *     |
       1.05x +-+...*...*...........*...*....*...*...*...*...*...*...................*...*...*...*....*...*...*...*...*...*...+-+
             |     *   *   *****   *   *    *   *   *   *   *   *                   *   *   *   *    *   *   *   *   *   *     |
             |     *   *   *   *   *   *    *   *   *   *   *   *   *****   *****   *   *   *   *    *   *   *   *   *   *     |
          1x +-+---*****---*****---*****----*****---*****---*****---*****---*****---*****---*****----*****---*****---*****---+-+
                astar   bzip2     gcc    gobmk h264ref   hmmlibquantum     mcf omnetpperlbench    sjenxalancbmk   hmean
        png: http://imgur.com/en9HE8LTested-by: NEmilio G. Cota <cota@braap.org>
      Reviewed-by: NAurelien Jarno <aurelien@aurel32.net>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      b19f0c2e
    • R
      tcg/ppc: Implement goto_ptr · 0c240785
      Richard Henderson 提交于
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      0c240785
    • E
      tb-hash: improve tb_jmp_cache hash function in user mode · 6f165318
      Emilio G. Cota 提交于
      Optimizations to cross-page chaining and indirect branches make
      performance more sensitive to the hit rate of tb_jmp_cache.
      The constraint of reserving some bits for the page number
      lowers the achievable quality of the hashing function.
      
      However, user-mode does not have this requirement. Thus,
      with this change we use for user-mode a hashing function that
      is both faster and of better quality than the previous one.
      
      Measurements:
      
      Note: baseline (i.e. speedup == 1x) is QEMU v2.9.0.
      
      -                           SPECint06 (test set), x86_64-linux-user. Host: Intel i7-6700K @ 4.00GHz
      
       2.2x +-+--------------------------------------------------------------------------------------------------------------+-+
            |                                                                                                                  |
            |         jr                                                                                                       |
         2x +jr+multhash        +....................................................+++++...................................+-+
            |    jr+hash                                                              |$$$                                     |
            |                                                                         |$+$                                     |
            |                                                                        ### $                                     |
       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/4UXTrEc
      
      Here I also tried the hash function suggested by Paolo ("multhash"):
      
        return ((uint64_t) (pc * 2654435761) >> 32) & (TB_JMP_CACHE_SIZE - 1);
      
      As you can see it is just as good as the other new function ("hash"),
      which is what I ended up going with.
      
      -                          SPECint06 (train set), x86_64-linux-user. Host: Intel i7-6700K @ 4.00GHz
      
       2.6x +-+--------------------------------------------------------------------------------------------------------------+-+
            |                                                                                                                  |
            |     jr                                                                                           ###             |
       2.4x +jr+hash...........................................................................................#.#...........+-+
            |                                                                                                  # #             |
            |                                                                                                  # #             |
       2.2x +-+................................................................................................#.#...........+-+
            |                                                                                                  # #             |
            |                                                                                                  # #             |
         2x +-+................................................................................................#.#...........+-+
            |                                                                                               **** #             |
            |                                                                                               *  * #             |
       1.8x +-+.............................................................................................*..*.#...........+-+
            |                                                                         +++                   *  * #             |
            |                                                                         ####    ####          *  * #             |
       1.6x +-+......................................####.............................#..#.****..#..........*..*.#...........+-+
            |                        +++             #++#                          ****  # *  *  #    ####  *  * #             |
            |                        ###             #  #                          *  *  # *  *  #    #  #  *  * #             |
       1.4x +-+...................****+#..........****..#..........................*..*..#.*..*..#....#..#..*..*.#...........+-+
            |                     *++* #          *  *  #                          *  *  # *  *  #  ***  #  *  * #     ####    |
            |                     *  * #     #### *  *  #                          *  *  # *  *  #  * *  #  *  * #  ****  #    |
       1.2x +-+...................*..*.#..****++#.*..*..#..........................*..*..#.*..*..#..*.*..#..*..*.#..*..*..#..+-+
            |    ****###          *  * #  *  *  # *  *  #                          *  *  # *  *  #  * *  #  *  * #  *  *  #    |
            |    *  *  #  ***###  *  * #  *  *  # *  *  #                  ****##  *  *  # *  *  #  * *  #  *  * #  *  *  #    |
         1x +-+--****###--***###--****##--****###-****###--***###--***###--****##--****###-****###--***###--****##--****###--+-+
               astar   bzip2      gcc   gobmk h264ref   hmmlibquantum      mcf omnetpperlbench   sjengxalancbmk   hmean
        png: http://imgur.com/ArCbHqo
      
      -                                    NBench, x86_64-linux-user. Host: Intel i7-6700K @ 4.00GHz
      
       1.12x +-+-------------------------------------------------------------------------------------------------------------+-+
             |                                                                                                                 |
             |     jr                                                           +++                                            |
        1.1x +jr+hash...........................................................####.........................................+-+
             |                                                               +++#| #                                           |
             |                                                                | #++#                                           |
       1.08x +-+................................+++................+++.+++..*****..#.........................................+-+
             |                                   |  +++             |   |   * | *  #                                           |
             |                                   |   |              |   |   *+++*  #                                           |
       1.06x +-+................................****###.............|...|...*...*..#.........................+++.............+-+
             |                                  *| * |#            ****###  *   *  #                          |                |
             |                                  *| *++#            *| * |#  *   *  #                        ####               |
       1.04x +-+................................*++*..#............*|.*.|#..*...*..#........................#.|#.............+-+
             |                                  *  *  #            *++*++#  *   *  #                     +++#++#               |
             |                                  *  *  #            *  *  #  *   *  #                      | #  #   +++####     |
       1.02x +-+................................*..*..#......+++...*..*..#..*...*..#.....................****..#..*****++#...+-+
             |         +++                      *  *  #   +++ |    *  *  #  *   *  #  +++                *| *  #  *+++*  #     |
             |      +++ |    +++ +++   ++++++   *  *  #  *****###  *  *  #  *   *  #   |  +++   ++++++   *++*  #  *   *  #     |
          1x +-++-+++++####++****###++++-+####+-*++*++#-+*+++*-+#++*++*++#++*+-+*++#+-+++####-+*****###++*++*++#++*+-+*++#+-++-+
             |     *****| #  *++* |#  *****| #  *  *  #  *   *++#  *  *  #  *   *  #  **** |#  *   *  #  *  *  #  *   *  #     |
             |     * | *| #  *  *++#  * | *++#  *  *  #  *   *  #  *  *  #  *   *  #  *| *++#  *   *  #  *  *  #  *   *  #     |
       0.98x +-+...*.|.*++#..*..*..#..*+++*..#..*..*..#..*...*..#..*..*..#..*...*..#..*++*..#..*...*..#..*..*..#..*...*..#...+-+
             |     *+++*  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #     |
             |     *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #     |
       0.96x +-+---*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###---+-+
             ASSIGNMENT BITFIELD   FOURFP EMULATION   HUFFMAN   LU DECOMPOSITIONEURAL NNUMERIC SOSTRING SORT     hmean
        png: http://imgur.com/ZXFX0hJ
      
      -                                   NBench, arm-linux-user. Host: Intel i7-4790K @ 4.00GHz
      
        1.3x +-+-------------------------------------------------------------------------------------------------------------+-+
             |                            ####                                                                                 |
             |     jr                     #  #                                            +++                                  |
       1.25x +jr+hash.....................#..#...........................................####................................+-+
             |                            #  #                                           #  #                                  |
             |                            #  #                                           #  #                                  |
        1.2x +-+..........................#..#...........................................#..#................................+-+
             |                            #  #                                           #  #                                  |
             |                            #  #                                           #  #                                  |
       1.15x +-+..........................#..#...........................................#..#................................+-+
             |                            #  #                                  ####     #  #                                  |
             |                            #  #                                  #  #     #  #                                  |
        1.1x +-+..........................#..#..................................#..#.....#..#................................+-+
             |                            #  #                                  #  #     #  #                         +++      |
             |                            #  #               ####               #  #     #  #                         ####     |
       1.05x +-+..........................#..#...............#..#.....####......#..#.....#..#.........................#..#...+-+
             |                            #  #               #  #     #  #      #  #     #  #                +++      #  #     |
             |                   +++  *****  #     ####  *****  #     #  #   +++#  #  ****  #            ****###      #  #     |
          1x +-++-+*****###++****+++++*+-+*++#+-****++#-+*+++*-+#+++++#++#++*****++#+-*++*++#-+*****-++++*++*++#++*****++#+-++-+
             |     *   *  #  *  * |   *   *  #  *  *  #  *   *  #  ****  #  *   *  #  *  *  #  *   *###  *  *++#  *   *  #     |
             |     *   *  #  *  *###  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #     |
       0.95x +-+...*...*..#..*..*.|#..*...*..#..*..*..#..*...*..#..*..*..#..*...*..#..*..*..#..*...*..#..*..*..#..*...*..#...+-+
             |     *   *  #  *  * |#  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #     |
             |     *   *  #  *  * |#  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #     |
        0.9x +-+---*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###---+-+
             ASSIGNMENT BITFIELD   FOURFP EMULATION   HUFFMAN   LU DECOMPOSITIONEURAL NNUMERIC SOSTRING SORT     hmean
        png: http://imgur.com/FfD27eyReviewed-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-12-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      6f165318
    • 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
    • E
      target/i386: optimize cross-page direct jumps in softmmu · fe620895
      Emilio G. Cota 提交于
      Instead of unconditionally exiting to the exec loop, use the
      gen_jr helper to jump to the target if it is valid.
      
      Perf impact: see next commit's log.
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-10-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      fe620895
    • E
      target/i386: introduce gen_jr helper to generate lookup_and_goto_ptr · 1ebb1af1
      Emilio G. Cota 提交于
      This helper will be used by subsequent changes.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-9-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      1ebb1af1
    • E
      target/arm: optimize indirect branches · 8a6b28c7
      Emilio G. Cota 提交于
      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: NEmilio 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: NRichard Henderson <rth@twiddle.net>
      8a6b28c7
    • E
      target/arm: optimize cross-page direct jumps in softmmu · 7ad55b4f
      Emilio G. Cota 提交于
      Instead of unconditionally exiting to the exec loop, use the
      lookup_and_goto_ptr helper to jump to the target if it is valid.
      
      Perf impact: see next commit's log.
      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-7-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      7ad55b4f
    • E
      tcg/i386: implement goto_ptr · 5cb4ef80
      Emilio G. Cota 提交于
      Suggested-by: NRichard Henderson <rth@twiddle.net>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-6-git-send-email-cota@braap.org>
      [rth: Reuse goto_ptr epilogue for exit_tb 0.]
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      5cb4ef80
    • E
      tcg: Introduce goto_ptr opcode and tcg_gen_lookup_and_goto_ptr · cedbcb01
      Emilio G. Cota 提交于
      Instead of exporting goto_ptr directly to TCG frontends, export
      tcg_gen_lookup_and_goto_ptr(), which calls goto_ptr with the pointer
      returned by the lookup_tb_ptr() helper. This is the only use case
      we have for goto_ptr and lookup_tb_ptr, so having this function is
      very convenient. Furthermore, it trivially allows us to avoid calling
      the lookup helper if goto_ptr is not implemented by the backend.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-2-git-send-email-cota@braap.org>
      Message-Id: <1493263764-18657-3-git-send-email-cota@braap.org>
      Message-Id: <1493263764-18657-4-git-send-email-cota@braap.org>
      Message-Id: <1493263764-18657-5-git-send-email-cota@braap.org>
      [rth: Squashed 4 related commits.]
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      cedbcb01
    • R
      qemu/atomic: Loosen restrictions for 64-bit ILP32 hosts · 374aae65
      Richard Henderson 提交于
      We need to coordinate with the TCG_OVERSIZED_GUEST test in cputlb.c,
      and allow 64-bit atomics even though sizeof(void *) == 4.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      374aae65
    • R
      tcg/sparc: Use the proper compilation flags for 32-bit · f1079bb8
      Richard Henderson 提交于
      We have required a v9 cpu since 9b9c37c3.
      However, the flags we were using did not reliably enable v8plus, which
      meant that the compiler didn't know it could inline 64-bit atomics.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      f1079bb8
    • R
      target/nios2: Fix 64-bit ilp32 compilation · 1639a965
      Richard Henderson 提交于
      Avoid a "cast from pointer to integer of different size" warning
      by using the proper host type.
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      1639a965
  2. 05 6月, 2017 3 次提交
    • P
      Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-fetch' into staging · 199e19ee
      Peter Maydell 提交于
      trivial patches for 2017-06-05
      
      # gpg: Signature made Mon 05 Jun 2017 15:23:46 BST
      # gpg:                using RSA key 0x701B4F6B1A693E59
      # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>"
      # gpg:                 aka "Michael Tokarev <mjt@corpit.ru>"
      # gpg:                 aka "Michael Tokarev <mjt@debian.org>"
      # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D  4324 457C E0A0 8044 65C5
      #      Subkey fingerprint: 7B73 BAD6 8BE7 A2C2 8931  4B22 701B 4F6B 1A69 3E59
      
      * remotes/mjt/tags/trivial-patches-fetch: (21 commits)
        hw/core: nmi.c can be compiled as common-obj nowadays
        dump: fix memory_mapping_filter leak
        ide-test: check return of fwrite
        help: Add newline to end of thread option help text
        qemu-ga: remove useless allocation
        scsi/lsi53c895a: Remove unused lsi_mem_*() return value
        qapi: Fix some QMP documentation regressions
        hw/mips: add missing include
        register: display register prefix (name) since it is available
        hw/sparc: use ARRAY_SIZE() macro
        hw/xtensa: sim: use g_string/g_new
        target/arm: add data cache invalidation cp15 instruction to cortex-r5
        block: Correct documentation for BLOCK_WRITE_THRESHOLD
        trivial: Remove unneeded ifndef in memory.h
        altera_timer: fix incorrect memset
        configure: Detect native NetBSD curses(3)
        tests/libqtest: Print error instead of aborting when env variable is missing
        docs/qdev-device-use.txt: update section Default Devices
        docs qemu-doc: Avoid ide-drive, it's deprecated
        qemu-doc: Add hyperlinks to further license information
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      199e19ee
    • T
      hw/core: nmi.c can be compiled as common-obj nowadays · 03e947f9
      Thomas Huth 提交于
      The target-specific code in nmi.c has been removed with this commit:
      
      	commit f7e981f2
      	nmi: remove x86 specific nmi handling
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      03e947f9
    • P
      Merge remote-tracking branch 'remotes/elmarco/tags/chrfe-pull-request' into staging · cb8b8ef4
      Peter Maydell 提交于
      # gpg: Signature made Fri 02 Jun 2017 20:12:48 BST
      # gpg:                using RSA key 0xDAE8E10975969CE5
      # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>"
      # gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>"
      # gpg: WARNING: This key is not certified with sufficiently trusted signatures!
      # gpg:          It is not certain that the signature belongs to the owner.
      # Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5
      
      * remotes/elmarco/tags/chrfe-pull-request:
        char: move char devices to chardev/
        char: make chr_fe_deinit() optionaly delete backend
        char: rename functions that are not part of fe
        char: move CharBackend handling in char-fe unit
        char: generalize qemu_chr_write_all()
        be-hci: use backend functions
        chardev: serial & parallel declaration to own headers
        chardev: move headers to include/chardev
        Remove/replace sysemu/char.h inclusion
        char-win: close file handle except with console
        char-win: rename hcom->file
        char-win: rename win_chr_init/poll win_chr_serial_init/poll
        char-win: remove WinChardev.len
        char-win: simplify win_chr_read()
        char: cast ARRAY_SIZE() as signed to silent warning on empty array
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      cb8b8ef4
  3. 04 6月, 2017 8 次提交