mbox series

[00/12] tcg: Improve support for cmpsel_vec

Message ID 20240908022632.459477-1-richard.henderson@linaro.org
Headers show
Series tcg: Improve support for cmpsel_vec | expand

Message

Richard Henderson Sept. 8, 2024, 2:26 a.m. UTC
The patches to optimize cmp_vec and cmpsel_vec -- particularly
canonicalizing immediate operands -- are directed toward helping
the in flight tcg/riscv vector backend.

In order for that to happen, the tcg/i386 backend must be changed
so that it does not rely upon choices that it made during early
expansion, before optimization changes things.

While I was looking at the issues i386 was attempting to solve
during early expansion, I realized that avx512 does not have the
same issues.  Expansion of vector cmp and cmpsel become trivial.

I think I've split the difference nicely, so that avx1 still works.
Also, the avx512 predication example should be a nice model for
riscv and some future aarch64 sve vectorization.


r~


Richard Henderson (11):
  tcg: Export vec_gen_6
  tcg/i386: Split out tcg_out_vex_modrm_type
  tcg/i386: Do not expand cmp_vec early
  tcg/i386: Do not expand cmpsel_vec early
  tcg/optimize: Fold movcond with true and false values identical
  tcg/optimize: Optimize cmp_vec and cmpsel_vec
  tcg/optimize: Optimize bitsel_vec
  tcg/i386: Optimize cmpsel with constant 0 arguments
  tcg/i386: Implement cmp_vec with avx512 insns
  tcg/i386: Add predicate parameters to tcg_out_evex_opc
  tcg/i386: Implement cmpsel_vec with avx512 insns

TANG Tiancheng (1):
  tcg: Fix iteration step in 32-bit gvec operation

 tcg/i386/tcg-target-con-set.h |   1 +
 tcg/i386/tcg-target-con-str.h |   1 +
 tcg/i386/tcg-target.h         |   2 +-
 tcg/i386/tcg-target.opc.h     |   1 -
 tcg/tcg-internal.h            |   2 +
 tcg/optimize.c                |  99 +++++++
 tcg/tcg-op-gvec.c             |   2 +-
 tcg/tcg-op-vec.c              |   4 +-
 tcg/i386/tcg-target.c.inc     | 469 +++++++++++++++++++++-------------
 9 files changed, 400 insertions(+), 181 deletions(-)

Comments

Richard Henderson Sept. 9, 2024, 11:37 p.m. UTC | #1
On 9/7/24 19:26, Richard Henderson wrote:
> In order for that to happen, the tcg/i386 backend must be changed
> so that it does not rely upon choices that it made during early
> expansion, before optimization changes things.

FYI, tcg/ppc and tcg/s390x need similar changes.
But that doesn't affect review of the other patches.


r~