[PATCH 00/12] tcg: Improve support for cmpsel_vec

Richard Henderson posted 12 patches 2 months, 2 weeks ago
There is a newer version of this series
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(-)
[PATCH 00/12] tcg: Improve support for cmpsel_vec
Posted by Richard Henderson 2 months, 2 weeks ago
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(-)

-- 
2.43.0
Re: [PATCH 00/12] tcg: Improve support for cmpsel_vec
Posted by Richard Henderson 2 months, 2 weeks ago
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~