This patch includes: - XVSLL[I].{B/H/W/D}; - XVSRL[I].{B/H/W/D}; - XVSRA[I].{B/H/W/D}; - XVROTR[I].{B/H/W/D}.
Signed-off-by: Song Gao <gaos...@loongson.cn> --- target/loongarch/disas.c | 36 ++++++++++++++++++++ target/loongarch/insn_trans/trans_lasx.c.inc | 36 ++++++++++++++++++++ target/loongarch/insns.decode | 33 ++++++++++++++++++ 3 files changed, 105 insertions(+) diff --git a/target/loongarch/disas.c b/target/loongarch/disas.c index 59fa249bae..e081a11aba 100644 --- a/target/loongarch/disas.c +++ b/target/loongarch/disas.c @@ -2041,6 +2041,42 @@ INSN_LASX(xvori_b, vv_i) INSN_LASX(xvxori_b, vv_i) INSN_LASX(xvnori_b, vv_i) +INSN_LASX(xvsll_b, vvv) +INSN_LASX(xvsll_h, vvv) +INSN_LASX(xvsll_w, vvv) +INSN_LASX(xvsll_d, vvv) +INSN_LASX(xvslli_b, vv_i) +INSN_LASX(xvslli_h, vv_i) +INSN_LASX(xvslli_w, vv_i) +INSN_LASX(xvslli_d, vv_i) + +INSN_LASX(xvsrl_b, vvv) +INSN_LASX(xvsrl_h, vvv) +INSN_LASX(xvsrl_w, vvv) +INSN_LASX(xvsrl_d, vvv) +INSN_LASX(xvsrli_b, vv_i) +INSN_LASX(xvsrli_h, vv_i) +INSN_LASX(xvsrli_w, vv_i) +INSN_LASX(xvsrli_d, vv_i) + +INSN_LASX(xvsra_b, vvv) +INSN_LASX(xvsra_h, vvv) +INSN_LASX(xvsra_w, vvv) +INSN_LASX(xvsra_d, vvv) +INSN_LASX(xvsrai_b, vv_i) +INSN_LASX(xvsrai_h, vv_i) +INSN_LASX(xvsrai_w, vv_i) +INSN_LASX(xvsrai_d, vv_i) + +INSN_LASX(xvrotr_b, vvv) +INSN_LASX(xvrotr_h, vvv) +INSN_LASX(xvrotr_w, vvv) +INSN_LASX(xvrotr_d, vvv) +INSN_LASX(xvrotri_b, vv_i) +INSN_LASX(xvrotri_h, vv_i) +INSN_LASX(xvrotri_w, vv_i) +INSN_LASX(xvrotri_d, vv_i) + INSN_LASX(xvreplgr2vr_b, vr) INSN_LASX(xvreplgr2vr_h, vr) INSN_LASX(xvreplgr2vr_w, vr) diff --git a/target/loongarch/insn_trans/trans_lasx.c.inc b/target/loongarch/insn_trans/trans_lasx.c.inc index b1dc53dc64..b275d95174 100644 --- a/target/loongarch/insn_trans/trans_lasx.c.inc +++ b/target/loongarch/insn_trans/trans_lasx.c.inc @@ -417,6 +417,42 @@ TRANS(xvori_b, gvec_vv_i, 32, MO_8, tcg_gen_gvec_ori) TRANS(xvxori_b, gvec_vv_i, 32, MO_8, tcg_gen_gvec_xori) TRANS(xvnori_b, gvec_vv_i, 32, MO_8, do_vnori_b) +TRANS(xvsll_b, gvec_vvv, 32, MO_8, tcg_gen_gvec_shlv) +TRANS(xvsll_h, gvec_vvv, 32, MO_16, tcg_gen_gvec_shlv) +TRANS(xvsll_w, gvec_vvv, 32, MO_32, tcg_gen_gvec_shlv) +TRANS(xvsll_d, gvec_vvv, 32, MO_64, tcg_gen_gvec_shlv) +TRANS(xvslli_b, gvec_vv_i, 32, MO_8, tcg_gen_gvec_shli) +TRANS(xvslli_h, gvec_vv_i, 32, MO_16, tcg_gen_gvec_shli) +TRANS(xvslli_w, gvec_vv_i, 32, MO_32, tcg_gen_gvec_shli) +TRANS(xvslli_d, gvec_vv_i, 32, MO_64, tcg_gen_gvec_shli) + +TRANS(xvsrl_b, gvec_vvv, 32, MO_8, tcg_gen_gvec_shrv) +TRANS(xvsrl_h, gvec_vvv, 32, MO_16, tcg_gen_gvec_shrv) +TRANS(xvsrl_w, gvec_vvv, 32, MO_32, tcg_gen_gvec_shrv) +TRANS(xvsrl_d, gvec_vvv, 32, MO_64, tcg_gen_gvec_shrv) +TRANS(xvsrli_b, gvec_vv_i, 32, MO_8, tcg_gen_gvec_shri) +TRANS(xvsrli_h, gvec_vv_i, 32, MO_16, tcg_gen_gvec_shri) +TRANS(xvsrli_w, gvec_vv_i, 32, MO_32, tcg_gen_gvec_shri) +TRANS(xvsrli_d, gvec_vv_i, 32, MO_64, tcg_gen_gvec_shri) + +TRANS(xvsra_b, gvec_vvv, 32, MO_8, tcg_gen_gvec_sarv) +TRANS(xvsra_h, gvec_vvv, 32, MO_16, tcg_gen_gvec_sarv) +TRANS(xvsra_w, gvec_vvv, 32, MO_32, tcg_gen_gvec_sarv) +TRANS(xvsra_d, gvec_vvv, 32, MO_64, tcg_gen_gvec_sarv) +TRANS(xvsrai_b, gvec_vv_i, 32, MO_8, tcg_gen_gvec_sari) +TRANS(xvsrai_h, gvec_vv_i, 32, MO_16, tcg_gen_gvec_sari) +TRANS(xvsrai_w, gvec_vv_i, 32, MO_32, tcg_gen_gvec_sari) +TRANS(xvsrai_d, gvec_vv_i, 32, MO_64, tcg_gen_gvec_sari) + +TRANS(xvrotr_b, gvec_vvv, 32, MO_8, tcg_gen_gvec_rotrv) +TRANS(xvrotr_h, gvec_vvv, 32, MO_16, tcg_gen_gvec_rotrv) +TRANS(xvrotr_w, gvec_vvv, 32, MO_32, tcg_gen_gvec_rotrv) +TRANS(xvrotr_d, gvec_vvv, 32, MO_64, tcg_gen_gvec_rotrv) +TRANS(xvrotri_b, gvec_vv_i, 32, MO_8, tcg_gen_gvec_rotri) +TRANS(xvrotri_h, gvec_vv_i, 32, MO_16, tcg_gen_gvec_rotri) +TRANS(xvrotri_w, gvec_vv_i, 32, MO_32, tcg_gen_gvec_rotri) +TRANS(xvrotri_d, gvec_vv_i, 32, MO_64, tcg_gen_gvec_rotri) + TRANS(xvreplgr2vr_b, gvec_dup, 32, MO_8) TRANS(xvreplgr2vr_h, gvec_dup, 32, MO_16) TRANS(xvreplgr2vr_w, gvec_dup, 32, MO_32) diff --git a/target/loongarch/insns.decode b/target/loongarch/insns.decode index fb28666577..fb7bd9fb34 100644 --- a/target/loongarch/insns.decode +++ b/target/loongarch/insns.decode @@ -1619,6 +1619,39 @@ xvori_b 0111 01111101 01 ........ ..... ..... @vv_ui8 xvxori_b 0111 01111101 10 ........ ..... ..... @vv_ui8 xvnori_b 0111 01111101 11 ........ ..... ..... @vv_ui8 +xvsll_b 0111 01001110 10000 ..... ..... ..... @vvv +xvsll_h 0111 01001110 10001 ..... ..... ..... @vvv +xvsll_w 0111 01001110 10010 ..... ..... ..... @vvv +xvsll_d 0111 01001110 10011 ..... ..... ..... @vvv +xvslli_b 0111 01110010 11000 01 ... ..... ..... @vv_ui3 +xvslli_h 0111 01110010 11000 1 .... ..... ..... @vv_ui4 +xvslli_w 0111 01110010 11001 ..... ..... ..... @vv_ui5 +xvslli_d 0111 01110010 1101 ...... ..... ..... @vv_ui6 +xvsrl_b 0111 01001110 10100 ..... ..... ..... @vvv +xvsrl_h 0111 01001110 10101 ..... ..... ..... @vvv +xvsrl_w 0111 01001110 10110 ..... ..... ..... @vvv +xvsrl_d 0111 01001110 10111 ..... ..... ..... @vvv +xvsrli_b 0111 01110011 00000 01 ... ..... ..... @vv_ui3 +xvsrli_h 0111 01110011 00000 1 .... ..... ..... @vv_ui4 +xvsrli_w 0111 01110011 00001 ..... ..... ..... @vv_ui5 +xvsrli_d 0111 01110011 0001 ...... ..... ..... @vv_ui6 +xvsra_b 0111 01001110 11000 ..... ..... ..... @vvv +xvsra_h 0111 01001110 11001 ..... ..... ..... @vvv +xvsra_w 0111 01001110 11010 ..... ..... ..... @vvv +xvsra_d 0111 01001110 11011 ..... ..... ..... @vvv +xvsrai_b 0111 01110011 01000 01 ... ..... ..... @vv_ui3 +xvsrai_h 0111 01110011 01000 1 .... ..... ..... @vv_ui4 +xvsrai_w 0111 01110011 01001 ..... ..... ..... @vv_ui5 +xvsrai_d 0111 01110011 0101 ...... ..... ..... @vv_ui6 +xvrotr_b 0111 01001110 11100 ..... ..... ..... @vvv +xvrotr_h 0111 01001110 11101 ..... ..... ..... @vvv +xvrotr_w 0111 01001110 11110 ..... ..... ..... @vvv +xvrotr_d 0111 01001110 11111 ..... ..... ..... @vvv +xvrotri_b 0111 01101010 00000 01 ... ..... ..... @vv_ui3 +xvrotri_h 0111 01101010 00000 1 .... ..... ..... @vv_ui4 +xvrotri_w 0111 01101010 00001 ..... ..... ..... @vv_ui5 +xvrotri_d 0111 01101010 0001 ...... ..... ..... @vv_ui6 + xvreplgr2vr_b 0111 01101001 11110 00000 ..... ..... @vr xvreplgr2vr_h 0111 01101001 11110 00001 ..... ..... @vr xvreplgr2vr_w 0111 01101001 11110 00010 ..... ..... @vr -- 2.39.1