On 9/11/26 10:43, Brian Cain wrote:
These three families still name tcg_env directly, so they cannot be
reached from a _var entry point.  Thread a TCGv_ptr base per operand
through expand_2s_{i32,i64,vec}, expand_2sh_vec, expand_cmp_{i32,i64,vec}
and do_gvec_shifts, and split expand_2i_ool out of tcg_gen_gvec_2i_ool
the way expand_2_ool already is, so the out-of-line fallback is reachable
too.

Add tcg_gen_gvec_{2s,shls,shrs,sars,dup_i32,cmp}_var; the existing entry
points become wrappers passing tcg_env and generate identical code.

Note that the operand swap in tcg_gen_gvec_cmp_var, used when a condition
has no helper, now has to swap the bases along with the offsets.

Reviewed-by: Marco Liebel<[email protected]>
Signed-off-by: Brian Cain<[email protected]>
---
  include/tcg/tcg-op-gvec-common.h |  21 +++
  tcg/tcg-op-gvec.c                | 256 +++++++++++++++++++++----------
  2 files changed, 192 insertions(+), 85 deletions(-)

Reviewed-by: Richard Henderson <[email protected]>

r~

Reply via email to