qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/12] tcg: Improve support for cmpsel_vec
@ 2024-09-08  2:26 Richard Henderson
  2024-09-08  2:26 ` [PATCH 01/12] tcg: Fix iteration step in 32-bit gvec operation Richard Henderson
                   ` (12 more replies)
  0 siblings, 13 replies; 20+ messages in thread
From: Richard Henderson @ 2024-09-08  2:26 UTC (permalink / raw)
  To: qemu-devel; +Cc: zhiwei_liu, tangtiancheng.ttc, liwei1518, bmeng.cn

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



^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2024-09-10 14:46 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-08  2:26 [PATCH 00/12] tcg: Improve support for cmpsel_vec Richard Henderson
2024-09-08  2:26 ` [PATCH 01/12] tcg: Fix iteration step in 32-bit gvec operation Richard Henderson
2024-09-10  6:57   ` Philippe Mathieu-Daudé
2024-09-10 14:46     ` Richard Henderson
2024-09-08  2:26 ` [PATCH 02/12] tcg: Export vec_gen_6 Richard Henderson
2024-09-10  6:57   ` Philippe Mathieu-Daudé
2024-09-08  2:26 ` [PATCH 03/12] tcg/i386: Split out tcg_out_vex_modrm_type Richard Henderson
2024-09-10  6:59   ` Philippe Mathieu-Daudé
2024-09-08  2:26 ` [PATCH 04/12] tcg/i386: Do not expand cmp_vec early Richard Henderson
2024-09-08  2:26 ` [PATCH 05/12] tcg/i386: Do not expand cmpsel_vec early Richard Henderson
2024-09-08  2:26 ` [PATCH 06/12] tcg/optimize: Fold movcond with true and false values identical Richard Henderson
2024-09-10  7:00   ` Philippe Mathieu-Daudé
2024-09-08  2:26 ` [PATCH 07/12] tcg/optimize: Optimize cmp_vec and cmpsel_vec Richard Henderson
2024-09-08  2:26 ` [PATCH 08/12] tcg/optimize: Optimize bitsel_vec Richard Henderson
2024-09-08  2:26 ` [PATCH 09/12] tcg/i386: Optimize cmpsel with constant 0 arguments Richard Henderson
2024-09-08  2:26 ` [PATCH 10/12] tcg/i386: Implement cmp_vec with avx512 insns Richard Henderson
2024-09-08  2:26 ` [PATCH 11/12] tcg/i386: Add predicate parameters to tcg_out_evex_opc Richard Henderson
2024-09-10  7:04   ` Philippe Mathieu-Daudé
2024-09-08  2:26 ` [PATCH 12/12] tcg/i386: Implement cmpsel_vec with avx512 insns Richard Henderson
2024-09-09 23:37 ` [PATCH 00/12] tcg: Improve support for cmpsel_vec Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).