On 12/24/22 00:16, Song Gao wrote:
+TRANS(vavg_b, gen_vvv, gen_helper_vavg_b) +TRANS(vavg_h, gen_vvv, gen_helper_vavg_h) +TRANS(vavg_w, gen_vvv, gen_helper_vavg_w) +TRANS(vavg_d, gen_vvv, gen_helper_vavg_d) +TRANS(vavg_bu, gen_vvv, gen_helper_vavg_bu) +TRANS(vavg_hu, gen_vvv, gen_helper_vavg_hu) +TRANS(vavg_wu, gen_vvv, gen_helper_vavg_wu) +TRANS(vavg_du, gen_vvv, gen_helper_vavg_du) +TRANS(vavgr_b, gen_vvv, gen_helper_vavgr_b) +TRANS(vavgr_h, gen_vvv, gen_helper_vavgr_h) +TRANS(vavgr_w, gen_vvv, gen_helper_vavgr_w) +TRANS(vavgr_d, gen_vvv, gen_helper_vavgr_d) +TRANS(vavgr_bu, gen_vvv, gen_helper_vavgr_bu) +TRANS(vavgr_hu, gen_vvv, gen_helper_vavgr_hu) +TRANS(vavgr_wu, gen_vvv, gen_helper_vavgr_wu) +TRANS(vavgr_du, gen_vvv, gen_helper_vavgr_du)
These can be implemented with gvec. See e.g. do_vx_vavg in target/ppc/translate/vmx-impl.c.inc, which implements the rounding version.
r~