target/loongarch: Implement xvaddi/xvsubi

This patch includes:
- XVADDI.{B/H/W/D}U;
- XVSUBI.{B/H/W/D}U.

Signed-off-by: Song Gao <gaosong@loongson.cn>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230914022645.1151356-17-gaosong@loongson.cn>
This commit is contained in:
Song Gao 2023-09-14 10:26:04 +08:00
parent 73123406f3
commit 342004214b
No known key found for this signature in database
GPG key ID: 40A2FFF239263EDF
3 changed files with 51 additions and 8 deletions

View file

@ -1713,6 +1713,11 @@ static void output_vr_x(DisasContext *ctx, arg_vr *a, const char *mnemonic)
output(ctx, mnemonic, "x%d, r%d", a->vd, a->rj);
}
static void output_vv_i_x(DisasContext *ctx, arg_vv_i *a, const char *mnemonic)
{
output(ctx, mnemonic, "x%d, x%d, 0x%x", a->vd, a->vj, a->imm);
}
INSN_LASX(xvadd_b, vvv)
INSN_LASX(xvadd_h, vvv)
INSN_LASX(xvadd_w, vvv)
@ -1724,6 +1729,15 @@ INSN_LASX(xvsub_w, vvv)
INSN_LASX(xvsub_d, vvv)
INSN_LASX(xvsub_q, vvv)
INSN_LASX(xvaddi_bu, vv_i)
INSN_LASX(xvaddi_hu, vv_i)
INSN_LASX(xvaddi_wu, vv_i)
INSN_LASX(xvaddi_du, vv_i)
INSN_LASX(xvsubi_bu, vv_i)
INSN_LASX(xvsubi_hu, vv_i)
INSN_LASX(xvsubi_wu, vv_i)
INSN_LASX(xvsubi_du, vv_i)
INSN_LASX(xvreplgr2vr_b, vr)
INSN_LASX(xvreplgr2vr_h, vr)
INSN_LASX(xvreplgr2vr_w, vr)