Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
target/loongarch: Implement xvssrlrn xvssrarn
This patch includes:
- XVSSRLRN.{B.H/H.W/W.D};
- XVSSRARN.{B.H/H.W/W.D};
- XVSSRLRN.{BU.H/HU.W/WU.D};
- XVSSRARN.{BU.H/HU.W/WU.D};
- XVSSRLRNI.{B.H/H.W/W.D/D.Q};
- XVSSRARNI.{B.H/H.W/W.D/D.Q};
- XVSSRLRNI.{BU.H/HU.W/WU.D/DU.Q};
- XVSSRARNI.{BU.H/HU.W/WU.D/DU.Q}.

Signed-off-by: Song Gao <gaosong@loongson.cn>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230914022645.1151356-42-gaosong@loongson.cn>
  • Loading branch information
gaosong-loongson committed Sep 20, 2023
1 parent 6256c8c commit 77fca79
Show file tree
Hide file tree
Showing 4 changed files with 378 additions and 199 deletions.
30 changes: 30 additions & 0 deletions target/loongarch/disas.c
Expand Up @@ -2166,6 +2166,36 @@ INSN_LASX(xvssrani_hu_w, vv_i)
INSN_LASX(xvssrani_wu_d, vv_i)
INSN_LASX(xvssrani_du_q, vv_i)

INSN_LASX(xvssrlrn_b_h, vvv)
INSN_LASX(xvssrlrn_h_w, vvv)
INSN_LASX(xvssrlrn_w_d, vvv)
INSN_LASX(xvssrarn_b_h, vvv)
INSN_LASX(xvssrarn_h_w, vvv)
INSN_LASX(xvssrarn_w_d, vvv)
INSN_LASX(xvssrlrn_bu_h, vvv)
INSN_LASX(xvssrlrn_hu_w, vvv)
INSN_LASX(xvssrlrn_wu_d, vvv)
INSN_LASX(xvssrarn_bu_h, vvv)
INSN_LASX(xvssrarn_hu_w, vvv)
INSN_LASX(xvssrarn_wu_d, vvv)

INSN_LASX(xvssrlrni_b_h, vv_i)
INSN_LASX(xvssrlrni_h_w, vv_i)
INSN_LASX(xvssrlrni_w_d, vv_i)
INSN_LASX(xvssrlrni_d_q, vv_i)
INSN_LASX(xvssrlrni_bu_h, vv_i)
INSN_LASX(xvssrlrni_hu_w, vv_i)
INSN_LASX(xvssrlrni_wu_d, vv_i)
INSN_LASX(xvssrlrni_du_q, vv_i)
INSN_LASX(xvssrarni_b_h, vv_i)
INSN_LASX(xvssrarni_h_w, vv_i)
INSN_LASX(xvssrarni_w_d, vv_i)
INSN_LASX(xvssrarni_d_q, vv_i)
INSN_LASX(xvssrarni_bu_h, vv_i)
INSN_LASX(xvssrarni_hu_w, vv_i)
INSN_LASX(xvssrarni_wu_d, vv_i)
INSN_LASX(xvssrarni_du_q, vv_i)

INSN_LASX(xvreplgr2vr_b, vr)
INSN_LASX(xvreplgr2vr_h, vr)
INSN_LASX(xvreplgr2vr_w, vr)
Expand Down
28 changes: 28 additions & 0 deletions target/loongarch/insn_trans/trans_vec.c.inc
Expand Up @@ -3895,6 +3895,18 @@ TRANS(vssrlrn_wu_d, LSX, gen_vvv, gen_helper_vssrlrn_wu_d)
TRANS(vssrarn_bu_h, LSX, gen_vvv, gen_helper_vssrarn_bu_h)
TRANS(vssrarn_hu_w, LSX, gen_vvv, gen_helper_vssrarn_hu_w)
TRANS(vssrarn_wu_d, LSX, gen_vvv, gen_helper_vssrarn_wu_d)
TRANS(xvssrlrn_b_h, LASX, gen_xxx, gen_helper_vssrlrn_b_h)
TRANS(xvssrlrn_h_w, LASX, gen_xxx, gen_helper_vssrlrn_h_w)
TRANS(xvssrlrn_w_d, LASX, gen_xxx, gen_helper_vssrlrn_w_d)
TRANS(xvssrarn_b_h, LASX, gen_xxx, gen_helper_vssrarn_b_h)
TRANS(xvssrarn_h_w, LASX, gen_xxx, gen_helper_vssrarn_h_w)
TRANS(xvssrarn_w_d, LASX, gen_xxx, gen_helper_vssrarn_w_d)
TRANS(xvssrlrn_bu_h, LASX, gen_xxx, gen_helper_vssrlrn_bu_h)
TRANS(xvssrlrn_hu_w, LASX, gen_xxx, gen_helper_vssrlrn_hu_w)
TRANS(xvssrlrn_wu_d, LASX, gen_xxx, gen_helper_vssrlrn_wu_d)
TRANS(xvssrarn_bu_h, LASX, gen_xxx, gen_helper_vssrarn_bu_h)
TRANS(xvssrarn_hu_w, LASX, gen_xxx, gen_helper_vssrarn_hu_w)
TRANS(xvssrarn_wu_d, LASX, gen_xxx, gen_helper_vssrarn_wu_d)

TRANS(vssrlrni_b_h, LSX, gen_vv_i, gen_helper_vssrlrni_b_h)
TRANS(vssrlrni_h_w, LSX, gen_vv_i, gen_helper_vssrlrni_h_w)
Expand All @@ -3912,6 +3924,22 @@ TRANS(vssrarni_bu_h, LSX, gen_vv_i, gen_helper_vssrarni_bu_h)
TRANS(vssrarni_hu_w, LSX, gen_vv_i, gen_helper_vssrarni_hu_w)
TRANS(vssrarni_wu_d, LSX, gen_vv_i, gen_helper_vssrarni_wu_d)
TRANS(vssrarni_du_q, LSX, gen_vv_i, gen_helper_vssrarni_du_q)
TRANS(xvssrlrni_b_h, LASX, gen_xx_i, gen_helper_vssrlrni_b_h)
TRANS(xvssrlrni_h_w, LASX, gen_xx_i, gen_helper_vssrlrni_h_w)
TRANS(xvssrlrni_w_d, LASX, gen_xx_i, gen_helper_vssrlrni_w_d)
TRANS(xvssrlrni_d_q, LASX, gen_xx_i, gen_helper_vssrlrni_d_q)
TRANS(xvssrarni_b_h, LASX, gen_xx_i, gen_helper_vssrarni_b_h)
TRANS(xvssrarni_h_w, LASX, gen_xx_i, gen_helper_vssrarni_h_w)
TRANS(xvssrarni_w_d, LASX, gen_xx_i, gen_helper_vssrarni_w_d)
TRANS(xvssrarni_d_q, LASX, gen_xx_i, gen_helper_vssrarni_d_q)
TRANS(xvssrlrni_bu_h, LASX, gen_xx_i, gen_helper_vssrlrni_bu_h)
TRANS(xvssrlrni_hu_w, LASX, gen_xx_i, gen_helper_vssrlrni_hu_w)
TRANS(xvssrlrni_wu_d, LASX, gen_xx_i, gen_helper_vssrlrni_wu_d)
TRANS(xvssrlrni_du_q, LASX, gen_xx_i, gen_helper_vssrlrni_du_q)
TRANS(xvssrarni_bu_h, LASX, gen_xx_i, gen_helper_vssrarni_bu_h)
TRANS(xvssrarni_hu_w, LASX, gen_xx_i, gen_helper_vssrarni_hu_w)
TRANS(xvssrarni_wu_d, LASX, gen_xx_i, gen_helper_vssrarni_wu_d)
TRANS(xvssrarni_du_q, LASX, gen_xx_i, gen_helper_vssrarni_du_q)

TRANS(vclo_b, LSX, gen_vv, gen_helper_vclo_b)
TRANS(vclo_h, LSX, gen_vv, gen_helper_vclo_h)
Expand Down
30 changes: 30 additions & 0 deletions target/loongarch/insns.decode
Expand Up @@ -1740,6 +1740,36 @@ xvssrani_hu_w 0111 01110110 01001 ..... ..... ..... @vv_ui5
xvssrani_wu_d 0111 01110110 0101 ...... ..... ..... @vv_ui6
xvssrani_du_q 0111 01110110 011 ....... ..... ..... @vv_ui7

xvssrlrn_b_h 0111 01010000 00001 ..... ..... ..... @vvv
xvssrlrn_h_w 0111 01010000 00010 ..... ..... ..... @vvv
xvssrlrn_w_d 0111 01010000 00011 ..... ..... ..... @vvv
xvssrarn_b_h 0111 01010000 00101 ..... ..... ..... @vvv
xvssrarn_h_w 0111 01010000 00110 ..... ..... ..... @vvv
xvssrarn_w_d 0111 01010000 00111 ..... ..... ..... @vvv
xvssrlrn_bu_h 0111 01010000 10001 ..... ..... ..... @vvv
xvssrlrn_hu_w 0111 01010000 10010 ..... ..... ..... @vvv
xvssrlrn_wu_d 0111 01010000 10011 ..... ..... ..... @vvv
xvssrarn_bu_h 0111 01010000 10101 ..... ..... ..... @vvv
xvssrarn_hu_w 0111 01010000 10110 ..... ..... ..... @vvv
xvssrarn_wu_d 0111 01010000 10111 ..... ..... ..... @vvv

xvssrlrni_b_h 0111 01110101 00000 1 .... ..... ..... @vv_ui4
xvssrlrni_h_w 0111 01110101 00001 ..... ..... ..... @vv_ui5
xvssrlrni_w_d 0111 01110101 0001 ...... ..... ..... @vv_ui6
xvssrlrni_d_q 0111 01110101 001 ....... ..... ..... @vv_ui7
xvssrarni_b_h 0111 01110110 10000 1 .... ..... ..... @vv_ui4
xvssrarni_h_w 0111 01110110 10001 ..... ..... ..... @vv_ui5
xvssrarni_w_d 0111 01110110 1001 ...... ..... ..... @vv_ui6
xvssrarni_d_q 0111 01110110 101 ....... ..... ..... @vv_ui7
xvssrlrni_bu_h 0111 01110101 01000 1 .... ..... ..... @vv_ui4
xvssrlrni_hu_w 0111 01110101 01001 ..... ..... ..... @vv_ui5
xvssrlrni_wu_d 0111 01110101 0101 ...... ..... ..... @vv_ui6
xvssrlrni_du_q 0111 01110101 011 ....... ..... ..... @vv_ui7
xvssrarni_bu_h 0111 01110110 11000 1 .... ..... ..... @vv_ui4
xvssrarni_hu_w 0111 01110110 11001 ..... ..... ..... @vv_ui5
xvssrarni_wu_d 0111 01110110 1101 ...... ..... ..... @vv_ui6
xvssrarni_du_q 0111 01110110 111 ....... ..... ..... @vv_ui7

xvreplgr2vr_b 0111 01101001 11110 00000 ..... ..... @vr
xvreplgr2vr_h 0111 01101001 11110 00001 ..... ..... @vr
xvreplgr2vr_w 0111 01101001 11110 00010 ..... ..... @vr
Expand Down

0 comments on commit 77fca79

Please sign in to comment.