[PATCH v2 00/18] tcg: Improve support for cmpsel_vec

Richard Henderson posted 18 patches 2 months, 1 week ago
tcg/i386/tcg-target-con-set.h  |   1 +
tcg/i386/tcg-target-con-str.h  |   1 +
tcg/i386/tcg-target.h          |   4 +-
tcg/i386/tcg-target.opc.h      |   1 -
tcg/ppc/tcg-target-con-set.h   |   1 +
tcg/ppc/tcg-target.h           |   2 +-
tcg/s390x/tcg-target-con-set.h |   2 +
tcg/s390x/tcg-target-con-str.h |   1 +
tcg/s390x/tcg-target.h         |   2 +-
tcg/tcg-internal.h             |   2 +
tcg/optimize.c                 |  99 +++++++
tcg/tcg-op-vec.c               |   4 +-
tcg/i386/tcg-target.c.inc      | 488 +++++++++++++++++++++------------
tcg/ppc/tcg-target.c.inc       | 254 +++++++++++------
tcg/s390x/tcg-target.c.inc     | 195 +++++++------
15 files changed, 695 insertions(+), 362 deletions(-)
[PATCH v2 00/18] tcg: Improve support for cmpsel_vec
Posted by Richard Henderson 2 months, 1 week 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 i386, ppc and s390x backends
must be changed so that they do not rely upon choices 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.

Changes for v2:
  - Update ppc and s390x backends.
  - Fix avx512 tsteq cut-and-paste error (philmd).


r~


Richard Henderson (18):
  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/ppc: Do not expand cmp_vec early
  tcg/s390x: Do not expand cmp_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 operand 3.
  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
  tcg/i386: Implement vector TST{EQ,NE} for avx512
  tcg/ppc: Implement cmpsel_vec
  tcg/ppc: Optimize cmpsel with constant 0/-1 arguments
  tcg/s390x: Implement cmpsel_vec
  tcg/s390x: Optimize cmpsel with constant 0/-1 arguments

 tcg/i386/tcg-target-con-set.h  |   1 +
 tcg/i386/tcg-target-con-str.h  |   1 +
 tcg/i386/tcg-target.h          |   4 +-
 tcg/i386/tcg-target.opc.h      |   1 -
 tcg/ppc/tcg-target-con-set.h   |   1 +
 tcg/ppc/tcg-target.h           |   2 +-
 tcg/s390x/tcg-target-con-set.h |   2 +
 tcg/s390x/tcg-target-con-str.h |   1 +
 tcg/s390x/tcg-target.h         |   2 +-
 tcg/tcg-internal.h             |   2 +
 tcg/optimize.c                 |  99 +++++++
 tcg/tcg-op-vec.c               |   4 +-
 tcg/i386/tcg-target.c.inc      | 488 +++++++++++++++++++++------------
 tcg/ppc/tcg-target.c.inc       | 254 +++++++++++------
 tcg/s390x/tcg-target.c.inc     | 195 +++++++------
 15 files changed, 695 insertions(+), 362 deletions(-)

-- 
2.43.0