From nobody Wed Nov 5 10:14:04 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534183629409826.0853306299042; Mon, 13 Aug 2018 11:07:09 -0700 (PDT) Received: from localhost ([::1]:40707 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fpHFE-0001FL-6w for importer@patchew.org; Mon, 13 Aug 2018 14:07:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59506) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fpH39-0005QI-RL for qemu-devel@nongnu.org; Mon, 13 Aug 2018 13:54:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fpH34-00075G-IA for qemu-devel@nongnu.org; Mon, 13 Aug 2018 13:54:39 -0400 Received: from mx2.rt-rk.com ([89.216.37.149]:55755 helo=mail.rt-rk.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fpH33-00072q-WA for qemu-devel@nongnu.org; Mon, 13 Aug 2018 13:54:34 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.rt-rk.com (Postfix) with ESMTP id EF88F1A2293; Mon, 13 Aug 2018 19:54:09 +0200 (CEST) Received: from rtrkw774-lin.domain.local (rtrkw774-lin.domain.local [10.10.13.43]) by mail.rt-rk.com (Postfix) with ESMTPSA id C373E1A229A; Mon, 13 Aug 2018 19:54:09 +0200 (CEST) X-Virus-Scanned: amavisd-new at rt-rk.com From: Aleksandar Markovic To: qemu-devel@nongnu.org Date: Mon, 13 Aug 2018 19:52:47 +0200 Message-Id: <1534182832-554-23-git-send-email-aleksandar.markovic@rt-rk.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1534182832-554-1-git-send-email-aleksandar.markovic@rt-rk.com> References: <1534182832-554-1-git-send-email-aleksandar.markovic@rt-rk.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 89.216.37.149 Subject: [Qemu-devel] [PATCH v8 22/87] target/mips: Add nanoMIPS DSP ASE opcodes X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, pburton@wavecomp.com, smarkovic@wavecomp.com, riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, philippe.mathieu.daude@gmail.com, amarkovic@wavecomp.com, pjovanovic@wavecomp.com, aurelien@aurel32.net Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Stefan Markovic Add nanoMIPS opcodes for DSP ASE instruction pools and instructions. Reviewed-by: Richard Henderson Signed-off-by: Aleksandar Markovic Signed-off-by: Stefan Markovic --- target/mips/translate.c | 215 ++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 215 insertions(+) diff --git a/target/mips/translate.c b/target/mips/translate.c index 5984ebd..800941f 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -16063,6 +16063,79 @@ enum { NM_SOV =3D 0x7a, }; =20 +/* POOL32A5 instruction pool */ +enum { + NM_CMP_EQ_PH =3D 0x00, + NM_CMP_LT_PH =3D 0x08, + NM_CMP_LE_PH =3D 0x10, + NM_CMPGU_EQ_QB =3D 0x18, + NM_CMPGU_LT_QB =3D 0x20, + NM_CMPGU_LE_QB =3D 0x28, + NM_CMPGDU_EQ_QB =3D 0x30, + NM_CMPGDU_LT_QB =3D 0x38, + NM_CMPGDU_LE_QB =3D 0x40, + NM_CMPU_EQ_QB =3D 0x48, + NM_CMPU_LT_QB =3D 0x50, + NM_CMPU_LE_QB =3D 0x58, + NM_ADDQ_S_W =3D 0x60, + NM_SUBQ_S_W =3D 0x68, + NM_ADDSC =3D 0x70, + NM_ADDWC =3D 0x78, + + NM_ADDQ_S_PH =3D 0x01, + NM_ADDQH_R_PH =3D 0x09, + NM_ADDQH_R_W =3D 0x11, + NM_ADDU_S_QB =3D 0x19, + NM_ADDU_S_PH =3D 0x21, + NM_ADDUH_R_QB =3D 0x29, + NM_SHRAV_R_PH =3D 0x31, + NM_SHRAV_R_QB =3D 0x39, + NM_SUBQ_S_PH =3D 0x41, + NM_SUBQH_R_PH =3D 0x49, + NM_SUBQH_R_W =3D 0x51, + NM_SUBU_S_QB =3D 0x59, + NM_SUBU_S_PH =3D 0x61, + NM_SUBUH_R_QB =3D 0x69, + NM_SHLLV_S_PH =3D 0x71, + NM_PRECR_SRA_R_PH_W =3D 0x79, + + NM_MULEU_S_PH_QBL =3D 0x12, + NM_MULEU_S_PH_QBR =3D 0x1a, + NM_MULQ_RS_PH =3D 0x22, + NM_MULQ_S_PH =3D 0x2a, + NM_MULQ_RS_W =3D 0x32, + NM_MULQ_S_W =3D 0x3a, + NM_APPEND =3D 0x42, + NM_MODSUB =3D 0x52, + NM_SHRAV_R_W =3D 0x5a, + NM_SHRLV_PH =3D 0x62, + NM_SHRLV_QB =3D 0x6a, + NM_SHLLV_QB =3D 0x72, + NM_SHLLV_S_W =3D 0x7a, + + NM_SHILO =3D 0x03, + + NM_MULEQ_S_W_PHL =3D 0x04, + NM_MULEQ_S_W_PHR =3D 0x0c, + + NM_MUL_S_PH =3D 0x05, + NM_PRECR_QB_PH =3D 0x0d, + NM_PRECRQ_QB_PH =3D 0x15, + NM_PRECRQ_PH_W =3D 0x1d, + NM_PRECRQ_RS_PH_W =3D 0x25, + NM_PRECRQU_S_QB_PH =3D 0x2d, + NM_PACKRL_PH =3D 0x35, + NM_PICK_QB =3D 0x3d, + NM_PICK_PH =3D 0x45, + + NM_SHRA_R_W =3D 0x5e, + NM_SHRA_R_PH =3D 0x66, + NM_SHLL_S_PH =3D 0x76, + NM_SHLL_S_W =3D 0x7e, + + NM_REPL_PH =3D 0x07 +}; + /* POOL32A7 instruction pool */ enum { NM_P_LSX =3D 0x00, @@ -16252,8 +16325,127 @@ enum { =20 /* POOL32Axf instruction pool */ enum { + NM_POOL32AXF_1 =3D 0x01, + NM_POOL32AXF_2 =3D 0x02, NM_POOL32AXF_4 =3D 0x04, NM_POOL32AXF_5 =3D 0x05, + NM_POOL32AXF_7 =3D 0x07, +}; + +/* POOL32Axf_1 instruction pool */ +enum { + NM_POOL32AXF_1_0 =3D 0x00, + NM_POOL32AXF_1_1 =3D 0x01, + NM_POOL32AXF_1_3 =3D 0x03, + NM_POOL32AXF_1_4 =3D 0x04, + NM_POOL32AXF_1_5 =3D 0x05, + NM_POOL32AXF_1_7 =3D 0x07, +}; + +/* POOL32Axf_2 instruction pool */ +enum { + NM_POOL32AXF_2_0_7 =3D 0x00, + NM_POOL32AXF_2_8_15 =3D 0x01, + NM_POOL32AXF_2_16_23 =3D 0x02, + NM_POOL32AXF_2_24_31 =3D 0x03, +}; + +/* POOL32Axf_7 instruction pool */ +enum { + NM_SHRA_R_QB =3D 0x0, + NM_SHRL_PH =3D 0x1, + NM_REPL_QB =3D 0x2, +}; + +/* POOL32Axf_1_0 instruction pool */ +enum { + NM_MFHI =3D 0x0, + NM_MFLO =3D 0x1, + NM_MTHI =3D 0x2, + NM_MTLO =3D 0x3, +}; + +/* POOL32Axf_1_1 instruction pool */ +enum { + NM_MTHLIP =3D 0x0, + NM_SHILOV =3D 0x1, +}; + +/* POOL32Axf_1_3 instruction pool */ +enum { + NM_RDDSP =3D 0x0, + NM_WRDSP =3D 0x1, + NM_EXTP =3D 0x2, + NM_EXTPDP =3D 0x3, +}; + +/* POOL32Axf_1_4 instruction pool */ +enum { + NM_SHLL_QB =3D 0x0, + NM_SHRL_QB =3D 0x1, +}; + +/* POOL32Axf_1_5 instruction pool */ +enum { + NM_MAQ_S_W_PHR =3D 0x0, + NM_MAQ_S_W_PHL =3D 0x1, + NM_MAQ_SA_W_PHR =3D 0x2, + NM_MAQ_SA_W_PHL =3D 0x3, +}; + +/* POOL32Axf_1_7 instruction pool */ +enum { + NM_EXTR_W =3D 0x0, + NM_EXTR_R_W =3D 0x1, + NM_EXTR_RS_W =3D 0x2, + NM_EXTR_S_H =3D 0x3, +}; + +/* POOL32Axf_2_0_7 instruction pool */ +enum { + NM_DPA_W_PH =3D 0x0, + NM_DPAQ_S_W_PH =3D 0x1, + NM_DPS_W_PH =3D 0x2, + NM_DPSQ_S_W_PH =3D 0x3, + NM_BALIGN =3D 0x4, + NM_MADD =3D 0x5, + NM_MULT =3D 0x6, + NM_EXTRV_W =3D 0x7, +}; + +/* POOL32Axf_2_8_15 instruction pool */ +enum { + NM_DPAX_W_PH =3D 0x0, + NM_DPAQ_SA_L_W =3D 0x1, + NM_DPSX_W_PH =3D 0x2, + NM_DPSQ_SA_L_W =3D 0x3, + NM_MADDU =3D 0x5, + NM_MULTU =3D 0x6, + NM_EXTRV_R_W =3D 0x7, +}; + +/* POOL32Axf_2_16_23 instruction pool */ +enum { + NM_DPAU_H_QBL =3D 0x0, + NM_DPAQX_S_W_PH =3D 0x1, + NM_DPSU_H_QBL =3D 0x2, + NM_DPSQX_S_W_PH =3D 0x3, + NM_EXTPV =3D 0x4, + NM_MSUB =3D 0x5, + NM_MULSA_W_PH =3D 0x6, + NM_EXTRV_RS_W =3D 0x7, +}; + +/* POOL32Axf_2_24_31 instruction pool */ +enum { + NM_DPAU_H_QBR =3D 0x0, + NM_DPAQX_SA_W_PH =3D 0x1, + NM_DPSU_H_QBR =3D 0x2, + NM_DPSQX_SA_W_PH =3D 0x3, + NM_EXTPDPV =3D 0x4, + NM_MSUBU =3D 0x5, + NM_MULSAQ_S_W_PH =3D 0x6, + NM_EXTRV_S_H =3D 0x7, }; =20 /* POOL32Axf_{4, 5} instruction pool */ @@ -16274,6 +16466,29 @@ enum { NM_WAIT =3D 0x61, NM_DERET =3D 0x71, NM_ERETX =3D 0x79, + + /* nanoMIPS DSP instructions */ + NM_ABSQ_S_QB =3D 0x00, + NM_ABSQ_S_PH =3D 0x08, + NM_ABSQ_S_W =3D 0x10, + NM_PRECEQ_W_PHL =3D 0x28, + NM_PRECEQ_W_PHR =3D 0x30, + NM_PRECEQU_PH_QBL =3D 0x38, + NM_PRECEQU_PH_QBR =3D 0x48, + NM_PRECEU_PH_QBL =3D 0x58, + NM_PRECEU_PH_QBR =3D 0x68, + NM_PRECEQU_PH_QBLA =3D 0x39, + NM_PRECEQU_PH_QBRA =3D 0x49, + NM_PRECEU_PH_QBLA =3D 0x59, + NM_PRECEU_PH_QBRA =3D 0x69, + NM_REPLV_PH =3D 0x01, + NM_REPLV_QB =3D 0x09, + NM_BITREV =3D 0x18, + NM_INSV =3D 0x20, + NM_RADDU_W_QB =3D 0x78, + + NM_BITSWAP =3D 0x05, + NM_WSBH =3D 0x3d, }; =20 /* PP.SR instruction pool */ --=20 2.7.4