qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 1c4693: qemu/int128: Add int128_{not, xor}


From: Richard Henderson
Subject: [Qemu-commits] [qemu/qemu] 1c4693: qemu/int128: Add int128_{not, xor}
Date: Wed, 27 Oct 2021 19:42:52 -0700

  Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: 1c46937358fc27a9e446d08c877389ee84d6767d
      
https://github.com/qemu/qemu/commit/1c46937358fc27a9e446d08c877389ee84d6767d
  Author: Frédéric Pétrot <frederic.petrot@univ-grenoble-alpes.fr>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M include/qemu/int128.h

  Log Message:
  -----------
  qemu/int128: Add int128_{not,xor}

Addition of not and xor on 128-bit integers.

Signed-off-by: Frédéric Pétrot <frederic.petrot@univ-grenoble-alpes.fr>
Co-authored-by: Fabien Portas <fabien.portas@grenoble-inp.org>
Message-Id: <20211025122818.168890-3-frederic.petrot@univ-grenoble-alpes.fr>
[rth: Split out logical operations.]
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 9276a31c3484ff236a958a1e2a38beefb0eb7ebb
      
https://github.com/qemu/qemu/commit/9276a31c3484ff236a958a1e2a38beefb0eb7ebb
  Author: Luis Pires <luis.pires@eldorado.org.br>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M include/hw/clock.h
    M include/qemu/host-utils.h
    M target/ppc/int_helper.c
    M util/host-utils.c

  Log Message:
  -----------
  host-utils: move checks out of divu128/divs128

In preparation for changing the divu128/divs128 implementations
to allow for quotients larger than 64 bits, move the div-by-zero
and overflow checks to the callers.

Signed-off-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211025191154.350831-2-luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 8ac2d6c526d9ea0c89c8aa7046ca56e1b1b9d130
      
https://github.com/qemu/qemu/commit/8ac2d6c526d9ea0c89c8aa7046ca56e1b1b9d130
  Author: Luis Pires <luis.pires@eldorado.org.br>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M include/fpu/softfloat-macros.h
    M include/qemu/host-utils.h

  Log Message:
  -----------
  host-utils: move udiv_qrnnd() to host-utils

Move udiv_qrnnd() from include/fpu/softfloat-macros.h to host-utils,
so it can be reused by divu128().

Signed-off-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211025191154.350831-3-luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 40f3e79a862554553811d0681c05e00a4705e91c
      
https://github.com/qemu/qemu/commit/40f3e79a862554553811d0681c05e00a4705e91c
  Author: Luis Pires <luis.pires@eldorado.org.br>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M include/hw/clock.h
    M include/qemu/host-utils.h
    M target/ppc/int_helper.c
    M util/host-utils.c

  Log Message:
  -----------
  host-utils: add 128-bit quotient support to divu128/divs128

These will be used to implement new decimal floating point
instructions from Power ISA 3.1.

The remainder is now returned directly by divu128/divs128,
freeing up phigh to receive the high 64 bits of the quotient.

Signed-off-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211025191154.350831-4-luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 023462978a1fb7b5a3f7ea74236a05d253d0b6e6
      
https://github.com/qemu/qemu/commit/023462978a1fb7b5a3f7ea74236a05d253d0b6e6
  Author: Luis Pires <luis.pires@eldorado.org.br>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tests/unit/meson.build
    A tests/unit/test-div128.c

  Log Message:
  -----------
  host-utils: add unit tests for divu128/divs128

Signed-off-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20211025191154.350831-5-luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: b1fde411d0f3dd146ba9864f3a475e7100a14a3b
      
https://github.com/qemu/qemu/commit/b1fde411d0f3dd146ba9864f3a475e7100a14a3b
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Rename "mask" to "z_mask"

Prepare for tracking different masks by renaming this one.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 3b3f847d754d7f243b2a04775f37c1b324ca1a12
      
https://github.com/qemu/qemu/commit/3b3f847d754d7f243b2a04775f37c1b324ca1a12
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out OptContext

Provide what will become a larger context for splitting
the very large tcg_optimize function.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: b10f38339bda94bd960d6936ca6047b34be8eb31
      
https://github.com/qemu/qemu/commit/b10f38339bda94bd960d6936ca6047b34be8eb31
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Remove do_default label

Break the final cleanup clause out of the main switch
statement.  When fully folding an opcode to mov/movi,
use "continue" to process the next opcode, else break
to fall into the final cleanup.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: dc84988a5f4147b8c1f90ed4cdcf5c57f06749cd
      
https://github.com/qemu/qemu/commit/dc84988a5f4147b8c1f90ed4cdcf5c57f06749cd
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Change tcg_opt_gen_{mov,movi} interface

Adjust the interface to take the OptContext parameter instead
of TCGContext or both.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: d0ed5151b11b12e9e2ca3c9adde2fd4444588948
      
https://github.com/qemu/qemu/commit/d0ed5151b11b12e9e2ca3c9adde2fd4444588948
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Move prev_mb into OptContext

This will expose the variable to subroutines that
will be broken out of tcg_optimize.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: e2577ea24f9974ab0fb2a2b255203bad0c878f91
      
https://github.com/qemu/qemu/commit/e2577ea24f9974ab0fb2a2b255203bad0c878f91
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out init_arguments

There was no real reason for calls to have separate code here.
Unify init for calls vs non-calls using the call path, which
handles TCG_CALL_DUMMY_ARG.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 8774dded029c96130aacf6e6bb71b70cf271b8df
      
https://github.com/qemu/qemu/commit/8774dded029c96130aacf6e6bb71b70cf271b8df
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out copy_propagate

Continue splitting tcg_optimize.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 5cf32be7d8f385d1599655fdb9de87996243f33b
      
https://github.com/qemu/qemu/commit/5cf32be7d8f385d1599655fdb9de87996243f33b
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_call

Calls are special in that they have a variable number
of arguments, and need to be able to clobber globals.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: ec5d4cbeef2749c9137daeac1b7f67735510675b
      
https://github.com/qemu/qemu/commit/ec5d4cbeef2749c9137daeac1b7f67735510675b
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Drop nb_oargs, nb_iargs locals

Rather than try to keep these up-to-date across folding,
re-read nb_oargs at the end, after re-reading the opcode.

A couple of asserts need dropping, but that will take care
of itself as we split the function further.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 8d57bf1e82da9c1a71c16b12545a9e8d347690f3
      
https://github.com/qemu/qemu/commit/8d57bf1e82da9c1a71c16b12545a9e8d347690f3
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Change fail return for do_constant_folding_cond*

Return -1 instead of 2 for failure, so that we can
use comparisons against 0 for all cases.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 6b99d5bf388655b340e93412bf60f8bff90e5870
      
https://github.com/qemu/qemu/commit/6b99d5bf388655b340e93412bf60f8bff90e5870
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Return true from tcg_opt_gen_{mov,movi}

This will allow callers to tail call to these functions
and return true indicating processing complete.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 137f1f4429965d9a702fae9fc89f2604449a24d3
      
https://github.com/qemu/qemu/commit/137f1f4429965d9a702fae9fc89f2604449a24d3
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out finish_folding

Copy z_mask into OptContext, for writeback to the
first output within the new function.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 404a148d891bf18fc564fa94b00970bbc2c0feec
      
https://github.com/qemu/qemu/commit/404a148d891bf18fc564fa94b00970bbc2c0feec
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Use a boolean to avoid a mass of continues

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 3eefdf2b5885dca36eefa200862c661654519162
      
https://github.com/qemu/qemu/commit/3eefdf2b5885dca36eefa200862c661654519162
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_mb, fold_qemu_{ld,st}

This puts the separate mb optimization into the same framework
as the others.  While fold_qemu_{ld,st} are currently identical,
that won't last as more code gets moved.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 2f9f08ba43df3ea76124f66ae3fe99a96a0a072f
      
https://github.com/qemu/qemu/commit/2f9f08ba43df3ea76124f66ae3fe99a96a0a072f
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_const{1,2}

Split out a whole bunch of placeholder functions, which are
currently identical.  That won't last as more code gets moved.

Use CASE_32_64_VEC for some logical operators that previously
missed the addition of vectors.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: bc47b1aa5be9f90cdbf7fbb01717e4259f717bb9
      
https://github.com/qemu/qemu/commit/bc47b1aa5be9f90cdbf7fbb01717e4259f717bb9
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_setcond2

Reduce some code duplication by folding the NE and EQ cases.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 764d2aba08c35f2462371b01c27fb032447afcd8
      
https://github.com/qemu/qemu/commit/764d2aba08c35f2462371b01c27fb032447afcd8
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_brcond2

Reduce some code duplication by folding the NE and EQ cases.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 079b08040e0c4eed96b3c19fe37cf17a46294d2b
      
https://github.com/qemu/qemu/commit/079b08040e0c4eed96b3c19fe37cf17a46294d2b
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_brcond

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: c63ff55cc5d27b81e6a0924bd1f9abea262069a9
      
https://github.com/qemu/qemu/commit/c63ff55cc5d27b81e6a0924bd1f9abea262069a9
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_setcond

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 6b8ac0d1498cf6638e3d50c33e06e5b3b0e7a2d7
      
https://github.com/qemu/qemu/commit/6b8ac0d1498cf6638e3d50c33e06e5b3b0e7a2d7
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_mulu2_i32

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: e3f7dc216744aceb46fb67be1476b518bc48c5ff
      
https://github.com/qemu/qemu/commit/e3f7dc216744aceb46fb67be1476b518bc48c5ff
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_addsub2_i32

Add two additional helpers, fold_add2_i32 and fold_sub2_i32
which will not be simple wrappers forever.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 0c310a3005b59a1e3667654b9c88ddaa32eaf166
      
https://github.com/qemu/qemu/commit/0c310a3005b59a1e3667654b9c88ddaa32eaf166
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_movcond

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: dcd08996c9420a0d22399e0cc53117d2043a02bb
      
https://github.com/qemu/qemu/commit/dcd08996c9420a0d22399e0cc53117d2043a02bb
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_extract2

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: b6617c8821548350a490c14894a4fe0dba07fc73
      
https://github.com/qemu/qemu/commit/b6617c8821548350a490c14894a4fe0dba07fc73
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_extract, fold_sextract

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 1b1907b8460467743fd23cef918fac9dd7858441
      
https://github.com/qemu/qemu/commit/1b1907b8460467743fd23cef918fac9dd7858441
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_deposit

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 30dd0bfeb5385342a7f216e661d9b69f6ec7182e
      
https://github.com/qemu/qemu/commit/30dd0bfeb5385342a7f216e661d9b69f6ec7182e
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_count_zeros

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 09bacdc2632581cafd2878d91d62ba69dc7574f0
      
https://github.com/qemu/qemu/commit/09bacdc2632581cafd2878d91d62ba69dc7574f0
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_bswap

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 8cdb3fcb8e69502963ca4127fab656e5ffe2be93
      
https://github.com/qemu/qemu/commit/8cdb3fcb8e69502963ca4127fab656e5ffe2be93
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_dup, fold_dup2

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 2cfac7fa482e015310968ee68b001db94789d190
      
https://github.com/qemu/qemu/commit/2cfac7fa482e015310968ee68b001db94789d190
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_mov

This is the final entry in the main switch that was in a
different form.  After this, we have the option to convert
the switch into a function dispatch table.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: cbe42fb2f22b9adb8b78374f6ff4ca5f58807208
      
https://github.com/qemu/qemu/commit/cbe42fb2f22b9adb8b78374f6ff4ca5f58807208
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_xx_to_i

Pull the "op r, a, a => movi r, 0" optimization into a function,
and use it in the outer opcode fold functions.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: ca7bb049a0250890afd4dd0e66f10b8a4d51715c
      
https://github.com/qemu/qemu/commit/ca7bb049a0250890afd4dd0e66f10b8a4d51715c
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_xx_to_x

Pull the "op r, a, a => mov r, a" optimization into a function,
and use it in the outer opcode fold functions.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: e8679955ec0791122a6c22d48ae760a215204f6a
      
https://github.com/qemu/qemu/commit/e8679955ec0791122a6c22d48ae760a215204f6a
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_xi_to_i

Pull the "op r, a, 0 => movi r, 0" optimization into a function,
and use it in the outer opcode fold functions.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 67f84c962166093f26a1f2c66034a44cf294e809
      
https://github.com/qemu/qemu/commit/67f84c962166093f26a1f2c66034a44cf294e809
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Add type to OptContext

Compute the type of the operation early.

There are at least 4 places that used a def->flags ladder
to determine the type of the operation being optimized.

There were two places that assumed !TCG_OPF_64BIT means
TCG_TYPE_I32, and so could potentially compute incorrect
results for vector operations.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 0e0a32bacb29c4313ef195d2ea18809fd25cf5e2
      
https://github.com/qemu/qemu/commit/0e0a32bacb29c4313ef195d2ea18809fd25cf5e2
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_to_not

Split out the conditional conversion from a more complex logical
operation to a simple NOT.  Create a couple more helpers to make
this easy for the outer-most logical operations.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 9caca88a76a6b1e5203dd2470800941c2670a9cd
      
https://github.com/qemu/qemu/commit/9caca88a76a6b1e5203dd2470800941c2670a9cd
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_sub_to_neg

Even though there is only one user, place this more complex
conversion into its own helper.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: a63ce0e9cb860439d4277bd6dca696bce1f1bb6b
      
https://github.com/qemu/qemu/commit/a63ce0e9cb860439d4277bd6dca696bce1f1bb6b
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_xi_to_x

Pull the "op r, a, i => mov r, a" optimization into a function,
and use them in the outer-most logical operations.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: da48e2720227473041b7a14dd9f838577d36833a
      
https://github.com/qemu/qemu/commit/da48e2720227473041b7a14dd9f838577d36833a
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_ix_to_i

Pull the "op r, 0, b => movi r, 0" optimization into a function,
and use it in fold_shift.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: fae450ba4764dcf8c7a131131639ac0969a8eae8
      
https://github.com/qemu/qemu/commit/fae450ba4764dcf8c7a131131639ac0969a8eae8
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Split out fold_masks

Move all of the known-zero optimizations into the per-opcode
functions.  Use fold_masks when there is a possibility of the
result being determined, and simply set ctx->z_mask otherwise.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 407112b03d7665a3cb7b3a21105e721a8a0c5fd8
      
https://github.com/qemu/qemu/commit/407112b03d7665a3cb7b3a21105e721a8a0c5fd8
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Expand fold_mulu2_i32 to all 4-arg multiplies

Rename to fold_multiply2, and handle muls2_i32, mulu2_i64,
and muls2_i64.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 9531c078ff63783f2a21ba302827123e7b073304
      
https://github.com/qemu/qemu/commit/9531c078ff63783f2a21ba302827123e7b073304
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Expand fold_addsub2_i32 to 64-bit ops

Rename to fold_addsub2.
Use Int128 to implement the wider operation.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 7a2f70845255bd6a2ad6399d159c58a7e7b64b51
      
https://github.com/qemu/qemu/commit/7a2f70845255bd6a2ad6399d159c58a7e7b64b51
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Sink commutative operand swapping into fold functions

Most of these are handled by creating a fold_const2_commutative
to handle all of the binary operators.  The rest were already
handled on a case-by-case basis in the switch, and have their
own fold function in which to place the call.

We now have only one major switch on TCGOpcode.

Introduce NO_DEST and a block comment for swap_commutative in
order to make the handling of brcond and movcond opcodes cleaner.

Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 77babeedd41f7b890a32d0f6955d2a407c9aaab4
      
https://github.com/qemu/qemu/commit/77babeedd41f7b890a32d0f6955d2a407c9aaab4
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Stop forcing z_mask to "garbage" for 32-bit values

This "garbage" setting pre-dates the addition of the type
changing opcodes INDEX_op_ext_i32_i64, INDEX_op_extu_i32_i64,
and INDEX_op_extr{l,h}_i64_i32.

So now we have a definitive points at which to adjust z_mask
to eliminate such bits from the 32-bit operands.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: fbf16492dd0c0ae76ab040791d8a50c46a7f272b
      
https://github.com/qemu/qemu/commit/fbf16492dd0c0ae76ab040791d8a50c46a7f272b
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Use fold_xx_to_i for orc

Recognize the constant function for or-complement.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: b6247051402da3bbfaec78006ec8a64362a9d97f
      
https://github.com/qemu/qemu/commit/b6247051402da3bbfaec78006ec8a64362a9d97f
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Use fold_xi_to_x for mul

Recognize the identity function for low-part multiply.

Suggested-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: bc942d5c35f5ba613762545de624a47cc9fbf35f
      
https://github.com/qemu/qemu/commit/bc942d5c35f5ba613762545de624a47cc9fbf35f
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Use fold_xi_to_x for div

Recognize the identity function for division.

Suggested-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 1727897e1d22dad474b0c72e35e304d8894bc77d
      
https://github.com/qemu/qemu/commit/1727897e1d22dad474b0c72e35e304d8894bc77d
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Use fold_xx_to_i for rem

Recognize the constant function for remainder.

Suggested-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 76a95403bf8d7831be43255eaf871da9436786dd
      
https://github.com/qemu/qemu/commit/76a95403bf8d7831be43255eaf871da9436786dd
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Optimize sign extensions

Certain targets, like riscv, produce signed 32-bit results.
This can lead to lots of redundant extensions as values are
manipulated.

Begin by tracking only the obvious sign-extensions, and
converting them to simple copies when possible.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: a62b16e5c9c51514928fcf3ee6a4fab0dd6d2f37
      
https://github.com/qemu/qemu/commit/a62b16e5c9c51514928fcf3ee6a4fab0dd6d2f37
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Propagate sign info for logical operations

Sign repetitions are perforce all identical, whether they are 1 or 0.
Bitwise operations preserve the relative quantity of the repetitions.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: b6cf6408bb191953a0f160f47c937a45d4a6ddd3
      
https://github.com/qemu/qemu/commit/b6cf6408bb191953a0f160f47c937a45d4a6ddd3
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Propagate sign info for setcond

The result is either 0 or 1, which means that we have
a 2 bit signed result, and thus 62 bits of sign.
For clarity, use the smask_from_zmask function.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 654011f5b3610a55da8ed4d680f4b25a63fdfba5
      
https://github.com/qemu/qemu/commit/654011f5b3610a55da8ed4d680f4b25a63fdfba5
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Propagate sign info for bit counting

The results are generally 6 bit unsigned values, though
the count leading and trailing bits may produce any value
for a zero input.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 820c025f0dcacf2f3c12735b1f162893fbfa7bc6
      
https://github.com/qemu/qemu/commit/820c025f0dcacf2f3c12735b1f162893fbfa7bc6
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M tcg/optimize.c

  Log Message:
  -----------
  tcg/optimize: Propagate sign info for shifting

For constant shifts, we can simply shift the s_mask.

For variable shifts, we know that sar does not reduce
the s_mask, which helps for sequences like

    ext32s_i64  t, in
    sar_i64     t, t, v
    ext32s_i64  out, t

allowing the final extend to be eliminated.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


  Commit: 80e9c5ade49e318f041abee291b47f281e20ee37
      
https://github.com/qemu/qemu/commit/80e9c5ade49e318f041abee291b47f281e20ee37
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2021-10-27 (Wed, 27 Oct 2021)

  Changed paths:
    M include/fpu/softfloat-macros.h
    M include/hw/clock.h
    M include/qemu/host-utils.h
    M include/qemu/int128.h
    M target/ppc/int_helper.c
    M tcg/optimize.c
    M tests/unit/meson.build
    A tests/unit/test-div128.c
    M util/host-utils.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20211027' into staging

Improvements to qemu/int128
Fixes for 128/64 division.
Cleanup tcg/optimize.c
Optimize redundant sign extensions

# gpg: Signature made Wed 27 Oct 2021 07:40:01 PM PDT
# gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg:                issuer "richard.henderson@linaro.org"
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" 
[ultimate]

* remotes/rth/tags/pull-tcg-20211027: (56 commits)
  tcg/optimize: Propagate sign info for shifting
  tcg/optimize: Propagate sign info for bit counting
  tcg/optimize: Propagate sign info for setcond
  tcg/optimize: Propagate sign info for logical operations
  tcg/optimize: Optimize sign extensions
  tcg/optimize: Use fold_xx_to_i for rem
  tcg/optimize: Use fold_xi_to_x for div
  tcg/optimize: Use fold_xi_to_x for mul
  tcg/optimize: Use fold_xx_to_i for orc
  tcg/optimize: Stop forcing z_mask to "garbage" for 32-bit values
  tcg/optimize: Sink commutative operand swapping into fold functions
  tcg/optimize: Expand fold_addsub2_i32 to 64-bit ops
  tcg/optimize: Expand fold_mulu2_i32 to all 4-arg multiplies
  tcg/optimize: Split out fold_masks
  tcg/optimize: Split out fold_ix_to_i
  tcg/optimize: Split out fold_xi_to_x
  tcg/optimize: Split out fold_sub_to_neg
  tcg/optimize: Split out fold_to_not
  tcg/optimize: Add type to OptContext
  tcg/optimize: Split out fold_xi_to_i
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


Compare: https://github.com/qemu/qemu/compare/c52d69e7dbaa...80e9c5ade49e



reply via email to

[Prev in Thread] Current Thread [Next in Thread]