From nobody Wed Nov 5 15:04:55 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 (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1535031821006666.9255348997076; Thu, 23 Aug 2018 06:43:41 -0700 (PDT) Received: from localhost ([::1]:36550 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fspth-0003b2-4d for importer@patchew.org; Thu, 23 Aug 2018 09:43:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45672) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fspm9-00050J-On for qemu-devel@nongnu.org; Thu, 23 Aug 2018 09:35:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fspm5-0008VL-Kq for qemu-devel@nongnu.org; Thu, 23 Aug 2018 09:35:49 -0400 Received: from mx2.rt-rk.com ([89.216.37.149]:38397 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 1fspm5-0007vQ-74 for qemu-devel@nongnu.org; Thu, 23 Aug 2018 09:35:45 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.rt-rk.com (Postfix) with ESMTP id AECEA1A2421; Thu, 23 Aug 2018 15:34:42 +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 883341A2428; Thu, 23 Aug 2018 15:34:42 +0200 (CEST) X-Virus-Scanned: amavisd-new at rt-rk.com From: Aleksandar Markovic To: qemu-devel@nongnu.org Date: Thu, 23 Aug 2018 15:33:53 +0200 Message-Id: <1535031276-22911-4-git-send-email-aleksandar.markovic@rt-rk.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535031276-22911-1-git-send-email-aleksandar.markovic@rt-rk.com> References: <1535031276-22911-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] [PULL v4 03/46] 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 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 0075dbc..4f95b9a 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -16010,6 +16010,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, @@ -16199,8 +16272,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 */ @@ -16221,6 +16413,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