target/loongarch: Implement xvsll xvsrl xvsra xvrotr
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 <gaosong@loongson.cn> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230914022645.1151356-36-gaosong@loongson.cn>
This commit is contained in:
parent
4472a45a08
commit
ad6dc7189a
@ -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)
|
||||
|
@ -3649,6 +3649,14 @@ TRANS(vslli_b, LSX, gvec_vv_i, MO_8, tcg_gen_gvec_shli)
|
||||
TRANS(vslli_h, LSX, gvec_vv_i, MO_16, tcg_gen_gvec_shli)
|
||||
TRANS(vslli_w, LSX, gvec_vv_i, MO_32, tcg_gen_gvec_shli)
|
||||
TRANS(vslli_d, LSX, gvec_vv_i, MO_64, tcg_gen_gvec_shli)
|
||||
TRANS(xvsll_b, LASX, gvec_xxx, MO_8, tcg_gen_gvec_shlv)
|
||||
TRANS(xvsll_h, LASX, gvec_xxx, MO_16, tcg_gen_gvec_shlv)
|
||||
TRANS(xvsll_w, LASX, gvec_xxx, MO_32, tcg_gen_gvec_shlv)
|
||||
TRANS(xvsll_d, LASX, gvec_xxx, MO_64, tcg_gen_gvec_shlv)
|
||||
TRANS(xvslli_b, LASX, gvec_xx_i, MO_8, tcg_gen_gvec_shli)
|
||||
TRANS(xvslli_h, LASX, gvec_xx_i, MO_16, tcg_gen_gvec_shli)
|
||||
TRANS(xvslli_w, LASX, gvec_xx_i, MO_32, tcg_gen_gvec_shli)
|
||||
TRANS(xvslli_d, LASX, gvec_xx_i, MO_64, tcg_gen_gvec_shli)
|
||||
|
||||
TRANS(vsrl_b, LSX, gvec_vvv, MO_8, tcg_gen_gvec_shrv)
|
||||
TRANS(vsrl_h, LSX, gvec_vvv, MO_16, tcg_gen_gvec_shrv)
|
||||
@ -3658,6 +3666,14 @@ TRANS(vsrli_b, LSX, gvec_vv_i, MO_8, tcg_gen_gvec_shri)
|
||||
TRANS(vsrli_h, LSX, gvec_vv_i, MO_16, tcg_gen_gvec_shri)
|
||||
TRANS(vsrli_w, LSX, gvec_vv_i, MO_32, tcg_gen_gvec_shri)
|
||||
TRANS(vsrli_d, LSX, gvec_vv_i, MO_64, tcg_gen_gvec_shri)
|
||||
TRANS(xvsrl_b, LASX, gvec_xxx, MO_8, tcg_gen_gvec_shrv)
|
||||
TRANS(xvsrl_h, LASX, gvec_xxx, MO_16, tcg_gen_gvec_shrv)
|
||||
TRANS(xvsrl_w, LASX, gvec_xxx, MO_32, tcg_gen_gvec_shrv)
|
||||
TRANS(xvsrl_d, LASX, gvec_xxx, MO_64, tcg_gen_gvec_shrv)
|
||||
TRANS(xvsrli_b, LASX, gvec_xx_i, MO_8, tcg_gen_gvec_shri)
|
||||
TRANS(xvsrli_h, LASX, gvec_xx_i, MO_16, tcg_gen_gvec_shri)
|
||||
TRANS(xvsrli_w, LASX, gvec_xx_i, MO_32, tcg_gen_gvec_shri)
|
||||
TRANS(xvsrli_d, LASX, gvec_xx_i, MO_64, tcg_gen_gvec_shri)
|
||||
|
||||
TRANS(vsra_b, LSX, gvec_vvv, MO_8, tcg_gen_gvec_sarv)
|
||||
TRANS(vsra_h, LSX, gvec_vvv, MO_16, tcg_gen_gvec_sarv)
|
||||
@ -3667,6 +3683,14 @@ TRANS(vsrai_b, LSX, gvec_vv_i, MO_8, tcg_gen_gvec_sari)
|
||||
TRANS(vsrai_h, LSX, gvec_vv_i, MO_16, tcg_gen_gvec_sari)
|
||||
TRANS(vsrai_w, LSX, gvec_vv_i, MO_32, tcg_gen_gvec_sari)
|
||||
TRANS(vsrai_d, LSX, gvec_vv_i, MO_64, tcg_gen_gvec_sari)
|
||||
TRANS(xvsra_b, LASX, gvec_xxx, MO_8, tcg_gen_gvec_sarv)
|
||||
TRANS(xvsra_h, LASX, gvec_xxx, MO_16, tcg_gen_gvec_sarv)
|
||||
TRANS(xvsra_w, LASX, gvec_xxx, MO_32, tcg_gen_gvec_sarv)
|
||||
TRANS(xvsra_d, LASX, gvec_xxx, MO_64, tcg_gen_gvec_sarv)
|
||||
TRANS(xvsrai_b, LASX, gvec_xx_i, MO_8, tcg_gen_gvec_sari)
|
||||
TRANS(xvsrai_h, LASX, gvec_xx_i, MO_16, tcg_gen_gvec_sari)
|
||||
TRANS(xvsrai_w, LASX, gvec_xx_i, MO_32, tcg_gen_gvec_sari)
|
||||
TRANS(xvsrai_d, LASX, gvec_xx_i, MO_64, tcg_gen_gvec_sari)
|
||||
|
||||
TRANS(vrotr_b, LSX, gvec_vvv, MO_8, tcg_gen_gvec_rotrv)
|
||||
TRANS(vrotr_h, LSX, gvec_vvv, MO_16, tcg_gen_gvec_rotrv)
|
||||
@ -3676,6 +3700,14 @@ TRANS(vrotri_b, LSX, gvec_vv_i, MO_8, tcg_gen_gvec_rotri)
|
||||
TRANS(vrotri_h, LSX, gvec_vv_i, MO_16, tcg_gen_gvec_rotri)
|
||||
TRANS(vrotri_w, LSX, gvec_vv_i, MO_32, tcg_gen_gvec_rotri)
|
||||
TRANS(vrotri_d, LSX, gvec_vv_i, MO_64, tcg_gen_gvec_rotri)
|
||||
TRANS(xvrotr_b, LASX, gvec_xxx, MO_8, tcg_gen_gvec_rotrv)
|
||||
TRANS(xvrotr_h, LASX, gvec_xxx, MO_16, tcg_gen_gvec_rotrv)
|
||||
TRANS(xvrotr_w, LASX, gvec_xxx, MO_32, tcg_gen_gvec_rotrv)
|
||||
TRANS(xvrotr_d, LASX, gvec_xxx, MO_64, tcg_gen_gvec_rotrv)
|
||||
TRANS(xvrotri_b, LASX, gvec_xx_i, MO_8, tcg_gen_gvec_rotri)
|
||||
TRANS(xvrotri_h, LASX, gvec_xx_i, MO_16, tcg_gen_gvec_rotri)
|
||||
TRANS(xvrotri_w, LASX, gvec_xx_i, MO_32, tcg_gen_gvec_rotri)
|
||||
TRANS(xvrotri_d, LASX, gvec_xx_i, MO_64, tcg_gen_gvec_rotri)
|
||||
|
||||
TRANS(vsllwil_h_b, LSX, gen_vv_i, gen_helper_vsllwil_h_b)
|
||||
TRANS(vsllwil_w_h, LSX, gen_vv_i, gen_helper_vsllwil_w_h)
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user