From patchwork Sat Oct 23 21:47:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545243 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=g7j/ChCc; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFGG74yHz9sS8 for ; Sun, 24 Oct 2021 08:48:38 +1100 (AEDT) Received: from localhost ([::1]:45426 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOsW-00037F-C9 for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:48:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40650) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsA-00033r-5D for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:14 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]:39927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOs8-00054z-BA for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:13 -0400 Received: by mail-wr1-x431.google.com with SMTP id z14so3682716wrg.6 for ; Sat, 23 Oct 2021 14:48:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4h8cd2gj6LioCQKjAoPWyLIIdDE8FcGsphzqJRwMU9Y=; b=g7j/ChCc/LcNFTfAhTouMvq95VT2Z/oE6cC6dPh783oLS+sQ+3v1F3jaD8QfE3rQMm u29yIy9D3i/gjj+wHBs8p2pzW4P5OrC6SAKJ+RrqXwIVGpUtM5hm/0MLCsZq9flxwBjY OCZ0+9gq4k72YJvXQ1D0azTYoGQ4erYCzBdgInpIWOcCT+120gikrDyKidALpJjTpAD3 rXqLpvIo5XT1O7+AgwUpPZT7ETORlgBDgDQA7TeFqT4WT/IIxv+xHmuHpN3ROSOGONTg ilOj6l4E+Jtm19F5YbKO3aNJKTWz/oRHSy1jI1JlaxvK5WoCoMSgoBFT/Ifn+6OdRcoC YzsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=4h8cd2gj6LioCQKjAoPWyLIIdDE8FcGsphzqJRwMU9Y=; b=u1wv/5lf25CEkVRfpfzaM24kUJCK/tzAVxs+zu7C47Fols2B0XNZ1tKzqT5WKOeLAf +MrTFmWsT2w6BkvNGl9h8ideacVMAYC48NuCYUP2Vc90nOJao8llvGWgmFwo3K0Z6s5A 8KtjD1134H7tlNDqXLnIcAaANxt9UMDNagW0k8pLNTE9Z0PO7aZB8uc0rWJ9FZ6klp6m 83Z6sACzM6GPzfaDoPtpb/aLzdZexhAGbGd2+wSD7UDfHyZoU6D1ZLe7TO9ll7d6rHnH ZduRHwW0EzjTaKQA39ErQnfkye2eeKW3QKl1SrFgLHY65arCGclG5yP0lalatekHPpHp F6kA== X-Gm-Message-State: AOAM532iUdwxuAiIIDMnwMH87rXQgh7+nG6KUP9oLLC77qSE2LUfW7ZO /RwY+5tsgq8DsFrxLDSTYbeCKVC2sSE= X-Google-Smtp-Source: ABdhPJygghYsMFNf79bfBq1NQEW0qB01qocNzzfDru+dan/hTivChMGkQG8+JCaUi1zsneKjy+UnGA== X-Received: by 2002:a5d:5229:: with SMTP id i9mr10653560wra.114.1635025690715; Sat, 23 Oct 2021 14:48:10 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id s3sm11606358wrm.40.2021.10.23.14.48.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:10 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 01/33] tests/tcg: Fix some targets default cross compiler path Date: Sat, 23 Oct 2021 23:47:31 +0200 Message-Id: <20211023214803.522078-2-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::431; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x431.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We do not want a shell command substitution, but a parameter substitution (with assignment). Replace $() -> ${}, otherwise the expanded command return an empty string and the $cross_cc variable is not set. Fixes: 634ef789f8e ("tests/tcg: add more default compilers to configure.sh") Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- tests/tcg/configure.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh index 1f985ccfc0c..b8574165fa6 100755 --- a/tests/tcg/configure.sh +++ b/tests/tcg/configure.sh @@ -46,7 +46,7 @@ fi : ${cross_cc_aarch64="aarch64-linux-gnu-gcc"} : ${cross_cc_aarch64_be="$cross_cc_aarch64"} : ${cross_cc_cflags_aarch64_be="-mbig-endian"} -: $(cross_cc_alpha="alpha-linux-gnu-gcc") +: ${cross_cc_alpha="alpha-linux-gnu-gcc"} : ${cross_cc_arm="arm-linux-gnueabihf-gcc"} : ${cross_cc_cflags_armeb="-mbig-endian"} : ${cross_cc_hexagon="hexagon-unknown-linux-musl-clang"} @@ -55,17 +55,17 @@ fi : ${cross_cc_i386="i686-linux-gnu-gcc"} : ${cross_cc_cflags_i386="-m32"} : ${cross_cc_m68k="m68k-linux-gnu-gcc"} -: $(cross_cc_mips64el="mips64el-linux-gnuabi64-gcc") -: $(cross_cc_mips64="mips64-linux-gnuabi64-gcc") -: $(cross_cc_mipsel="mipsel-linux-gnu-gcc") -: $(cross_cc_mips="mips-linux-gnu-gcc") +: ${cross_cc_mips64el="mips64el-linux-gnuabi64-gcc"} +: ${cross_cc_mips64="mips64-linux-gnuabi64-gcc"} +: ${cross_cc_mipsel="mipsel-linux-gnu-gcc"} +: ${cross_cc_mips="mips-linux-gnu-gcc"} : ${cross_cc_ppc="powerpc-linux-gnu-gcc"} : ${cross_cc_cflags_ppc="-m32"} : ${cross_cc_ppc64="powerpc64-linux-gnu-gcc"} : ${cross_cc_ppc64le="powerpc64le-linux-gnu-gcc"} -: $(cross_cc_riscv64="riscv64-linux-gnu-gcc") +: ${cross_cc_riscv64="riscv64-linux-gnu-gcc"} : ${cross_cc_s390x="s390x-linux-gnu-gcc"} -: $(cross_cc_sh4="sh4-linux-gnu-gcc") +: ${cross_cc_sh4="sh4-linux-gnu-gcc"} : ${cross_cc_cflags_sparc="-m32 -mv8plus -mcpu=ultrasparc"} : ${cross_cc_sparc64="sparc64-linux-gnu-gcc"} : ${cross_cc_cflags_sparc64="-m64 -mcpu=ultrasparc"} From patchwork Sat Oct 23 21:47:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545249 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=qJK+EWor; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFLF75JCz9s0r for ; Sun, 24 Oct 2021 08:52:05 +1100 (AEDT) Received: from localhost ([::1]:52768 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOvr-00089S-PJ for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:52:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40678) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsE-0003Cq-Ei for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:18 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]:44771) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsC-00056x-T3 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:18 -0400 Received: by mail-wr1-x434.google.com with SMTP id d13so2307877wrf.11 for ; Sat, 23 Oct 2021 14:48:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DuHGHpNNVCydVgJy4KB8F/VCb65x/TwAzNHkrfOZkls=; b=qJK+EWorxXcr67O/Yrmp9AqJt2OD364+gHBfaQy1TiijIwUNS4UXc5iqPP7FbpAxaJ nO4k7RjD5+93Oc5VPmJ5RztMLkpPexihTOjGOA12mF+Kpj67q5U0jPa5areyINfGUM+I WCVxky5h45frhZOklZPkkHymJOX+R14t5EnzBtdjpRQrZiha4qukLmDXNMfKtPPNfah7 FAvxVaus2iGkdE4gcN1GiVmufvnzJEa5F+w9n/tLcdxw1Ygx8Oixgj3lzTUow3Cf/Llb DOPDUEDPAQeDrH88Qwjll+OvJU5bBRcOSJ6cwkOhVFR+lqey0Say6D+OnpemCVoBJ0wk Iapg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=DuHGHpNNVCydVgJy4KB8F/VCb65x/TwAzNHkrfOZkls=; b=Qz6jpB9DbPYmNPtrAidYqYdrWpfP7kwq8yjUEcpPoLyIjyXmJPcJlGD84hYaVUkKEf IaZarqm+160LbTG9Fe3Bl3Ce7ucxfyi2Nt1ymcywKPNw3jNWokZqd4w+uFawWWVX5LyT CLweZjcjTTSxGYr06oULfwJVCc3it9tyKfom4Vynf9TbfRWWjUGHoYnv1xrBfjrly9Dq 0WzGPuWjrQSWr3/UsUVBkSwicwisoUsitbmC2fqieVTl5gnlmzcyYX1TF+1GTAo+/I6s lHn8Eof5gfm4yRihF1FKX4bWZbWTzxDhtZVQec4pGDniF89ylZu6q2OqrhpWbjoSmmNp AMAg== X-Gm-Message-State: AOAM530Pr21iyQ9StwjY6cqM5dkvzf63TKBPoAoDTSFB35aUxJym7Rpx HPuO08nwfK+kJ6RuEUIMAV7cRvIPqe4= X-Google-Smtp-Source: ABdhPJyixjrvcxo3EjdSUE9JLX+Xpfr1KhQbk2J28z3fjsaXC+0HND8I/LcW73a5KwH3XZccoN57AA== X-Received: by 2002:adf:ed84:: with SMTP id c4mr10572634wro.316.1635025695433; Sat, 23 Oct 2021 14:48:15 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id z1sm12185003wre.21.2021.10.23.14.48.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:15 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 02/33] target/mips: Fix MSA MADDV.B opcode Date: Sat, 23 Oct 2021 23:47:32 +0200 Message-Id: <20211023214803.522078-3-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x434.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The result of the 'Vector Multiply and Add' opcode is incorrect with Byte vectors. Probably due to a copy/paste error, commit 7a7a162adde mistakenly used the $wt (target register) instead of $wd (destination register) as first operand. Fix that. Cc: Aleksandar Rikalo Fixes: 7a7a162adde ("target/mips: msa: Split helpers for MADDV.") Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa_helper.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/target/mips/tcg/msa_helper.c b/target/mips/tcg/msa_helper.c index e40c1b70575..d978909527f 100644 --- a/target/mips/tcg/msa_helper.c +++ b/target/mips/tcg/msa_helper.c @@ -3231,22 +3231,22 @@ void helper_msa_maddv_b(CPUMIPSState *env, wr_t *pws = &(env->active_fpu.fpr[ws].wr); wr_t *pwt = &(env->active_fpu.fpr[wt].wr); - pwd->b[0] = msa_maddv_df(DF_BYTE, pwt->b[0], pws->b[0], pwt->b[0]); - pwd->b[1] = msa_maddv_df(DF_BYTE, pwt->b[1], pws->b[1], pwt->b[1]); - pwd->b[2] = msa_maddv_df(DF_BYTE, pwt->b[2], pws->b[2], pwt->b[2]); - pwd->b[3] = msa_maddv_df(DF_BYTE, pwt->b[3], pws->b[3], pwt->b[3]); - pwd->b[4] = msa_maddv_df(DF_BYTE, pwt->b[4], pws->b[4], pwt->b[4]); - pwd->b[5] = msa_maddv_df(DF_BYTE, pwt->b[5], pws->b[5], pwt->b[5]); - pwd->b[6] = msa_maddv_df(DF_BYTE, pwt->b[6], pws->b[6], pwt->b[6]); - pwd->b[7] = msa_maddv_df(DF_BYTE, pwt->b[7], pws->b[7], pwt->b[7]); - pwd->b[8] = msa_maddv_df(DF_BYTE, pwt->b[8], pws->b[8], pwt->b[8]); - pwd->b[9] = msa_maddv_df(DF_BYTE, pwt->b[9], pws->b[9], pwt->b[9]); - pwd->b[10] = msa_maddv_df(DF_BYTE, pwt->b[10], pws->b[10], pwt->b[10]); - pwd->b[11] = msa_maddv_df(DF_BYTE, pwt->b[11], pws->b[11], pwt->b[11]); - pwd->b[12] = msa_maddv_df(DF_BYTE, pwt->b[12], pws->b[12], pwt->b[12]); - pwd->b[13] = msa_maddv_df(DF_BYTE, pwt->b[13], pws->b[13], pwt->b[13]); - pwd->b[14] = msa_maddv_df(DF_BYTE, pwt->b[14], pws->b[14], pwt->b[14]); - pwd->b[15] = msa_maddv_df(DF_BYTE, pwt->b[15], pws->b[15], pwt->b[15]); + pwd->b[0] = msa_maddv_df(DF_BYTE, pwd->b[0], pws->b[0], pwt->b[0]); + pwd->b[1] = msa_maddv_df(DF_BYTE, pwd->b[1], pws->b[1], pwt->b[1]); + pwd->b[2] = msa_maddv_df(DF_BYTE, pwd->b[2], pws->b[2], pwt->b[2]); + pwd->b[3] = msa_maddv_df(DF_BYTE, pwd->b[3], pws->b[3], pwt->b[3]); + pwd->b[4] = msa_maddv_df(DF_BYTE, pwd->b[4], pws->b[4], pwt->b[4]); + pwd->b[5] = msa_maddv_df(DF_BYTE, pwd->b[5], pws->b[5], pwt->b[5]); + pwd->b[6] = msa_maddv_df(DF_BYTE, pwd->b[6], pws->b[6], pwt->b[6]); + pwd->b[7] = msa_maddv_df(DF_BYTE, pwd->b[7], pws->b[7], pwt->b[7]); + pwd->b[8] = msa_maddv_df(DF_BYTE, pwd->b[8], pws->b[8], pwt->b[8]); + pwd->b[9] = msa_maddv_df(DF_BYTE, pwd->b[9], pws->b[9], pwt->b[9]); + pwd->b[10] = msa_maddv_df(DF_BYTE, pwd->b[10], pws->b[10], pwt->b[10]); + pwd->b[11] = msa_maddv_df(DF_BYTE, pwd->b[11], pws->b[11], pwt->b[11]); + pwd->b[12] = msa_maddv_df(DF_BYTE, pwd->b[12], pws->b[12], pwt->b[12]); + pwd->b[13] = msa_maddv_df(DF_BYTE, pwd->b[13], pws->b[13], pwt->b[13]); + pwd->b[14] = msa_maddv_df(DF_BYTE, pwd->b[14], pws->b[14], pwt->b[14]); + pwd->b[15] = msa_maddv_df(DF_BYTE, pwd->b[15], pws->b[15], pwt->b[15]); } void helper_msa_maddv_h(CPUMIPSState *env, From patchwork Sat Oct 23 21:47:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545248 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=eeRGTvYi; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFL75Smwz9s0r for ; Sun, 24 Oct 2021 08:51:59 +1100 (AEDT) Received: from localhost ([::1]:52366 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOvl-0007rz-Hg for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:51:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40698) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsJ-0003Rk-Pi for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:23 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]:43977) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsH-00059g-Qm for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:23 -0400 Received: by mail-wr1-x42d.google.com with SMTP id r7so2756389wrc.10 for ; Sat, 23 Oct 2021 14:48:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ESYS0poMleep1azLgDHGVOnLpU3H0aYnUxu4xqbADAE=; b=eeRGTvYiLVUQBQwaBsv1nwKirk4JApCJTeOI0Vy9NkMURsFjlup8/ddm/qTId6g89u PBtFAx17IpO9VOSvOVQcLulTx+zmKaA6Kf4H1JwKd3S0MQxu/NxXLJK28B6CgEqeKfov DuQqmuaiMx99iAZbd2eG/i5L94z1yvvltvJBVCMOTyleCl6LDCBBPlDECyenE5LpRf5t Sw2ZW0iSaQayWSdnxIesFfMO82EE7qS9qQyyRnLhbh/xdTiNC0Wws+aumZx8i/n0/asV EHifblfNJRf0DYl3IRY45gifdoBn+1bIUa9Jsxq2tNNBzPhuqv6a9qhcgYKZph4/5e2C WCTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ESYS0poMleep1azLgDHGVOnLpU3H0aYnUxu4xqbADAE=; b=iW6hZqo7NY3OeOguYGNIQBjGesacAOs9uDjh6++z2BqZfw+0A5/4nXIcASKPV5Ep6L qz2/Eh2iqwgEEX2l0DJsL/qSDH5BMHTc+zFo5Vg1af2NNyYJCyazGT5w0n0K6vAPQej9 RirkJGxDBuJ+BwL/fJc/9xZLwXUHSbRM9PuCjTj5dxexKRaKmgx3TJSpIeWcAUu8UOxR wTqNuPtiOH4QocSIxyQI4uOSCAHEjTGWUt7GUKt4IMwJAW/75fUwkShaCqJ46MMeqddq SkCbDXdDUvoH6eWtHfAxjsXd+coqROS3haewHDeaMwuekceQgC9NJkBDXU0BCNFrpFF0 x3vw== X-Gm-Message-State: AOAM531Cz1gviuT02cTZXqA0tyvJPHgw5qfDjamCASTQaG8B2DoiJs/o Wl+3gixKyudRMEhC1LuO6Y+HqShK/cc= X-Google-Smtp-Source: ABdhPJxMLb0bk8X7vnDJil1qbPe8qpNDynHZc/eUU65lvlfe8OPIFZ0v2mKSv1cWr12YTZGS/ykpZg== X-Received: by 2002:a5d:514c:: with SMTP id u12mr103304wrt.144.1635025700209; Sat, 23 Oct 2021 14:48:20 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id i24sm12149284wml.26.2021.10.23.14.48.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:19 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 03/33] target/mips: Fix MSA MSUBV.B opcode Date: Sat, 23 Oct 2021 23:47:33 +0200 Message-Id: <20211023214803.522078-4-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42d.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The result of the 'Vector Multiply and Subtract' opcode is incorrect with Byte vectors. Probably due to a copy/paste error, commit 5f148a02327 mistakenly used the $wt (target register) instead of $wd (destination register) as first operand. Fix that. Cc: Aleksandar Rikalo Fixes: 5f148a02327 ("target/mips: msa: Split helpers for MSUBV.") Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa_helper.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/target/mips/tcg/msa_helper.c b/target/mips/tcg/msa_helper.c index d978909527f..5667b1f0a15 100644 --- a/target/mips/tcg/msa_helper.c +++ b/target/mips/tcg/msa_helper.c @@ -3303,22 +3303,22 @@ void helper_msa_msubv_b(CPUMIPSState *env, wr_t *pws = &(env->active_fpu.fpr[ws].wr); wr_t *pwt = &(env->active_fpu.fpr[wt].wr); - pwd->b[0] = msa_msubv_df(DF_BYTE, pwt->b[0], pws->b[0], pwt->b[0]); - pwd->b[1] = msa_msubv_df(DF_BYTE, pwt->b[1], pws->b[1], pwt->b[1]); - pwd->b[2] = msa_msubv_df(DF_BYTE, pwt->b[2], pws->b[2], pwt->b[2]); - pwd->b[3] = msa_msubv_df(DF_BYTE, pwt->b[3], pws->b[3], pwt->b[3]); - pwd->b[4] = msa_msubv_df(DF_BYTE, pwt->b[4], pws->b[4], pwt->b[4]); - pwd->b[5] = msa_msubv_df(DF_BYTE, pwt->b[5], pws->b[5], pwt->b[5]); - pwd->b[6] = msa_msubv_df(DF_BYTE, pwt->b[6], pws->b[6], pwt->b[6]); - pwd->b[7] = msa_msubv_df(DF_BYTE, pwt->b[7], pws->b[7], pwt->b[7]); - pwd->b[8] = msa_msubv_df(DF_BYTE, pwt->b[8], pws->b[8], pwt->b[8]); - pwd->b[9] = msa_msubv_df(DF_BYTE, pwt->b[9], pws->b[9], pwt->b[9]); - pwd->b[10] = msa_msubv_df(DF_BYTE, pwt->b[10], pws->b[10], pwt->b[10]); - pwd->b[11] = msa_msubv_df(DF_BYTE, pwt->b[11], pws->b[11], pwt->b[11]); - pwd->b[12] = msa_msubv_df(DF_BYTE, pwt->b[12], pws->b[12], pwt->b[12]); - pwd->b[13] = msa_msubv_df(DF_BYTE, pwt->b[13], pws->b[13], pwt->b[13]); - pwd->b[14] = msa_msubv_df(DF_BYTE, pwt->b[14], pws->b[14], pwt->b[14]); - pwd->b[15] = msa_msubv_df(DF_BYTE, pwt->b[15], pws->b[15], pwt->b[15]); + pwd->b[0] = msa_msubv_df(DF_BYTE, pwd->b[0], pws->b[0], pwt->b[0]); + pwd->b[1] = msa_msubv_df(DF_BYTE, pwd->b[1], pws->b[1], pwt->b[1]); + pwd->b[2] = msa_msubv_df(DF_BYTE, pwd->b[2], pws->b[2], pwt->b[2]); + pwd->b[3] = msa_msubv_df(DF_BYTE, pwd->b[3], pws->b[3], pwt->b[3]); + pwd->b[4] = msa_msubv_df(DF_BYTE, pwd->b[4], pws->b[4], pwt->b[4]); + pwd->b[5] = msa_msubv_df(DF_BYTE, pwd->b[5], pws->b[5], pwt->b[5]); + pwd->b[6] = msa_msubv_df(DF_BYTE, pwd->b[6], pws->b[6], pwt->b[6]); + pwd->b[7] = msa_msubv_df(DF_BYTE, pwd->b[7], pws->b[7], pwt->b[7]); + pwd->b[8] = msa_msubv_df(DF_BYTE, pwd->b[8], pws->b[8], pwt->b[8]); + pwd->b[9] = msa_msubv_df(DF_BYTE, pwd->b[9], pws->b[9], pwt->b[9]); + pwd->b[10] = msa_msubv_df(DF_BYTE, pwd->b[10], pws->b[10], pwt->b[10]); + pwd->b[11] = msa_msubv_df(DF_BYTE, pwd->b[11], pws->b[11], pwt->b[11]); + pwd->b[12] = msa_msubv_df(DF_BYTE, pwd->b[12], pws->b[12], pwt->b[12]); + pwd->b[13] = msa_msubv_df(DF_BYTE, pwd->b[13], pws->b[13], pwt->b[13]); + pwd->b[14] = msa_msubv_df(DF_BYTE, pwd->b[14], pws->b[14], pwt->b[14]); + pwd->b[15] = msa_msubv_df(DF_BYTE, pwd->b[15], pws->b[15], pwt->b[15]); } void helper_msa_msubv_h(CPUMIPSState *env, From patchwork Sat Oct 23 21:47:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545245 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=d4tusU++; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFGr36dsz9s0r for ; Sun, 24 Oct 2021 08:49:08 +1100 (AEDT) Received: from localhost ([::1]:46364 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOt0-0003kL-7W for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:49:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40716) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsO-0003eY-9W for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:28 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]:37484) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsM-0005BN-8r for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:28 -0400 Received: by mail-wr1-x42c.google.com with SMTP id e12so4783194wra.4 for ; Sat, 23 Oct 2021 14:48:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PaHjQTT6bAAmhFELO4JrHHj9/5ukp2x4qgAluVj1msY=; b=d4tusU++8M3s+/L4hYgW+Wvj0NdENZG8iFierInblO1toh8ASjvilhBlQJBzMZ7X/5 zFYIPkgohr+8EzKynY5qh7/Tm3viFwCmnpfjjh36G5KvrklTZrlZ1eihBEHToFReJ/4I yxGbTxmgx0BduxONuYLtyry08EeON/0Qh+Un2cRrEnR8bwmU/S8159tt25XUVbZ3X0eY 4aM++ShpIvdYt2R1GkMI8imX4BiblSXL3lpt/tqMQV2zYzGjHXLTykwKmxj9FgvSvNJW TkD5cGxr31DvXnzOpm3ctJRy814kVsqD9rp5CPizWN/jf73gtZzbCQkMbcOtnK626fe+ JIcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=PaHjQTT6bAAmhFELO4JrHHj9/5ukp2x4qgAluVj1msY=; b=5rbhT9hh5HizjxksUl0kBoe6QiBhaoRq0NWMOTSH4dpcXMwYIDJYhj7Xg5MAUG5JEw xOc2S4qQJmOmXWanl3HU8BNIeh1JR2AKMiq26jjQIgnRCVze3s2YXlsEt9tw2sA/Bd7u BP64QSQV5rlXdUmNmozZVAJznkSXgy4CMch5waB5It7qZBiJXYSxmPX7YqIR8KYpMTal jKA2BXMBUvVQzu6gSpuX5nw8B9gGTixnuJgCDS2OSyvo2qZw4SB51XefjG+5ahHkPobj etZUHk31EhOgI6/T5UfnKWziUQhYeaZH0nUyTDRzTPqHRDCfONJwMEwOjwLg+gr8WPV+ L2pg== X-Gm-Message-State: AOAM533k6nyABjPJqzvdA2c/G4p6HffdJ4M0CcCGE4wwepdiFfSAuZUp IG6SCQ0ANtH8PROqCcI751vYslNjiv4= X-Google-Smtp-Source: ABdhPJzAOpPyHnayxM4LueypYP5M9j4k1tmYItr/BpO44Aq+o2h13h72UOOsdLWrfo02i06BheHWrA== X-Received: by 2002:adf:a30c:: with SMTP id c12mr10711111wrb.366.1635025704829; Sat, 23 Oct 2021 14:48:24 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id t11sm11509355wrz.65.2021.10.23.14.48.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:24 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 04/33] tests/tcg/mips: Run MSA opcodes tests on user-mode emulation Date: Sat, 23 Oct 2021 23:47:34 +0200 Message-Id: <20211023214803.522078-5-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42c; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42c.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Luis Pires , =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The following commits added various user-mode tests for various MSA instructions: - 0fdd986a6c8 ("Add tests for MSA integer add instructions") - 1be82d89011 ("Add tests for MSA integer average instructions") - 1d336c87a3c ("Add tests for MSA bit set instructions") - 1e6bea794c8 ("Add tests for MSA integer max/min instructions") - 2a367db039f ("Add tests for MSA pack instructions") - 3d9569b8550 ("Add tests for MSA move instructions") - 4b302ce90db ("Add tests for MSA integer multiply instructions") - 520e210c0aa ("Add tests for MSA integer compare instructions") - 53e116fed6d ("Add tests for MSA integer subtract instructions") - 666952ea7c1 ("Add tests for MSA bit move instructions") - 72f463bc080 ("Add tests for MSA integer divide instructions") - 8598f5fac1c ("Add tests for MSA FP max/min instructions") - 99d423e576a ("Add tests for MSA shift instructions") - a8f91dd9fd0 ("Add tests for MSA integer dot product instructions") - b62592ab655 ("Add tests for MSA bit counting instructions") - ba632924450 ("Add tests for MSA logic instructions") - fc76f486677 ("Add tests for MSA interleave instructions") Cover them in the buildsys machinery so they are run automatically when calling 'make check-tcg'. Start running them on the mips64el target. Cc: Alex Bennée Signed-off-by: Philippe Mathieu-Daudé --- tests/tcg/mips/ase-msa.mak | 30 ++++++++++++++++++++++++++++++ MAINTAINERS | 1 + tests/tcg/mips/Makefile.target | 5 +++++ tests/tcg/mips64/Makefile.target | 9 +++++++++ tests/tcg/mips64el/Makefile.target | 12 ++++++++++++ tests/tcg/mipsel/Makefile.target | 9 +++++++++ 6 files changed, 66 insertions(+) create mode 100644 tests/tcg/mips/ase-msa.mak create mode 100644 tests/tcg/mips64/Makefile.target create mode 100644 tests/tcg/mips64el/Makefile.target create mode 100644 tests/tcg/mipsel/Makefile.target diff --git a/tests/tcg/mips/ase-msa.mak b/tests/tcg/mips/ase-msa.mak new file mode 100644 index 00000000000..be1ba967a5b --- /dev/null +++ b/tests/tcg/mips/ase-msa.mak @@ -0,0 +1,30 @@ +# -*- Mode: makefile -*- +# +# MIPS MSA specific TCG tests +# +# Copyright (c) 2021 Philippe Mathieu-Daudé +# +# SPDX-License-Identifier: GPL-2.0-or-later + +MSA_DIR = $(SRC_PATH)/tests/tcg/mips/user/ase/msa + +MSA_TEST_CLASS = bit-count bit-move bit-set fixed-multiply \ + float-max-min int-add int-average int-compare int-divide \ + int-dot-product interleave int-max-min int-modulo \ + int-multiply int-subtract logic move pack shift + +MSA_TEST_SRCS = $(foreach class,$(MSA_TEST_CLASS),$(wildcard $(MSA_DIR)/$(class)/*.c)) + +MSA_TESTS = $(patsubst %.c,%,$(notdir $(MSA_TEST_SRCS))) + +$(MSA_TESTS): CFLAGS+=-mmsa $(MSA_CFLAGS) +$(MSA_TESTS): %: $(foreach CLASS,$(MSA_TEST_CLASS),$(wildcard $(MSA_DIR)/$(CLASS)/%.c)) + $(CC) -static $(CFLAGS) -o $@ \ + $(foreach CLASS,$(MSA_TEST_CLASS),$(wildcard $(MSA_DIR)/$(CLASS)/$@.c)) + +$(foreach test,$(MSA_TESTS),run-$(test)): QEMU_OPTS += -cpu $(MSA_CPU) + +# FIXME: These tests fail when using plugins +ifneq ($(CONFIG_PLUGIN),y) +TESTS += $(MSA_TESTS) +endif diff --git a/MAINTAINERS b/MAINTAINERS index 4e77d03651b..53c6c549b80 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3111,6 +3111,7 @@ R: Jiaxun Yang R: Aleksandar Rikalo S: Odd Fixes F: tcg/mips/ +F: tests/tcg/mips* PPC TCG target M: Richard Henderson diff --git a/tests/tcg/mips/Makefile.target b/tests/tcg/mips/Makefile.target index 1a994d5525e..191fe179119 100644 --- a/tests/tcg/mips/Makefile.target +++ b/tests/tcg/mips/Makefile.target @@ -17,3 +17,8 @@ TESTS += $(MIPS_TESTS) hello-mips: CFLAGS+=-mno-abicalls -fno-PIC -mabi=32 hello-mips: LDFLAGS+=-nostdlib endif + +# FIXME enable MSA tests +#MSA_CFLAGS=-march=mips64r5 -mnan=2008 +#MSA_CPU=P5600 +#include $(SRC_PATH)/tests/tcg/mips/ase-msa.mak diff --git a/tests/tcg/mips64/Makefile.target b/tests/tcg/mips64/Makefile.target new file mode 100644 index 00000000000..d876b92f219 --- /dev/null +++ b/tests/tcg/mips64/Makefile.target @@ -0,0 +1,9 @@ +# -*- Mode: makefile -*- +# +# mips64el specific TCG tests +# +# Copyright (c) 2021 Philippe Mathieu-Daudé +# +# SPDX-License-Identifier: GPL-2.0-or-later + +# 64-bit MSA is tested on little-endian target diff --git a/tests/tcg/mips64el/Makefile.target b/tests/tcg/mips64el/Makefile.target new file mode 100644 index 00000000000..87c0d6dce18 --- /dev/null +++ b/tests/tcg/mips64el/Makefile.target @@ -0,0 +1,12 @@ +# -*- Mode: makefile -*- +# +# mips64el specific TCG tests +# +# Copyright (c) 2021 Philippe Mathieu-Daudé +# +# SPDX-License-Identifier: GPL-2.0-or-later + +# MSA +MSA_CFLAGS=-march=mips64r5 -mnan=legacy +MSA_CPU=Loongson-3A4000 +include $(SRC_PATH)/tests/tcg/mips/ase-msa.mak diff --git a/tests/tcg/mipsel/Makefile.target b/tests/tcg/mipsel/Makefile.target new file mode 100644 index 00000000000..c8acacb4497 --- /dev/null +++ b/tests/tcg/mipsel/Makefile.target @@ -0,0 +1,9 @@ +# -*- Mode: makefile -*- +# +# mipsel specific TCG tests +# +# Copyright (c) 2021 Philippe Mathieu-Daudé +# +# SPDX-License-Identifier: GPL-2.0-or-later + +# 32-bit MSA is tested on big-endian target From patchwork Sat Oct 23 21:47:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545252 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=HOGkbCqe; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFPj05J7z9s0r for ; Sun, 24 Oct 2021 08:55:03 +1100 (AEDT) Received: from localhost ([::1]:60882 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOyi-0005F9-7T for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:55:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40728) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsS-0003rT-Us for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:32 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]:36692) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsR-0005Do-DL for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:32 -0400 Received: by mail-wr1-x433.google.com with SMTP id w15so1134532wra.3 for ; Sat, 23 Oct 2021 14:48:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qpC85BtT3RgnbykCXVzDyO1CuhDm3xChbP8VfA4crRw=; b=HOGkbCqehWu0/fWcBYvuPsDx0nzee8arZGA1+R3W7hRZs70OFMuJmaG61va9C0hitT 9hRCZckvDEGkgDkwSMxs79pJQ5v95Iu9M9kSoSGIx1sZ6eHhS1NehFJtGav1eFwd2SEn GN7yjNwCeI1Pf588p2H/7j+w+DL9Roc+Xz9VRUy2AzYa9Ts2yOIl4mwb1WbVVs8xjhCK znTj4Psjk3WWeWUBeWpEUQ6t7hwaJiRfPyplVrFHLBjFObAPIoApo+2KdXzCGZRtXALz tG4+qxICGNwOfawEF3xheMyfJcZU0FkLIiGHDchEG8JeL/T3c63s9UPRQM91/MpKSwvd N69g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=qpC85BtT3RgnbykCXVzDyO1CuhDm3xChbP8VfA4crRw=; b=nkiMzK3AU3copwOkJurgEZMZ9hQa77i1K657yepsmXMWNnWrlmuyHXLPQzb4X/jeLZ Uby0VKKRWJ667mamwna/0nnSVHmMwiIoYrt81pewDYN7DqG05kDhHWQP7L+aVhZ7kol1 nJDSmQQaD4oTd69WviUsioW6YF8hcjhBkyV4RMp8sT9RCFDJhURGA2Ne0WsWIylqvLH0 ABV9XS5BPPrk+Oxa1tUO1zJWqtl9josuB3Z/hHIabn6+YR04pUeKqbYIrMUb+3WUn+V+ jPPo/UiOLx6DgFuMv30PLT+OZPRDJZjWFpFGrEvhZaZ3MhbfjBYSSCELHpxofcwcl48E mTKw== X-Gm-Message-State: AOAM531vG3qUA/3afR6fE+zrPJK0uH2SzSGNKHIGBnya1BAFO5VnyU5z UbB/9qMHTDSB5EelTaY2rCoY6x9aoVo= X-Google-Smtp-Source: ABdhPJxG3BQNeXCzCm6iEuG7LbOJOHJ7uaI1f+fA4opBvNGvuA8GJ78yeyoZ5JGoMI1szs2KrMExew== X-Received: by 2002:adf:fd8a:: with SMTP id d10mr10407145wrr.213.1635025709911; Sat, 23 Oct 2021 14:48:29 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id o10sm12996960wmq.46.2021.10.23.14.48.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:29 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 05/33] target/mips: Have check_msa_access() return a boolean Date: Sat, 23 Oct 2021 23:47:35 +0200 Message-Id: <20211023214803.522078-6-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::433; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x433.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Have check_msa_access() return a boolean value so we can return early if MSA is not enabled. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa_translate.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 3ef912da6b8..9e0a08fe335 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -293,19 +293,19 @@ void msa_translate_init(void) } } -static inline int check_msa_access(DisasContext *ctx) +static inline bool check_msa_access(DisasContext *ctx) { if (unlikely((ctx->hflags & MIPS_HFLAG_FPU) && !(ctx->hflags & MIPS_HFLAG_F64))) { gen_reserved_instruction(ctx); - return 0; + return false; } if (unlikely(!(ctx->hflags & MIPS_HFLAG_MSA))) { generate_exception_end(ctx, EXCP_MSADIS); - return 0; + return false; } - return 1; + return true; } static void gen_check_zero_element(TCGv tresult, uint8_t df, uint8_t wt, @@ -354,7 +354,9 @@ static bool gen_msa_BxZ_V(DisasContext *ctx, int wt, int s16, TCGCond cond) { TCGv_i64 t0; - check_msa_access(ctx); + if (!check_msa_access(ctx)) { + return false; + } if (ctx->hflags & MIPS_HFLAG_BMASK) { gen_reserved_instruction(ctx); @@ -386,7 +388,9 @@ static bool trans_BNZ_V(DisasContext *ctx, arg_msa_bz *a) static bool gen_msa_BxZ(DisasContext *ctx, int df, int wt, int s16, bool if_not) { - check_msa_access(ctx); + if (!check_msa_access(ctx)) { + return false; + } if (ctx->hflags & MIPS_HFLAG_BMASK) { gen_reserved_instruction(ctx); @@ -2158,7 +2162,9 @@ static bool trans_MSA(DisasContext *ctx, arg_MSA *a) { uint32_t opcode = ctx->opcode; - check_msa_access(ctx); + if (!check_msa_access(ctx)) { + return false; + } switch (MASK_MSA_MINOR(opcode)) { case OPC_MSA_I8_00: From patchwork Sat Oct 23 21:47:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545253 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=bflYF1tF; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFR760F6z9s0r for ; Sun, 24 Oct 2021 08:56:19 +1100 (AEDT) Received: from localhost ([::1]:36018 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOzx-0007T3-Iq for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:56:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40740) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsY-000485-9X for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:38 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:39648) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsW-0005Fk-Rr for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:38 -0400 Received: by mail-wm1-x329.google.com with SMTP id y22-20020a1c7d16000000b003231ea3d705so8245730wmc.4 for ; Sat, 23 Oct 2021 14:48:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tM4MJo3sim3ey0DXA4OE2hR4tKFsgTw872VtuFCw7eA=; b=bflYF1tF+4PFskwz+8rX8hBFsLGMYy2h0U4QaijKiHYPXjixIYCwSJcvO5vDKrPSip oIVPISCsxsFcmskXoF4TM6NVP2K5RXvXvl1tiYfqSESH1rPRoRtaO3cqgrK8cdDhU2a9 pc3mU8HKygILMJiIXjNvfNSdrMkoP4/MSAo8qx64cDG+h6jUJbX2mPWZZPGvIyr0Eg9o qJzwA+ZtqzEXxC+h7w4EzTPyJaVXu3/HRwTZynM+TuGqhVLqnP2bl2Mhg9Jq/cp/UWFD TxBrX5HovbNfWlgs5YGgT5KeEftW3rTQABudAguDrzZELIU7bjsmrmj2Zokm/9OSMz0U 9XKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=tM4MJo3sim3ey0DXA4OE2hR4tKFsgTw872VtuFCw7eA=; b=w1dO5gVKQ/wb/nWF91sAn3850FAg9W7iDKq/KyG0rrjg0OBum5O3R4wMBaVcm5wfex CuBaCQKjiPwd4XdfUdIktHqEZnU8Zgj/C/bVTg62dUbxbPuW1x45mxJ7HNxTIz+yZMlf VVYqbKzsB1dbe06rNZ3EA3A/EUub+8pwA8J/whovBem1jom8yZ2dGdVrz57WMUlXq8A5 LkVFLbDYbAEqD1RtT64gvgWJVjzrnxUXzuLd2mfAFHQZ5wwJGCwKFyOzUE8Cf9iPi20H y2h4quxHZvKOHBLXWLfeVLZCW5Rdx/T6vsaAEFOgtRR3pV5YO7/WQmajUJVZGbNo58Td ScXA== X-Gm-Message-State: AOAM5324W+oXdLGQg50grHuvi10kXhw2xtzQu3bdTZ1XFv5tMXo7Hae2 ohayPEJc94FB+llfs3uiT4xuNUuOqt0= X-Google-Smtp-Source: ABdhPJxht9QSdJHaeqrhEumTPCfKMXya4qVegwBNU8untG18nmDdOH4a8m0t0ltvRUO3GRKBkXGixw== X-Received: by 2002:a05:600c:1c21:: with SMTP id j33mr38522157wms.163.1635025714920; Sat, 23 Oct 2021 14:48:34 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id j7sm15354133wmq.32.2021.10.23.14.48.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:34 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 06/33] target/mips: Use enum definitions from CPUMIPSMSADataFormat enum Date: Sat, 23 Oct 2021 23:47:36 +0200 Message-Id: <20211023214803.522078-7-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x329.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Replace magic DataFormat value by the corresponding enum from CPUMIPSMSADataFormat. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa_translate.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 9e0a08fe335..1c4a802ff55 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -1801,10 +1801,10 @@ static void gen_msa_3rf(DisasContext *ctx) case OPC_MULR_Q_df: case OPC_MADDR_Q_df: case OPC_MSUBR_Q_df: - tdf = tcg_constant_i32(df + 1); + tdf = tcg_constant_i32(DF_HALF + df); break; default: - tdf = tcg_constant_i32(df + 2); + tdf = tcg_constant_i32(DF_WORD + df); break; } @@ -2033,7 +2033,7 @@ static void gen_msa_2rf(DisasContext *ctx) TCGv_i32 twd = tcg_const_i32(wd); TCGv_i32 tws = tcg_const_i32(ws); /* adjust df value for floating-point instruction */ - TCGv_i32 tdf = tcg_constant_i32(df + 2); + TCGv_i32 tdf = tcg_constant_i32(DF_WORD + df); switch (MASK_MSA_2RF(ctx->opcode)) { case OPC_FCLASS_df: From patchwork Sat Oct 23 21:47:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545257 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=AiY4uKLi; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFVD6j1qz9s1l for ; Sun, 24 Oct 2021 08:59:00 +1100 (AEDT) Received: from localhost ([::1]:44522 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP2Y-0004nB-MP for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:58:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40752) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsd-0004O8-87 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:43 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]:38470) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsb-0005Hl-EU for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:42 -0400 Received: by mail-wr1-x434.google.com with SMTP id u18so1391543wrg.5 for ; Sat, 23 Oct 2021 14:48:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eWXKGvZTAb9QLzPIeZwjUz2cD0/0h0fiCLpbOFXLOpg=; b=AiY4uKLi6mnTYoxgVMGohV/YLuF0rrwE142gJX+MLAX3Vaq9cIREsEa/X2zibfr5MA CvJh/3KtuI2XTBx5gO6lolUGlkZZ8uPdICa9hr4r2aH2JYMQBLoDIwe8hPcQKPt2P2oS 9hSmZt8jkNzDxl8V82wUsCDizxNOmk+3QwmaUE85qV1WqJZgDDe1Ie91F2RLwZy6ln/1 42wLFyP189xEOn5srcQBFCkNDs2z1uowQiigGkRWavQCCvaBjVXHAEX2AJXXYH9DWfK9 IzaLgE55n1baDq9xckFszWaSS8X9mYGWTo2BkIavwRNkHMAEaMhTVXEcAuO3OzWllQrX uXrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=eWXKGvZTAb9QLzPIeZwjUz2cD0/0h0fiCLpbOFXLOpg=; b=gZbYTwgeuHFfxQUni122pPbwcsUrxLUdJT84ryLfclqjWMhY728L+MB0/RPGczrCx/ iRUD5hRR6LfQMILbwbEDRMwX/GWdJ+5vhefMqX9YO/F8sY/Ffb3O/ZQyHPX7KHB8l8cF SyzZcF9nXCHM3ipJ/F7NbdRrsTCEw6D5ZKLgNRNSVWWfZNezNDqqryqlR4rL0HhFCdi9 zGiMvCkTyhwJr8IHIFeTzyFJpYGIMIb5rPkMD/tlSeYunLIro26Cor5GVlIylBLAQA9A 5BF2jXbpxEVTZXNoRSaPJ9yldJXzLA5aNUL2QIsDX+5UGreLifcn3gm9ojGzsj0fCRRk SK7w== X-Gm-Message-State: AOAM530n1hJS8C0+/wV0N/dRpThF25ItM5LT/QT7b/zqfHd1z+GAJ1uT lsLB1yUWNxF4NAC6IiUrfcbGAkvlKqM= X-Google-Smtp-Source: ABdhPJyAmDkRRpGx6W2ZCSCfTJUrhg0xoVCkITmpw5QZKhkvIVjGx8zE5Vs/ELPkaRLi3s2F8t36bA== X-Received: by 2002:adf:8919:: with SMTP id s25mr10560428wrs.185.1635025719845; Sat, 23 Oct 2021 14:48:39 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id e9sm11908032wrn.2.2021.10.23.14.48.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:39 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 07/33] target/mips: Rename sa16 -> sa, bz_df -> bz -> bz_v Date: Sat, 23 Oct 2021 23:47:37 +0200 Message-Id: <20211023214803.522078-8-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x434.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This 'shift amount' format is not always 16-bit, so name it generically as 'sa'. This will help to unify the various arg_msa decodetree generated structures. Rename the @bz format -> @bz_v (specific @bz with df=3) and @bz_df -> @bz (generic @bz). Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 15 +++++++-------- target/mips/tcg/msa_translate.c | 20 ++++++++++---------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 74d99f6862c..aa784cf12a9 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -13,19 +13,18 @@ &r rs rt rd sa -&msa_bz df wt s16 +&msa_bz df wt sa @lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r -@bz ...... ... .. wt:5 s16:16 &msa_bz df=3 -@bz_df ...... ... df:2 wt:5 s16:16 &msa_bz +@bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 +@bz ...... ... df:2 wt:5 sa:16 &msa_bz LSA 000000 ..... ..... ..... 000 .. 000101 @lsa DLSA 000000 ..... ..... ..... 000 .. 010101 @lsa -BZ_V 010001 01011 ..... ................ @bz -BNZ_V 010001 01111 ..... ................ @bz - -BZ_x 010001 110 .. ..... ................ @bz_df -BNZ_x 010001 111 .. ..... ................ @bz_df +BZ_V 010001 01011 ..... ................ @bz_v +BNZ_V 010001 01111 ..... ................ @bz_v +BZ 010001 110 .. ..... ................ @bz +BNZ 010001 111 .. ..... ................ @bz MSA 011110 -------------------------- diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 1c4a802ff55..c2a48aecc46 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -350,7 +350,7 @@ static void gen_check_zero_element(TCGv tresult, uint8_t df, uint8_t wt, tcg_temp_free_i64(t1); } -static bool gen_msa_BxZ_V(DisasContext *ctx, int wt, int s16, TCGCond cond) +static bool gen_msa_BxZ_V(DisasContext *ctx, int wt, int sa, TCGCond cond) { TCGv_i64 t0; @@ -368,7 +368,7 @@ static bool gen_msa_BxZ_V(DisasContext *ctx, int wt, int s16, TCGCond cond) tcg_gen_trunc_i64_tl(bcond, t0); tcg_temp_free_i64(t0); - ctx->btarget = ctx->base.pc_next + (s16 << 2) + 4; + ctx->btarget = ctx->base.pc_next + (sa << 2) + 4; ctx->hflags |= MIPS_HFLAG_BC; ctx->hflags |= MIPS_HFLAG_BDS32; @@ -378,15 +378,15 @@ static bool gen_msa_BxZ_V(DisasContext *ctx, int wt, int s16, TCGCond cond) static bool trans_BZ_V(DisasContext *ctx, arg_msa_bz *a) { - return gen_msa_BxZ_V(ctx, a->wt, a->s16, TCG_COND_EQ); + return gen_msa_BxZ_V(ctx, a->wt, a->sa, TCG_COND_EQ); } static bool trans_BNZ_V(DisasContext *ctx, arg_msa_bz *a) { - return gen_msa_BxZ_V(ctx, a->wt, a->s16, TCG_COND_NE); + return gen_msa_BxZ_V(ctx, a->wt, a->sa, TCG_COND_NE); } -static bool gen_msa_BxZ(DisasContext *ctx, int df, int wt, int s16, bool if_not) +static bool gen_msa_BxZ(DisasContext *ctx, int df, int wt, int sa, bool if_not) { if (!check_msa_access(ctx)) { return false; @@ -399,21 +399,21 @@ static bool gen_msa_BxZ(DisasContext *ctx, int df, int wt, int s16, bool if_not) gen_check_zero_element(bcond, df, wt, if_not ? TCG_COND_EQ : TCG_COND_NE); - ctx->btarget = ctx->base.pc_next + (s16 << 2) + 4; + ctx->btarget = ctx->base.pc_next + (sa << 2) + 4; ctx->hflags |= MIPS_HFLAG_BC; ctx->hflags |= MIPS_HFLAG_BDS32; return true; } -static bool trans_BZ_x(DisasContext *ctx, arg_msa_bz *a) +static bool trans_BZ(DisasContext *ctx, arg_msa_bz *a) { - return gen_msa_BxZ(ctx, a->df, a->wt, a->s16, false); + return gen_msa_BxZ(ctx, a->df, a->wt, a->sa, false); } -static bool trans_BNZ_x(DisasContext *ctx, arg_msa_bz *a) +static bool trans_BNZ(DisasContext *ctx, arg_msa_bz *a) { - return gen_msa_BxZ(ctx, a->df, a->wt, a->s16, true); + return gen_msa_BxZ(ctx, a->df, a->wt, a->sa, true); } static void gen_msa_i8(DisasContext *ctx) From patchwork Sat Oct 23 21:47:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545247 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Lf8wmN51; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFHY5KYXz9sS8 for ; Sun, 24 Oct 2021 08:49:45 +1100 (AEDT) Received: from localhost ([::1]:47564 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOtb-0004Ye-4q for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:49:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40780) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsi-0004Ul-8E for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:48 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]:41931) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsg-0005KH-20 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:47 -0400 Received: by mail-wm1-x334.google.com with SMTP id y132-20020a1c7d8a000000b0032ca5765d6cso3538256wmc.0 for ; Sat, 23 Oct 2021 14:48:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wRefdsaN3G9tHmzokFN7A+u5JQBRpdn2H5WuoRTRYAE=; b=Lf8wmN51TwkLtEWsiXUbfwrLq7Y6I2Y9LaGDjsEEg4jXedC5XBGs5/d5zyWBkRwjxA t16i8by9s8iB8rAelPSX9e4LWe5OTCjEjnjALUzz5Fpw2mXS2mBmM1svxrtlmPV5L+Ji XGKNs9FkPcFjLIJa+D8U3WdUHS4mOk5mbU7a1pVlf+RQsYwhWEdZI1P6BRjp5YAKVbtl a7AzyUurGCz+zdUjzQflesSDqAF0vBbs1b3PnDqPm/EJu/rrt6HhgRIombfPCHCqU7Ly AX5NpDH752LpWO8mgfkWLiANQzuaRU+qHH6c8zXQ+JYQp/FqsqZsuNBYTGPscMflM9AI C+VQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=wRefdsaN3G9tHmzokFN7A+u5JQBRpdn2H5WuoRTRYAE=; b=kudYIBLU5QhZbrS2ssCW3/9b4tXCrOCyBcQpPz8V1ifobU5Np+Mkn/fdmzu2VH1vaY 874wxQiJ0LfOtHlLE6WbY1NKOwNxxlqyeoeypvnIcYVfdfZ2w6dCags+E5HuqEh3gVqX gaI1sKTJ4Zsy8dTwcpIlX+ahM0abhg/aaBXlOXB/BHz+fVK4qiMMeFxPMowN7FCrvvIK fVYcQKj3yy+o4Z4+Qug58IajPIqcH2fyPyDHHWAJ93SyvMt2ZbWmiCKzpI/vo75OL35N bfxMvwIPRK/FBfd74fq8AiWObUPTpHGz0/wn4Ip9K+uFEECj99xNKQLk34l8hb1oCxEF m6vA== X-Gm-Message-State: AOAM533XwVHnZpzIUdbRSHKME70vGD919kXl73nbYv8vNrOWlNRgWnaW f3k+V5ti7rAYWsAD0uilD4gjQ8Hro68= X-Google-Smtp-Source: ABdhPJwL8EioIwyVPcVEk1382fIPF+/EVUxSDugNTQyac7r7ZRCSquikfWqERKdWKi0MSQkzP06deg== X-Received: by 2002:a1c:1b50:: with SMTP id b77mr9541741wmb.0.1635025724568; Sat, 23 Oct 2021 14:48:44 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id 89sm778166wrc.47.2021.10.23.14.48.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:44 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 08/33] target/mips: Convert MSA LDI opcode to decodetree Date: Sat, 23 Oct 2021 23:47:38 +0200 Message-Id: <20211023214803.522078-9-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x334.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert the LDI opcode (Immediate Load) to decodetree. Since it overlaps with the generic MSA handler, use a decodetree overlap group. Since the 'data format' field is a constant value, use tcg_constant_i32() instead of a TCG temporary. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa.decode | 8 +++++++- target/mips/tcg/msa_translate.c | 30 ++++++++++++++++++++++-------- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index aa784cf12a9..86aa66f05b9 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -14,10 +14,12 @@ &r rs rt rd sa &msa_bz df wt sa +&msa_ldst df wd ws sa @lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r @bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 @bz ...... ... df:2 wt:5 sa:16 &msa_bz +@ldi ...... ... df:2 sa:s10 wd:5 ...... &msa_ldst ws=0 LSA 000000 ..... ..... ..... 000 .. 000101 @lsa DLSA 000000 ..... ..... ..... 000 .. 010101 @lsa @@ -27,4 +29,8 @@ BNZ_V 010001 01111 ..... ................ @bz_v BZ 010001 110 .. ..... ................ @bz BNZ 010001 111 .. ..... ................ @bz -MSA 011110 -------------------------- +{ + LDI 011110 110 .. .......... ..... 000111 @ldi + + MSA 011110 -------------------------- +} diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index c2a48aecc46..3b0dfcca69d 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -70,7 +70,6 @@ enum { OPC_CLEI_S_df = (0x4 << 23) | OPC_MSA_I5_07, OPC_MINI_U_df = (0x5 << 23) | OPC_MSA_I5_06, OPC_CLEI_U_df = (0x5 << 23) | OPC_MSA_I5_07, - OPC_LDI_df = (0x6 << 23) | OPC_MSA_I5_07, /* I8 instruction */ OPC_ANDI_B = (0x0 << 24) | OPC_MSA_I8_00, @@ -525,13 +524,6 @@ static void gen_msa_i5(DisasContext *ctx) case OPC_CLEI_U_df: gen_helper_msa_clei_u_df(cpu_env, tdf, twd, tws, timm); break; - case OPC_LDI_df: - { - int32_t s10 = sextract32(ctx->opcode, 11, 10); - tcg_gen_movi_i32(timm, s10); - gen_helper_msa_ldi_df(cpu_env, tdf, twd, timm); - } - break; default: MIPS_INVAL("MSA instruction"); gen_reserved_instruction(ctx); @@ -544,6 +536,28 @@ static void gen_msa_i5(DisasContext *ctx) tcg_temp_free_i32(timm); } +static bool trans_LDI(DisasContext *ctx, arg_msa_ldst *a) +{ + TCGv_i32 tdf; + TCGv_i32 twd; + TCGv_i32 timm; + + if (!check_msa_access(ctx)) { + return false; + } + + tdf = tcg_constant_i32(a->df); + twd = tcg_const_i32(a->wd); + timm = tcg_const_i32(a->sa); + + gen_helper_msa_ldi_df(cpu_env, tdf, twd, timm); + + tcg_temp_free_i32(twd); + tcg_temp_free_i32(timm); + + return true; +} + static void gen_msa_bit(DisasContext *ctx) { #define MASK_MSA_BIT(op) (MASK_MSA_MINOR(op) | (op & (0x7 << 23))) From patchwork Sat Oct 23 21:47:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545256 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=QxDRmOK+; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFT622pcz9s1l for ; Sun, 24 Oct 2021 08:58:02 +1100 (AEDT) Received: from localhost ([::1]:41320 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP1c-0002ev-1k for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:58:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40794) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsm-0004aI-G8 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:53 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]:40846) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsk-0005MB-Kk for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:52 -0400 Received: by mail-wr1-x434.google.com with SMTP id e4so4823622wrc.7 for ; Sat, 23 Oct 2021 14:48:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PVaCg6GCUpgKGbLvwmrR25Suk0A+VaCfoj7O99m3aJU=; b=QxDRmOK+MIecQYm56Q/iD3FeD3Mw4WPqXJCMWwhB30Sg5XZzeMMPBB4K+3IGtNF14U m5h61wzDidXAbCiqfX7jSTOkH5kJD8QsviMv0hWJLAW/ponzv6KWSK6qGoXYlFNJ2SQ6 EvDveLwpwkINDeIQknsncxQ2UdJf8s9pipDH3xFKhLbP7G7TSXSqoA9PgkVCjqHIJABM Blhjoy9NdZuhjlO6fh2LpvNqNUlhHi1v6QcfD0CKsoN+NMJIpGjqs5ovO162TCJRXqq2 tzehR32YqrzoVxF515qGA8zV7K9EnT5XUD5ex9CYsvxRGk4nkXO3T8sh19LCN897tDLz Ltuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=PVaCg6GCUpgKGbLvwmrR25Suk0A+VaCfoj7O99m3aJU=; b=Ecnb2nstzub4o2aSWBG83/+OFB2qGhuAIZuZSdEucX5N1Lk79h99M0eRlB9pqOHOWJ 6K8x8y3D7xkfFQobs6vWG0aHaFaW77pUraZ4IDDTWE/kotBqB3ILDVmQXC3UD3pLKp7x 4KQHbQFEt4QNMdTz0a0/BSXySzO1a0bNsZ8cLQDHMA6YNEHYeZhixjTmaxLAXyRqAwyV SdxzIXLfyzoMAj6ns+XaEcpkTH7jTax29IwTAAw1pTYFQSBpjuWUkf2PCwjAj6zam0Xq 1BrPTGh9P15zgzXC7cpkLQESFGGlO5sTPzEAwg1e8UkMuNrUTFZtz4uX9XWM8Q91kOkO qaXg== X-Gm-Message-State: AOAM533UdBr1EjFDpI/FS1E9GHqkeDFtyW/DJdl2QKTqu34bUz43RFx/ 29gzuw+oM4+l6D+ZPdiXT42JCEIfe0Q= X-Google-Smtp-Source: ABdhPJystEv0Cn7c/tICY5XlHxYqVaUNT9N+6ppn444ag+u0FwCOKfY6qvouwamEVY5lr+BCA73hng== X-Received: by 2002:adf:edd2:: with SMTP id v18mr10614122wro.104.1635025729319; Sat, 23 Oct 2021 14:48:49 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id z26sm2160562wmi.45.2021.10.23.14.48.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:48 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 09/33] target/mips: Introduce generic TRANS_CHECK() for decodetree helpers Date: Sat, 23 Oct 2021 23:47:39 +0200 Message-Id: <20211023214803.522078-10-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x434.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Similar to the TRANS() macro introduced in commit fb3164e412d, introduce TRANS_CHECK() which takes a boolean expression as argument. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/translate.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/mips/tcg/translate.h b/target/mips/tcg/translate.h index 6111493651f..3ef09cc50c9 100644 --- a/target/mips/tcg/translate.h +++ b/target/mips/tcg/translate.h @@ -224,6 +224,15 @@ bool decode_ext_vr54xx(DisasContext *ctx, uint32_t insn); static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \ { return FUNC(ctx, a, __VA_ARGS__); } +#define TRANS_CHECK(NAME, CHECK_EXPR, FUNC, ...) \ + static bool trans_##NAME(DisasContext *ctx, arg_##NAME *a) \ + { \ + if (!(CHECK_EXPR)) { \ + return false; \ + } \ + return FUNC(ctx, a, __VA_ARGS__); \ + } + static inline bool cpu_is_bigendian(DisasContext *ctx) { return extract32(ctx->CP0_Config0, CP0C0_BE, 1); From patchwork Sat Oct 23 21:47:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545251 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=pyAhcYeP; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFMl4prwz9s0r for ; Sun, 24 Oct 2021 08:53:23 +1100 (AEDT) Received: from localhost ([::1]:55964 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOx7-0001yZ-EK for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:53:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40818) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsr-0004cx-BR for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:57 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]:40841) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsp-0005O7-HG for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:48:57 -0400 Received: by mail-wr1-x42e.google.com with SMTP id e4so4823846wrc.7 for ; Sat, 23 Oct 2021 14:48:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+Ns3yPDdWxoYZoBcHHwK2IFet9te9Ef1ptNKNtMRrnA=; b=pyAhcYePKJKQjPSLDJIFyQ0KgQaWc9OBwb/eCJXHvS0YsgkFZqI+2aO/Iwndg7vBFr dYrShSfe7XJz4L+QG12lTJLm+gjE+GbM6YvYD+zmccoNxhZnkzJBOC7aNVPBKiXC3mdN cMgH6f7mywB7DGtd2uTRoEJKXM0BcyBw6sm/w4eFcVfhcAP2vsHuqZVHWDcSrGzthiwq p+9jI24omnOprv1kRvGYAjiBrWy7iQrJ/miTemcTu9NciWCvsaxxBxzHISej/hvgVlqz YiFXskOPBiLsYn1yNadi4e3qhTvICgrIp9L2BhJNM8N3VRSZd2TlASMLrKFf9VS+TQ3J XvDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=+Ns3yPDdWxoYZoBcHHwK2IFet9te9Ef1ptNKNtMRrnA=; b=sU4q5MiKr3Uy2fTQNqjA6aj9pW97JbNE9VBrwznPasu7qu/1V1KV/VeOz7975ZbbFS Zd39kRF6olMM8gZSsgeYkPoBZw1Z8O1rFrZfBbaJEmOCn97yp42m1OV7pcmv8xEtyzLy kaPdde01POg6k7CvGS84+WlfXAS4Bt/UY5QEe6OkrpqyLwPI1hjonwgE0FSPNXTFx/K9 dIRPZ4msIwqujMw0raH42UXhRLaQ+MEhkwUIzPYS21OYKUV3ek5iwKUtPD4W/6+jf+Uu gT5uBSCLIhqcdMK1O13PInhTbiIlGXUUaJSDCYqzWDWc7TqGP1WCFjWmS0JgQ9a5grkL lAGw== X-Gm-Message-State: AOAM532tm9vHKL7oHELEHI91B6d9MNpFSiBdoBjs9kMN7/FJJ1ccO+Iz aJoWWpRhPmjRVq3fITCYwGid7rh2Ahg= X-Google-Smtp-Source: ABdhPJy9M3aMf80j+V7BZAYIqnpnV/0Uz3HnqA3UZAlT3wzE2v9YdZkWbAW+D9HjDCCJRuKyjBSHJg== X-Received: by 2002:adf:c78d:: with SMTP id l13mr10114222wrg.134.1635025733991; Sat, 23 Oct 2021 14:48:53 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id k10sm14650554wmr.32.2021.10.23.14.48.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:53 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 10/33] target/mips: Extract df_extract() helper Date: Sat, 23 Oct 2021 23:47:40 +0200 Message-Id: <20211023214803.522078-11-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42e; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42e.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Extract the common code which parses data formats to an helper. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa_translate.c | 68 +++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 3b0dfcca69d..7c1bbfaec61 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -272,6 +272,40 @@ static const char msaregnames[][6] = { "w30.d0", "w30.d1", "w31.d0", "w31.d1", }; +/* Encoding of Operation Field */ +static const struct dfe { + enum CPUMIPSMSADataFormat df; + int start; + int length; + uint32_t value; +} df_elm[] = { + /* Table 3.26 ELM Instruction Format */ + {DF_BYTE, 4, 2, 0b00}, + {DF_HALF, 3, 3, 0b100}, + {DF_WORD, 2, 4, 0b1100}, + {DF_DOUBLE, 1, 5, 0b11100} +}, df_bit[] = { + /* Table 3.28 BIT Instruction Format */ + {DF_BYTE, 3, 4, 0b1110}, + {DF_HALF, 4, 3, 0b110}, + {DF_WORD, 5, 2, 0b10}, + {DF_DOUBLE, 6, 1, 0b0} +}; + +/* Extract Operation Field (used by ELM & BIT instructions) */ +static bool df_extract(const struct dfe *s, int value, + enum CPUMIPSMSADataFormat *df, uint32_t *x) +{ + for (unsigned i = 0; i < 4; i++) { + if (extract32(value, s->start, s->length) == s->value) { + *x = extract32(value, 0, s->start); + *df = s->df; + return true; + } + } + return false; +} + static TCGv_i64 msa_wr_d[64]; void msa_translate_init(void) @@ -562,7 +596,6 @@ static void gen_msa_bit(DisasContext *ctx) { #define MASK_MSA_BIT(op) (MASK_MSA_MINOR(op) | (op & (0x7 << 23))) uint8_t dfm = (ctx->opcode >> 16) & 0x7f; - uint32_t df = 0, m = 0; uint8_t ws = (ctx->opcode >> 11) & 0x1f; uint8_t wd = (ctx->opcode >> 6) & 0x1f; @@ -570,20 +603,9 @@ static void gen_msa_bit(DisasContext *ctx) TCGv_i32 tm; TCGv_i32 twd; TCGv_i32 tws; + uint32_t df, m; - if ((dfm & 0x40) == 0x00) { - m = dfm & 0x3f; - df = DF_DOUBLE; - } else if ((dfm & 0x60) == 0x40) { - m = dfm & 0x1f; - df = DF_WORD; - } else if ((dfm & 0x70) == 0x60) { - m = dfm & 0x0f; - df = DF_HALF; - } else if ((dfm & 0x78) == 0x70) { - m = dfm & 0x7; - df = DF_BYTE; - } else { + if (!df_extract(df_bit, dfm, &df, &m)) { gen_reserved_instruction(ctx); return; } @@ -1768,25 +1790,13 @@ static void gen_msa_elm_df(DisasContext *ctx, uint32_t df, uint32_t n) static void gen_msa_elm(DisasContext *ctx) { uint8_t dfn = (ctx->opcode >> 16) & 0x3f; - uint32_t df = 0, n = 0; + uint32_t df, n; - if ((dfn & 0x30) == 0x00) { - n = dfn & 0x0f; - df = DF_BYTE; - } else if ((dfn & 0x38) == 0x20) { - n = dfn & 0x07; - df = DF_HALF; - } else if ((dfn & 0x3c) == 0x30) { - n = dfn & 0x03; - df = DF_WORD; - } else if ((dfn & 0x3e) == 0x38) { - n = dfn & 0x01; - df = DF_DOUBLE; - } else if (dfn == 0x3E) { + if (dfn == 0x3E) { /* CTCMSA, CFCMSA, MOVE.V */ gen_msa_elm_3e(ctx); return; - } else { + } else if (!df_extract(df_elm, dfn, &df, &n)) { gen_reserved_instruction(ctx); return; } From patchwork Sat Oct 23 21:47:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545260 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Hex5MOIb; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFWj5Cl5z9s1l for ; Sun, 24 Oct 2021 09:00:15 +1100 (AEDT) Received: from localhost ([::1]:49690 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP3j-0008Ay-I2 for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:00:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40842) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOsw-0004kw-6X for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:02 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]:39934) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsu-0005Qf-3P for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:01 -0400 Received: by mail-wr1-x433.google.com with SMTP id z14so3685109wrg.6 for ; Sat, 23 Oct 2021 14:48:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7Twe1tKnuWtesTnk71X2V6F+BbjJ4TQgKol2D+Vvz98=; b=Hex5MOIbTKi1Zje7/On3X7aAcBD4ucfx4PfSBAbK9aBW4bIEskzrmfAIIufvT/2oey hUAKU37Xu2WAjIQKWKu4z3SPMqOsqlgUaYcJk3AY7nDbIV9d1IK3G/1+rzo9tkSeTXNQ bHOsC6A9nbmp8703Q6DwCCMYBFvDOc4E8UTN2YvqZMYIUNL7Ry8J1DmkWiYHJF2bPWzI jTq5MFl9rYrhLemRIOxCKCNEUghX+DqGpZOQJFSBbOCfMEsVy/12oHHwU4oOk5N1ra6P mOlpxpv2jT8c/LDtSxiPO0v1AdmxhFeC0oR6+V6OaCOnF0UhT3Ji0PTr/sThTF/8HF6u rDbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=7Twe1tKnuWtesTnk71X2V6F+BbjJ4TQgKol2D+Vvz98=; b=FM/yGpj80kOdM4JE+MUnRylBjO9o+ky4oBENQQWrBQ9JaQVH1dLV+6oRp+mZx99K+S hqZYobGtQ1uLqyS8UBIN4m2PJ0YkNuvLRYy3iVKmV2N3V8w+Xp62j+apOPx52kwMAUgb 19MtPX0ax+KM6AjMLEvLGEHT+fB3ibX/nkUbKgIAWA74ovdXnDrQldMgvUvXphNUJLVg skw5bYT8JPJw8Bmg0HR0PamWudGxw7TcL2CqxbtudTb6sU12kwNqMGJhGDMxP/aP4NRh B/AW6gOa3XTPKRGRci78uElEytPIrS0sbSTznNEU4XDtyRDM95f/qJ75yN0D+JTSEkk9 TLbA== X-Gm-Message-State: AOAM532bT9HfF2U5F8+8DLbrKk7NZdUJ3mXP7GWDdb4XviwDHaANAUkK rn833ntJO76Q0lm1K2NAHrcoiQkqwmI= X-Google-Smtp-Source: ABdhPJzoSAq9XsjF3ihflLJxgI9lHbsMLHMQbcqWRJnpTiP2iegX/umLs+p4DkI1OQlmQfHkOt1R0Q== X-Received: by 2002:a5d:4a4d:: with SMTP id v13mr10441801wrs.353.1635025738685; Sat, 23 Oct 2021 14:48:58 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id i24sm12150286wml.26.2021.10.23.14.48.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:48:58 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 11/33] target/mips: Convert MSA I5 instruction format to decodetree Date: Sat, 23 Oct 2021 23:47:41 +0200 Message-Id: <20211023214803.522078-12-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::433; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x433.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert instructions with a 5-bit immediate value to decodetree. Since the 'data format' field is a constant value, use tcg_constant_i32() instead of a TCG temporary. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 15 +++++ target/mips/tcg/msa_translate.c | 99 +++++++++------------------------ 2 files changed, 40 insertions(+), 74 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 86aa66f05b9..5aaa85456da 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -19,6 +19,8 @@ @lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r @bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 @bz ...... ... df:2 wt:5 sa:16 &msa_bz +@u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_ldst +@s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_ldst @ldi ...... ... df:2 sa:s10 wd:5 ...... &msa_ldst ws=0 LSA 000000 ..... ..... ..... 000 .. 000101 @lsa @@ -30,6 +32,19 @@ BZ 010001 110 .. ..... ................ @bz BNZ 010001 111 .. ..... ................ @bz { + ADDVI 011110 000 .. ..... ..... ..... 000110 @u5 + SUBVI 011110 001 .. ..... ..... ..... 000110 @u5 + MAXI_S 011110 010 .. ..... ..... ..... 000110 @s5 + MAXI_U 011110 011 .. ..... ..... ..... 000110 @u5 + MINI_S 011110 100 .. ..... ..... ..... 000110 @s5 + MINI_U 011110 101 .. ..... ..... ..... 000110 @u5 + + CEQI 011110 000 .. ..... ..... ..... 000111 @s5 + CLTI_S 011110 010 .. ..... ..... ..... 000111 @s5 + CLTI_U 011110 011 .. ..... ..... ..... 000111 @u5 + CLEI_S 011110 100 .. ..... ..... ..... 000111 @s5 + CLEI_U 011110 101 .. ..... ..... ..... 000111 @u5 + LDI 011110 110 .. .......... ..... 000111 @ldi MSA 011110 -------------------------- diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 7c1bbfaec61..962aef601cb 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -27,8 +27,6 @@ enum { OPC_MSA_I8_00 = 0x00 | OPC_MSA, OPC_MSA_I8_01 = 0x01 | OPC_MSA, OPC_MSA_I8_02 = 0x02 | OPC_MSA, - OPC_MSA_I5_06 = 0x06 | OPC_MSA, - OPC_MSA_I5_07 = 0x07 | OPC_MSA, OPC_MSA_BIT_09 = 0x09 | OPC_MSA, OPC_MSA_BIT_0A = 0x0A | OPC_MSA, OPC_MSA_3R_0D = 0x0D | OPC_MSA, @@ -58,19 +56,6 @@ enum { }; enum { - /* I5 instruction df(bits 22..21) = _b, _h, _w, _d */ - OPC_ADDVI_df = (0x0 << 23) | OPC_MSA_I5_06, - OPC_CEQI_df = (0x0 << 23) | OPC_MSA_I5_07, - OPC_SUBVI_df = (0x1 << 23) | OPC_MSA_I5_06, - OPC_MAXI_S_df = (0x2 << 23) | OPC_MSA_I5_06, - OPC_CLTI_S_df = (0x2 << 23) | OPC_MSA_I5_07, - OPC_MAXI_U_df = (0x3 << 23) | OPC_MSA_I5_06, - OPC_CLTI_U_df = (0x3 << 23) | OPC_MSA_I5_07, - OPC_MINI_S_df = (0x4 << 23) | OPC_MSA_I5_06, - OPC_CLEI_S_df = (0x4 << 23) | OPC_MSA_I5_07, - OPC_MINI_U_df = (0x5 << 23) | OPC_MSA_I5_06, - OPC_CLEI_U_df = (0x5 << 23) | OPC_MSA_I5_07, - /* I8 instruction */ OPC_ANDI_B = (0x0 << 24) | OPC_MSA_I8_00, OPC_BMNZI_B = (0x0 << 24) | OPC_MSA_I8_01, @@ -341,6 +326,9 @@ static inline bool check_msa_access(DisasContext *ctx) return true; } +#define TRANS_MSA(NAME, trans_func, gen_func) \ + TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, gen_func) + static void gen_check_zero_element(TCGv tresult, uint8_t df, uint8_t wt, TCGCond cond) { @@ -507,69 +495,36 @@ static void gen_msa_i8(DisasContext *ctx) tcg_temp_free_i32(ti8); } -static void gen_msa_i5(DisasContext *ctx) +static bool trans_msa_i5(DisasContext *ctx, arg_msa_ldst *a, + void (*gen_msa_i5)(TCGv_ptr, TCGv_i32, TCGv_i32, + TCGv_i32, TCGv_i32)) { -#define MASK_MSA_I5(op) (MASK_MSA_MINOR(op) | (op & (0x7 << 23))) - int8_t s5 = (int8_t) sextract32(ctx->opcode, 16, 5); - uint8_t u5 = extract32(ctx->opcode, 16, 5); + TCGv_i32 tdf = tcg_constant_i32(a->df); + TCGv_i32 twd = tcg_const_i32(a->wd); + TCGv_i32 tws = tcg_const_i32(a->ws); + TCGv_i32 timm = tcg_const_i32(a->sa); - TCGv_i32 tdf = tcg_const_i32(extract32(ctx->opcode, 21, 2)); - TCGv_i32 twd = tcg_const_i32(extract32(ctx->opcode, 11, 5)); - TCGv_i32 tws = tcg_const_i32(extract32(ctx->opcode, 6, 5)); - TCGv_i32 timm = tcg_temp_new_i32(); - tcg_gen_movi_i32(timm, u5); + gen_msa_i5(cpu_env, tdf, twd, tws, timm); - switch (MASK_MSA_I5(ctx->opcode)) { - case OPC_ADDVI_df: - gen_helper_msa_addvi_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_SUBVI_df: - gen_helper_msa_subvi_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_MAXI_S_df: - tcg_gen_movi_i32(timm, s5); - gen_helper_msa_maxi_s_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_MAXI_U_df: - gen_helper_msa_maxi_u_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_MINI_S_df: - tcg_gen_movi_i32(timm, s5); - gen_helper_msa_mini_s_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_MINI_U_df: - gen_helper_msa_mini_u_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_CEQI_df: - tcg_gen_movi_i32(timm, s5); - gen_helper_msa_ceqi_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_CLTI_S_df: - tcg_gen_movi_i32(timm, s5); - gen_helper_msa_clti_s_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_CLTI_U_df: - gen_helper_msa_clti_u_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_CLEI_S_df: - tcg_gen_movi_i32(timm, s5); - gen_helper_msa_clei_s_df(cpu_env, tdf, twd, tws, timm); - break; - case OPC_CLEI_U_df: - gen_helper_msa_clei_u_df(cpu_env, tdf, twd, tws, timm); - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - break; - } - - tcg_temp_free_i32(tdf); tcg_temp_free_i32(twd); tcg_temp_free_i32(tws); tcg_temp_free_i32(timm); + + return true; } +TRANS_MSA(ADDVI, trans_msa_i5, gen_helper_msa_addvi_df); +TRANS_MSA(SUBVI, trans_msa_i5, gen_helper_msa_subvi_df); +TRANS_MSA(MAXI_S, trans_msa_i5, gen_helper_msa_maxi_s_df); +TRANS_MSA(MAXI_U, trans_msa_i5, gen_helper_msa_maxi_u_df); +TRANS_MSA(MINI_S, trans_msa_i5, gen_helper_msa_mini_s_df); +TRANS_MSA(MINI_U, trans_msa_i5, gen_helper_msa_mini_u_df); +TRANS_MSA(CLTI_S, trans_msa_i5, gen_helper_msa_clti_s_df); +TRANS_MSA(CLTI_U, trans_msa_i5, gen_helper_msa_clti_u_df); +TRANS_MSA(CLEI_S, trans_msa_i5, gen_helper_msa_clei_s_df); +TRANS_MSA(CLEI_U, trans_msa_i5, gen_helper_msa_clei_u_df); +TRANS_MSA(CEQI, trans_msa_i5, gen_helper_msa_ceqi_df); + static bool trans_LDI(DisasContext *ctx, arg_msa_ldst *a) { TCGv_i32 tdf; @@ -2196,10 +2151,6 @@ static bool trans_MSA(DisasContext *ctx, arg_MSA *a) case OPC_MSA_I8_02: gen_msa_i8(ctx); break; - case OPC_MSA_I5_06: - case OPC_MSA_I5_07: - gen_msa_i5(ctx); - break; case OPC_MSA_BIT_09: case OPC_MSA_BIT_0A: gen_msa_bit(ctx); From patchwork Sat Oct 23 21:47:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545254 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=LY3t46G4; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFR91tJ5z9s0r for ; Sun, 24 Oct 2021 08:56:21 +1100 (AEDT) Received: from localhost ([::1]:36072 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOzy-0007WR-1X for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:56:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40860) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOt1-00056S-Kl for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:07 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]:39657) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOsz-0005Tx-9o for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:07 -0400 Received: by mail-wm1-x330.google.com with SMTP id y22-20020a1c7d16000000b003231ea3d705so8246787wmc.4 for ; Sat, 23 Oct 2021 14:49:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nsEohNEwrhu8Aem4tlRNJJjtbidr9jHp4BNgaPtAgyw=; b=LY3t46G4tZTk2WgPPx8j/chF6bfU2dlqZwFpJmpJ8RPvxR1HyBB4nng/adf7gtJFRs eAzaNeC/v39pt9NvyK8drO4TFTWzM4byAjsXRdssvwui7k0aEAh5CIl6ZyMvzgIjcYTv QbK6fwsZ5BwtBgOSI1d29m5uI290ZEkMTKkI+CVQgwoT714/BhaKHb4AD+BEvSEFd32P ebjnfAMhdyfREXe+sbJtr65u/L7kiUftAzSY86szdql4GxkdZRPFqnFThXoOMhogf6DI EO9Dol7hLVmTKXipSX+l9M3AuMu9hm1QGvJ6vjWrgw232x5vF6PbUr8tRuMtRmWpH3Sx sUzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=nsEohNEwrhu8Aem4tlRNJJjtbidr9jHp4BNgaPtAgyw=; b=3j/bbLcUDRIDxEJ7AfKJdIevXSJ6jVmy1ZOsi1Tp/RyKHNvSS118iT05G4T90aMBqX 27oLozqb1J5gnOKZlneoEXVxVmOZvIYT7cXv3+LAEqxaB/2/ALAnzjSojYook1c1zqAF if10PMorKJimKUfxlNF09DAiKGIZTi1qPcHUIP7WSSnViBFJDQmvb+DcntQlbOn/n9Bk uybQMA8kxhdBJ/zDBE92lyCnVl3+0vFwO/8yrccs7kWcu6GTY5JjVuv7F6JMtcdC4PhC m7FhRrgYJnRi6YEAaGKpDk3LGlXkCXel/ys0FifTmSJpHVHNFuiyYTCU+bLrsr7bEx/L IkEA== X-Gm-Message-State: AOAM532ELe3IRBe8K89+DwfE9n8C79gjIgh7xVEMBwdLCcqfzgMgYGnA F0dGIzuRoA3pHU7BRsFe2wS0wYsjtfg= X-Google-Smtp-Source: ABdhPJzGwyuo6DTM9YMczF5R5OOnAwmJ3P5ys5zRPgIeKlrhZrKOKPiUWNdQnOTs4osMKJmKh7LqCg== X-Received: by 2002:a05:600c:2257:: with SMTP id a23mr18951295wmm.182.1635025743672; Sat, 23 Oct 2021 14:49:03 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id z135sm16764317wmc.45.2021.10.23.14.49.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:03 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 12/33] target/mips: Convert MSA BIT instruction format to decodetree Date: Sat, 23 Oct 2021 23:47:42 +0200 Message-Id: <20211023214803.522078-13-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x330.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert instructions with an immediate bit index and data format df/m to decodetree. Since the 'data format' field is a constant value, use tcg_constant_i32() instead of a TCG temporary. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa.decode | 15 +++++ target/mips/tcg/msa_translate.c | 98 ++++++++------------------------- 2 files changed, 39 insertions(+), 74 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 5aaa85456da..91d71ff560c 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -22,6 +22,7 @@ @u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_ldst @s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_ldst @ldi ...... ... df:2 sa:s10 wd:5 ...... &msa_ldst ws=0 +@bit ...... ... df:7 ws:5 wd:5 ...... &msa_ldst sa=0 LSA 000000 ..... ..... ..... 000 .. 000101 @lsa DLSA 000000 ..... ..... ..... 000 .. 010101 @lsa @@ -47,5 +48,19 @@ BNZ 010001 111 .. ..... ................ @bz LDI 011110 110 .. .......... ..... 000111 @ldi + SLLI 011110 000 ....... ..... ..... 001001 @bit + SRAI 011110 001 ....... ..... ..... 001001 @bit + SRLI 011110 010 ....... ..... ..... 001001 @bit + BCLRI 011110 011 ....... ..... ..... 001001 @bit + BSETI 011110 100 ....... ..... ..... 001001 @bit + BNEGI 011110 101 ....... ..... ..... 001001 @bit + BINSLI 011110 110 ....... ..... ..... 001001 @bit + BINSRI 011110 111 ....... ..... ..... 001001 @bit + + SAT_S 011110 000 ....... ..... ..... 001010 @bit + SAT_U 011110 001 ....... ..... ..... 001010 @bit + SRARI 011110 010 ....... ..... ..... 001010 @bit + SRLRI 011110 011 ....... ..... ..... 001010 @bit + MSA 011110 -------------------------- } diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 962aef601cb..10bbe25172a 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -27,8 +27,6 @@ enum { OPC_MSA_I8_00 = 0x00 | OPC_MSA, OPC_MSA_I8_01 = 0x01 | OPC_MSA, OPC_MSA_I8_02 = 0x02 | OPC_MSA, - OPC_MSA_BIT_09 = 0x09 | OPC_MSA, - OPC_MSA_BIT_0A = 0x0A | OPC_MSA, OPC_MSA_3R_0D = 0x0D | OPC_MSA, OPC_MSA_3R_0E = 0x0E | OPC_MSA, OPC_MSA_3R_0F = 0x0F | OPC_MSA, @@ -222,20 +220,6 @@ enum { OPC_MSUBR_Q_df = (0xE << 22) | OPC_MSA_3RF_1C, OPC_FSULE_df = (0xF << 22) | OPC_MSA_3RF_1A, OPC_FMAX_A_df = (0xF << 22) | OPC_MSA_3RF_1B, - - /* BIT instruction df(bits 22..16) = _B _H _W _D */ - OPC_SLLI_df = (0x0 << 23) | OPC_MSA_BIT_09, - OPC_SAT_S_df = (0x0 << 23) | OPC_MSA_BIT_0A, - OPC_SRAI_df = (0x1 << 23) | OPC_MSA_BIT_09, - OPC_SAT_U_df = (0x1 << 23) | OPC_MSA_BIT_0A, - OPC_SRLI_df = (0x2 << 23) | OPC_MSA_BIT_09, - OPC_SRARI_df = (0x2 << 23) | OPC_MSA_BIT_0A, - OPC_BCLRI_df = (0x3 << 23) | OPC_MSA_BIT_09, - OPC_SRLRI_df = (0x3 << 23) | OPC_MSA_BIT_0A, - OPC_BSETI_df = (0x4 << 23) | OPC_MSA_BIT_09, - OPC_BNEGI_df = (0x5 << 23) | OPC_MSA_BIT_09, - OPC_BINSLI_df = (0x6 << 23) | OPC_MSA_BIT_09, - OPC_BINSRI_df = (0x7 << 23) | OPC_MSA_BIT_09, }; static const char msaregnames[][6] = { @@ -547,78 +531,48 @@ static bool trans_LDI(DisasContext *ctx, arg_msa_ldst *a) return true; } -static void gen_msa_bit(DisasContext *ctx) +static bool trans_msa_bit(DisasContext *ctx, arg_msa_ldst *a, + void (*gen_msa_bit)(TCGv_ptr, TCGv_i32, TCGv_i32, + TCGv_i32, TCGv_i32)) { -#define MASK_MSA_BIT(op) (MASK_MSA_MINOR(op) | (op & (0x7 << 23))) - uint8_t dfm = (ctx->opcode >> 16) & 0x7f; - uint8_t ws = (ctx->opcode >> 11) & 0x1f; - uint8_t wd = (ctx->opcode >> 6) & 0x1f; - TCGv_i32 tdf; TCGv_i32 tm; TCGv_i32 twd; TCGv_i32 tws; uint32_t df, m; - if (!df_extract(df_bit, dfm, &df, &m)) { + if (!df_extract(df_bit, a->df, &df, &m)) { gen_reserved_instruction(ctx); - return; + return true; } - tdf = tcg_const_i32(df); + tdf = tcg_constant_i32(df); tm = tcg_const_i32(m); - twd = tcg_const_i32(wd); - tws = tcg_const_i32(ws); + twd = tcg_const_i32(a->wd); + tws = tcg_const_i32(a->ws); - switch (MASK_MSA_BIT(ctx->opcode)) { - case OPC_SLLI_df: - gen_helper_msa_slli_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_SRAI_df: - gen_helper_msa_srai_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_SRLI_df: - gen_helper_msa_srli_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_BCLRI_df: - gen_helper_msa_bclri_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_BSETI_df: - gen_helper_msa_bseti_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_BNEGI_df: - gen_helper_msa_bnegi_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_BINSLI_df: - gen_helper_msa_binsli_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_BINSRI_df: - gen_helper_msa_binsri_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_SAT_S_df: - gen_helper_msa_sat_s_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_SAT_U_df: - gen_helper_msa_sat_u_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_SRARI_df: - gen_helper_msa_srari_df(cpu_env, tdf, twd, tws, tm); - break; - case OPC_SRLRI_df: - gen_helper_msa_srlri_df(cpu_env, tdf, twd, tws, tm); - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - break; - } + gen_msa_bit(cpu_env, tdf, twd, tws, tm); - tcg_temp_free_i32(tdf); tcg_temp_free_i32(tm); tcg_temp_free_i32(twd); tcg_temp_free_i32(tws); + + return true; } +TRANS_MSA(SLLI, trans_msa_bit, gen_helper_msa_slli_df); +TRANS_MSA(SRAI, trans_msa_bit, gen_helper_msa_srai_df); +TRANS_MSA(SRLI, trans_msa_bit, gen_helper_msa_srli_df); +TRANS_MSA(BCLRI, trans_msa_bit, gen_helper_msa_bclri_df); +TRANS_MSA(BSETI, trans_msa_bit, gen_helper_msa_bseti_df); +TRANS_MSA(BNEGI, trans_msa_bit, gen_helper_msa_bnegi_df); +TRANS_MSA(BINSLI, trans_msa_bit, gen_helper_msa_binsli_df); +TRANS_MSA(BINSRI, trans_msa_bit, gen_helper_msa_binsri_df); +TRANS_MSA(SAT_S, trans_msa_bit, gen_helper_msa_sat_u_df); +TRANS_MSA(SAT_U, trans_msa_bit, gen_helper_msa_sat_u_df); +TRANS_MSA(SRARI, trans_msa_bit, gen_helper_msa_srari_df); +TRANS_MSA(SRLRI, trans_msa_bit, gen_helper_msa_srlri_df); + static void gen_msa_3r(DisasContext *ctx) { #define MASK_MSA_3R(op) (MASK_MSA_MINOR(op) | (op & (0x7 << 23))) @@ -2151,10 +2105,6 @@ static bool trans_MSA(DisasContext *ctx, arg_MSA *a) case OPC_MSA_I8_02: gen_msa_i8(ctx); break; - case OPC_MSA_BIT_09: - case OPC_MSA_BIT_0A: - gen_msa_bit(ctx); - break; case OPC_MSA_3R_0D: case OPC_MSA_3R_0E: case OPC_MSA_3R_0F: From patchwork Sat Oct 23 21:47:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545258 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=QXb3Vks6; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFVG2wqrz9sS8 for ; Sun, 24 Oct 2021 08:59:02 +1100 (AEDT) Received: from localhost ([::1]:44612 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP2a-0004r1-3O for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:59:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40872) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOt6-0005M9-85 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:12 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]:47080) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOt3-0005Vw-UD for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:11 -0400 Received: by mail-wr1-x42e.google.com with SMTP id k7so179468wrd.13 for ; Sat, 23 Oct 2021 14:49:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Mg99jYEYPFU2NQRL9WBrBN9xN6wlefBcRoYkXCdFQxc=; b=QXb3Vks6GSLMXMelnDNSuZ2HBCFxm1tlsQo0MyXmWfw9uweWrt9BvAQEAD9PPFMz4j VRX8yVFCypgQ6ijZnRoBdwSjS6aD+/gG4OTgFQRLGA79hezp0TXfWXNS/Qq3TZQ3J88T mdlw0Fls+WGgYs36hOXMZ2MjRCQovWzOxlwiQPsFtgR9QyxbxonVysYKrJi61BJxcwlO 2v2B9TWMXH7etPPfA9DcU55Ww9QgSwmE4bT/RwT3LedzEX3MLYjO1xSO6ISOB/z0jhAb YhlTccR/ypgccYLLr+lxoPZOHyc7YZGsg2mpjfkbLdirvtrHz7TZen/vhMgirB0P4azh hD9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Mg99jYEYPFU2NQRL9WBrBN9xN6wlefBcRoYkXCdFQxc=; b=mRenbmkGULaTM0Qc0EGYJaj6Wxi1KFYQRuvXA12JOkB35+a/ECeMfMgbHTMmtySwvg BEWmOp3q8eQeCTayjOZmGSVZXoZfQdOyoYk6bcRWeOMYM3MEo6nkXPm+43/xu3SgKcvC Z9nOcyakbH92J3F4UOgEgN5q+pgDeZy3qepc7jVOP7e4AnWDF77QwomIghcipz2r6JFC i0bccWOYlGiKtM175HVc4/3IJBTeTntXsD4q3XNeQBa3hEkmahOM9zia26KZwvatqk3t 6/P3PnXUZFiShSIeAYLXmPZz2153s0yEYGLdPt9yJL5ybs9S7JpIeGZ/6hyB8PotbFBi DaeQ== X-Gm-Message-State: AOAM533YreDDqealyH8Sct6I+K1GP/+7TylQtmoGnHVOmtgPhWe/0yTI y9y69/JaasIaGvezEBgLEgp4GExt24o= X-Google-Smtp-Source: ABdhPJzEVebXzGTA7nALnW601D90ykUbN7bh5yARJPoSJYrAPl0t5jnjWc+mDdWvtErSMst3ecy5zg== X-Received: by 2002:a5d:5915:: with SMTP id v21mr10649362wrd.270.1635025748535; Sat, 23 Oct 2021 14:49:08 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id i11sm5151354wmg.46.2021.10.23.14.49.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:08 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 13/33] target/mips: Convert MSA SHF opcode to decodetree Date: Sat, 23 Oct 2021 23:47:43 +0200 Message-Id: <20211023214803.522078-14-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42e; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42e.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert the SHF opcode (Immediate Set Shuffle Elements) to decodetree. Since the 'data format' field is a constant value, use tcg_constant_i32() instead of a TCG temporary. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 3 +++ target/mips/tcg/msa_translate.c | 47 +++++++++++++++++++++------------ 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 91d71ff560c..6347468a709 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -22,6 +22,7 @@ @u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_ldst @s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_ldst @ldi ...... ... df:2 sa:s10 wd:5 ...... &msa_ldst ws=0 +@i8_df ...... df:2 sa:s8 ws:5 wd:5 ...... &msa_ldst @bit ...... ... df:7 ws:5 wd:5 ...... &msa_ldst sa=0 LSA 000000 ..... ..... ..... 000 .. 000101 @lsa @@ -33,6 +34,8 @@ BZ 010001 110 .. ..... ................ @bz BNZ 010001 111 .. ..... ................ @bz { + SHF 011110 .. ........ ..... ..... 000010 @i8_df + ADDVI 011110 000 .. ..... ..... ..... 000110 @u5 SUBVI 011110 001 .. ..... ..... ..... 000110 @u5 MAXI_S 011110 010 .. ..... ..... ..... 000110 @s5 diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 10bbe25172a..7cb078bfe92 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -57,13 +57,10 @@ enum { /* I8 instruction */ OPC_ANDI_B = (0x0 << 24) | OPC_MSA_I8_00, OPC_BMNZI_B = (0x0 << 24) | OPC_MSA_I8_01, - OPC_SHF_B = (0x0 << 24) | OPC_MSA_I8_02, OPC_ORI_B = (0x1 << 24) | OPC_MSA_I8_00, OPC_BMZI_B = (0x1 << 24) | OPC_MSA_I8_01, - OPC_SHF_H = (0x1 << 24) | OPC_MSA_I8_02, OPC_NORI_B = (0x2 << 24) | OPC_MSA_I8_00, OPC_BSELI_B = (0x2 << 24) | OPC_MSA_I8_01, - OPC_SHF_W = (0x2 << 24) | OPC_MSA_I8_02, OPC_XORI_B = (0x3 << 24) | OPC_MSA_I8_00, /* VEC/2R/2RF instruction */ @@ -454,20 +451,6 @@ static void gen_msa_i8(DisasContext *ctx) case OPC_BSELI_B: gen_helper_msa_bseli_b(cpu_env, twd, tws, ti8); break; - case OPC_SHF_B: - case OPC_SHF_H: - case OPC_SHF_W: - { - uint8_t df = (ctx->opcode >> 24) & 0x3; - if (df == DF_DOUBLE) { - gen_reserved_instruction(ctx); - } else { - TCGv_i32 tdf = tcg_const_i32(df); - gen_helper_msa_shf_df(cpu_env, tdf, twd, tws, ti8); - tcg_temp_free_i32(tdf); - } - } - break; default: MIPS_INVAL("MSA instruction"); gen_reserved_instruction(ctx); @@ -479,6 +462,36 @@ static void gen_msa_i8(DisasContext *ctx) tcg_temp_free_i32(ti8); } +static bool trans_SHF(DisasContext *ctx, arg_msa_ldst *a) +{ + TCGv_i32 tdf; + TCGv_i32 twd; + TCGv_i32 tws; + TCGv_i32 timm; + + if (a->df == DF_DOUBLE) { + gen_reserved_instruction(ctx); + return true; + } + + if (!check_msa_access(ctx)) { + return false; + } + + tdf = tcg_constant_i32(a->df); + twd = tcg_const_i32(a->wd); + tws = tcg_const_i32(a->ws); + timm = tcg_const_i32(a->sa); + + gen_helper_msa_shf_df(cpu_env, tdf, twd, tws, timm); + + tcg_temp_free_i32(tws); + tcg_temp_free_i32(twd); + tcg_temp_free_i32(timm); + + return true; +} + static bool trans_msa_i5(DisasContext *ctx, arg_msa_ldst *a, void (*gen_msa_i5)(TCGv_ptr, TCGv_i32, TCGv_i32, TCGv_i32, TCGv_i32)) From patchwork Sat Oct 23 21:47:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545264 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=D0lcjkuJ; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFbc5v4Jz9s1l for ; Sun, 24 Oct 2021 09:03:40 +1100 (AEDT) Received: from localhost ([::1]:58308 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP74-0005ci-K4 for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:03:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40902) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOtB-0005eX-BV for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:17 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]:45934) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOt8-0005Xt-Vn for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:17 -0400 Received: by mail-wr1-x42d.google.com with SMTP id a16so3567089wrh.12 for ; Sat, 23 Oct 2021 14:49:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9vu9D27+ookIEdUzntvIdVfMMkdX35lVhgz6M0Org7w=; b=D0lcjkuJd8IOslJHGXbV0wz3z6H++oHGGkkzXqYJLyP3rWfEVTjClCvmTJ/tc6jKHE JD4hSSYv+vbqFMG9nMQioqB4p31o6XMLHcMa2mQ8JjXyal34dkeQw4t6o/JvBjH0NrZW KXufS/vJ7V2ZVBaFghtqdHX+o7qM4CpJW8mExDMSCu/xm2Rpc08l0F+GYZlnqc4PHVsx N9MpkYtfC+MSc9lMLNiMwqmTP1gxhKgF4XVw+OjkpcHU+/PZqSzLv1UHn7ly+qHSqB26 Qq5uQ+Z/JCcRu5IHWWaGDXEgeH+iIPcnaNFOJMZLK9k8y05ldYkZ6qTlVLylfIEvO1yF X37A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=9vu9D27+ookIEdUzntvIdVfMMkdX35lVhgz6M0Org7w=; b=LtRGoHku2EN8zs9zLWctgXY8ne/5rUCjtprgtdmf/sFq719cgCyt23MqEmCBl6tyxl mbS9XjSwC58/H2v4DKsp7TKyPa/e5uSsdEFnBAc3F34YHRSkYY00D9GUd9h7MdSh1GID mM8KOb21jlwA9+pVhvPwbpGLBzuNaPZXyMkKm+skvTAv63qFjFRNoLg2QYIJR/4eIqdz BEX4b0b4SoZo/DOtJEtFQ13jbpHg1m5o1Jf1TSZuOxGOM9Et468b7aNwlgQXnmHC4s/C tk/1gjOgStyKRXsmon/tLZCya3prgTxpvmocHDQORBKXY5vxErt88cN1UsReHWYe+J7m ZEZA== X-Gm-Message-State: AOAM533AbbypptkjPGC4ZTLOrzex234ys67RAqgSbRRYQkgk22P2wK6M /AdlhA7I0/YhmCfq9qPRUhTI5mDKz80= X-Google-Smtp-Source: ABdhPJxLWxguDyHgZJEwyqPeMVpkg0GjB2AMyRdmK+G38tZ4eMBlRNtDLFVJAqCcqsw3GRqDZIunQQ== X-Received: by 2002:adf:a486:: with SMTP id g6mr10580590wrb.130.1635025753392; Sat, 23 Oct 2021 14:49:13 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id l1sm2403488wrb.73.2021.10.23.14.49.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:13 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 14/33] target/mips: Convert MSA I8 instruction format to decodetree Date: Sat, 23 Oct 2021 23:47:44 +0200 Message-Id: <20211023214803.522078-15-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42d.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert instructions with an 8-bit immediate value and either implicit data format or data format df to decodetree. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 8 ++++ target/mips/tcg/msa_translate.c | 72 +++++++++------------------------ 2 files changed, 26 insertions(+), 54 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 6347468a709..3dd07dced57 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -23,6 +23,7 @@ @s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_ldst @ldi ...... ... df:2 sa:s10 wd:5 ...... &msa_ldst ws=0 @i8_df ...... df:2 sa:s8 ws:5 wd:5 ...... &msa_ldst +@i8 ...... .. sa:s8 ws:5 wd:5 ...... &msa_ldst df=0 @bit ...... ... df:7 ws:5 wd:5 ...... &msa_ldst sa=0 LSA 000000 ..... ..... ..... 000 .. 000101 @lsa @@ -34,6 +35,13 @@ BZ 010001 110 .. ..... ................ @bz BNZ 010001 111 .. ..... ................ @bz { + ANDI 011110 00 ........ ..... ..... 000000 @i8 + ORI 011110 01 ........ ..... ..... 000000 @i8 + NORI 011110 10 ........ ..... ..... 000000 @i8 + XORI 011110 11 ........ ..... ..... 000000 @i8 + BMNZI 011110 00 ........ ..... ..... 000001 @i8 + BMZI 011110 01 ........ ..... ..... 000001 @i8 + BSELI 011110 10 ........ ..... ..... 000001 @i8 SHF 011110 .. ........ ..... ..... 000010 @i8_df ADDVI 011110 000 .. ..... ..... ..... 000110 @u5 diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 7cb078bfe92..2866687635d 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -24,9 +24,6 @@ #define MASK_MSA_MINOR(op) (MASK_OP_MAJOR(op) | (op & 0x3F)) enum { - OPC_MSA_I8_00 = 0x00 | OPC_MSA, - OPC_MSA_I8_01 = 0x01 | OPC_MSA, - OPC_MSA_I8_02 = 0x02 | OPC_MSA, OPC_MSA_3R_0D = 0x0D | OPC_MSA, OPC_MSA_3R_0E = 0x0E | OPC_MSA, OPC_MSA_3R_0F = 0x0F | OPC_MSA, @@ -54,15 +51,6 @@ enum { }; enum { - /* I8 instruction */ - OPC_ANDI_B = (0x0 << 24) | OPC_MSA_I8_00, - OPC_BMNZI_B = (0x0 << 24) | OPC_MSA_I8_01, - OPC_ORI_B = (0x1 << 24) | OPC_MSA_I8_00, - OPC_BMZI_B = (0x1 << 24) | OPC_MSA_I8_01, - OPC_NORI_B = (0x2 << 24) | OPC_MSA_I8_00, - OPC_BSELI_B = (0x2 << 24) | OPC_MSA_I8_01, - OPC_XORI_B = (0x3 << 24) | OPC_MSA_I8_00, - /* VEC/2R/2RF instruction */ OPC_AND_V = (0x00 << 21) | OPC_MSA_VEC, OPC_OR_V = (0x01 << 21) | OPC_MSA_VEC, @@ -418,50 +406,31 @@ static bool trans_BNZ(DisasContext *ctx, arg_msa_bz *a) return gen_msa_BxZ(ctx, a->df, a->wt, a->sa, true); } -static void gen_msa_i8(DisasContext *ctx) +static bool trans_msa_i8(DisasContext *ctx, arg_msa_ldst *a, + void (*gen_msa_i8)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32)) { -#define MASK_MSA_I8(op) (MASK_MSA_MINOR(op) | (op & (0x03 << 24))) - uint8_t i8 = (ctx->opcode >> 16) & 0xff; - uint8_t ws = (ctx->opcode >> 11) & 0x1f; - uint8_t wd = (ctx->opcode >> 6) & 0x1f; + TCGv_i32 twd = tcg_const_i32(a->wd); + TCGv_i32 tws = tcg_const_i32(a->ws); + TCGv_i32 timm = tcg_const_i32(a->sa); - TCGv_i32 twd = tcg_const_i32(wd); - TCGv_i32 tws = tcg_const_i32(ws); - TCGv_i32 ti8 = tcg_const_i32(i8); - - switch (MASK_MSA_I8(ctx->opcode)) { - case OPC_ANDI_B: - gen_helper_msa_andi_b(cpu_env, twd, tws, ti8); - break; - case OPC_ORI_B: - gen_helper_msa_ori_b(cpu_env, twd, tws, ti8); - break; - case OPC_NORI_B: - gen_helper_msa_nori_b(cpu_env, twd, tws, ti8); - break; - case OPC_XORI_B: - gen_helper_msa_xori_b(cpu_env, twd, tws, ti8); - break; - case OPC_BMNZI_B: - gen_helper_msa_bmnzi_b(cpu_env, twd, tws, ti8); - break; - case OPC_BMZI_B: - gen_helper_msa_bmzi_b(cpu_env, twd, tws, ti8); - break; - case OPC_BSELI_B: - gen_helper_msa_bseli_b(cpu_env, twd, tws, ti8); - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - break; - } + gen_msa_i8(cpu_env, twd, tws, timm); tcg_temp_free_i32(twd); tcg_temp_free_i32(tws); - tcg_temp_free_i32(ti8); + tcg_temp_free_i32(timm); + + return true; } +TRANS_MSA(ANDI, trans_msa_i8, gen_helper_msa_andi_b); +TRANS_MSA(ORI, trans_msa_i8, gen_helper_msa_ori_b); +TRANS_MSA(NORI, trans_msa_i8, gen_helper_msa_nori_b); +TRANS_MSA(XORI, trans_msa_i8, gen_helper_msa_xori_b); +TRANS_MSA(BMNZI, trans_msa_i8, gen_helper_msa_bmnzi_b); +TRANS_MSA(BMZI, trans_msa_i8, gen_helper_msa_bmzi_b); +TRANS_MSA(BSELI, trans_msa_i8, gen_helper_msa_bseli_b); + static bool trans_SHF(DisasContext *ctx, arg_msa_ldst *a) { TCGv_i32 tdf; @@ -2113,11 +2082,6 @@ static bool trans_MSA(DisasContext *ctx, arg_MSA *a) } switch (MASK_MSA_MINOR(opcode)) { - case OPC_MSA_I8_00: - case OPC_MSA_I8_01: - case OPC_MSA_I8_02: - gen_msa_i8(ctx); - break; case OPC_MSA_3R_0D: case OPC_MSA_3R_0E: case OPC_MSA_3R_0F: From patchwork Sat Oct 23 21:47:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545267 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=VGHe+dDe; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFhV3KSXz9s1l for ; Sun, 24 Oct 2021 09:07:52 +1100 (AEDT) Received: from localhost ([::1]:38316 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePB7-0002my-DT for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:07:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40916) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOtF-0005iY-Av for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:22 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]:37490) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOtD-0005Zv-JM for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:20 -0400 Received: by mail-wr1-x42d.google.com with SMTP id e12so4785963wra.4 for ; Sat, 23 Oct 2021 14:49:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9oAdN638f3glmAR3nDrRo61QUNkEAnYfFRDh/cNbuiI=; b=VGHe+dDetJUka8N7Pzf+NIT3YdfcYVIwE1UhHVQRY7xcdpzKKekpLfaqaLBIKKMitf jOtRna7a80Yz+nsqshu5rN/7cH4W1VNCzgC95k4d03NrBKUfvc+pLRESM99wCNtOUzEP 3SRGdymVsOxHxauL7hjDTYUw4WC9AZ8DGr/uZosWIbCDVWEg4uZRDBn19Vu4ZopJpcDt f20op9uSn+4eR6ijTVekcszx+aZuaef/gM6x2jVb9vLhEf9hrdBqlyB/NZnrbWZnPx5d ixuXYzRCTXPGC1hcySCj9Uexh1/eZT21gAyU4tnLE7OBqw43WvIqe1Htq0jziFa0CXdH zULg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=9oAdN638f3glmAR3nDrRo61QUNkEAnYfFRDh/cNbuiI=; b=UsNoqmzjGU+Xmy9p7jGRyl0OCPNP6VDxxo+5ZbjUKt29wf+INm1L8wXtTbODuS0uqP 6933IWaJod8LfmuuXJM0UyaZGrj77cSuOLNOjHNb55bQ4zhGCzHxZ2a39vZKRCYpb+2H Fga1HUZZFHYE9GOW6BrgWABNXRyLBR8CjcaTlmeIlXz21e59ODt/La7xdGmRlVpyGSpe xw8Y4p+yDlapDhZgOCKCBGtiWF1IC5k4tuPOydBLDgFBGiIHadU0CCEmeqLPngqRkZmG UPkByYKSaroaHveCgPWMN0hgaByQQnpvCEvLdjaAWh275Hje7HA/1U/jc2uhf3yXV28N YbtQ== X-Gm-Message-State: AOAM531mCZseCkXHe88NiUcVxV/jXJQxk9Otvh5uMqT4QQwGelfSB/Lw wHEbCsYNoeIexbTctCesJTMhVDIIiwE= X-Google-Smtp-Source: ABdhPJw+XrdGbIdBk6cjtCs24BkxXy9Qs1t9x25e5nBoc7HLycCgPbh8sXlWNPWXO78Yaj5R9j8BKA== X-Received: by 2002:a05:6000:247:: with SMTP id m7mr2645421wrz.106.1635025758217; Sat, 23 Oct 2021 14:49:18 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id v13sm7361069wrp.11.2021.10.23.14.49.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:17 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 15/33] target/mips: Convert MSA load/store instruction format to decodetree Date: Sat, 23 Oct 2021 23:47:45 +0200 Message-Id: <20211023214803.522078-16-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42d.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert load/store instructions to decodetree. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa.decode | 4 ++ target/mips/tcg/msa_translate.c | 99 +++++++++++++-------------------- 2 files changed, 44 insertions(+), 59 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 3dd07dced57..5fe6923ace5 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -17,6 +17,7 @@ &msa_ldst df wd ws sa @lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r +@ldst ...... sa:s10 ws:5 wd:5 .... df:2 &msa_ldst @bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 @bz ...... ... df:2 wt:5 sa:16 &msa_bz @u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_ldst @@ -73,5 +74,8 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + LD 011110 .......... ..... ..... 1000 .. @ldst + ST 011110 .......... ..... ..... 1001 .. @ldst + MSA 011110 -------------------------- } diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 2866687635d..52af99636a4 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -38,16 +38,6 @@ enum { OPC_MSA_3RF_1B = 0x1B | OPC_MSA, OPC_MSA_3RF_1C = 0x1C | OPC_MSA, OPC_MSA_VEC = 0x1E | OPC_MSA, - - /* MI10 instruction */ - OPC_LD_B = (0x20) | OPC_MSA, - OPC_LD_H = (0x21) | OPC_MSA, - OPC_LD_W = (0x22) | OPC_MSA, - OPC_LD_D = (0x23) | OPC_MSA, - OPC_ST_B = (0x24) | OPC_MSA, - OPC_ST_H = (0x25) | OPC_MSA, - OPC_ST_W = (0x26) | OPC_MSA, - OPC_ST_D = (0x27) | OPC_MSA, }; enum { @@ -298,6 +288,10 @@ static inline bool check_msa_access(DisasContext *ctx) #define TRANS_MSA(NAME, trans_func, gen_func) \ TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, gen_func) +#define TRANS_DF_E(NAME, trans_func, gen_func) \ + TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, \ + gen_func##_b, gen_func##_h, gen_func##_w, gen_func##_d) + static void gen_check_zero_element(TCGv tresult, uint8_t df, uint8_t wt, TCGCond cond) { @@ -2104,55 +2098,6 @@ static bool trans_MSA(DisasContext *ctx, arg_MSA *a) case OPC_MSA_VEC: gen_msa_vec(ctx); break; - case OPC_LD_B: - case OPC_LD_H: - case OPC_LD_W: - case OPC_LD_D: - case OPC_ST_B: - case OPC_ST_H: - case OPC_ST_W: - case OPC_ST_D: - { - int32_t s10 = sextract32(ctx->opcode, 16, 10); - uint8_t rs = (ctx->opcode >> 11) & 0x1f; - uint8_t wd = (ctx->opcode >> 6) & 0x1f; - uint8_t df = (ctx->opcode >> 0) & 0x3; - - TCGv_i32 twd = tcg_const_i32(wd); - TCGv taddr = tcg_temp_new(); - gen_base_offset_addr(ctx, taddr, rs, s10 << df); - - switch (MASK_MSA_MINOR(opcode)) { - case OPC_LD_B: - gen_helper_msa_ld_b(cpu_env, twd, taddr); - break; - case OPC_LD_H: - gen_helper_msa_ld_h(cpu_env, twd, taddr); - break; - case OPC_LD_W: - gen_helper_msa_ld_w(cpu_env, twd, taddr); - break; - case OPC_LD_D: - gen_helper_msa_ld_d(cpu_env, twd, taddr); - break; - case OPC_ST_B: - gen_helper_msa_st_b(cpu_env, twd, taddr); - break; - case OPC_ST_H: - gen_helper_msa_st_h(cpu_env, twd, taddr); - break; - case OPC_ST_W: - gen_helper_msa_st_w(cpu_env, twd, taddr); - break; - case OPC_ST_D: - gen_helper_msa_st_d(cpu_env, twd, taddr); - break; - } - - tcg_temp_free_i32(twd); - tcg_temp_free(taddr); - } - break; default: MIPS_INVAL("MSA instruction"); gen_reserved_instruction(ctx); @@ -2162,6 +2107,42 @@ static bool trans_MSA(DisasContext *ctx, arg_MSA *a) return true; } +static bool trans_msa_ldst(DisasContext *ctx, arg_msa_ldst *a, + void (*gen_msa_b)(TCGv_ptr, TCGv_i32, TCGv), + void (*gen_msa_h)(TCGv_ptr, TCGv_i32, TCGv), + void (*gen_msa_w)(TCGv_ptr, TCGv_i32, TCGv), + void (*gen_msa_d)(TCGv_ptr, TCGv_i32, TCGv)) +{ + + TCGv_i32 twd = tcg_const_i32(a->wd); + TCGv taddr = tcg_temp_new(); + + gen_base_offset_addr(ctx, taddr, a->ws, a->sa << a->df); + + switch (a->df) { + case DF_BYTE: + gen_msa_b(cpu_env, twd, taddr); + break; + case DF_HALF: + gen_msa_h(cpu_env, twd, taddr); + break; + case DF_WORD: + gen_msa_w(cpu_env, twd, taddr); + break; + case DF_DOUBLE: + gen_msa_d(cpu_env, twd, taddr); + break; + } + + tcg_temp_free_i32(twd); + tcg_temp_free(taddr); + + return true; +} + +TRANS_DF_E(LD, trans_msa_ldst, gen_helper_msa_ld); +TRANS_DF_E(ST, trans_msa_ldst, gen_helper_msa_st); + static bool trans_LSA(DisasContext *ctx, arg_r *a) { return gen_lsa(ctx, a->rd, a->rt, a->rs, a->sa); From patchwork Sat Oct 23 21:47:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545261 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=BEVg25Qk; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFYV4Qjxz9s1l for ; Sun, 24 Oct 2021 09:01:50 +1100 (AEDT) Received: from localhost ([::1]:53074 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP5I-00022D-D2 for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:01:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40936) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOtK-0005lT-Im for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:26 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]:38469) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOtI-0005cU-E0 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:26 -0400 Received: by mail-wr1-x42e.google.com with SMTP id u18so1393561wrg.5 for ; Sat, 23 Oct 2021 14:49:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/82C/RXBbZohXXpaNVo8ZLMmjbXm87ApjflY1VkDUQk=; b=BEVg25QkA6rdIuVg01EQfEjTPtRpEMCXjI4pENF+vJA+FCSfEaefhLQlK1WO9YgYRA QyjgRuf3yU+OY1Hed5saAhJrMOsMeYF/3frmNr0X1U6MhIBk3X6E1QWWlBJQx+TyEJYH 40e2YsDglyFXRneEzjiJOOwqX86VoDWcfVfkkFmRa3DthzTARA2tBFgkSN1RfEGiY7J7 NllwkYhjwwJegkKQHB/K3/thIcI5AxwbqEZ7VVzYhInOyCeCspTbKm2gsLoMXnLG2TBh 7FaTXkNRMkhNOpk09mIx93ssQROCs5Sgzhg7TK4otEHQroGVkB+LJVMmeN1R6Ac0VOpQ WfQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=/82C/RXBbZohXXpaNVo8ZLMmjbXm87ApjflY1VkDUQk=; b=099/mEDE29gts0B2OSOpVY2NNR7btpBeY5S5MENuQu5JkCYDUunK1oDfh5+dP6SU40 +IIzw9Rd/VG2Zb0QlDzlLrnbmhRPT5QpVv3/aHQ6Mh3YUReTHjRavd8QdOjikowYs2rC 1ZEiD7ZhuVulPCTqgq/VgGeqVzz2jYiGbOfewlhyYHfmCho3IE+lEOs6sE/GtC2s8Txs QuGLU3rBwWgjelZv4lRp15Dg73DahRIoD5fhhYOPoLOEnNw8GP+9XCdpMtAmZhZcb+2+ PvIK9DBCeGCN5Ysk4aLu/g6KPYVNtDEQOANdMfov91Z7Jn4RZg1So96LVjDw/wDhPFHW r0KQ== X-Gm-Message-State: AOAM5333hvk1u9Ar53IkjoZLTh6LJG10RPqZlljFmxrSTE7NpQqi0vtu AjAy7M2BXVORejhR9tkiMvFo6eYgBIc= X-Google-Smtp-Source: ABdhPJyNG4bHsoQ341Cr1ArKRigh9JifdoRRKn2EjufebP5Ut6f0mDq1Y1h70IYzji1V+88M0tWB3w== X-Received: by 2002:adf:fd41:: with SMTP id h1mr1140036wrs.14.1635025763043; Sat, 23 Oct 2021 14:49:23 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id x8sm6726488wrw.6.2021.10.23.14.49.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:22 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 16/33] target/mips: Convert MSA 2RF instruction format to decodetree Date: Sat, 23 Oct 2021 23:47:46 +0200 Message-Id: <20211023214803.522078-17-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42e; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42e.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert 2-register floating-point operations to decodetree. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 19 ++++++ target/mips/tcg/msa_translate.c | 109 ++++++++------------------------ 2 files changed, 46 insertions(+), 82 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 5fe6923ace5..2997bfa24e3 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -13,6 +13,7 @@ &r rs rt rd sa +&msa_r df wd ws wt &msa_bz df wt sa &msa_ldst df wd ws sa @@ -20,6 +21,7 @@ @ldst ...... sa:s10 ws:5 wd:5 .... df:2 &msa_ldst @bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 @bz ...... ... df:2 wt:5 sa:16 &msa_bz +@2rf ...... ......... df:1 ws:5 wd:5 ...... &msa_r wt=0 @u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_ldst @s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_ldst @ldi ...... ... df:2 sa:s10 wd:5 ...... &msa_ldst ws=0 @@ -74,6 +76,23 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + FCLASS 011110 110010000 . ..... ..... 011110 @2rf + FTRUNC_S 011110 110010001 . ..... ..... 011110 @2rf + FTRUNC_U 011110 110010010 . ..... ..... 011110 @2rf + FSQRT 011110 110010011 . ..... ..... 011110 @2rf + FRSQRT 011110 110010100 . ..... ..... 011110 @2rf + FRCP 011110 110010101 . ..... ..... 011110 @2rf + FRINT 011110 110010110 . ..... ..... 011110 @2rf + FLOG2 011110 110010111 . ..... ..... 011110 @2rf + FEXUPL 011110 110011000 . ..... ..... 011110 @2rf + FEXUPR 011110 110011001 . ..... ..... 011110 @2rf + FFQL 011110 110011010 . ..... ..... 011110 @2rf + FFQR 011110 110011011 . ..... ..... 011110 @2rf + FTINT_S 011110 110011100 . ..... ..... 011110 @2rf + FTINT_U 011110 110011101 . ..... ..... 011110 @2rf + FFINT_S 011110 110011110 . ..... ..... 011110 @2rf + FFINT_U 011110 110011111 . ..... ..... 011110 @2rf + LD 011110 .......... ..... ..... 1000 .. @ldst ST 011110 .......... ..... ..... 1001 .. @ldst diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 52af99636a4..c6a77381c0e 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -41,7 +41,7 @@ enum { }; enum { - /* VEC/2R/2RF instruction */ + /* VEC/2R instruction */ OPC_AND_V = (0x00 << 21) | OPC_MSA_VEC, OPC_OR_V = (0x01 << 21) | OPC_MSA_VEC, OPC_NOR_V = (0x02 << 21) | OPC_MSA_VEC, @@ -51,7 +51,6 @@ enum { OPC_BSEL_V = (0x06 << 21) | OPC_MSA_VEC, OPC_MSA_2R = (0x18 << 21) | OPC_MSA_VEC, - OPC_MSA_2RF = (0x19 << 21) | OPC_MSA_VEC, /* 2R instruction df(bits 17..16) = _b, _h, _w, _d */ OPC_FILL_df = (0x00 << 18) | OPC_MSA_2R, @@ -59,24 +58,6 @@ enum { OPC_NLOC_df = (0x02 << 18) | OPC_MSA_2R, OPC_NLZC_df = (0x03 << 18) | OPC_MSA_2R, - /* 2RF instruction df(bit 16) = _w, _d */ - OPC_FCLASS_df = (0x00 << 17) | OPC_MSA_2RF, - OPC_FTRUNC_S_df = (0x01 << 17) | OPC_MSA_2RF, - OPC_FTRUNC_U_df = (0x02 << 17) | OPC_MSA_2RF, - OPC_FSQRT_df = (0x03 << 17) | OPC_MSA_2RF, - OPC_FRSQRT_df = (0x04 << 17) | OPC_MSA_2RF, - OPC_FRCP_df = (0x05 << 17) | OPC_MSA_2RF, - OPC_FRINT_df = (0x06 << 17) | OPC_MSA_2RF, - OPC_FLOG2_df = (0x07 << 17) | OPC_MSA_2RF, - OPC_FEXUPL_df = (0x08 << 17) | OPC_MSA_2RF, - OPC_FEXUPR_df = (0x09 << 17) | OPC_MSA_2RF, - OPC_FFQL_df = (0x0A << 17) | OPC_MSA_2RF, - OPC_FFQR_df = (0x0B << 17) | OPC_MSA_2RF, - OPC_FTINT_S_df = (0x0C << 17) | OPC_MSA_2RF, - OPC_FTINT_U_df = (0x0D << 17) | OPC_MSA_2RF, - OPC_FFINT_S_df = (0x0E << 17) | OPC_MSA_2RF, - OPC_FFINT_U_df = (0x0F << 17) | OPC_MSA_2RF, - /* 3R instruction df(bits 22..21) = _b, _h, _w, d */ OPC_SLL_df = (0x0 << 23) | OPC_MSA_3R_0D, OPC_ADDV_df = (0x0 << 23) | OPC_MSA_3R_0E, @@ -1932,73 +1913,40 @@ static void gen_msa_2r(DisasContext *ctx) tcg_temp_free_i32(tws); } -static void gen_msa_2rf(DisasContext *ctx) +static bool trans_msa_2rf(DisasContext *ctx, arg_msa_r *a, + void (*gen_msa_2rf)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32)) { -#define MASK_MSA_2RF(op) (MASK_MSA_MINOR(op) | (op & (0x1f << 21)) | \ - (op & (0xf << 17))) - uint8_t ws = (ctx->opcode >> 11) & 0x1f; - uint8_t wd = (ctx->opcode >> 6) & 0x1f; - uint8_t df = (ctx->opcode >> 16) & 0x1; - TCGv_i32 twd = tcg_const_i32(wd); - TCGv_i32 tws = tcg_const_i32(ws); + TCGv_i32 twd = tcg_const_i32(a->wd); + TCGv_i32 tws = tcg_const_i32(a->ws); /* adjust df value for floating-point instruction */ - TCGv_i32 tdf = tcg_constant_i32(DF_WORD + df); + TCGv_i32 tdf = tcg_constant_i32(DF_WORD + a->df); - switch (MASK_MSA_2RF(ctx->opcode)) { - case OPC_FCLASS_df: - gen_helper_msa_fclass_df(cpu_env, tdf, twd, tws); - break; - case OPC_FTRUNC_S_df: - gen_helper_msa_ftrunc_s_df(cpu_env, tdf, twd, tws); - break; - case OPC_FTRUNC_U_df: - gen_helper_msa_ftrunc_u_df(cpu_env, tdf, twd, tws); - break; - case OPC_FSQRT_df: - gen_helper_msa_fsqrt_df(cpu_env, tdf, twd, tws); - break; - case OPC_FRSQRT_df: - gen_helper_msa_frsqrt_df(cpu_env, tdf, twd, tws); - break; - case OPC_FRCP_df: - gen_helper_msa_frcp_df(cpu_env, tdf, twd, tws); - break; - case OPC_FRINT_df: - gen_helper_msa_frint_df(cpu_env, tdf, twd, tws); - break; - case OPC_FLOG2_df: - gen_helper_msa_flog2_df(cpu_env, tdf, twd, tws); - break; - case OPC_FEXUPL_df: - gen_helper_msa_fexupl_df(cpu_env, tdf, twd, tws); - break; - case OPC_FEXUPR_df: - gen_helper_msa_fexupr_df(cpu_env, tdf, twd, tws); - break; - case OPC_FFQL_df: - gen_helper_msa_ffql_df(cpu_env, tdf, twd, tws); - break; - case OPC_FFQR_df: - gen_helper_msa_ffqr_df(cpu_env, tdf, twd, tws); - break; - case OPC_FTINT_S_df: - gen_helper_msa_ftint_s_df(cpu_env, tdf, twd, tws); - break; - case OPC_FTINT_U_df: - gen_helper_msa_ftint_u_df(cpu_env, tdf, twd, tws); - break; - case OPC_FFINT_S_df: - gen_helper_msa_ffint_s_df(cpu_env, tdf, twd, tws); - break; - case OPC_FFINT_U_df: - gen_helper_msa_ffint_u_df(cpu_env, tdf, twd, tws); - break; - } + gen_msa_2rf(cpu_env, tdf, twd, tws); tcg_temp_free_i32(twd); tcg_temp_free_i32(tws); + + return true; } +TRANS_MSA(FCLASS, trans_msa_2rf, gen_helper_msa_fclass_df); +TRANS_MSA(FTRUNC_S, trans_msa_2rf, gen_helper_msa_fclass_df); +TRANS_MSA(FTRUNC_U, trans_msa_2rf, gen_helper_msa_ftrunc_s_df); +TRANS_MSA(FSQRT, trans_msa_2rf, gen_helper_msa_fsqrt_df); +TRANS_MSA(FRSQRT, trans_msa_2rf, gen_helper_msa_frsqrt_df); +TRANS_MSA(FRCP, trans_msa_2rf, gen_helper_msa_frcp_df); +TRANS_MSA(FRINT, trans_msa_2rf, gen_helper_msa_frint_df); +TRANS_MSA(FLOG2, trans_msa_2rf, gen_helper_msa_flog2_df); +TRANS_MSA(FEXUPL, trans_msa_2rf, gen_helper_msa_fexupl_df); +TRANS_MSA(FEXUPR, trans_msa_2rf, gen_helper_msa_fexupr_df); +TRANS_MSA(FFQL, trans_msa_2rf, gen_helper_msa_ffql_df); +TRANS_MSA(FFQR, trans_msa_2rf, gen_helper_msa_ffqr_df); +TRANS_MSA(FTINT_S, trans_msa_2rf, gen_helper_msa_ftint_s_df); +TRANS_MSA(FTINT_U, trans_msa_2rf, gen_helper_msa_ftint_u_df); +TRANS_MSA(FFINT_S, trans_msa_2rf, gen_helper_msa_ffint_s_df); +TRANS_MSA(FFINT_U, trans_msa_2rf, gen_helper_msa_ffint_u_df); + static void gen_msa_vec_v(DisasContext *ctx) { #define MASK_MSA_VEC(op) (MASK_MSA_MINOR(op) | (op & (0x1f << 21))) @@ -2057,9 +2005,6 @@ static void gen_msa_vec(DisasContext *ctx) case OPC_MSA_2R: gen_msa_2r(ctx); break; - case OPC_MSA_2RF: - gen_msa_2rf(ctx); - break; default: MIPS_INVAL("MSA instruction"); gen_reserved_instruction(ctx); From patchwork Sat Oct 23 21:47:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545270 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=DZmICpnT; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFkr52V6z9s1l for ; Sun, 24 Oct 2021 09:09:56 +1100 (AEDT) Received: from localhost ([::1]:44720 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePD8-0007Ei-HL for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:09:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40948) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOtQ-0005qt-P5 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:32 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:52000) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOtO-0005eO-88 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:32 -0400 Received: by mail-wm1-x32b.google.com with SMTP id p21so6592166wmq.1 for ; Sat, 23 Oct 2021 14:49:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rRWJ6DnX5aJmnlrbbx5eJIJj5UwX/8+gOkeXTZA3kHs=; b=DZmICpnTBpthHOnOOTwIBPFDdUGIqcGVOfLi0+J3/Sc/IrXzPhtpNLMTO1XSEAyRlb Ybo41l6SvXpTgqvYzqd3IXERNqywSqTpguLaQ8De1VzzH7y8ku4JEUZPlArzwxKOx/Yy Nm1g1+T2MYWyGN2c1r82f2ceAbZx3MO3VahOFMXVvao//ecDsdJUaS59t4CkFJlQTH69 YG9xW8H+uAWqYliXa/h0a64OweQDsbmQ58RvxhEt7yRioT8nE6E1w/9Mc5aeJw/4L/+E sMtQGC9dIQ9b1LDgjk2X0rv6yYiZpJ/ubNPBdBQO/BwWMnbNoyyoXWou/t31E/1F7lcs ROLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=rRWJ6DnX5aJmnlrbbx5eJIJj5UwX/8+gOkeXTZA3kHs=; b=WbckquQ/eHqq7a4Y7gH8l2AI3gK/8hJlPNoNh8NR1ITD+fV0I6Dnfd17aacV3EQE4/ sRFb270AOurbw4B8uo2FJ/IcQY2a9jpVd6YIZUtlSiwfcPAX2Bxg5zM96vROHsQUGTAY LknbrVcbSB0hY4sj/gYOvctACYwGrWJpJQOyzGLPrcCyZ+Ipso7yP3EwnsIJeAhgCnt7 Lskw3PQn9gnMO677J40JogkR/XVD2HSmK39hPCrFcjA7alOUuONngEU4YKUteKcaF7OC 5wSyFo3CIwWnQ0vqO4npxUzrzcNLmd52wl7C0oos83XeJpRcc2TaIzBF9zzs9RVX5FL7 hnTQ== X-Gm-Message-State: AOAM532Y7pf+0AvJyM9c7baxsnhMJM6XhVBvfYSf0DuxsLzs56L/TUuZ xPyc8YAd/Hw29n2nLNQS1oeccXCVCHk= X-Google-Smtp-Source: ABdhPJyBygAVnsy2ANdanKrJwkkp2dP1jUxjkKsqoN5IAR1NI8ZrcYj9A4nNVIjC9oBnSlZWM1kXtw== X-Received: by 2002:a05:600c:4f81:: with SMTP id n1mr38335876wmq.63.1635025767732; Sat, 23 Oct 2021 14:49:27 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id z1sm12187077wre.21.2021.10.23.14.49.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:27 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 17/33] target/mips: Convert MSA FILL opcode to decodetree Date: Sat, 23 Oct 2021 23:47:47 +0200 Message-Id: <20211023214803.522078-18-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32b.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert the FILL opcode (Vector Fill from GPR) to decodetree. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa.decode | 2 ++ target/mips/tcg/msa_translate.c | 40 +++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 2997bfa24e3..e97490cf880 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -21,6 +21,7 @@ @ldst ...... sa:s10 ws:5 wd:5 .... df:2 &msa_ldst @bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 @bz ...... ... df:2 wt:5 sa:16 &msa_bz +@2r ...... ........ df:2 ws:5 wd:5 ...... &msa_r wt=0 @2rf ...... ......... df:1 ws:5 wd:5 ...... &msa_r wt=0 @u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_ldst @s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_ldst @@ -76,6 +77,7 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + FILL 011110 11000000 .. ..... ..... 011110 @2r FCLASS 011110 110010000 . ..... ..... 011110 @2rf FTRUNC_S 011110 110010001 . ..... ..... 011110 @2rf FTRUNC_U 011110 110010010 . ..... ..... 011110 @2rf diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index c6a77381c0e..fc0b80f83ac 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -53,7 +53,6 @@ enum { OPC_MSA_2R = (0x18 << 21) | OPC_MSA_VEC, /* 2R instruction df(bits 17..16) = _b, _h, _w, _d */ - OPC_FILL_df = (0x00 << 18) | OPC_MSA_2R, OPC_PCNT_df = (0x01 << 18) | OPC_MSA_2R, OPC_NLOC_df = (0x02 << 18) | OPC_MSA_2R, OPC_NLZC_df = (0x03 << 18) | OPC_MSA_2R, @@ -1844,17 +1843,6 @@ static void gen_msa_2r(DisasContext *ctx) TCGv_i32 tws = tcg_const_i32(ws); switch (MASK_MSA_2R(ctx->opcode)) { - case OPC_FILL_df: -#if !defined(TARGET_MIPS64) - /* Double format valid only for MIPS64 */ - if (df == DF_DOUBLE) { - gen_reserved_instruction(ctx); - break; - } -#endif - gen_helper_msa_fill_df(cpu_env, tcg_constant_i32(df), - twd, tws); /* trs */ - break; case OPC_NLOC_df: switch (df) { case DF_BYTE: @@ -1913,6 +1901,34 @@ static void gen_msa_2r(DisasContext *ctx) tcg_temp_free_i32(tws); } +static bool trans_FILL(DisasContext *ctx, arg_msa_r *a) +{ + TCGv_i32 twd; + TCGv_i32 tws; + TCGv_i32 tdf; + + if (!check_msa_access(ctx)) { + return false; + } + + if (TARGET_LONG_BITS != 64 && a->df == DF_DOUBLE) { + /* Double format valid only for MIPS64 */ + gen_reserved_instruction(ctx); + return true; + } + + twd = tcg_const_i32(a->wd); + tws = tcg_const_i32(a->ws); + tdf = tcg_constant_i32(a->df); + + gen_helper_msa_fill_df(cpu_env, tdf, twd, tws); /* trs */ + + tcg_temp_free_i32(twd); + tcg_temp_free_i32(tws); + + return true; +} + static bool trans_msa_2rf(DisasContext *ctx, arg_msa_r *a, void (*gen_msa_2rf)(TCGv_ptr, TCGv_i32, TCGv_i32, TCGv_i32)) From patchwork Sat Oct 23 21:47:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545262 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=JW3UZD09; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFYW0M7lz9sS8 for ; Sun, 24 Oct 2021 09:01:51 +1100 (AEDT) Received: from localhost ([::1]:53202 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP5I-00027b-PO for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:01:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40960) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOtU-0005tB-6n for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:37 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:37523) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOtS-0005gs-6z for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:35 -0400 Received: by mail-wm1-x331.google.com with SMTP id b133-20020a1c808b000000b0032ca4d18aebso4495201wmd.2 for ; Sat, 23 Oct 2021 14:49:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uEqIO2wOqp/xkdcCJeWEtzRHUYdaax9QNLinrvilNug=; b=JW3UZD09gk1Uc8F2x/EVRJ8BvMjLu1Z1Gjh0oJAOD6S3rUIHewk/XhaHCl97KCD+go Ebqp/x7wTowwrFiC8FYcEZZ0FRYWCGjo97LPp/45y7jWUD7Yfh7P2BVpxlXEavWoI42a URKgWTp1gDxj3Bnb3k/6hJRhGEq3TSgfHtkrIZnXFmKl0GxlhLp072L5XSnpM4CXQAfh 1CmTWpSycOZL/3XbpXG7sBwKLH+lB3j3aCcvB569UgyPpKX0Wsvt4r/DWAf2x89MOf+W q6ueMBpGT8BoyJI3UU2YuvrmcCHLhGbD+eVyW6A/i1wrl2Eb2yb1toQ1wS6G3HXMQfDG Id2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=uEqIO2wOqp/xkdcCJeWEtzRHUYdaax9QNLinrvilNug=; b=4KNOpugKkfY+9IsBMoD0nPjtxzCZuF+sJfEabOk+xmV2RjMOjWERqqiYFRpZPzadn/ jdL52T3WXirNa7MGz/VneUgcquodrpzrPwHMhEFchJCCzsHetvCT9eE3/ZoGZEoazTs9 BVnHjGhgBasqsJO8eUre7mmzC0wBkzaxgQyyp5R3VFD7NICAffLXRAyh8jDyorcHUzpX ggeUHrjvfeUbTyg8JM3z7X6CMUqVVzizIoy9ojqHOpKLIbv1/zn0pC63PSndeg+2JUoF /CdEYLfG6LyHqoZJIT4CogDsafOOP8Y4VLVGBKbw2N+/fNlyzI5bSHNrm9u9Pbq5majH EhvQ== X-Gm-Message-State: AOAM533Ybzu8KUEtLmPIFSWSaPRbGpX8s7sYmpUfLiEhpZ2CX/P/cMS0 lcfxh3VEuCO+xmihmO22OEgZmj9e4mE= X-Google-Smtp-Source: ABdhPJxQQF2aPXkiNfvP/VJr4BGgOMJ8FaxpyY1narahwVNa9b2n9LIcCOUHo84hag28HmWBC9XwtA== X-Received: by 2002:a1c:cc19:: with SMTP id h25mr10355724wmb.57.1635025772652; Sat, 23 Oct 2021 14:49:32 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id j7sm15355785wmq.32.2021.10.23.14.49.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:32 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 18/33] target/mips: Convert MSA 2R instruction format to decodetree Date: Sat, 23 Oct 2021 23:47:48 +0200 Message-Id: <20211023214803.522078-19-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x331.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert 2-register operations to decodetree. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa.decode | 3 ++ target/mips/tcg/msa_translate.c | 91 +++++++++------------------------ 2 files changed, 28 insertions(+), 66 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index e97490cf880..88757f547eb 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -78,6 +78,9 @@ BNZ 010001 111 .. ..... ................ @bz SRLRI 011110 011 ....... ..... ..... 001010 @bit FILL 011110 11000000 .. ..... ..... 011110 @2r + PCNT 011110 11000001 .. ..... ..... 011110 @2r + NLOC 011110 11000010 .. ..... ..... 011110 @2r + NLZC 011110 11000011 .. ..... ..... 011110 @2r FCLASS 011110 110010000 . ..... ..... 011110 @2rf FTRUNC_S 011110 110010001 . ..... ..... 011110 @2rf FTRUNC_U 011110 110010010 . ..... ..... 011110 @2rf diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index fc0b80f83ac..f54e9d173ac 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -50,13 +50,6 @@ enum { OPC_BMZ_V = (0x05 << 21) | OPC_MSA_VEC, OPC_BSEL_V = (0x06 << 21) | OPC_MSA_VEC, - OPC_MSA_2R = (0x18 << 21) | OPC_MSA_VEC, - - /* 2R instruction df(bits 17..16) = _b, _h, _w, _d */ - OPC_PCNT_df = (0x01 << 18) | OPC_MSA_2R, - OPC_NLOC_df = (0x02 << 18) | OPC_MSA_2R, - OPC_NLZC_df = (0x03 << 18) | OPC_MSA_2R, - /* 3R instruction df(bits 22..21) = _b, _h, _w, d */ OPC_SLL_df = (0x0 << 23) | OPC_MSA_3R_0D, OPC_ADDV_df = (0x0 << 23) | OPC_MSA_3R_0E, @@ -1832,75 +1825,44 @@ static void gen_msa_3rf(DisasContext *ctx) tcg_temp_free_i32(twt); } -static void gen_msa_2r(DisasContext *ctx) +static bool trans_msa_2r(DisasContext *ctx, arg_msa_r *a, + void (*gen_msa_2r_b)(TCGv_ptr, TCGv_i32, TCGv_i32), + void (*gen_msa_2r_h)(TCGv_ptr, TCGv_i32, TCGv_i32), + void (*gen_msa_2r_w)(TCGv_ptr, TCGv_i32, TCGv_i32), + void (*gen_msa_2r_d)(TCGv_ptr, TCGv_i32, TCGv_i32)) { -#define MASK_MSA_2R(op) (MASK_MSA_MINOR(op) | (op & (0x1f << 21)) | \ - (op & (0x7 << 18))) - uint8_t ws = (ctx->opcode >> 11) & 0x1f; - uint8_t wd = (ctx->opcode >> 6) & 0x1f; - uint8_t df = (ctx->opcode >> 16) & 0x3; - TCGv_i32 twd = tcg_const_i32(wd); - TCGv_i32 tws = tcg_const_i32(ws); + TCGv_i32 twd = tcg_const_i32(a->wd); + TCGv_i32 tws = tcg_const_i32(a->ws); - switch (MASK_MSA_2R(ctx->opcode)) { - case OPC_NLOC_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_nloc_b(cpu_env, twd, tws); - break; - case DF_HALF: - gen_helper_msa_nloc_h(cpu_env, twd, tws); - break; - case DF_WORD: - gen_helper_msa_nloc_w(cpu_env, twd, tws); - break; - case DF_DOUBLE: - gen_helper_msa_nloc_d(cpu_env, twd, tws); - break; + switch (a->df) { + case DF_BYTE: + if (gen_msa_2r_b == NULL) { + gen_reserved_instruction(ctx); + } else { + gen_msa_2r_b(cpu_env, twd, tws); } break; - case OPC_NLZC_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_nlzc_b(cpu_env, twd, tws); - break; - case DF_HALF: - gen_helper_msa_nlzc_h(cpu_env, twd, tws); - break; - case DF_WORD: - gen_helper_msa_nlzc_w(cpu_env, twd, tws); - break; - case DF_DOUBLE: - gen_helper_msa_nlzc_d(cpu_env, twd, tws); - break; - } + case DF_HALF: + gen_msa_2r_h(cpu_env, twd, tws); break; - case OPC_PCNT_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_pcnt_b(cpu_env, twd, tws); - break; - case DF_HALF: - gen_helper_msa_pcnt_h(cpu_env, twd, tws); - break; - case DF_WORD: - gen_helper_msa_pcnt_w(cpu_env, twd, tws); - break; - case DF_DOUBLE: - gen_helper_msa_pcnt_d(cpu_env, twd, tws); - break; - } + case DF_WORD: + gen_msa_2r_w(cpu_env, twd, tws); break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); + case DF_DOUBLE: + gen_msa_2r_d(cpu_env, twd, tws); break; } tcg_temp_free_i32(twd); tcg_temp_free_i32(tws); + + return true; } +TRANS_DF_E(PCNT, trans_msa_2r, gen_helper_msa_pcnt); +TRANS_DF_E(NLOC, trans_msa_2r, gen_helper_msa_nloc); +TRANS_DF_E(NLZC, trans_msa_2r, gen_helper_msa_nlzc); + static bool trans_FILL(DisasContext *ctx, arg_msa_r *a) { TCGv_i32 twd; @@ -2018,9 +1980,6 @@ static void gen_msa_vec(DisasContext *ctx) case OPC_BSEL_V: gen_msa_vec_v(ctx); break; - case OPC_MSA_2R: - gen_msa_2r(ctx); - break; default: MIPS_INVAL("MSA instruction"); gen_reserved_instruction(ctx); From patchwork Sat Oct 23 21:47:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545250 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=R0LB1uqQ; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFLq6WMbz9s0r for ; Sun, 24 Oct 2021 08:52:35 +1100 (AEDT) Received: from localhost ([::1]:54198 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meOwL-0000mh-Mq for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:52:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40988) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOtZ-00066t-O9 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:41 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]:40514) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOtY-0005iR-3x for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:41 -0400 Received: by mail-wm1-x336.google.com with SMTP id g201-20020a1c20d2000000b00327775075f7so126407wmg.5 for ; Sat, 23 Oct 2021 14:49:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=V2YNKMYkRLSbMPSCXijWN2U7P7p3cWA9eRMds81+W0U=; b=R0LB1uqQ4MWMkYp6R71QWzcRyJEWnt2arHEZpPEpHPe9sL7rVaZqdS/RxLPnPWoq8Y Q0nTyY1PW1tS8aPF0hVsfJTfIhD7AZ5MFUspJEUxCYd5nGGLqMmXurf+L/WYeCmLVJVe c9UhjKqZPwmbs3IZpn6eF1ohP3Bs5BD7A/5yqV5f5ggDlyBYeQvgp66DmyTnMtNH9wNk NI3iUiKdFwOvfLzRraauXeL/mTupNXe+CrSVDvyVK6XOa749MsDRZ3TsEgIqoflpEkBj Vgv3FS/DNykvJAyuctSZvy2BKNhmdBGhVfyMgxtALQ+NCZe3cYuxZK8f8BLBgZSUJE0U KTjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=V2YNKMYkRLSbMPSCXijWN2U7P7p3cWA9eRMds81+W0U=; b=oR3OxKKQFlb9khSNO1GheAUxoqB47PR3D4A/qFmdJsMd4PwmXMY+73gJchP225g6xI a0bHB1cr5E0koIgtOkKgYbFQE5CmdrO7pCZLksm9SanvD8f/aYTdiBcdI2jKTNLUfmnH fe0UX4+xLR0dJbBi5xOH73BFbONiQFCqagJ+VjF2KlZ4vbpU38Ik5wm9fp31hSxjhh84 KOP5JKv1kSy+wl4vPcN35hQUivhdwx9zBqAbtX1m05bFQE+1OciL0J5zuZsgIEFTgyrA Hzr4UMnF6LmHk7Gi/9uNjoOMeFgBT5rWqZiw6m72gXRJj5iorsP1wqyYvoAPIMF8g3Fd AiBQ== X-Gm-Message-State: AOAM532Pfg7ldcnjJrmHvtKzuXhAHPG3urN9vrZFSrosYqeb7v+pUsv+ zXWZuacoAZ+5QPviEbFqBFjz+zOjjNs= X-Google-Smtp-Source: ABdhPJz5dRGwPZc7LkHZtG2qC48I5pTexe744dEl1UPOqSWkKYvoYb4+CX9xlnttuY5ppSUwjd2Sgg== X-Received: by 2002:a05:600c:210a:: with SMTP id u10mr19890632wml.139.1635025777611; Sat, 23 Oct 2021 14:49:37 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id u6sm6838413wmc.29.2021.10.23.14.49.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:37 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 19/33] target/mips: Convert MSA VEC instruction format to decodetree Date: Sat, 23 Oct 2021 23:47:49 +0200 Message-Id: <20211023214803.522078-20-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x336.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert 3-register instructions with implicit data formats to decodetree. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 8 ++++ target/mips/tcg/msa_translate.c | 82 +++++++-------------------------- 2 files changed, 24 insertions(+), 66 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 88757f547eb..72447041fef 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -21,6 +21,7 @@ @ldst ...... sa:s10 ws:5 wd:5 .... df:2 &msa_ldst @bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 @bz ...... ... df:2 wt:5 sa:16 &msa_bz +@vec ...... ..... wt:5 ws:5 wd:5 ...... &msa_r df=0 @2r ...... ........ df:2 ws:5 wd:5 ...... &msa_r wt=0 @2rf ...... ......... df:1 ws:5 wd:5 ...... &msa_r wt=0 @u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_ldst @@ -77,6 +78,13 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + AND_V 011110 00000 ..... ..... ..... 011110 @vec + OR_V 011110 00001 ..... ..... ..... 011110 @vec + NOR_V 011110 00010 ..... ..... ..... 011110 @vec + XOR_V 011110 00011 ..... ..... ..... 011110 @vec + BMNZ_V 011110 00100 ..... ..... ..... 011110 @vec + BMZ_V 011110 00101 ..... ..... ..... 011110 @vec + BSEL_V 011110 00110 ..... ..... ..... 011110 @vec FILL 011110 11000000 .. ..... ..... 011110 @2r PCNT 011110 11000001 .. ..... ..... 011110 @2r NLOC 011110 11000010 .. ..... ..... 011110 @2r diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index f54e9d173ac..461a427c9df 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -37,19 +37,9 @@ enum { OPC_MSA_3RF_1A = 0x1A | OPC_MSA, OPC_MSA_3RF_1B = 0x1B | OPC_MSA, OPC_MSA_3RF_1C = 0x1C | OPC_MSA, - OPC_MSA_VEC = 0x1E | OPC_MSA, }; enum { - /* VEC/2R instruction */ - OPC_AND_V = (0x00 << 21) | OPC_MSA_VEC, - OPC_OR_V = (0x01 << 21) | OPC_MSA_VEC, - OPC_NOR_V = (0x02 << 21) | OPC_MSA_VEC, - OPC_XOR_V = (0x03 << 21) | OPC_MSA_VEC, - OPC_BMNZ_V = (0x04 << 21) | OPC_MSA_VEC, - OPC_BMZ_V = (0x05 << 21) | OPC_MSA_VEC, - OPC_BSEL_V = (0x06 << 21) | OPC_MSA_VEC, - /* 3R instruction df(bits 22..21) = _b, _h, _w, d */ OPC_SLL_df = (0x0 << 23) | OPC_MSA_3R_0D, OPC_ADDV_df = (0x0 << 23) | OPC_MSA_3R_0E, @@ -1925,67 +1915,30 @@ TRANS_MSA(FTINT_U, trans_msa_2rf, gen_helper_msa_ftint_u_df); TRANS_MSA(FFINT_S, trans_msa_2rf, gen_helper_msa_ffint_s_df); TRANS_MSA(FFINT_U, trans_msa_2rf, gen_helper_msa_ffint_u_df); -static void gen_msa_vec_v(DisasContext *ctx) +static bool trans_msa_vec(DisasContext *ctx, arg_msa_r *a, + void (*gen_msa_vec)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32)) { -#define MASK_MSA_VEC(op) (MASK_MSA_MINOR(op) | (op & (0x1f << 21))) - uint8_t wt = (ctx->opcode >> 16) & 0x1f; - uint8_t ws = (ctx->opcode >> 11) & 0x1f; - uint8_t wd = (ctx->opcode >> 6) & 0x1f; - TCGv_i32 twd = tcg_const_i32(wd); - TCGv_i32 tws = tcg_const_i32(ws); - TCGv_i32 twt = tcg_const_i32(wt); + TCGv_i32 twd = tcg_const_i32(a->wd); + TCGv_i32 tws = tcg_const_i32(a->ws); + TCGv_i32 twt = tcg_const_i32(a->wt); - switch (MASK_MSA_VEC(ctx->opcode)) { - case OPC_AND_V: - gen_helper_msa_and_v(cpu_env, twd, tws, twt); - break; - case OPC_OR_V: - gen_helper_msa_or_v(cpu_env, twd, tws, twt); - break; - case OPC_NOR_V: - gen_helper_msa_nor_v(cpu_env, twd, tws, twt); - break; - case OPC_XOR_V: - gen_helper_msa_xor_v(cpu_env, twd, tws, twt); - break; - case OPC_BMNZ_V: - gen_helper_msa_bmnz_v(cpu_env, twd, tws, twt); - break; - case OPC_BMZ_V: - gen_helper_msa_bmz_v(cpu_env, twd, tws, twt); - break; - case OPC_BSEL_V: - gen_helper_msa_bsel_v(cpu_env, twd, tws, twt); - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - break; - } + gen_msa_vec(cpu_env, twd, tws, twt); tcg_temp_free_i32(twd); tcg_temp_free_i32(tws); tcg_temp_free_i32(twt); + + return true; } -static void gen_msa_vec(DisasContext *ctx) -{ - switch (MASK_MSA_VEC(ctx->opcode)) { - case OPC_AND_V: - case OPC_OR_V: - case OPC_NOR_V: - case OPC_XOR_V: - case OPC_BMNZ_V: - case OPC_BMZ_V: - case OPC_BSEL_V: - gen_msa_vec_v(ctx); - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - break; - } -} +TRANS_MSA(AND_V, trans_msa_vec, gen_helper_msa_and_v); +TRANS_MSA(OR_V, trans_msa_vec, gen_helper_msa_or_v); +TRANS_MSA(NOR_V, trans_msa_vec, gen_helper_msa_nor_v); +TRANS_MSA(XOR_V, trans_msa_vec, gen_helper_msa_xor_v); +TRANS_MSA(BMNZ_V, trans_msa_vec, gen_helper_msa_bmnz_v); +TRANS_MSA(BMZ_V, trans_msa_vec, gen_helper_msa_bmz_v); +TRANS_MSA(BSEL_V, trans_msa_vec, gen_helper_msa_bsel_v); static bool trans_MSA(DisasContext *ctx, arg_MSA *a) { @@ -2015,9 +1968,6 @@ static bool trans_MSA(DisasContext *ctx, arg_MSA *a) case OPC_MSA_3RF_1C: gen_msa_3rf(ctx); break; - case OPC_MSA_VEC: - gen_msa_vec(ctx); - break; default: MIPS_INVAL("MSA instruction"); gen_reserved_instruction(ctx); From patchwork Sat Oct 23 21:47:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545266 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=gc4MLb8V; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFcz0jgKz9sX3 for ; Sun, 24 Oct 2021 09:04:50 +1100 (AEDT) Received: from localhost ([::1]:33412 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP8C-0007op-HI for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:04:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41000) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOte-0006Ps-5W for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:46 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:35431) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOtb-0005lX-Sn for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:45 -0400 Received: by mail-wr1-x430.google.com with SMTP id s19so4726901wra.2 for ; Sat, 23 Oct 2021 14:49:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zlLSqA2ycXVzQUUC1xZxvV3k71wbtC8pyAG2XTINAoI=; b=gc4MLb8VnPo/+rUWZ1w8EcA+pGy2+H7C/2u7zp4xkHRNnp46+dVgmi+kxNx5ZdKExd Pp+mvwXRGYH6tBreS8MZWylbGxo0tDUosyJpgNexNFLNLDatFyejY7h7600AAnGJQHW+ jvcNfgjp1iFduvCSuLLRJT9jEeTbFsF7YJBOxnMYFop9AVdbcygK88aQ0hTJffSwaxru wntbvFvQw3LJXwtDt5B7TuvXcmwOfBB/R87the1/mHdUkahM/YtZv7ekLoI/jG+bXMt0 yc956ABKiuA/9/UYtvXQ9XfH8wTm+pcutsmX5HfT3jJeNkq9OqPWjxjTDl9Haj433IE4 0A6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=zlLSqA2ycXVzQUUC1xZxvV3k71wbtC8pyAG2XTINAoI=; b=OhwtLn3jsfXCcsL2lihsIEZdBl38qy5jPy67ZGR2unS79g4RjGCm7kNBs5URVCg7AQ 4fggPGV5YcV7WaeGzw5a6dDCRZVoofLsn9uidhQFapT27rfOOT+nMllS+sBUuphw8i/Z S4GWi2Q1oZRkpoP4BBurULgRnajzodeVFZH5vbTq9mVsgJFtKBfAdzb8AYMqo2cvCo3E /jlIrZUg52gmubSlmBpxtqChI3aa77vzC4xZCo0R4Aeb/9+xcY3KvyDau2yOMqyQVbXX lq45d8DrPSyYmLFowm9nY7xq1SQ3ASlWNfeolwKNnhBRcOWWkLUTTQcZt25JKT+cIA9b hocg== X-Gm-Message-State: AOAM531ikbDvt9i1X3KRY84ut7dQZ5eGVDAyOa4yieIY1diNEi/CmTey F2f08KZkEHjmh39rFT/FWBGmkfJfsSc= X-Google-Smtp-Source: ABdhPJzbKtVbo+w9okzqp54tTwrrL8cHkFwq47KXitw8rtpJ+3I1AHSuyUH3/IlQw5h6+Yve4VL/Pw== X-Received: by 2002:adf:8b1a:: with SMTP id n26mr10644740wra.182.1635025782398; Sat, 23 Oct 2021 14:49:42 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id o40sm6441943wms.10.2021.10.23.14.49.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:42 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 20/33] target/mips: Convert MSA 3RF instruction format to decodetree (DF_HALF) Date: Sat, 23 Oct 2021 23:47:50 +0200 Message-Id: <20211023214803.522078-21-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x430.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert 3-register floating-point or fixed-point operations to decodetree. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 8 ++++ target/mips/tcg/msa_translate.c | 70 +++++++++++++++------------------ 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 72447041fef..5c6a7415271 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -24,6 +24,7 @@ @vec ...... ..... wt:5 ws:5 wd:5 ...... &msa_r df=0 @2r ...... ........ df:2 ws:5 wd:5 ...... &msa_r wt=0 @2rf ...... ......... df:1 ws:5 wd:5 ...... &msa_r wt=0 +@3rf ...... .... df:1 wt:5 ws:5 wd:5 ...... &msa_r @u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_ldst @s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_ldst @ldi ...... ... df:2 sa:s10 wd:5 ...... &msa_ldst ws=0 @@ -78,6 +79,13 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + MUL_Q 011110 0100 . ..... ..... ..... 011100 @3rf + MADD_Q 011110 0101 . ..... ..... ..... 011100 @3rf + MSUB_Q 011110 0110 . ..... ..... ..... 011100 @3rf + MULR_Q 011110 1100 . ..... ..... ..... 011100 @3rf + MADDR_Q 011110 1101 . ..... ..... ..... 011100 @3rf + MSUBR_Q 011110 1110 . ..... ..... ..... 011100 @3rf + AND_V 011110 00000 ..... ..... ..... 011110 @vec OR_V 011110 00001 ..... ..... ..... 011110 @vec NOR_V 011110 00010 ..... ..... ..... 011110 @vec diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 461a427c9df..6e50bc9edf4 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -130,12 +130,9 @@ enum { OPC_FCNE_df = (0x3 << 22) | OPC_MSA_3RF_1C, OPC_FCLT_df = (0x4 << 22) | OPC_MSA_3RF_1A, OPC_FMADD_df = (0x4 << 22) | OPC_MSA_3RF_1B, - OPC_MUL_Q_df = (0x4 << 22) | OPC_MSA_3RF_1C, OPC_FCULT_df = (0x5 << 22) | OPC_MSA_3RF_1A, OPC_FMSUB_df = (0x5 << 22) | OPC_MSA_3RF_1B, - OPC_MADD_Q_df = (0x5 << 22) | OPC_MSA_3RF_1C, OPC_FCLE_df = (0x6 << 22) | OPC_MSA_3RF_1A, - OPC_MSUB_Q_df = (0x6 << 22) | OPC_MSA_3RF_1C, OPC_FCULE_df = (0x7 << 22) | OPC_MSA_3RF_1A, OPC_FEXP2_df = (0x7 << 22) | OPC_MSA_3RF_1B, OPC_FSAF_df = (0x8 << 22) | OPC_MSA_3RF_1A, @@ -149,13 +146,10 @@ enum { OPC_FSNE_df = (0xB << 22) | OPC_MSA_3RF_1C, OPC_FSLT_df = (0xC << 22) | OPC_MSA_3RF_1A, OPC_FMIN_df = (0xC << 22) | OPC_MSA_3RF_1B, - OPC_MULR_Q_df = (0xC << 22) | OPC_MSA_3RF_1C, OPC_FSULT_df = (0xD << 22) | OPC_MSA_3RF_1A, OPC_FMIN_A_df = (0xD << 22) | OPC_MSA_3RF_1B, - OPC_MADDR_Q_df = (0xD << 22) | OPC_MSA_3RF_1C, OPC_FSLE_df = (0xE << 22) | OPC_MSA_3RF_1A, OPC_FMAX_df = (0xE << 22) | OPC_MSA_3RF_1B, - OPC_MSUBR_Q_df = (0xE << 22) | OPC_MSA_3RF_1C, OPC_FSULE_df = (0xF << 22) | OPC_MSA_3RF_1A, OPC_FMAX_A_df = (0xF << 22) | OPC_MSA_3RF_1B, }; @@ -251,6 +245,9 @@ static inline bool check_msa_access(DisasContext *ctx) #define TRANS_MSA(NAME, trans_func, gen_func) \ TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, gen_func) +#define TRANS_DF(NAME, trans_func, df, gen_func) \ + TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, df, gen_func) + #define TRANS_DF_E(NAME, trans_func, gen_func) \ TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, \ gen_func##_b, gen_func##_h, gen_func##_w, gen_func##_d) @@ -1652,6 +1649,33 @@ static void gen_msa_elm(DisasContext *ctx) gen_msa_elm_df(ctx, df, n); } +static bool trans_msa_3rf(DisasContext *ctx, arg_msa_r *a, + enum CPUMIPSMSADataFormat df_base, + void (*gen_msa_3rf)(TCGv_ptr, TCGv_i32, TCGv_i32, + TCGv_i32, TCGv_i32)) +{ + TCGv_i32 twd = tcg_const_i32(a->wd); + TCGv_i32 tws = tcg_const_i32(a->ws); + TCGv_i32 twt = tcg_const_i32(a->wt); + /* adjust df value for floating-point instruction */ + TCGv_i32 tdf = tcg_constant_i32(a->df + df_base); + + gen_msa_3rf(cpu_env, tdf, twd, tws, twt); + + tcg_temp_free_i32(twt); + tcg_temp_free_i32(tws); + tcg_temp_free_i32(twd); + + return true; +} + +TRANS_DF(MUL_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_mul_q_df); +TRANS_DF(MADD_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_madd_q_df); +TRANS_DF(MSUB_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_msub_q_df); +TRANS_DF(MULR_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_mulr_q_df); +TRANS_DF(MADDR_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_maddr_q_df); +TRANS_DF(MSUBR_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_msubr_q_df); + static void gen_msa_3rf(DisasContext *ctx) { #define MASK_MSA_3RF(op) (MASK_MSA_MINOR(op) | (op & (0xf << 22))) @@ -1663,22 +1687,8 @@ static void gen_msa_3rf(DisasContext *ctx) TCGv_i32 twd = tcg_const_i32(wd); TCGv_i32 tws = tcg_const_i32(ws); TCGv_i32 twt = tcg_const_i32(wt); - TCGv_i32 tdf; - /* adjust df value for floating-point instruction */ - switch (MASK_MSA_3RF(ctx->opcode)) { - case OPC_MUL_Q_df: - case OPC_MADD_Q_df: - case OPC_MSUB_Q_df: - case OPC_MULR_Q_df: - case OPC_MADDR_Q_df: - case OPC_MSUBR_Q_df: - tdf = tcg_constant_i32(DF_HALF + df); - break; - default: - tdf = tcg_constant_i32(DF_WORD + df); - break; - } + TCGv_i32 tdf = tcg_constant_i32(DF_WORD + df); switch (MASK_MSA_3RF(ctx->opcode)) { case OPC_FCAF_df: @@ -1720,24 +1730,15 @@ static void gen_msa_3rf(DisasContext *ctx) case OPC_FMADD_df: gen_helper_msa_fmadd_df(cpu_env, tdf, twd, tws, twt); break; - case OPC_MUL_Q_df: - gen_helper_msa_mul_q_df(cpu_env, tdf, twd, tws, twt); - break; case OPC_FCULT_df: gen_helper_msa_fcult_df(cpu_env, tdf, twd, tws, twt); break; case OPC_FMSUB_df: gen_helper_msa_fmsub_df(cpu_env, tdf, twd, tws, twt); break; - case OPC_MADD_Q_df: - gen_helper_msa_madd_q_df(cpu_env, tdf, twd, tws, twt); - break; case OPC_FCLE_df: gen_helper_msa_fcle_df(cpu_env, tdf, twd, tws, twt); break; - case OPC_MSUB_Q_df: - gen_helper_msa_msub_q_df(cpu_env, tdf, twd, tws, twt); - break; case OPC_FCULE_df: gen_helper_msa_fcule_df(cpu_env, tdf, twd, tws, twt); break; @@ -1777,27 +1778,18 @@ static void gen_msa_3rf(DisasContext *ctx) case OPC_FMIN_df: gen_helper_msa_fmin_df(cpu_env, tdf, twd, tws, twt); break; - case OPC_MULR_Q_df: - gen_helper_msa_mulr_q_df(cpu_env, tdf, twd, tws, twt); - break; case OPC_FSULT_df: gen_helper_msa_fsult_df(cpu_env, tdf, twd, tws, twt); break; case OPC_FMIN_A_df: gen_helper_msa_fmin_a_df(cpu_env, tdf, twd, tws, twt); break; - case OPC_MADDR_Q_df: - gen_helper_msa_maddr_q_df(cpu_env, tdf, twd, tws, twt); - break; case OPC_FSLE_df: gen_helper_msa_fsle_df(cpu_env, tdf, twd, tws, twt); break; case OPC_FMAX_df: gen_helper_msa_fmax_df(cpu_env, tdf, twd, tws, twt); break; - case OPC_MSUBR_Q_df: - gen_helper_msa_msubr_q_df(cpu_env, tdf, twd, tws, twt); - break; case OPC_FSULE_df: gen_helper_msa_fsule_df(cpu_env, tdf, twd, tws, twt); break; From patchwork Sat Oct 23 21:47:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545273 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=piLeJhAY; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFnd1JJJz9s1l for ; Sun, 24 Oct 2021 09:12:21 +1100 (AEDT) Received: from localhost ([::1]:51216 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePFS-0003JN-VR for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:12:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41026) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOtk-0006lo-7c for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:52 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]:40504) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOth-0005nA-B7 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:49:51 -0400 Received: by mail-wm1-x32a.google.com with SMTP id g201-20020a1c20d2000000b00327775075f7so126685wmg.5 for ; Sat, 23 Oct 2021 14:49:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zRLAt8udUNKq0HVc05uP2X7/xjNCiQRVmBo+fRVE4WY=; b=piLeJhAYAX4yxFtCEP27w0bCixBldPmqTpkzP6cU6dxPNeOvan055EWteR8o/h6DcD P6JR6FrE3tt1/yMuAyxyHKXclImekcNoWrla3tqnE6u7p8NVIaB2uaidJCP8Kv4/CAS4 gjwI0WEAS9yHpTqmaR7Qt5VRrQmv3vwXcopPomXI+Spr9lN0+nXK4OWxwhltFl71OUit I48zG33LxUGg8ID+jF5i8tS/JBvD48cTqf8Bmcfs0JAPqiRcHTddRHn4MKcssC2uUznI WmbPVRnCnxKbYE9vDN8Eun6azqH9qwxc8hjoo0wRWSjSIivbajiK0nz/QNckEE5TuN2c 9nHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=zRLAt8udUNKq0HVc05uP2X7/xjNCiQRVmBo+fRVE4WY=; b=YmtdVx4NDSheukcyfhtdp8l+NvQvBkx6X9xm2z+yp7KwQEgoG6ccodJnGOAG9MLayL DgmUEkKiZxy2DJUz2Dg/DM86EC5ud2qUZUyEaloa7/WbIMarjDZ7E/cCkjer1mp8q3mo ACM6pW6MZeTtKwV7BFT3+2iUg7vwXq8w3EvDMESNsE43CxdM5ADZH9LOgVF/1NrUKfmC FjeeYB+nQAGLnl//4mXwLkugH+daKnkfUMrqlnx0TRi5K61C3IqmHzCt4XQHB5oVKSCa fgfB4rnbFYZDe+MPDtbekaMa9kJi2YJ6b0faS+2c2b7DwTdSI9E10ARzX9ikp7AUSLIr GDbQ== X-Gm-Message-State: AOAM5327J6Jh9qawBao7fkpcDtlWnczlyEqaoeXiYh/rufzWYIpdDUfU M3l3XhoNYfx3MZNvL0Ir89c67ssnjuI= X-Google-Smtp-Source: ABdhPJx8t9pviNSSL2nvjgvtrWQmvUskT9a6W3Tmfd7qLBbrgXnlV/sgdFMKGsbfsmE4rdM/9mdWwQ== X-Received: by 2002:a7b:cc8c:: with SMTP id p12mr9360121wma.105.1635025787340; Sat, 23 Oct 2021 14:49:47 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id u17sm2760940wrp.93.2021.10.23.14.49.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:46 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 21/33] target/mips: Convert MSA 3RF instruction format to decodetree (DF_WORD) Date: Sat, 23 Oct 2021 23:47:51 +0200 Message-Id: <20211023214803.522078-22-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32a.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert 3-register floating-point or fixed-point operations to decodetree. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 37 ++++++ target/mips/tcg/msa_translate.c | 213 ++++++-------------------------- 2 files changed, 74 insertions(+), 176 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 5c6a7415271..28b7a71d930 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -79,9 +79,46 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + FCAF 011110 0000 . ..... ..... ..... 011010 @3rf + FCUN 011110 0001 . ..... ..... ..... 011010 @3rf + FCEQ 011110 0010 . ..... ..... ..... 011010 @3rf + FCUEQ 011110 0011 . ..... ..... ..... 011010 @3rf + FCLT 011110 0100 . ..... ..... ..... 011010 @3rf + FCULT 011110 0101 . ..... ..... ..... 011010 @3rf + FCLE 011110 0110 . ..... ..... ..... 011010 @3rf + FCULE 011110 0111 . ..... ..... ..... 011010 @3rf + FSAF 011110 1000 . ..... ..... ..... 011010 @3rf + FSUN 011110 1001 . ..... ..... ..... 011010 @3rf + FSEQ 011110 1010 . ..... ..... ..... 011010 @3rf + FSUEQ 011110 1011 . ..... ..... ..... 011010 @3rf + FSLT 011110 1100 . ..... ..... ..... 011010 @3rf + FSULT 011110 1101 . ..... ..... ..... 011010 @3rf + FSLE 011110 1110 . ..... ..... ..... 011010 @3rf + FSULE 011110 1111 . ..... ..... ..... 011010 @3rf + + FADD 011110 0000 . ..... ..... ..... 011011 @3rf + FSUB 011110 0001 . ..... ..... ..... 011011 @3rf + FMUL 011110 0010 . ..... ..... ..... 011011 @3rf + FDIV 011110 0011 . ..... ..... ..... 011011 @3rf + FMADD 011110 0100 . ..... ..... ..... 011011 @3rf + FMSUB 011110 0101 . ..... ..... ..... 011011 @3rf + FEXP2 011110 0111 . ..... ..... ..... 011011 @3rf + FEXDO 011110 1000 . ..... ..... ..... 011011 @3rf + FTQ 011110 1010 . ..... ..... ..... 011011 @3rf + FMIN 011110 1100 . ..... ..... ..... 011011 @3rf + FMIN_A 011110 1101 . ..... ..... ..... 011011 @3rf + FMAX 011110 1110 . ..... ..... ..... 011011 @3rf + FMAX_A 011110 1111 . ..... ..... ..... 011011 @3rf + + FCOR 011110 0001 . ..... ..... ..... 011100 @3rf + FCUNE 011110 0010 . ..... ..... ..... 011100 @3rf + FCNE 011110 0011 . ..... ..... ..... 011100 @3rf MUL_Q 011110 0100 . ..... ..... ..... 011100 @3rf MADD_Q 011110 0101 . ..... ..... ..... 011100 @3rf MSUB_Q 011110 0110 . ..... ..... ..... 011100 @3rf + FSOR 011110 1001 . ..... ..... ..... 011100 @3rf + FSUNE 011110 1010 . ..... ..... ..... 011100 @3rf + FSNE 011110 1011 . ..... ..... ..... 011100 @3rf MULR_Q 011110 1100 . ..... ..... ..... 011100 @3rf MADDR_Q 011110 1101 . ..... ..... ..... 011100 @3rf MSUBR_Q 011110 1110 . ..... ..... ..... 011100 @3rf diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 6e50bc9edf4..4543b7abdfb 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -34,9 +34,6 @@ enum { OPC_MSA_3R_14 = 0x14 | OPC_MSA, OPC_MSA_3R_15 = 0x15 | OPC_MSA, OPC_MSA_ELM = 0x19 | OPC_MSA, - OPC_MSA_3RF_1A = 0x1A | OPC_MSA, - OPC_MSA_3RF_1B = 0x1B | OPC_MSA, - OPC_MSA_3RF_1C = 0x1C | OPC_MSA, }; enum { @@ -115,43 +112,6 @@ enum { OPC_COPY_U_df = (0x3 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_INSERT_df = (0x4 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_INSVE_df = (0x5 << 22) | (0x00 << 16) | OPC_MSA_ELM, - - /* 3RF instruction _df(bit 21) = _w, _d */ - OPC_FCAF_df = (0x0 << 22) | OPC_MSA_3RF_1A, - OPC_FADD_df = (0x0 << 22) | OPC_MSA_3RF_1B, - OPC_FCUN_df = (0x1 << 22) | OPC_MSA_3RF_1A, - OPC_FSUB_df = (0x1 << 22) | OPC_MSA_3RF_1B, - OPC_FCOR_df = (0x1 << 22) | OPC_MSA_3RF_1C, - OPC_FCEQ_df = (0x2 << 22) | OPC_MSA_3RF_1A, - OPC_FMUL_df = (0x2 << 22) | OPC_MSA_3RF_1B, - OPC_FCUNE_df = (0x2 << 22) | OPC_MSA_3RF_1C, - OPC_FCUEQ_df = (0x3 << 22) | OPC_MSA_3RF_1A, - OPC_FDIV_df = (0x3 << 22) | OPC_MSA_3RF_1B, - OPC_FCNE_df = (0x3 << 22) | OPC_MSA_3RF_1C, - OPC_FCLT_df = (0x4 << 22) | OPC_MSA_3RF_1A, - OPC_FMADD_df = (0x4 << 22) | OPC_MSA_3RF_1B, - OPC_FCULT_df = (0x5 << 22) | OPC_MSA_3RF_1A, - OPC_FMSUB_df = (0x5 << 22) | OPC_MSA_3RF_1B, - OPC_FCLE_df = (0x6 << 22) | OPC_MSA_3RF_1A, - OPC_FCULE_df = (0x7 << 22) | OPC_MSA_3RF_1A, - OPC_FEXP2_df = (0x7 << 22) | OPC_MSA_3RF_1B, - OPC_FSAF_df = (0x8 << 22) | OPC_MSA_3RF_1A, - OPC_FEXDO_df = (0x8 << 22) | OPC_MSA_3RF_1B, - OPC_FSUN_df = (0x9 << 22) | OPC_MSA_3RF_1A, - OPC_FSOR_df = (0x9 << 22) | OPC_MSA_3RF_1C, - OPC_FSEQ_df = (0xA << 22) | OPC_MSA_3RF_1A, - OPC_FTQ_df = (0xA << 22) | OPC_MSA_3RF_1B, - OPC_FSUNE_df = (0xA << 22) | OPC_MSA_3RF_1C, - OPC_FSUEQ_df = (0xB << 22) | OPC_MSA_3RF_1A, - OPC_FSNE_df = (0xB << 22) | OPC_MSA_3RF_1C, - OPC_FSLT_df = (0xC << 22) | OPC_MSA_3RF_1A, - OPC_FMIN_df = (0xC << 22) | OPC_MSA_3RF_1B, - OPC_FSULT_df = (0xD << 22) | OPC_MSA_3RF_1A, - OPC_FMIN_A_df = (0xD << 22) | OPC_MSA_3RF_1B, - OPC_FSLE_df = (0xE << 22) | OPC_MSA_3RF_1A, - OPC_FMAX_df = (0xE << 22) | OPC_MSA_3RF_1B, - OPC_FSULE_df = (0xF << 22) | OPC_MSA_3RF_1A, - OPC_FMAX_A_df = (0xF << 22) | OPC_MSA_3RF_1B, }; static const char msaregnames[][6] = { @@ -1669,144 +1629,50 @@ static bool trans_msa_3rf(DisasContext *ctx, arg_msa_r *a, return true; } +TRANS_DF(FCAF, trans_msa_3rf, DF_WORD, gen_helper_msa_fcaf_df); +TRANS_DF(FCUN, trans_msa_3rf, DF_WORD, gen_helper_msa_fcun_df); +TRANS_DF(FCEQ, trans_msa_3rf, DF_WORD, gen_helper_msa_fceq_df); +TRANS_DF(FCUEQ, trans_msa_3rf, DF_WORD, gen_helper_msa_fcueq_df); +TRANS_DF(FCLT, trans_msa_3rf, DF_WORD, gen_helper_msa_fclt_df); +TRANS_DF(FCULT, trans_msa_3rf, DF_WORD, gen_helper_msa_fcult_df); +TRANS_DF(FCLE, trans_msa_3rf, DF_WORD, gen_helper_msa_fcle_df); +TRANS_DF(FCULE, trans_msa_3rf, DF_WORD, gen_helper_msa_fcule_df); +TRANS_DF(FSAF, trans_msa_3rf, DF_WORD, gen_helper_msa_fsaf_df); +TRANS_DF(FSUN, trans_msa_3rf, DF_WORD, gen_helper_msa_fsun_df); +TRANS_DF(FSEQ, trans_msa_3rf, DF_WORD, gen_helper_msa_fseq_df); +TRANS_DF(FSUEQ, trans_msa_3rf, DF_WORD, gen_helper_msa_fsueq_df); +TRANS_DF(FSLT, trans_msa_3rf, DF_WORD, gen_helper_msa_fslt_df); +TRANS_DF(FSULT, trans_msa_3rf, DF_WORD, gen_helper_msa_fsult_df); +TRANS_DF(FSLE, trans_msa_3rf, DF_WORD, gen_helper_msa_fsle_df); +TRANS_DF(FSULE, trans_msa_3rf, DF_WORD, gen_helper_msa_fsule_df); + +TRANS_DF(FADD, trans_msa_3rf, DF_WORD, gen_helper_msa_fadd_df); +TRANS_DF(FSUB, trans_msa_3rf, DF_WORD, gen_helper_msa_fsub_df); +TRANS_DF(FMUL, trans_msa_3rf, DF_WORD, gen_helper_msa_fmul_df); +TRANS_DF(FDIV, trans_msa_3rf, DF_WORD, gen_helper_msa_fdiv_df); +TRANS_DF(FMADD, trans_msa_3rf, DF_WORD, gen_helper_msa_fmadd_df); +TRANS_DF(FMSUB, trans_msa_3rf, DF_WORD, gen_helper_msa_fmsub_df); +TRANS_DF(FEXP2, trans_msa_3rf, DF_WORD, gen_helper_msa_fexp2_df); +TRANS_DF(FEXDO, trans_msa_3rf, DF_WORD, gen_helper_msa_fexdo_df); +TRANS_DF(FTQ, trans_msa_3rf, DF_WORD, gen_helper_msa_ftq_df); +TRANS_DF(FMIN, trans_msa_3rf, DF_WORD, gen_helper_msa_fmin_df); +TRANS_DF(FMIN_A, trans_msa_3rf, DF_WORD, gen_helper_msa_fmin_a_df); +TRANS_DF(FMAX, trans_msa_3rf, DF_WORD, gen_helper_msa_fmax_df); +TRANS_DF(FMAX_A, trans_msa_3rf, DF_WORD, gen_helper_msa_fmax_a_df); + +TRANS_DF(FCOR, trans_msa_3rf, DF_WORD, gen_helper_msa_fcor_df); +TRANS_DF(FCUNE, trans_msa_3rf, DF_WORD, gen_helper_msa_fcune_df); +TRANS_DF(FCNE, trans_msa_3rf, DF_WORD, gen_helper_msa_fcne_df); TRANS_DF(MUL_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_mul_q_df); TRANS_DF(MADD_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_madd_q_df); TRANS_DF(MSUB_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_msub_q_df); +TRANS_DF(FSOR, trans_msa_3rf, DF_WORD, gen_helper_msa_fsor_df); +TRANS_DF(FSUNE, trans_msa_3rf, DF_WORD, gen_helper_msa_fsune_df); +TRANS_DF(FSNE, trans_msa_3rf, DF_WORD, gen_helper_msa_fsne_df); TRANS_DF(MULR_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_mulr_q_df); TRANS_DF(MADDR_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_maddr_q_df); TRANS_DF(MSUBR_Q, trans_msa_3rf, DF_HALF, gen_helper_msa_msubr_q_df); -static void gen_msa_3rf(DisasContext *ctx) -{ -#define MASK_MSA_3RF(op) (MASK_MSA_MINOR(op) | (op & (0xf << 22))) - uint8_t df = (ctx->opcode >> 21) & 0x1; - uint8_t wt = (ctx->opcode >> 16) & 0x1f; - uint8_t ws = (ctx->opcode >> 11) & 0x1f; - uint8_t wd = (ctx->opcode >> 6) & 0x1f; - - TCGv_i32 twd = tcg_const_i32(wd); - TCGv_i32 tws = tcg_const_i32(ws); - TCGv_i32 twt = tcg_const_i32(wt); - /* adjust df value for floating-point instruction */ - TCGv_i32 tdf = tcg_constant_i32(DF_WORD + df); - - switch (MASK_MSA_3RF(ctx->opcode)) { - case OPC_FCAF_df: - gen_helper_msa_fcaf_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FADD_df: - gen_helper_msa_fadd_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCUN_df: - gen_helper_msa_fcun_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSUB_df: - gen_helper_msa_fsub_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCOR_df: - gen_helper_msa_fcor_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCEQ_df: - gen_helper_msa_fceq_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FMUL_df: - gen_helper_msa_fmul_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCUNE_df: - gen_helper_msa_fcune_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCUEQ_df: - gen_helper_msa_fcueq_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FDIV_df: - gen_helper_msa_fdiv_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCNE_df: - gen_helper_msa_fcne_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCLT_df: - gen_helper_msa_fclt_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FMADD_df: - gen_helper_msa_fmadd_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCULT_df: - gen_helper_msa_fcult_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FMSUB_df: - gen_helper_msa_fmsub_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCLE_df: - gen_helper_msa_fcle_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FCULE_df: - gen_helper_msa_fcule_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FEXP2_df: - gen_helper_msa_fexp2_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSAF_df: - gen_helper_msa_fsaf_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FEXDO_df: - gen_helper_msa_fexdo_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSUN_df: - gen_helper_msa_fsun_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSOR_df: - gen_helper_msa_fsor_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSEQ_df: - gen_helper_msa_fseq_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FTQ_df: - gen_helper_msa_ftq_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSUNE_df: - gen_helper_msa_fsune_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSUEQ_df: - gen_helper_msa_fsueq_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSNE_df: - gen_helper_msa_fsne_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSLT_df: - gen_helper_msa_fslt_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FMIN_df: - gen_helper_msa_fmin_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSULT_df: - gen_helper_msa_fsult_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FMIN_A_df: - gen_helper_msa_fmin_a_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSLE_df: - gen_helper_msa_fsle_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FMAX_df: - gen_helper_msa_fmax_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FSULE_df: - gen_helper_msa_fsule_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_FMAX_A_df: - gen_helper_msa_fmax_a_df(cpu_env, tdf, twd, tws, twt); - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - break; - } - - tcg_temp_free_i32(twd); - tcg_temp_free_i32(tws); - tcg_temp_free_i32(twt); -} - static bool trans_msa_2r(DisasContext *ctx, arg_msa_r *a, void (*gen_msa_2r_b)(TCGv_ptr, TCGv_i32, TCGv_i32), void (*gen_msa_2r_h)(TCGv_ptr, TCGv_i32, TCGv_i32), @@ -1955,11 +1821,6 @@ static bool trans_MSA(DisasContext *ctx, arg_MSA *a) case OPC_MSA_ELM: gen_msa_elm(ctx); break; - case OPC_MSA_3RF_1A: - case OPC_MSA_3RF_1B: - case OPC_MSA_3RF_1C: - gen_msa_3rf(ctx); - break; default: MIPS_INVAL("MSA instruction"); gen_reserved_instruction(ctx); From patchwork Sat Oct 23 21:47:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545259 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=VuyV8Xsl; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFVb04JZz9s1l for ; Sun, 24 Oct 2021 08:59:18 +1100 (AEDT) Received: from localhost ([::1]:46162 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP2q-0005ql-Ow for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:59:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41050) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOtt-0007Ae-Fo for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:01 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:42665) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOtl-0005pi-N8 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:01 -0400 Received: by mail-wr1-x42a.google.com with SMTP id v17so3524772wrv.9 for ; Sat, 23 Oct 2021 14:49:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4W4U2ZakVa+VyW3piwFf7vBo1nL6bSIlarNPs7+y7Kw=; b=VuyV8XslVDeoeSNIxNvKcUvNzL38hEGa91GbyPHVxCIGrJEPGaLzQCZGRJiStd7i/1 ZUehFvm1SEB8BxT8JYVDJkoxfTpZCOWulWQ9WUfkR6QSKAEdy/HtcgEI7rEdPcMugMUC kDIODr/A0FiJKNwenwfvqBk/1xD0MlEAv9zElkqgw4QWw/oj81QFE8uWlltCp/ZrMVC5 3PRTD/zC5zPs1wh23Qb34VKIrmW4cLkZcUqcWd+vt4enHpkfDsRQF2sXwTfYzGZGluu2 AN3Pf4iSp0dRnozzSOx+GNwhP4++ZYkbNB0Fq1qblsPfhPU/j7By9N1ZFCCdE1UPWO0v vUJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=4W4U2ZakVa+VyW3piwFf7vBo1nL6bSIlarNPs7+y7Kw=; b=MRsQMmzWymI5Az08V0CRTqqfIH3NdlBIISy44bZnK1UKOxFfmq4dN3T5aG7grvuKX+ DyUisx93pCjunXLTLZqcP2kRJ94YyashcjZIIeqH+MXVOCvfy/aSFlFsiJVmRC444faL ZN9bF+nQmCqw32lNoJjdjsD+5TK5yzkxa/XnDkpHpYaGKY1F24HvkpYL8sS6LQyHdiT1 nQRBObZq3PTeO7oZ7LqNJkyyaAho9X7EkqQxESlLh2GoyqY9o9I5DCG6jVgdoF5YwLBG 7gfdfpy5Ic+6WorlUDivpmvAWBU8UjVSrpDjVtGmhZJGXq38YDX9JZGnC0Zc12Uk7T+g 5iiQ== X-Gm-Message-State: AOAM533btPHca5LNUsoYw4waJ94Z/SlVRZnw1md6/F30syJnQ5KU33ZQ eI/tMEFfDSx9uzcwemyEeHXdY5IPA6k= X-Google-Smtp-Source: ABdhPJxZbFht8X8DalrfGadgjecRpedjlIg3ms6TTyc3GOpSUBcc5+g6x2PNTXpoA+wW6OEiVxR3ug== X-Received: by 2002:adf:a30c:: with SMTP id c12mr10719166wrb.366.1635025792193; Sat, 23 Oct 2021 14:49:52 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id s9sm14187283wmj.39.2021.10.23.14.49.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:51 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 22/33] target/mips: Convert MSA 3R instruction format to decodetree (part 1/4) Date: Sat, 23 Oct 2021 23:47:52 +0200 Message-Id: <20211023214803.522078-23-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42a.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert 3-register operations to decodetree. Since the 'data format' field is a constant value, use tcg_constant_i32() instead of a TCG temporary. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 6 ++++++ target/mips/tcg/msa_translate.c | 35 ++++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 28b7a71d930..ca0fd568560 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -24,6 +24,7 @@ @vec ...... ..... wt:5 ws:5 wd:5 ...... &msa_r df=0 @2r ...... ........ df:2 ws:5 wd:5 ...... &msa_r wt=0 @2rf ...... ......... df:1 ws:5 wd:5 ...... &msa_r wt=0 +@3r ...... ... df:2 wt:5 ws:5 wd:5 ...... &msa_r @3rf ...... .... df:1 wt:5 ws:5 wd:5 ...... &msa_r @u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_ldst @s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_ldst @@ -79,6 +80,11 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + SLD 011110 000 .. ..... ..... ..... 010100 @3r + SPLAT 011110 001 .. ..... ..... ..... 010100 @3r + + VSHF 011110 000 .. ..... ..... ..... 010101 @3r + FCAF 011110 0000 . ..... ..... ..... 011010 @3rf FCUN 011110 0001 . ..... ..... ..... 011010 @3rf FCEQ 011110 0010 . ..... ..... ..... 011010 @3rf diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 4543b7abdfb..0c7055c68bd 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -45,15 +45,12 @@ enum { OPC_SUBS_S_df = (0x0 << 23) | OPC_MSA_3R_11, OPC_MULV_df = (0x0 << 23) | OPC_MSA_3R_12, OPC_DOTP_S_df = (0x0 << 23) | OPC_MSA_3R_13, - OPC_SLD_df = (0x0 << 23) | OPC_MSA_3R_14, - OPC_VSHF_df = (0x0 << 23) | OPC_MSA_3R_15, OPC_SRA_df = (0x1 << 23) | OPC_MSA_3R_0D, OPC_SUBV_df = (0x1 << 23) | OPC_MSA_3R_0E, OPC_ADDS_A_df = (0x1 << 23) | OPC_MSA_3R_10, OPC_SUBS_U_df = (0x1 << 23) | OPC_MSA_3R_11, OPC_MADDV_df = (0x1 << 23) | OPC_MSA_3R_12, OPC_DOTP_U_df = (0x1 << 23) | OPC_MSA_3R_13, - OPC_SPLAT_df = (0x1 << 23) | OPC_MSA_3R_14, OPC_SRAR_df = (0x1 << 23) | OPC_MSA_3R_15, OPC_SRL_df = (0x2 << 23) | OPC_MSA_3R_0D, OPC_MAX_S_df = (0x2 << 23) | OPC_MSA_3R_0E, @@ -469,6 +466,29 @@ TRANS_MSA(SAT_U, trans_msa_bit, gen_helper_msa_sat_u_df); TRANS_MSA(SRARI, trans_msa_bit, gen_helper_msa_srari_df); TRANS_MSA(SRLRI, trans_msa_bit, gen_helper_msa_srlri_df); +static bool trans_msa_3r_df(DisasContext *ctx, arg_msa_r *a, + void (*gen_msa_3r_df)(TCGv_ptr, TCGv_i32, TCGv_i32, + TCGv_i32, TCGv_i32)) +{ + TCGv_i32 tdf = tcg_constant_i32(a->df); + TCGv_i32 twd = tcg_const_i32(a->wd); + TCGv_i32 tws = tcg_const_i32(a->ws); + TCGv_i32 twt = tcg_const_i32(a->wt); + + gen_msa_3r_df(cpu_env, tdf, twd, tws, twt); + + tcg_temp_free_i32(twd); + tcg_temp_free_i32(tws); + tcg_temp_free_i32(twt); + + return true; +} + +TRANS_MSA(SLD, trans_msa_3r_df, gen_helper_msa_sld_df); +TRANS_MSA(SPLAT, trans_msa_3r_df, gen_helper_msa_splat_df); + +TRANS_MSA(VSHF, trans_msa_3r_df, gen_helper_msa_vshf_df); + static void gen_msa_3r(DisasContext *ctx) { #define MASK_MSA_3R(op) (MASK_MSA_MINOR(op) | (op & (0x7 << 23))) @@ -1219,12 +1239,6 @@ static void gen_msa_3r(DisasContext *ctx) break; } break; - case OPC_SLD_df: - gen_helper_msa_sld_df(cpu_env, tdf, twd, tws, twt); - break; - case OPC_VSHF_df: - gen_helper_msa_vshf_df(cpu_env, tdf, twd, tws, twt); - break; case OPC_SUBV_df: switch (df) { case DF_BYTE: @@ -1257,9 +1271,6 @@ static void gen_msa_3r(DisasContext *ctx) break; } break; - case OPC_SPLAT_df: - gen_helper_msa_splat_df(cpu_env, tdf, twd, tws, twt); - break; case OPC_SUBSUS_U_df: switch (df) { case DF_BYTE: From patchwork Sat Oct 23 21:47:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545255 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=EirtFh+i; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFRl6ZQbz9s0r for ; Sun, 24 Oct 2021 08:56:51 +1100 (AEDT) Received: from localhost ([::1]:37596 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP0T-00009y-Mm for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 17:56:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41048) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOts-00078b-Mq for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:00 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]:47084) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOtq-0005rR-NK for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:00 -0400 Received: by mail-wr1-x42d.google.com with SMTP id k7so181957wrd.13 for ; Sat, 23 Oct 2021 14:49:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=sPvSWraAlK7Nph4ty/Vbsk19Tc0DzeKGebIhAV3dvYU=; b=EirtFh+ic9zODrrAjfdgoFlsvaXSvFoALvFg/Hh9R5Qhm0EHSrmKEjmDQN11Bi6w2Q 8XtDc5Wu8YxZjzLGddLGlg/b6egLHNl5IiNcq1GOg5/lqsMafEwrFZYYUrOEzNEyepQb l6dKGgx7qKGOZL8X/9T+j1x/edFbTWS96AIcTYmYxjrdGpq2+N5enKShAo96MkMZcRs4 HEPwJg4ZYrRfiNgKkzcW2rX1XEH9p7UdBvOPv+5HDzbcam/BLBpObFLiSZbtCAuL575p XA7mXesTMF3p3TZ1x29HBYO4xD9P7SOfHkRQlGw8XdVnctNyPU80V52QtQp9FtalEf0O Fe7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=sPvSWraAlK7Nph4ty/Vbsk19Tc0DzeKGebIhAV3dvYU=; b=bAS/5m4gMbiTSA2PwC+iMz00uJB/YW6lES2nd+zZHwUWqdYEPZ5s44gDGSuQJNX00Q 3dhb9ScG0Jv0K9krI3/VjbGkF6zgUt6/VySNdVgtOxrX5H4C7OaEpUqs+BwMbdybFOOn 0gxoK70wZUv8n1+w4lo/AsyyKtVvrsv0udhOPkXXSGv2VqSqzXtE9Qxap5vfWgQ6yEYo 9e4ub0wXp5/ZZJdaLRXkJkK7iR7uQ7z5sng0uoQVuNJuYP2Zp84X3Pa9y1Pn8BAA9bar 6wMRa/kHRGnK6UOgFsnJOVTD+qL12ZO+EnhGdlgQ6+d9b8/xzmVD/krO+hVl488Xt4Fi glNw== X-Gm-Message-State: AOAM5301VkU0NO25f260PeDcv3HTfi+S/2x8Af/wZuTLPMcdRA5QhVus sgrtjU/O+Fs7JEQr9Pl/COFYL2EBV/c= X-Google-Smtp-Source: ABdhPJwbgrvGfwIHcZOZp109liCaJrw9YaBgOf4XJA09GOGM32tLWxdZtCi3S4uiUaovdFwuWDmn/g== X-Received: by 2002:a5d:64cd:: with SMTP id f13mr10997199wri.92.1635025797098; Sat, 23 Oct 2021 14:49:57 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id w14sm2381838wmi.37.2021.10.23.14.49.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:49:56 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 23/33] target/mips: Convert MSA 3R instruction format to decodetree (part 2/4) Date: Sat, 23 Oct 2021 23:47:53 +0200 Message-Id: <20211023214803.522078-24-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42d.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert 3-register operations to decodetree. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa.decode | 11 ++ target/mips/tcg/msa_translate.c | 213 +++++++++----------------------- 2 files changed, 66 insertions(+), 158 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index ca0fd568560..4a9cf85fa7a 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -80,10 +80,21 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + DOTP_S 011110 000.. ..... ..... ..... 010011 @3r + DOTP_U 011110 001.. ..... ..... ..... 010011 @3r + DPADD_S 011110 010.. ..... ..... ..... 010011 @3r + DPADD_U 011110 011.. ..... ..... ..... 010011 @3r + DPSUB_S 011110 100.. ..... ..... ..... 010011 @3r + DPSUB_U 011110 101.. ..... ..... ..... 010011 @3r + SLD 011110 000 .. ..... ..... ..... 010100 @3r SPLAT 011110 001 .. ..... ..... ..... 010100 @3r VSHF 011110 000 .. ..... ..... ..... 010101 @3r + HADD_S 011110 100.. ..... ..... ..... 010101 @3r + HADD_U 011110 101.. ..... ..... ..... 010101 @3r + HSUB_S 011110 110.. ..... ..... ..... 010101 @3r + HSUB_U 011110 111.. ..... ..... ..... 010101 @3r FCAF 011110 0000 . ..... ..... ..... 011010 @3rf FCUN 011110 0001 . ..... ..... ..... 011010 @3rf diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 0c7055c68bd..e1da532e5c9 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -44,13 +44,11 @@ enum { OPC_ADD_A_df = (0x0 << 23) | OPC_MSA_3R_10, OPC_SUBS_S_df = (0x0 << 23) | OPC_MSA_3R_11, OPC_MULV_df = (0x0 << 23) | OPC_MSA_3R_12, - OPC_DOTP_S_df = (0x0 << 23) | OPC_MSA_3R_13, OPC_SRA_df = (0x1 << 23) | OPC_MSA_3R_0D, OPC_SUBV_df = (0x1 << 23) | OPC_MSA_3R_0E, OPC_ADDS_A_df = (0x1 << 23) | OPC_MSA_3R_10, OPC_SUBS_U_df = (0x1 << 23) | OPC_MSA_3R_11, OPC_MADDV_df = (0x1 << 23) | OPC_MSA_3R_12, - OPC_DOTP_U_df = (0x1 << 23) | OPC_MSA_3R_13, OPC_SRAR_df = (0x1 << 23) | OPC_MSA_3R_15, OPC_SRL_df = (0x2 << 23) | OPC_MSA_3R_0D, OPC_MAX_S_df = (0x2 << 23) | OPC_MSA_3R_0E, @@ -58,7 +56,6 @@ enum { OPC_ADDS_S_df = (0x2 << 23) | OPC_MSA_3R_10, OPC_SUBSUS_U_df = (0x2 << 23) | OPC_MSA_3R_11, OPC_MSUBV_df = (0x2 << 23) | OPC_MSA_3R_12, - OPC_DPADD_S_df = (0x2 << 23) | OPC_MSA_3R_13, OPC_PCKEV_df = (0x2 << 23) | OPC_MSA_3R_14, OPC_SRLR_df = (0x2 << 23) | OPC_MSA_3R_15, OPC_BCLR_df = (0x3 << 23) | OPC_MSA_3R_0D, @@ -66,7 +63,6 @@ enum { OPC_CLT_U_df = (0x3 << 23) | OPC_MSA_3R_0F, OPC_ADDS_U_df = (0x3 << 23) | OPC_MSA_3R_10, OPC_SUBSUU_S_df = (0x3 << 23) | OPC_MSA_3R_11, - OPC_DPADD_U_df = (0x3 << 23) | OPC_MSA_3R_13, OPC_PCKOD_df = (0x3 << 23) | OPC_MSA_3R_14, OPC_BSET_df = (0x4 << 23) | OPC_MSA_3R_0D, OPC_MIN_S_df = (0x4 << 23) | OPC_MSA_3R_0E, @@ -74,30 +70,24 @@ enum { OPC_AVE_S_df = (0x4 << 23) | OPC_MSA_3R_10, OPC_ASUB_S_df = (0x4 << 23) | OPC_MSA_3R_11, OPC_DIV_S_df = (0x4 << 23) | OPC_MSA_3R_12, - OPC_DPSUB_S_df = (0x4 << 23) | OPC_MSA_3R_13, OPC_ILVL_df = (0x4 << 23) | OPC_MSA_3R_14, - OPC_HADD_S_df = (0x4 << 23) | OPC_MSA_3R_15, OPC_BNEG_df = (0x5 << 23) | OPC_MSA_3R_0D, OPC_MIN_U_df = (0x5 << 23) | OPC_MSA_3R_0E, OPC_CLE_U_df = (0x5 << 23) | OPC_MSA_3R_0F, OPC_AVE_U_df = (0x5 << 23) | OPC_MSA_3R_10, OPC_ASUB_U_df = (0x5 << 23) | OPC_MSA_3R_11, OPC_DIV_U_df = (0x5 << 23) | OPC_MSA_3R_12, - OPC_DPSUB_U_df = (0x5 << 23) | OPC_MSA_3R_13, OPC_ILVR_df = (0x5 << 23) | OPC_MSA_3R_14, - OPC_HADD_U_df = (0x5 << 23) | OPC_MSA_3R_15, OPC_BINSL_df = (0x6 << 23) | OPC_MSA_3R_0D, OPC_MAX_A_df = (0x6 << 23) | OPC_MSA_3R_0E, OPC_AVER_S_df = (0x6 << 23) | OPC_MSA_3R_10, OPC_MOD_S_df = (0x6 << 23) | OPC_MSA_3R_12, OPC_ILVEV_df = (0x6 << 23) | OPC_MSA_3R_14, - OPC_HSUB_S_df = (0x6 << 23) | OPC_MSA_3R_15, OPC_BINSR_df = (0x7 << 23) | OPC_MSA_3R_0D, OPC_MIN_A_df = (0x7 << 23) | OPC_MSA_3R_0E, OPC_AVER_U_df = (0x7 << 23) | OPC_MSA_3R_10, OPC_MOD_U_df = (0x7 << 23) | OPC_MSA_3R_12, OPC_ILVOD_df = (0x7 << 23) | OPC_MSA_3R_14, - OPC_HSUB_U_df = (0x7 << 23) | OPC_MSA_3R_15, /* ELM instructions df(bits 21..16) = _b, _h, _w, _d */ OPC_SLDI_df = (0x0 << 22) | (0x00 << 16) | OPC_MSA_ELM, @@ -209,6 +199,10 @@ static inline bool check_msa_access(DisasContext *ctx) TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, \ gen_func##_b, gen_func##_h, gen_func##_w, gen_func##_d) +#define TRANS_DF_B(NAME, trans_func, gen_func) \ + TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, \ + NULL, gen_func##_h, gen_func##_w, gen_func##_d) + static void gen_check_zero_element(TCGv tresult, uint8_t df, uint8_t wt, TCGCond cond) { @@ -484,10 +478,61 @@ static bool trans_msa_3r_df(DisasContext *ctx, arg_msa_r *a, return true; } +static bool trans_msa_3r(DisasContext *ctx, arg_msa_r *a, + void (*gen_msa_3r_b)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32), + void (*gen_msa_3r_h)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32), + void (*gen_msa_3r_w)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32), + void (*gen_msa_3r_d)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32)) +{ + TCGv_i32 twd = tcg_const_i32(a->wd); + TCGv_i32 tws = tcg_const_i32(a->ws); + TCGv_i32 twt = tcg_const_i32(a->wt); + + switch (a->df) { + case DF_BYTE: + if (gen_msa_3r_b == NULL) { + gen_reserved_instruction(ctx); + } else { + gen_msa_3r_b(cpu_env, twd, tws, twt); + } + break; + case DF_HALF: + gen_msa_3r_h(cpu_env, twd, tws, twt); + break; + case DF_WORD: + gen_msa_3r_w(cpu_env, twd, tws, twt); + break; + case DF_DOUBLE: + gen_msa_3r_d(cpu_env, twd, tws, twt); + break; + } + + tcg_temp_free_i32(twt); + tcg_temp_free_i32(tws); + tcg_temp_free_i32(twd); + + return true; +} + +TRANS_DF_B(DOTP_S, trans_msa_3r, gen_helper_msa_dotp_s); +TRANS_DF_B(DOTP_U, trans_msa_3r, gen_helper_msa_dotp_u); +TRANS_DF_B(DPADD_S, trans_msa_3r, gen_helper_msa_dpadd_s); +TRANS_DF_B(DPADD_U, trans_msa_3r, gen_helper_msa_dpadd_u); +TRANS_DF_B(DPSUB_S, trans_msa_3r, gen_helper_msa_dpsub_s); +TRANS_DF_B(DPSUB_U, trans_msa_3r, gen_helper_msa_dpsub_u); + TRANS_MSA(SLD, trans_msa_3r_df, gen_helper_msa_sld_df); TRANS_MSA(SPLAT, trans_msa_3r_df, gen_helper_msa_splat_df); TRANS_MSA(VSHF, trans_msa_3r_df, gen_helper_msa_vshf_df); +TRANS_DF_B(HADD_S, trans_msa_3r, gen_helper_msa_hadd_s); +TRANS_DF_B(HADD_U, trans_msa_3r, gen_helper_msa_hadd_u); +TRANS_DF_B(HSUB_S, trans_msa_3r, gen_helper_msa_hsub_s); +TRANS_DF_B(HSUB_U, trans_msa_3r, gen_helper_msa_hsub_u); static void gen_msa_3r(DisasContext *ctx) { @@ -1303,154 +1348,6 @@ static void gen_msa_3r(DisasContext *ctx) break; } break; - - case OPC_DOTP_S_df: - case OPC_DOTP_U_df: - case OPC_DPADD_S_df: - case OPC_DPADD_U_df: - case OPC_DPSUB_S_df: - case OPC_HADD_S_df: - case OPC_DPSUB_U_df: - case OPC_HADD_U_df: - case OPC_HSUB_S_df: - case OPC_HSUB_U_df: - if (df == DF_BYTE) { - gen_reserved_instruction(ctx); - break; - } - switch (MASK_MSA_3R(ctx->opcode)) { - case OPC_HADD_S_df: - switch (df) { - case DF_HALF: - gen_helper_msa_hadd_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_hadd_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_hadd_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_HADD_U_df: - switch (df) { - case DF_HALF: - gen_helper_msa_hadd_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_hadd_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_hadd_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_HSUB_S_df: - switch (df) { - case DF_HALF: - gen_helper_msa_hsub_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_hsub_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_hsub_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_HSUB_U_df: - switch (df) { - case DF_HALF: - gen_helper_msa_hsub_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_hsub_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_hsub_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_DOTP_S_df: - switch (df) { - case DF_HALF: - gen_helper_msa_dotp_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_dotp_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_dotp_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_DOTP_U_df: - switch (df) { - case DF_HALF: - gen_helper_msa_dotp_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_dotp_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_dotp_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_DPADD_S_df: - switch (df) { - case DF_HALF: - gen_helper_msa_dpadd_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_dpadd_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_dpadd_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_DPADD_U_df: - switch (df) { - case DF_HALF: - gen_helper_msa_dpadd_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_dpadd_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_dpadd_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_DPSUB_S_df: - switch (df) { - case DF_HALF: - gen_helper_msa_dpsub_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_dpsub_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_dpsub_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_DPSUB_U_df: - switch (df) { - case DF_HALF: - gen_helper_msa_dpsub_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_dpsub_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_dpsub_u_d(cpu_env, twd, tws, twt); - break; - } - break; - } - break; default: MIPS_INVAL("MSA instruction"); gen_reserved_instruction(ctx); From patchwork Sat Oct 23 21:47:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545268 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=XNQ0OFWC; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFjS18Wyz9s1l for ; Sun, 24 Oct 2021 09:08:44 +1100 (AEDT) Received: from localhost ([::1]:40618 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePBx-0004Jl-Ul for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:08:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41062) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOty-0007Pa-7W for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:06 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:51007) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOtv-0005vC-Ud for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:05 -0400 Received: by mail-wm1-x32c.google.com with SMTP id y78so1311249wmc.0 for ; Sat, 23 Oct 2021 14:50:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0YrhHvQhCI1smRtdOyBIO6rYsfXznJ3uddD3K7WX1EM=; b=XNQ0OFWChBPPxUM/S5D3YgXD0E9HY/BS7D22AadXe87Bjr/k5ICkfoohwOUubBEsF6 gySsNU6kM6ND4d+vjjMsob1rl9OdBZE5mBilR8pRJgZek6nO4jvEXaqsLhhDPb+L6amY jy/qhLNqJ7vMbjikCe9bbiw1L8oy4rqbFnCf8/EobgctnIda1syvvgWQ1EIrb2RuQG7Z Ny+TgxCg6a8XZAUePdP0SFSkbPVAR4DijMXy80PjivnHMcxJcEQwZ0Jy8gnG6hMgKAtF OWYROfqNcx4v2gsAvblMIM6JaFuIrD7T9/Ex5xqHO3A/STM/XdsbfkEETgsaQU6I8xut YxBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=0YrhHvQhCI1smRtdOyBIO6rYsfXznJ3uddD3K7WX1EM=; b=eVq04GPUy/poxW0o9WOxbFVzU+Htpj+3cK7hy89BLk2BCwn7zb0OHQ1U7i1oyXkJ9q DNK5xqlUup/R0qzxQxCsyg8Zm6ekUPeS14bco8ymYWxr7+6wb3AduX922hHq8iVbKCJR PYVEByhIpdM9ptQD2zj1fGi5LzrOpbFFFQhjWS9JpBOZ2z7BsIjjcMMs1CIue0gQTXm0 Ft+6T/NDu05xLI/LKcE7mnBiM3lV+gZJsWj3Hec3MCsaJkSXwQh4spRnidbkrj5VLC7E x4cF+KPaG1kEe+jcrLi1SA4bd3/kgVl7Hoi6mSSPAocXkypmxebXYop1VE0dgVfmifqU Vukw== X-Gm-Message-State: AOAM533zPSJtXX/lAfRl804NXlOo8hIIB+RHRZ0yInEUDrzSYOisQYm/ 8xYQK0YqmNomRRCcOQQbIok9zx4XUeM= X-Google-Smtp-Source: ABdhPJyuHnoGeFFWHhvMmEX0+GsJvbUaGdY3I4rEBg4bmvxXt8fbta7c9Sa1et6/bxzcZpPd1ilISA== X-Received: by 2002:a7b:c413:: with SMTP id k19mr2884560wmi.142.1635025802247; Sat, 23 Oct 2021 14:50:02 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id m15sm12369083wmq.0.2021.10.23.14.50.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:01 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 24/33] target/mips: Convert MSA 3R instruction format to decodetree (part 3/4) Date: Sat, 23 Oct 2021 23:47:54 +0200 Message-Id: <20211023214803.522078-25-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32c.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert BINSL (Vector Bit Insert Left) and BINSR (Vector Bit Insert Right) opcodes to decodetree. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 3 +++ target/mips/tcg/msa_translate.c | 37 +++------------------------------ 2 files changed, 6 insertions(+), 34 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 4a9cf85fa7a..1d6fd86ef3d 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -80,6 +80,9 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + BINSL 011110 110.. ..... ..... ..... 001101 @3r + BINSR 011110 111.. ..... ..... ..... 001101 @3r + DOTP_S 011110 000.. ..... ..... ..... 010011 @3r DOTP_U 011110 001.. ..... ..... ..... 010011 @3r DPADD_S 011110 010.. ..... ..... ..... 010011 @3r diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index e1da532e5c9..1b69ec149a5 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -78,12 +78,10 @@ enum { OPC_ASUB_U_df = (0x5 << 23) | OPC_MSA_3R_11, OPC_DIV_U_df = (0x5 << 23) | OPC_MSA_3R_12, OPC_ILVR_df = (0x5 << 23) | OPC_MSA_3R_14, - OPC_BINSL_df = (0x6 << 23) | OPC_MSA_3R_0D, OPC_MAX_A_df = (0x6 << 23) | OPC_MSA_3R_0E, OPC_AVER_S_df = (0x6 << 23) | OPC_MSA_3R_10, OPC_MOD_S_df = (0x6 << 23) | OPC_MSA_3R_12, OPC_ILVEV_df = (0x6 << 23) | OPC_MSA_3R_14, - OPC_BINSR_df = (0x7 << 23) | OPC_MSA_3R_0D, OPC_MIN_A_df = (0x7 << 23) | OPC_MSA_3R_0E, OPC_AVER_U_df = (0x7 << 23) | OPC_MSA_3R_10, OPC_MOD_U_df = (0x7 << 23) | OPC_MSA_3R_12, @@ -518,6 +516,9 @@ static bool trans_msa_3r(DisasContext *ctx, arg_msa_r *a, return true; } +TRANS_DF_E(BINSL, trans_msa_3r, gen_helper_msa_binsl); +TRANS_DF_E(BINSR, trans_msa_3r, gen_helper_msa_binsr); + TRANS_DF_B(DOTP_S, trans_msa_3r, gen_helper_msa_dotp_s); TRANS_DF_B(DOTP_U, trans_msa_3r, gen_helper_msa_dotp_u); TRANS_DF_B(DPADD_S, trans_msa_3r, gen_helper_msa_dpadd_s); @@ -548,38 +549,6 @@ static void gen_msa_3r(DisasContext *ctx) TCGv_i32 twt = tcg_const_i32(wt); switch (MASK_MSA_3R(ctx->opcode)) { - case OPC_BINSL_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_binsl_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_binsl_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_binsl_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_binsl_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_BINSR_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_binsr_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_binsr_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_binsr_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_binsr_d(cpu_env, twd, tws, twt); - break; - } - break; case OPC_BCLR_df: switch (df) { case DF_BYTE: From patchwork Sat Oct 23 21:47:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545276 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=KF+SeY6q; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFr43xq1z9s1l for ; Sun, 24 Oct 2021 09:14:28 +1100 (AEDT) Received: from localhost ([::1]:57756 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePHW-0007e7-8P for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:14:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41084) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOu4-0007Zc-Md for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:13 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]:39426) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOu1-0005yA-5u for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:12 -0400 Received: by mail-wr1-x431.google.com with SMTP id z14so3688236wrg.6 for ; Sat, 23 Oct 2021 14:50:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZJZwaVHlByWEV1I2KOab7SpQV5BrdWj9m0L75aq5ezM=; b=KF+SeY6qB1Z5hpG3tFMRN5NQoSKr9sBHhssCc55/9/IT1pXalIUUmXcOV28jz1PxPK 7X/RXS/+QRBShfdiqh/3TAF9IaHwAG0Ennl3bhYWyyY3bDatPkeIUz3+/Wc3cTiuKZ7k WqTzbo1sKlzhG4CNxrHylORrKwqNyRltEPebzz05YHkODc4xP+LIX/F318tbc8GvEUod FFZqi4I0zhwEQlHfGtxZhLeX2HOMaIARWutBKgRoYSFH8VFsgvnjXthB7Iqic/V4xY38 84hyMoINOc+UU4cezjaXa7g5isQrNAVOCl6QKfD1qKCBKxQY/LqYq6w8QrLSkZiLO2Lv tNFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ZJZwaVHlByWEV1I2KOab7SpQV5BrdWj9m0L75aq5ezM=; b=dxBGM9FecE/s8NImJ8JIAfTIdcPI7Eu8CGisNmapp5D1WmJwOS9MXdAQHjfuZL23FF ww1fZS52tmUd7LUmsRHan4U+ayzey4TjH63SeL68rNpooHVyq5PwCHalDz6F5vROMtUk IBSUT65LatlGLo+pnoRoa1Oib+4eE2fuk2Cx81FkPcbOCwUVxl7g/JsMe5N6W0WPDAct RMv/VtiF60dlS29+7DilqxAyNvU2n+loPh/JrnlzqZBvH3KoPQXNLCerpdgjNB2KLU+E hjS3vUZw/FTcWhHR0XuuQvIwHm5pPxeONnW9bFaRSVCXvqJwx9PLiFnByZ4+hb54l+zF 8VQg== X-Gm-Message-State: AOAM5310ihIJbk5H7XE88CSSQH9QMpTKoKQDp0ahsZQZ8lef4mnvTR1A R2DUyIeFE5WdlwLcET9WzXuM6Imm5S4= X-Google-Smtp-Source: ABdhPJwzQk4D4+FMUKOzqOTxrSOKoGwx18dZmiOn04aDIdTmHrVge8n4CHSs/diKmpSo8UgXn7utcw== X-Received: by 2002:adf:ee8d:: with SMTP id b13mr3751547wro.50.1635025807451; Sat, 23 Oct 2021 14:50:07 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id r15sm6134227wru.9.2021.10.23.14.50.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:07 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 25/33] target/mips: Convert MSA 3R instruction format to decodetree (part 4/4) Date: Sat, 23 Oct 2021 23:47:55 +0200 Message-Id: <20211023214803.522078-26-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::431; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x431.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert 3-register operations to decodetree. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 53 ++ target/mips/tcg/msa_translate.c | 916 ++------------------------------ 2 files changed, 106 insertions(+), 863 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 1d6fd86ef3d..3d0d9a52675 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -80,9 +80,54 @@ BNZ 010001 111 .. ..... ................ @bz SRARI 011110 010 ....... ..... ..... 001010 @bit SRLRI 011110 011 ....... ..... ..... 001010 @bit + SLL 011110 000.. ..... ..... ..... 001101 @3r + SRA 011110 001.. ..... ..... ..... 001101 @3r + SRL 011110 010.. ..... ..... ..... 001101 @3r + BCLR 011110 011.. ..... ..... ..... 001101 @3r + BSET 011110 100.. ..... ..... ..... 001101 @3r + BNEG 011110 101.. ..... ..... ..... 001101 @3r BINSL 011110 110.. ..... ..... ..... 001101 @3r BINSR 011110 111.. ..... ..... ..... 001101 @3r + ADDV 011110 000.. ..... ..... ..... 001110 @3r + SUBV 011110 001.. ..... ..... ..... 001110 @3r + MAX_S 011110 010.. ..... ..... ..... 001110 @3r + MAX_U 011110 011.. ..... ..... ..... 001110 @3r + MIN_S 011110 100.. ..... ..... ..... 001110 @3r + MIN_U 011110 101.. ..... ..... ..... 001110 @3r + MAX_A 011110 110.. ..... ..... ..... 001110 @3r + MIN_A 011110 111.. ..... ..... ..... 001110 @3r + + CEQ 011110 000.. ..... ..... ..... 001111 @3r + CLT_S 011110 010.. ..... ..... ..... 001111 @3r + CLT_U 011110 011.. ..... ..... ..... 001111 @3r + CLE_S 011110 100.. ..... ..... ..... 001111 @3r + CLE_U 011110 101.. ..... ..... ..... 001111 @3r + + ADD_A 011110 000.. ..... ..... ..... 010000 @3r + ADDS_A 011110 001.. ..... ..... ..... 010000 @3r + ADDS_S 011110 010.. ..... ..... ..... 010000 @3r + ADDS_U 011110 011.. ..... ..... ..... 010000 @3r + AVE_S 011110 100.. ..... ..... ..... 010000 @3r + AVE_U 011110 101.. ..... ..... ..... 010000 @3r + AVER_S 011110 110.. ..... ..... ..... 010000 @3r + AVER_U 011110 111.. ..... ..... ..... 010000 @3r + + SUBS_S 011110 000.. ..... ..... ..... 010001 @3r + SUBS_U 011110 001.. ..... ..... ..... 010001 @3r + SUBSUS_U 011110 010.. ..... ..... ..... 010001 @3r + SUBSUU_S 011110 011.. ..... ..... ..... 010001 @3r + ASUB_S 011110 100.. ..... ..... ..... 010001 @3r + ASUB_U 011110 101.. ..... ..... ..... 010001 @3r + + MULV 011110 000.. ..... ..... ..... 010010 @3r + MADDV 011110 001.. ..... ..... ..... 010010 @3r + MSUBV 011110 010.. ..... ..... ..... 010010 @3r + DIV_S 011110 100.. ..... ..... ..... 010010 @3r + DIV_U 011110 101.. ..... ..... ..... 010010 @3r + MOD_S 011110 110.. ..... ..... ..... 010010 @3r + MOD_U 011110 111.. ..... ..... ..... 010010 @3r + DOTP_S 011110 000.. ..... ..... ..... 010011 @3r DOTP_U 011110 001.. ..... ..... ..... 010011 @3r DPADD_S 011110 010.. ..... ..... ..... 010011 @3r @@ -92,8 +137,16 @@ BNZ 010001 111 .. ..... ................ @bz SLD 011110 000 .. ..... ..... ..... 010100 @3r SPLAT 011110 001 .. ..... ..... ..... 010100 @3r + PCKEV 011110 010 .. ..... ..... ..... 010100 @3r + PCKOD 011110 011 .. ..... ..... ..... 010100 @3r + ILVL 011110 100 .. ..... ..... ..... 010100 @3r + ILVR 011110 101 .. ..... ..... ..... 010100 @3r + ILVEV 011110 110 .. ..... ..... ..... 010100 @3r + ILVOD 011110 111 .. ..... ..... ..... 010100 @3r VSHF 011110 000 .. ..... ..... ..... 010101 @3r + SRAR 011110 001 .. ..... ..... ..... 010101 @3r + SRLR 011110 010 .. ..... ..... ..... 010101 @3r HADD_S 011110 100.. ..... ..... ..... 010101 @3r HADD_U 011110 101.. ..... ..... ..... 010101 @3r HSUB_S 011110 110.. ..... ..... ..... 010101 @3r diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 1b69ec149a5..7813c126069 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -24,69 +24,10 @@ #define MASK_MSA_MINOR(op) (MASK_OP_MAJOR(op) | (op & 0x3F)) enum { - OPC_MSA_3R_0D = 0x0D | OPC_MSA, - OPC_MSA_3R_0E = 0x0E | OPC_MSA, - OPC_MSA_3R_0F = 0x0F | OPC_MSA, - OPC_MSA_3R_10 = 0x10 | OPC_MSA, - OPC_MSA_3R_11 = 0x11 | OPC_MSA, - OPC_MSA_3R_12 = 0x12 | OPC_MSA, - OPC_MSA_3R_13 = 0x13 | OPC_MSA, - OPC_MSA_3R_14 = 0x14 | OPC_MSA, - OPC_MSA_3R_15 = 0x15 | OPC_MSA, OPC_MSA_ELM = 0x19 | OPC_MSA, }; enum { - /* 3R instruction df(bits 22..21) = _b, _h, _w, d */ - OPC_SLL_df = (0x0 << 23) | OPC_MSA_3R_0D, - OPC_ADDV_df = (0x0 << 23) | OPC_MSA_3R_0E, - OPC_CEQ_df = (0x0 << 23) | OPC_MSA_3R_0F, - OPC_ADD_A_df = (0x0 << 23) | OPC_MSA_3R_10, - OPC_SUBS_S_df = (0x0 << 23) | OPC_MSA_3R_11, - OPC_MULV_df = (0x0 << 23) | OPC_MSA_3R_12, - OPC_SRA_df = (0x1 << 23) | OPC_MSA_3R_0D, - OPC_SUBV_df = (0x1 << 23) | OPC_MSA_3R_0E, - OPC_ADDS_A_df = (0x1 << 23) | OPC_MSA_3R_10, - OPC_SUBS_U_df = (0x1 << 23) | OPC_MSA_3R_11, - OPC_MADDV_df = (0x1 << 23) | OPC_MSA_3R_12, - OPC_SRAR_df = (0x1 << 23) | OPC_MSA_3R_15, - OPC_SRL_df = (0x2 << 23) | OPC_MSA_3R_0D, - OPC_MAX_S_df = (0x2 << 23) | OPC_MSA_3R_0E, - OPC_CLT_S_df = (0x2 << 23) | OPC_MSA_3R_0F, - OPC_ADDS_S_df = (0x2 << 23) | OPC_MSA_3R_10, - OPC_SUBSUS_U_df = (0x2 << 23) | OPC_MSA_3R_11, - OPC_MSUBV_df = (0x2 << 23) | OPC_MSA_3R_12, - OPC_PCKEV_df = (0x2 << 23) | OPC_MSA_3R_14, - OPC_SRLR_df = (0x2 << 23) | OPC_MSA_3R_15, - OPC_BCLR_df = (0x3 << 23) | OPC_MSA_3R_0D, - OPC_MAX_U_df = (0x3 << 23) | OPC_MSA_3R_0E, - OPC_CLT_U_df = (0x3 << 23) | OPC_MSA_3R_0F, - OPC_ADDS_U_df = (0x3 << 23) | OPC_MSA_3R_10, - OPC_SUBSUU_S_df = (0x3 << 23) | OPC_MSA_3R_11, - OPC_PCKOD_df = (0x3 << 23) | OPC_MSA_3R_14, - OPC_BSET_df = (0x4 << 23) | OPC_MSA_3R_0D, - OPC_MIN_S_df = (0x4 << 23) | OPC_MSA_3R_0E, - OPC_CLE_S_df = (0x4 << 23) | OPC_MSA_3R_0F, - OPC_AVE_S_df = (0x4 << 23) | OPC_MSA_3R_10, - OPC_ASUB_S_df = (0x4 << 23) | OPC_MSA_3R_11, - OPC_DIV_S_df = (0x4 << 23) | OPC_MSA_3R_12, - OPC_ILVL_df = (0x4 << 23) | OPC_MSA_3R_14, - OPC_BNEG_df = (0x5 << 23) | OPC_MSA_3R_0D, - OPC_MIN_U_df = (0x5 << 23) | OPC_MSA_3R_0E, - OPC_CLE_U_df = (0x5 << 23) | OPC_MSA_3R_0F, - OPC_AVE_U_df = (0x5 << 23) | OPC_MSA_3R_10, - OPC_ASUB_U_df = (0x5 << 23) | OPC_MSA_3R_11, - OPC_DIV_U_df = (0x5 << 23) | OPC_MSA_3R_12, - OPC_ILVR_df = (0x5 << 23) | OPC_MSA_3R_14, - OPC_MAX_A_df = (0x6 << 23) | OPC_MSA_3R_0E, - OPC_AVER_S_df = (0x6 << 23) | OPC_MSA_3R_10, - OPC_MOD_S_df = (0x6 << 23) | OPC_MSA_3R_12, - OPC_ILVEV_df = (0x6 << 23) | OPC_MSA_3R_14, - OPC_MIN_A_df = (0x7 << 23) | OPC_MSA_3R_0E, - OPC_AVER_U_df = (0x7 << 23) | OPC_MSA_3R_10, - OPC_MOD_U_df = (0x7 << 23) | OPC_MSA_3R_12, - OPC_ILVOD_df = (0x7 << 23) | OPC_MSA_3R_14, - /* ELM instructions df(bits 21..16) = _b, _h, _w, _d */ OPC_SLDI_df = (0x0 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_CTCMSA = (0x0 << 22) | (0x3E << 16) | OPC_MSA_ELM, @@ -516,9 +457,54 @@ static bool trans_msa_3r(DisasContext *ctx, arg_msa_r *a, return true; } +TRANS_DF_E(SLL, trans_msa_3r, gen_helper_msa_sll); +TRANS_DF_E(SRA, trans_msa_3r, gen_helper_msa_sra); +TRANS_DF_E(SRL, trans_msa_3r, gen_helper_msa_srl); +TRANS_DF_E(BCLR, trans_msa_3r, gen_helper_msa_bclr); +TRANS_DF_E(BSET, trans_msa_3r, gen_helper_msa_bset); +TRANS_DF_E(BNEG, trans_msa_3r, gen_helper_msa_bneg); TRANS_DF_E(BINSL, trans_msa_3r, gen_helper_msa_binsl); TRANS_DF_E(BINSR, trans_msa_3r, gen_helper_msa_binsr); +TRANS_DF_E(ADDV, trans_msa_3r, gen_helper_msa_addv); +TRANS_DF_E(SUBV, trans_msa_3r, gen_helper_msa_subv); +TRANS_DF_E(MAX_S, trans_msa_3r, gen_helper_msa_max_s); +TRANS_DF_E(MAX_U, trans_msa_3r, gen_helper_msa_max_u); +TRANS_DF_E(MIN_S, trans_msa_3r, gen_helper_msa_min_s); +TRANS_DF_E(MIN_U, trans_msa_3r, gen_helper_msa_min_u); +TRANS_DF_E(MAX_A, trans_msa_3r, gen_helper_msa_max_a); +TRANS_DF_E(MIN_A, trans_msa_3r, gen_helper_msa_min_a); + +TRANS_DF_E(CEQ, trans_msa_3r, gen_helper_msa_ceq); +TRANS_DF_E(CLT_S, trans_msa_3r, gen_helper_msa_clt_s); +TRANS_DF_E(CLT_U, trans_msa_3r, gen_helper_msa_clt_u); +TRANS_DF_E(CLE_S, trans_msa_3r, gen_helper_msa_cle_s); +TRANS_DF_E(CLE_U, trans_msa_3r, gen_helper_msa_cle_u); + +TRANS_DF_E(ADD_A, trans_msa_3r, gen_helper_msa_add_a); +TRANS_DF_E(ADDS_A, trans_msa_3r, gen_helper_msa_adds_a); +TRANS_DF_E(ADDS_S, trans_msa_3r, gen_helper_msa_adds_s); +TRANS_DF_E(ADDS_U, trans_msa_3r, gen_helper_msa_adds_u); +TRANS_DF_E(AVE_S, trans_msa_3r, gen_helper_msa_ave_s); +TRANS_DF_E(AVE_U, trans_msa_3r, gen_helper_msa_ave_u); +TRANS_DF_E(AVER_S, trans_msa_3r, gen_helper_msa_aver_s); +TRANS_DF_E(AVER_U, trans_msa_3r, gen_helper_msa_aver_u); + +TRANS_DF_E(SUBS_S, trans_msa_3r, gen_helper_msa_subs_s); +TRANS_DF_E(SUBS_U, trans_msa_3r, gen_helper_msa_subs_u); +TRANS_DF_E(SUBSUS_U, trans_msa_3r, gen_helper_msa_subsus_u); +TRANS_DF_E(SUBSUU_S, trans_msa_3r, gen_helper_msa_subsuu_s); +TRANS_DF_E(ASUB_S, trans_msa_3r, gen_helper_msa_asub_s); +TRANS_DF_E(ASUB_U, trans_msa_3r, gen_helper_msa_asub_u); + +TRANS_DF_E(MULV, trans_msa_3r, gen_helper_msa_mulv); +TRANS_DF_E(MADDV, trans_msa_3r, gen_helper_msa_maddv); +TRANS_DF_E(MSUBV, trans_msa_3r, gen_helper_msa_msubv); +TRANS_DF_E(DIV_S, trans_msa_3r, gen_helper_msa_div_s); +TRANS_DF_E(DIV_U, trans_msa_3r, gen_helper_msa_div_u); +TRANS_DF_E(MOD_S, trans_msa_3r, gen_helper_msa_mod_s); +TRANS_DF_E(MOD_U, trans_msa_3r, gen_helper_msa_mod_u); + TRANS_DF_B(DOTP_S, trans_msa_3r, gen_helper_msa_dotp_s); TRANS_DF_B(DOTP_U, trans_msa_3r, gen_helper_msa_dotp_u); TRANS_DF_B(DPADD_S, trans_msa_3r, gen_helper_msa_dpadd_s); @@ -528,806 +514,21 @@ TRANS_DF_B(DPSUB_U, trans_msa_3r, gen_helper_msa_dpsub_u); TRANS_MSA(SLD, trans_msa_3r_df, gen_helper_msa_sld_df); TRANS_MSA(SPLAT, trans_msa_3r_df, gen_helper_msa_splat_df); +TRANS_DF_E(PCKEV, trans_msa_3r, gen_helper_msa_pckev); +TRANS_DF_E(PCKOD, trans_msa_3r, gen_helper_msa_pckod); +TRANS_DF_E(ILVL, trans_msa_3r, gen_helper_msa_ilvl); +TRANS_DF_E(ILVR, trans_msa_3r, gen_helper_msa_ilvr); +TRANS_DF_E(ILVEV, trans_msa_3r, gen_helper_msa_ilvev); +TRANS_DF_E(ILVOD, trans_msa_3r, gen_helper_msa_ilvod); TRANS_MSA(VSHF, trans_msa_3r_df, gen_helper_msa_vshf_df); +TRANS_DF_E(SRAR, trans_msa_3r, gen_helper_msa_srar); +TRANS_DF_E(SRLR, trans_msa_3r, gen_helper_msa_srlr); TRANS_DF_B(HADD_S, trans_msa_3r, gen_helper_msa_hadd_s); TRANS_DF_B(HADD_U, trans_msa_3r, gen_helper_msa_hadd_u); TRANS_DF_B(HSUB_S, trans_msa_3r, gen_helper_msa_hsub_s); TRANS_DF_B(HSUB_U, trans_msa_3r, gen_helper_msa_hsub_u); -static void gen_msa_3r(DisasContext *ctx) -{ -#define MASK_MSA_3R(op) (MASK_MSA_MINOR(op) | (op & (0x7 << 23))) - uint8_t df = (ctx->opcode >> 21) & 0x3; - uint8_t wt = (ctx->opcode >> 16) & 0x1f; - uint8_t ws = (ctx->opcode >> 11) & 0x1f; - uint8_t wd = (ctx->opcode >> 6) & 0x1f; - - TCGv_i32 tdf = tcg_const_i32(df); - TCGv_i32 twd = tcg_const_i32(wd); - TCGv_i32 tws = tcg_const_i32(ws); - TCGv_i32 twt = tcg_const_i32(wt); - - switch (MASK_MSA_3R(ctx->opcode)) { - case OPC_BCLR_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_bclr_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_bclr_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_bclr_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_bclr_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_BNEG_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_bneg_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_bneg_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_bneg_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_bneg_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_BSET_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_bset_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_bset_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_bset_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_bset_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ADD_A_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_add_a_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_add_a_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_add_a_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_add_a_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ADDS_A_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_adds_a_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_adds_a_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_adds_a_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_adds_a_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ADDS_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_adds_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_adds_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_adds_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_adds_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ADDS_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_adds_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_adds_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_adds_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_adds_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ADDV_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_addv_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_addv_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_addv_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_addv_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_AVE_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_ave_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_ave_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_ave_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_ave_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_AVE_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_ave_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_ave_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_ave_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_ave_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_AVER_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_aver_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_aver_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_aver_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_aver_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_AVER_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_aver_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_aver_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_aver_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_aver_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_CEQ_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_ceq_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_ceq_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_ceq_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_ceq_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_CLE_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_cle_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_cle_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_cle_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_cle_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_CLE_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_cle_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_cle_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_cle_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_cle_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_CLT_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_clt_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_clt_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_clt_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_clt_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_CLT_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_clt_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_clt_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_clt_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_clt_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_DIV_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_div_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_div_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_div_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_div_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_DIV_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_div_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_div_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_div_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_div_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MAX_A_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_max_a_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_max_a_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_max_a_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_max_a_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MAX_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_max_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_max_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_max_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_max_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MAX_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_max_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_max_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_max_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_max_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MIN_A_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_min_a_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_min_a_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_min_a_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_min_a_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MIN_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_min_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_min_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_min_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_min_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MIN_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_min_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_min_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_min_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_min_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MOD_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_mod_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_mod_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_mod_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_mod_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MOD_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_mod_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_mod_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_mod_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_mod_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MADDV_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_maddv_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_maddv_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_maddv_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_maddv_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MSUBV_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_msubv_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_msubv_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_msubv_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_msubv_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ASUB_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_asub_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_asub_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_asub_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_asub_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ASUB_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_asub_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_asub_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_asub_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_asub_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ILVEV_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_ilvev_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_ilvev_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_ilvev_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_ilvev_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ILVOD_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_ilvod_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_ilvod_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_ilvod_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_ilvod_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ILVL_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_ilvl_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_ilvl_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_ilvl_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_ilvl_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_ILVR_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_ilvr_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_ilvr_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_ilvr_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_ilvr_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_PCKEV_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_pckev_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_pckev_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_pckev_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_pckev_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_PCKOD_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_pckod_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_pckod_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_pckod_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_pckod_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SLL_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_sll_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_sll_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_sll_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_sll_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SRA_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_sra_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_sra_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_sra_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_sra_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SRAR_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_srar_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_srar_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_srar_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_srar_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SRL_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_srl_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_srl_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_srl_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_srl_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SRLR_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_srlr_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_srlr_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_srlr_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_srlr_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SUBS_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_subs_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_subs_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_subs_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_subs_s_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_MULV_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_mulv_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_mulv_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_mulv_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_mulv_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SUBV_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_subv_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_subv_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_subv_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_subv_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SUBS_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_subs_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_subs_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_subs_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_subs_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SUBSUS_U_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_subsus_u_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_subsus_u_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_subsus_u_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_subsus_u_d(cpu_env, twd, tws, twt); - break; - } - break; - case OPC_SUBSUU_S_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_subsuu_s_b(cpu_env, twd, tws, twt); - break; - case DF_HALF: - gen_helper_msa_subsuu_s_h(cpu_env, twd, tws, twt); - break; - case DF_WORD: - gen_helper_msa_subsuu_s_w(cpu_env, twd, tws, twt); - break; - case DF_DOUBLE: - gen_helper_msa_subsuu_s_d(cpu_env, twd, tws, twt); - break; - } - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - break; - } - tcg_temp_free_i32(twd); - tcg_temp_free_i32(tws); - tcg_temp_free_i32(twt); - tcg_temp_free_i32(tdf); -} - static void gen_msa_elm_3e(DisasContext *ctx) { #define MASK_MSA_ELM_DF3E(op) (MASK_MSA_MINOR(op) | (op & (0x3FF << 16))) @@ -1684,17 +885,6 @@ static bool trans_MSA(DisasContext *ctx, arg_MSA *a) } switch (MASK_MSA_MINOR(opcode)) { - case OPC_MSA_3R_0D: - case OPC_MSA_3R_0E: - case OPC_MSA_3R_0F: - case OPC_MSA_3R_10: - case OPC_MSA_3R_11: - case OPC_MSA_3R_12: - case OPC_MSA_3R_13: - case OPC_MSA_3R_14: - case OPC_MSA_3R_15: - gen_msa_3r(ctx); - break; case OPC_MSA_ELM: gen_msa_elm(ctx); break; From patchwork Sat Oct 23 21:47:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545265 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Ricy8C19; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFcy3yFbz9s1l for ; Sun, 24 Oct 2021 09:04:50 +1100 (AEDT) Received: from localhost ([::1]:33468 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP8B-0007r3-F8 for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:04:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41122) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOuC-0007dM-NW for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:20 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:40510) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOu9-00061V-Kt for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:18 -0400 Received: by mail-wm1-x32e.google.com with SMTP id g201-20020a1c20d2000000b00327775075f7so127802wmg.5 for ; Sat, 23 Oct 2021 14:50:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pPgOOsJ1tcp3zk061urgzOCJTIxjGxhIl2eWZ/P+Epc=; b=Ricy8C19AUpbmq9b29txE4ooJrPKn1SgAy1UFkb5cGk7LUQxFrFypYpsikTobXVtom swZ/fGiuHzKx/3dsyirb6PtH3WMcPOa+KnRUyZ6Gm+RXVlNw5BEJdn/pzkFXWA5pBMhe D8n+/TPZ9Uj/WbtoBiXA4m84Y0hRNsi1MasRzpntK+YG8vOESY7+2xe2mJ1HENlf8cL4 Art+gFORTgHa6sNm4W1X7ffKpwbscF2kyqC+XQZYG599X20uLeHl5hD6FhGfpaRFR0gg dyCneP/bTHOLOCkRVrEdik5dUyd8V4he9cPhTANajn1aGCht2jOXoWiDWB+MJJ4vNX3r /Cdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=pPgOOsJ1tcp3zk061urgzOCJTIxjGxhIl2eWZ/P+Epc=; b=b8dJz3LQlmU01flGWAr5WYast15nid0FSIDIeXto+WchocxX2zk0KJr2IH3zTZvLNA dArSKwEW9GRTp0hRvXMMIn02mnNYGzxIiZKioAnNwYLuGZnbxKSYksG66Zk3i/CABBCg 1TxoEKVNtftSnb1ssEXNzm98wsCO1JKIP5MHYpy9DJ+HgAXE6YyuwXfJQCjGKFJUEMac Fn4ct3tGJ+7PplthxH0UQGe5PmnoC5AR3DVrBt2vp+XJ9AbPAOmFJ6anX8F/gB67upOE fdg3rGCUSSa1EYX+ZJHB6yQpx9hQH5BfdDG77lqMpUo/63B5G00RzQwMAvV431gGujAb BX5g== X-Gm-Message-State: AOAM533RhvRFTshwzxPo09TG38D4fsqyyB7pdQ2UwfunVwEgLzKW1IIm 50xgf43oyVIQ/5jvCUjElxpV/+PN4RQ= X-Google-Smtp-Source: ABdhPJypYUNRlxpNgxxoOMZnhWk3Dj/FIfNFw2PLNX0V16FtPLihEni3tRFA8r97uN+WYGTcj8LyDg== X-Received: by 2002:a1c:7911:: with SMTP id l17mr38985962wme.138.1635025815195; Sat, 23 Oct 2021 14:50:15 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id k36sm1514103wms.21.2021.10.23.14.50.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:11 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 26/33] target/mips: Convert MSA ELM instruction format to decodetree Date: Sat, 23 Oct 2021 23:47:56 +0200 Message-Id: <20211023214803.522078-27-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32e.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert instructions with an immediate element index and data format df/n to decodetree. Since the 'data format' and 'n' fields are constant values, use tcg_constant_i32() instead of a TCG temporaries. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa.decode | 6 +++++ target/mips/tcg/msa_translate.c | 46 +++++++++++++++++++++++---------- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 3d0d9a52675..0f1674cd318 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -15,12 +15,14 @@ &msa_r df wd ws wt &msa_bz df wt sa +&msa_elm df wd ws &msa_ldst df wd ws sa @lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r @ldst ...... sa:s10 ws:5 wd:5 .... df:2 &msa_ldst @bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 @bz ...... ... df:2 wt:5 sa:16 &msa_bz +@elm_df ...... .... df:6 ws:5 wd:5 ...... &msa_elm @vec ...... ..... wt:5 ws:5 wd:5 ...... &msa_r df=0 @2r ...... ........ df:2 ws:5 wd:5 ...... &msa_r wt=0 @2rf ...... ......... df:1 ws:5 wd:5 ...... &msa_r wt=0 @@ -152,6 +154,10 @@ BNZ 010001 111 .. ..... ................ @bz HSUB_S 011110 110.. ..... ..... ..... 010101 @3r HSUB_U 011110 111.. ..... ..... ..... 010101 @3r + SLDI 011110 0000 ...... ..... ..... 011001 @elm_df + SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df + INSVE 011110 0101 ...... ..... ..... 011001 @elm_df + FCAF 011110 0000 . ..... ..... ..... 011010 @3rf FCUN 011110 0001 . ..... ..... ..... 011010 @3rf FCEQ 011110 0010 . ..... ..... ..... 011010 @3rf diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 7813c126069..95dcd4b5b06 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -29,15 +29,12 @@ enum { enum { /* ELM instructions df(bits 21..16) = _b, _h, _w, _d */ - OPC_SLDI_df = (0x0 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_CTCMSA = (0x0 << 22) | (0x3E << 16) | OPC_MSA_ELM, - OPC_SPLATI_df = (0x1 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_CFCMSA = (0x1 << 22) | (0x3E << 16) | OPC_MSA_ELM, OPC_COPY_S_df = (0x2 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_MOVE_V = (0x2 << 22) | (0x3E << 16) | OPC_MSA_ELM, OPC_COPY_U_df = (0x3 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_INSERT_df = (0x4 << 22) | (0x00 << 16) | OPC_MSA_ELM, - OPC_INSVE_df = (0x5 << 22) | (0x00 << 16) | OPC_MSA_ELM, }; static const char msaregnames[][6] = { @@ -561,6 +558,39 @@ static void gen_msa_elm_3e(DisasContext *ctx) tcg_temp_free_i32(tsr); } +static bool trans_msa_elm_df(DisasContext *ctx, arg_msa_elm *a, + void (*gen_msa_elm_df)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32, + TCGv_i32)) +{ + TCGv_i32 twd; + TCGv_i32 tws; + TCGv_i32 tdf; + TCGv_i32 tn; + uint32_t df, n; + + if (!df_extract(df_elm, a->df, &df, &n)) { + gen_reserved_instruction(ctx); + return true; + } + + twd = tcg_const_i32(a->wd); + tws = tcg_const_i32(a->ws); + tdf = tcg_constant_i32(df); + tn = tcg_constant_i32(n); + + gen_msa_elm_df(cpu_env, tdf, twd, tws, tn); + + tcg_temp_free_i32(tws); + tcg_temp_free_i32(twd); + + return true; +} + +TRANS_MSA(SLDI, trans_msa_elm_df, gen_helper_msa_sldi_df); +TRANS_MSA(SPLATI, trans_msa_elm_df, gen_helper_msa_splati_df); +TRANS_MSA(INSVE, trans_msa_elm_df, gen_helper_msa_insve_df); + static void gen_msa_elm_df(DisasContext *ctx, uint32_t df, uint32_t n) { #define MASK_MSA_ELM(op) (MASK_MSA_MINOR(op) | (op & (0xf << 22))) @@ -570,18 +600,8 @@ static void gen_msa_elm_df(DisasContext *ctx, uint32_t df, uint32_t n) TCGv_i32 tws = tcg_const_i32(ws); TCGv_i32 twd = tcg_const_i32(wd); TCGv_i32 tn = tcg_const_i32(n); - TCGv_i32 tdf = tcg_constant_i32(df); switch (MASK_MSA_ELM(ctx->opcode)) { - case OPC_SLDI_df: - gen_helper_msa_sldi_df(cpu_env, tdf, twd, tws, tn); - break; - case OPC_SPLATI_df: - gen_helper_msa_splati_df(cpu_env, tdf, twd, tws, tn); - break; - case OPC_INSVE_df: - gen_helper_msa_insve_df(cpu_env, tdf, twd, tws, tn); - break; case OPC_COPY_S_df: case OPC_COPY_U_df: case OPC_INSERT_df: From patchwork Sat Oct 23 21:47:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545269 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=bZ1e+UBc; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFjS70K0z9sS8 for ; Sun, 24 Oct 2021 09:08:44 +1100 (AEDT) Received: from localhost ([::1]:40716 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePBy-0004PP-Ow for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:08:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41138) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOuF-0007gz-9t for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:23 -0400 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]:41528) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOuD-00065i-HM for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:22 -0400 Received: by mail-wr1-x432.google.com with SMTP id d3so634461wrh.8 for ; Sat, 23 Oct 2021 14:50:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qDHiAkaJ1MayXxmzfFfuU1YwcKAXMhm8sLiXLX0b59w=; b=bZ1e+UBcAC7eng1B6TS6tCPYnCQzm929hgRmbOTFfnYHC5Bzjr2De+A+AsgGjgTbCL PBFuOjfFSl5Yq8oVSaWE9Sy5mLMm3GzXaSyK3G2a8D3O/7nchDI0ZJN1uNDqv9L6MK8U ZmWjZaj6vZQp+rjPtrE1umpFGqEOaUQRhKvPGf9JitidOSYh+5DEAlJeeALlDlM4XcES SqMlffCu5LTJ7IaXlHiO0wHW564phjTBhKz+YxWFVPLK7oLYvM6c/z9uk7Nc319nXO7H Y8W6am6+FCvVJRji75uVhdRW2B/agbFIV8sFquz7Mq7fHrabUQOHmVUtebHOrey0eQxg +Odg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=qDHiAkaJ1MayXxmzfFfuU1YwcKAXMhm8sLiXLX0b59w=; b=5Dsz6Br0oFpBIotlTgpWOyiIVaFDt+YIA3YiY2BzznCYv4My9FbrBStkweU2LMMUsp o5ZyXmvTrt6yXsc6y/MEx0EttUEUgLtkGywyvIVrlv8PGbaWGI6UYGBc/zyk2uPKIszM pkGnPtLnr8+ujw/9fJjg2d+LBdMPYPM0IJ/9cgzrd5gACwDgG5uW5UcCzjz2YtnieUkF jyocQVxkGyNgoTNURGT/T6zrYOX/fhjKPW4ynU/1+srVL9r65cA2ye4PtVKpI5THlfO8 vGk/ecQHJXNgwxzYVqrICSbmQV+vBd4Q8LgC2JhiWV3ZlhGV61QDAACYWInMyna1eAgz LDhA== X-Gm-Message-State: AOAM533IqJB2TKk63c+3fokpYVrTRQIDSMxQwST5JMkE7BaooAnlUdxk uFpOgmm6Imtd2SWW9je+25/CmS8oBZk= X-Google-Smtp-Source: ABdhPJxpj/9uEE2b9gny23sMxoBmadNo7ZQmtnzETbtQw53X6Fiad7p/JRLZd0HOTPQ58gtAk6RNYg== X-Received: by 2002:a05:6000:18af:: with SMTP id b15mr8046579wri.359.1635025819944; Sat, 23 Oct 2021 14:50:19 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id 126sm6044486wmz.28.2021.10.23.14.50.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:19 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 27/33] target/mips: Convert MSA COPY_U opcode to decodetree Date: Sat, 23 Oct 2021 23:47:57 +0200 Message-Id: <20211023214803.522078-28-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::432; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x432.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert the COPY_U opcode (Element Copy to GPR Unsigned) to decodetree. Since the 'n' field is a constant value, use tcg_constant_i32() instead of a TCG temporary. Signed-off-by: Philippe Mathieu-Daudé --- target/mips/tcg/msa.decode | 1 + target/mips/tcg/msa_translate.c | 90 +++++++++++++++++++++++---------- 2 files changed, 65 insertions(+), 26 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 0f1674cd318..80a06d12746 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -156,6 +156,7 @@ BNZ 010001 111 .. ..... ................ @bz SLDI 011110 0000 ...... ..... ..... 011001 @elm_df SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df + COPY_U 011110 0011 ...... ..... ..... 011001 @elm_df INSVE 011110 0101 ...... ..... ..... 011001 @elm_df FCAF 011110 0000 . ..... ..... ..... 011010 @3rf diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 95dcd4b5b06..e033b365fdd 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -33,7 +33,6 @@ enum { OPC_CFCMSA = (0x1 << 22) | (0x3E << 16) | OPC_MSA_ELM, OPC_COPY_S_df = (0x2 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_MOVE_V = (0x2 << 22) | (0x3E << 16) | OPC_MSA_ELM, - OPC_COPY_U_df = (0x3 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_INSERT_df = (0x4 << 22) | (0x00 << 16) | OPC_MSA_ELM, }; @@ -139,6 +138,11 @@ static inline bool check_msa_access(DisasContext *ctx) TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, \ NULL, gen_func##_h, gen_func##_w, gen_func##_d) +#define TRANS_DF_W64(NAME, trans_func, gen_func) \ + TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, \ + DF_HALF, DF_WORD, \ + gen_func##_b, gen_func##_h, gen_func##_w, NULL) + static void gen_check_zero_element(TCGv tresult, uint8_t df, uint8_t wt, TCGCond cond) { @@ -591,6 +595,65 @@ TRANS_MSA(SLDI, trans_msa_elm_df, gen_helper_msa_sldi_df); TRANS_MSA(SPLATI, trans_msa_elm_df, gen_helper_msa_splati_df); TRANS_MSA(INSVE, trans_msa_elm_df, gen_helper_msa_insve_df); +static bool trans_msa_elm_d64(DisasContext *ctx, arg_msa_elm *a, + enum CPUMIPSMSADataFormat df_max32, + enum CPUMIPSMSADataFormat df_max64, + void (*gen_msa_elm_b)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32), + void (*gen_msa_elm_h)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32), + void (*gen_msa_elm_w)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32), + void (*gen_msa_elm_d)(TCGv_ptr, TCGv_i32, + TCGv_i32, TCGv_i32)) +{ + TCGv_i32 twd; + TCGv_i32 tws; + TCGv_i32 tn; + uint32_t df, n; + + if (!df_extract(df_elm, a->df, &df, &n)) { + gen_reserved_instruction(ctx); + return true; + } + + if (df > (TARGET_LONG_BITS == 64 ? df_max64 : df_max32)) { + gen_reserved_instruction(ctx); + return true; + } + + if (a->wd == 0) { + /* Treat as NOP. */ + return true; + } + + twd = tcg_const_i32(a->wd); + tws = tcg_const_i32(a->ws); + tn = tcg_constant_i32(n); + + switch (a->df) { + case DF_BYTE: + gen_msa_elm_b(cpu_env, twd, tws, tn); + break; + case DF_HALF: + gen_msa_elm_h(cpu_env, twd, tws, tn); + break; + case DF_WORD: + gen_msa_elm_w(cpu_env, twd, tws, tn); + break; + case DF_DOUBLE: + g_assert_not_reached(); + break; + } + + tcg_temp_free_i32(tws); + tcg_temp_free_i32(twd); + + return true; +} + +TRANS_DF_W64(COPY_U, trans_msa_elm_d64, gen_helper_msa_copy_u); + static void gen_msa_elm_df(DisasContext *ctx, uint32_t df, uint32_t n) { #define MASK_MSA_ELM(op) (MASK_MSA_MINOR(op) | (op & (0xf << 22))) @@ -603,7 +666,6 @@ static void gen_msa_elm_df(DisasContext *ctx, uint32_t df, uint32_t n) switch (MASK_MSA_ELM(ctx->opcode)) { case OPC_COPY_S_df: - case OPC_COPY_U_df: case OPC_INSERT_df: #if !defined(TARGET_MIPS64) /* Double format valid only for MIPS64 */ @@ -611,11 +673,6 @@ static void gen_msa_elm_df(DisasContext *ctx, uint32_t df, uint32_t n) gen_reserved_instruction(ctx); break; } - if ((MASK_MSA_ELM(ctx->opcode) == OPC_COPY_U_df) && - (df == DF_WORD)) { - gen_reserved_instruction(ctx); - break; - } #endif switch (MASK_MSA_ELM(ctx->opcode)) { case OPC_COPY_S_df: @@ -634,25 +691,6 @@ static void gen_msa_elm_df(DisasContext *ctx, uint32_t df, uint32_t n) case DF_DOUBLE: gen_helper_msa_copy_s_d(cpu_env, twd, tws, tn); break; -#endif - default: - assert(0); - } - } - break; - case OPC_COPY_U_df: - if (likely(wd != 0)) { - switch (df) { - case DF_BYTE: - gen_helper_msa_copy_u_b(cpu_env, twd, tws, tn); - break; - case DF_HALF: - gen_helper_msa_copy_u_h(cpu_env, twd, tws, tn); - break; -#if defined(TARGET_MIPS64) - case DF_WORD: - gen_helper_msa_copy_u_w(cpu_env, twd, tws, tn); - break; #endif default: assert(0); From patchwork Sat Oct 23 21:47:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545271 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=oEL4MThd; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFm66ZKVz9s1l for ; Sun, 24 Oct 2021 09:11:02 +1100 (AEDT) Received: from localhost ([::1]:47080 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePEC-0000Ly-7x for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:11:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41162) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOuK-0007nG-C7 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:31 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:38739) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOuI-00067n-01 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:27 -0400 Received: by mail-wm1-x32c.google.com with SMTP id a20-20020a1c7f14000000b003231d13ee3cso8255418wmd.3 for ; Sat, 23 Oct 2021 14:50:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ibIGTNc/VyjFjQlNiFJLRqQgcFwCs2aG6VjX1PSyJdM=; b=oEL4MThd0vAK56jT7P2Pmwfi75LD2av/x0C3hJDbrZHSIeqHt5WcX3v26cMlaNnWQk CZ23XH1tAVmCZhiHkpG1/dMj3YSEapTVqWE7JnHu06epi5ckpprTsRmc5+5kOmvZWUOH op+ummDH3RzzT4qEVIQPEo4QSGtvPUvitrds0FvpcTTCUsWUJf4MzMzg/FpGh+aanI5W UYmoHozM7ebjkbSY4oCWrY+v1jPMrJbHRQjQDpz2xHLK1bhZxbUTun0B4q32kO57773S ZtQ1uABGmWz4SepJR22I9b6gsZM4q9Z11G+SyOz+bgwJIlWbtU4YgNNU48TsLkoUxCq1 17lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ibIGTNc/VyjFjQlNiFJLRqQgcFwCs2aG6VjX1PSyJdM=; b=C/C1l3S5tgmeHbBDOCNF1BNIycOD784Kben9xmOi6zt41NvuG0EMpk2yfRZ3FmtKsO KciB0asUOC8luyicbxyVUtmixz4IGSgFYioszmndbwfpjy4NXODqscru5ylULePWXHpE 0AEXOpDHXQsPzD6wD0gRgLl2ctjVrFPBMMWEgjtLU3athP0kNAz52cW4/5YwlVIZWfSG 5sOPKTMNPKhk89t5deYygIAi3gIafvI2Yehf+AwTrv46cMPbxIWioKl9ujKlEG8deKUq 1KsBuQLLuIBe/XBkrtXHgi0tJ2BjZNx/n9vTrcNMfEycmLCbg2I48e2uid7a8M1E+NZj 6Lxg== X-Gm-Message-State: AOAM533AJfQCY37GtPjtbERdVeYzGD9LQF/aK+Q9yS6Why85E0HxDBkg Fcua/hedJAYQm4HSLQLfk3W7YC+6MGc= X-Google-Smtp-Source: ABdhPJxgUXFxc5RpGen/H2VaXAkUChYpT+FLv6tte1oicEfb6xlom4pCdyQA0H6hrx9uf1vwz6ptsA== X-Received: by 2002:a05:600c:4ece:: with SMTP id g14mr9283107wmq.95.1635025824519; Sat, 23 Oct 2021 14:50:24 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id p21sm939656wmc.11.2021.10.23.14.50.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:24 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 28/33] target/mips: Convert MSA COPY_S and INSERT opcodes to decodetree Date: Sat, 23 Oct 2021 23:47:58 +0200 Message-Id: <20211023214803.522078-29-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32c.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert the COPY_S (Element Copy to GPR Signed) opcode and INSERT (GPR Insert Element) opcode to decodetree. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 2 + target/mips/tcg/msa_translate.c | 92 ++++----------------------------- 2 files changed, 12 insertions(+), 82 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 80a06d12746..dc5e561b9dc 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -156,7 +156,9 @@ BNZ 010001 111 .. ..... ................ @bz SLDI 011110 0000 ...... ..... ..... 011001 @elm_df SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df + COPY_S 011110 0010 ...... ..... ..... 011001 @elm_df COPY_U 011110 0011 ...... ..... ..... 011001 @elm_df + INSERT 011110 0100 ...... ..... ..... 011001 @elm_df INSVE 011110 0101 ...... ..... ..... 011001 @elm_df FCAF 011110 0000 . ..... ..... ..... 011010 @3rf diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index e033b365fdd..ff5dbd99f84 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -31,9 +31,7 @@ enum { /* ELM instructions df(bits 21..16) = _b, _h, _w, _d */ OPC_CTCMSA = (0x0 << 22) | (0x3E << 16) | OPC_MSA_ELM, OPC_CFCMSA = (0x1 << 22) | (0x3E << 16) | OPC_MSA_ELM, - OPC_COPY_S_df = (0x2 << 22) | (0x00 << 16) | OPC_MSA_ELM, OPC_MOVE_V = (0x2 << 22) | (0x3E << 16) | OPC_MSA_ELM, - OPC_INSERT_df = (0x4 << 22) | (0x00 << 16) | OPC_MSA_ELM, }; static const char msaregnames[][6] = { @@ -138,6 +136,11 @@ static inline bool check_msa_access(DisasContext *ctx) TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, \ NULL, gen_func##_h, gen_func##_w, gen_func##_d) +#define TRANS_DF_D64(NAME, trans_func, gen_func) \ + TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, \ + DF_WORD, DF_DOUBLE, \ + gen_func##_b, gen_func##_h, gen_func##_w, gen_func##_d) + #define TRANS_DF_W64(NAME, trans_func, gen_func) \ TRANS_CHECK(NAME, check_msa_access(ctx), trans_func, \ DF_HALF, DF_WORD, \ @@ -642,7 +645,8 @@ static bool trans_msa_elm_d64(DisasContext *ctx, arg_msa_elm *a, gen_msa_elm_w(cpu_env, twd, tws, tn); break; case DF_DOUBLE: - g_assert_not_reached(); + assert(gen_msa_elm_d != NULL); + gen_msa_elm_d(cpu_env, twd, tws, tn); break; } @@ -652,97 +656,21 @@ static bool trans_msa_elm_d64(DisasContext *ctx, arg_msa_elm *a, return true; } +TRANS_DF_D64(COPY_S, trans_msa_elm_d64, gen_helper_msa_copy_s); TRANS_DF_W64(COPY_U, trans_msa_elm_d64, gen_helper_msa_copy_u); - -static void gen_msa_elm_df(DisasContext *ctx, uint32_t df, uint32_t n) -{ -#define MASK_MSA_ELM(op) (MASK_MSA_MINOR(op) | (op & (0xf << 22))) - uint8_t ws = (ctx->opcode >> 11) & 0x1f; - uint8_t wd = (ctx->opcode >> 6) & 0x1f; - - TCGv_i32 tws = tcg_const_i32(ws); - TCGv_i32 twd = tcg_const_i32(wd); - TCGv_i32 tn = tcg_const_i32(n); - - switch (MASK_MSA_ELM(ctx->opcode)) { - case OPC_COPY_S_df: - case OPC_INSERT_df: -#if !defined(TARGET_MIPS64) - /* Double format valid only for MIPS64 */ - if (df == DF_DOUBLE) { - gen_reserved_instruction(ctx); - break; - } -#endif - switch (MASK_MSA_ELM(ctx->opcode)) { - case OPC_COPY_S_df: - if (likely(wd != 0)) { - switch (df) { - case DF_BYTE: - gen_helper_msa_copy_s_b(cpu_env, twd, tws, tn); - break; - case DF_HALF: - gen_helper_msa_copy_s_h(cpu_env, twd, tws, tn); - break; - case DF_WORD: - gen_helper_msa_copy_s_w(cpu_env, twd, tws, tn); - break; -#if defined(TARGET_MIPS64) - case DF_DOUBLE: - gen_helper_msa_copy_s_d(cpu_env, twd, tws, tn); - break; -#endif - default: - assert(0); - } - } - break; - case OPC_INSERT_df: - switch (df) { - case DF_BYTE: - gen_helper_msa_insert_b(cpu_env, twd, tws, tn); - break; - case DF_HALF: - gen_helper_msa_insert_h(cpu_env, twd, tws, tn); - break; - case DF_WORD: - gen_helper_msa_insert_w(cpu_env, twd, tws, tn); - break; -#if defined(TARGET_MIPS64) - case DF_DOUBLE: - gen_helper_msa_insert_d(cpu_env, twd, tws, tn); - break; -#endif - default: - assert(0); - } - break; - } - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - } - tcg_temp_free_i32(twd); - tcg_temp_free_i32(tws); - tcg_temp_free_i32(tn); -} +TRANS_DF_D64(INSERT, trans_msa_elm_d64, gen_helper_msa_insert); static void gen_msa_elm(DisasContext *ctx) { uint8_t dfn = (ctx->opcode >> 16) & 0x3f; - uint32_t df, n; if (dfn == 0x3E) { /* CTCMSA, CFCMSA, MOVE.V */ gen_msa_elm_3e(ctx); return; - } else if (!df_extract(df_elm, dfn, &df, &n)) { - gen_reserved_instruction(ctx); - return; } - gen_msa_elm_df(ctx, df, n); + gen_reserved_instruction(ctx); } static bool trans_msa_3rf(DisasContext *ctx, arg_msa_r *a, From patchwork Sat Oct 23 21:47:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545274 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=b5P2lOaZ; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFpw3vqcz9s1l for ; Sun, 24 Oct 2021 09:13:27 +1100 (AEDT) Received: from localhost ([::1]:54440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePGV-0005S3-RF for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:13:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41184) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOuQ-0007oU-1B for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:35 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]:35437) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOuN-0006DE-M4 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:33 -0400 Received: by mail-wr1-x431.google.com with SMTP id s19so4729255wra.2 for ; Sat, 23 Oct 2021 14:50:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HfZ6rYii68KhWE0NxYMgEJrFZqSlTNn66/qs8YyNLIU=; b=b5P2lOaZ7D/lCmlqVKbwkOKW7tKR2tt8DVqF5l9iVps6Bat/Ho1oHlEJhaDC/7/dS1 MlkZNBXEZwNb7caPWXKS+Ag0EkuuCYuw0EzxXBvrtuQA5dJdKzDEmjdFmvr7IKnfL34s dWJ2JmomnAQkrMkkfDj/p5ND5pOCOJ66sTdghF2/nKBasOSA6WjkI6GUNmhJeaQGqON1 8Y54pjhhwroegEZlnaXFXnnNP1reC8Dn4fSF0vMWZsHdDUroL8a2WZlcugoJjR1JaB4u YZlvJvShnLLhdIbSo9d3ERKnFaEWFV/Hu9hkpJ/DM4O7iYkjgJvw8YY36fBfGLsV0zDk /pnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=HfZ6rYii68KhWE0NxYMgEJrFZqSlTNn66/qs8YyNLIU=; b=NTZdO9Ydj813a+IGZ7sg5jtugxwoE3Xlx58cxNidMVr1e52pG8WRlx8gqA1a1C/Rnh I4+8P6i6QYN8Pdbt5pjzLmWNGw7y1NCfZmgD34mNZCm+31yFT5rTKPHxM2RLcMEA4Wub UVLdIwnbF8NpG/DBEJTgjypp3E9r7JQ55LSF84G8Nz/MOc4n0saIm0qZGzTIFjLhHFAO yu3uFQepJrvzYCyfAeAGOpWeJNDm2Orh4UHSYzWd+q4RiKYOvLNz9Dvz5KVqkiOB9HO2 mgMaYXbj5W0bEjt9wjpgBnJCJHXhIK7GpQvS7epuSi0Abnn4U7u79NaMHhlBzj8wOemO VRTw== X-Gm-Message-State: AOAM532OgEA8ohOe6PRK043moT4TtmAEMG9m6SBY6xZ2VN81yEjReKDg ZU78DOcrE5S8V9DgCuHcla8/TbZw6CE= X-Google-Smtp-Source: ABdhPJzHl+dSkHrDEutBsmvOsxRXFXrwBYpTfYv81up4a8FN18pxemoVORvrAM67GePLoSo/MzzUQw== X-Received: by 2002:a05:6000:186a:: with SMTP id d10mr10855818wri.279.1635025829325; Sat, 23 Oct 2021 14:50:29 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id z6sm15392203wmp.1.2021.10.23.14.50.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:28 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 29/33] target/mips: Convert MSA MOVE.V opcode to decodetree Date: Sat, 23 Oct 2021 23:47:59 +0200 Message-Id: <20211023214803.522078-30-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::431; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x431.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert the MOVE.V opcode (Vector Move) to decodetree. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 6 +++++- target/mips/tcg/msa_translate.c | 26 +++++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index dc5e561b9dc..1bde1983de3 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -23,6 +23,7 @@ @bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 @bz ...... ... df:2 wt:5 sa:16 &msa_bz @elm_df ...... .... df:6 ws:5 wd:5 ...... &msa_elm +@elm ...... .......... ws:5 wd:5 ...... &msa_elm df=0 @vec ...... ..... wt:5 ws:5 wd:5 ...... &msa_r df=0 @2r ...... ........ df:2 ws:5 wd:5 ...... &msa_r wt=0 @2rf ...... ......... df:1 ws:5 wd:5 ...... &msa_r wt=0 @@ -156,7 +157,10 @@ BNZ 010001 111 .. ..... ................ @bz SLDI 011110 0000 ...... ..... ..... 011001 @elm_df SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df - COPY_S 011110 0010 ...... ..... ..... 011001 @elm_df + { + MOVE_V 011110 0010111110 ..... ..... 011001 @elm + COPY_S 011110 0010 ...... ..... ..... 011001 @elm_df + } COPY_U 011110 0011 ...... ..... ..... 011001 @elm_df INSERT 011110 0100 ...... ..... ..... 011001 @elm_df INSVE 011110 0101 ...... ..... ..... 011001 @elm_df diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index ff5dbd99f84..b03cde964e0 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -31,7 +31,6 @@ enum { /* ELM instructions df(bits 21..16) = _b, _h, _w, _d */ OPC_CTCMSA = (0x0 << 22) | (0x3E << 16) | OPC_MSA_ELM, OPC_CFCMSA = (0x1 << 22) | (0x3E << 16) | OPC_MSA_ELM, - OPC_MOVE_V = (0x2 << 22) | (0x3E << 16) | OPC_MSA_ELM, }; static const char msaregnames[][6] = { @@ -533,6 +532,26 @@ TRANS_DF_B(HADD_U, trans_msa_3r, gen_helper_msa_hadd_u); TRANS_DF_B(HSUB_S, trans_msa_3r, gen_helper_msa_hsub_s); TRANS_DF_B(HSUB_U, trans_msa_3r, gen_helper_msa_hsub_u); +static bool trans_MOVE_V(DisasContext *ctx, arg_msa_elm *a) +{ + TCGv_i32 tsr; + TCGv_i32 tdt; + + if (!check_msa_access(ctx)) { + return false; + } + + tsr = tcg_const_i32(a->ws); + tdt = tcg_const_i32(a->wd); + + gen_helper_msa_move_v(cpu_env, tdt, tsr); + + tcg_temp_free_i32(tdt); + tcg_temp_free_i32(tsr); + + return true; +} + static void gen_msa_elm_3e(DisasContext *ctx) { #define MASK_MSA_ELM_DF3E(op) (MASK_MSA_MINOR(op) | (op & (0x3FF << 16))) @@ -551,9 +570,6 @@ static void gen_msa_elm_3e(DisasContext *ctx) gen_helper_msa_cfcmsa(telm, cpu_env, tsr); gen_store_gpr(telm, dest); break; - case OPC_MOVE_V: - gen_helper_msa_move_v(cpu_env, tdt, tsr); - break; default: MIPS_INVAL("MSA instruction"); gen_reserved_instruction(ctx); @@ -665,7 +681,7 @@ static void gen_msa_elm(DisasContext *ctx) uint8_t dfn = (ctx->opcode >> 16) & 0x3f; if (dfn == 0x3E) { - /* CTCMSA, CFCMSA, MOVE.V */ + /* CTCMSA, CFCMSA */ gen_msa_elm_3e(ctx); return; } From patchwork Sat Oct 23 21:48:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545272 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Mnt7o3k9; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFnD21Ghz9s1l for ; Sun, 24 Oct 2021 09:12:00 +1100 (AEDT) Received: from localhost ([::1]:49580 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePF8-0002Eg-0Y for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:11:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41202) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOuW-0007su-OY for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:43 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]:53232) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOuR-0006Fi-Gz for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:38 -0400 Received: by mail-wm1-x334.google.com with SMTP id m42so6573336wms.2 for ; Sat, 23 Oct 2021 14:50:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hFBg7Xzxc2sF0VEfzsaEDrCd/QEx1NCLFI179J2xsC8=; b=Mnt7o3k93l07KIO71V/yFO8nil6ft07wik+jPArGKgNtnJcWBTC+dkDKRkHKaQjfNL ZllQpxBQYArdJD2JdKmAM2Zcd3zSx9CLijNLa4YQG/fstZQ+k0oS4b4BCFO9nCPZLo7S EAHMebhQl7hcAI4rFd9BHIi/QVPCelysmDYRFFFGEmhbsiiDmnH+d6oUZp2z3/QLbmaA vBOReKsNKz9KU+JsaX7MEp0sFp539j7tgDkhWU57r7suUUApkdnq4O2N/Gvylac/Mqdj fd1ljUh8pxul9NMHDeZXrff9C0l7lwauhBlUaMZfb0z8eaDct/v4xO+aZlhAz7rMmSQb CZTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=hFBg7Xzxc2sF0VEfzsaEDrCd/QEx1NCLFI179J2xsC8=; b=Sj31FgrPDYpAVfW9EguUEWVhM/rJ25BUylVF5ilFRvyjhJ+iwn9ez1kggDmGwr6ZvH A1Sgt/2eUZuzPrl3LTHZn4OePhVqPcXknRlmt00sX8Cjn8TONHlVf/AjcF5/A9XxQ0E0 MeSLHXGLGD9iwK4ZqzjpWt6muzRD9aQ/nhqhTwxtFYoyriSaAHenPZS+YgyHqhRC7pqq jrngp5KLJRycAedeaHA5hFcot1pgQpYhU/jVVg1J9AmEUxM2gjGMi1FV2wTkth72U/1P RdXeyI2CZCQZkZaAuZYjIKrQMcnymKJObaYfZOStrY43attN0ozSFP0Fl0Cz5dTPtaFJ sptQ== X-Gm-Message-State: AOAM533pbnBGJ5BgQl8y03nKVjBARlwoP7FwraAHTgE3Hg5B/0j1p0FF BOgr7U3Fh6yFwdm3jh1+HoP0wp2oxfA= X-Google-Smtp-Source: ABdhPJx16EnYMuqyLDx6SHqgVIIMJZDskLN9zvR6/ae3D5ig/8jmySKGsaCNsareYaX92FIrEVtFvA== X-Received: by 2002:a1c:c908:: with SMTP id f8mr38353804wmb.142.1635025834073; Sat, 23 Oct 2021 14:50:34 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id 19sm5816726wmb.24.2021.10.23.14.50.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:33 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 30/33] target/mips: Convert CFCMSA and CTCMSA opcodes to decodetree Date: Sat, 23 Oct 2021 23:48:00 +0200 Message-Id: <20211023214803.522078-31-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x334.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Convert the CFCMSA (Copy From Control MSA register) and CTCMSA (Copy To Control MSA register) opcodes to decodetree. Since they respectively overlap with the SLDI and SPLATI opcodes, use decodetree overlap groups. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 10 +++- target/mips/tcg/msa_translate.c | 95 ++++++++++++--------------------- 2 files changed, 42 insertions(+), 63 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 1bde1983de3..52dac0fde6d 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -155,8 +155,14 @@ BNZ 010001 111 .. ..... ................ @bz HSUB_S 011110 110.. ..... ..... ..... 010101 @3r HSUB_U 011110 111.. ..... ..... ..... 010101 @3r - SLDI 011110 0000 ...... ..... ..... 011001 @elm_df - SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df + { + CTCMSA 011110 0000111110 ..... ..... 011001 @elm + SLDI 011110 0000 ...... ..... ..... 011001 @elm_df + } + { + CFCMSA 011110 0001111110 ..... ..... 011001 @elm + SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df + } { MOVE_V 011110 0010111110 ..... ..... 011001 @elm COPY_S 011110 0010 ...... ..... ..... 011001 @elm_df diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index b03cde964e0..51af6f39cc4 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -20,19 +20,6 @@ /* Include the auto-generated decoder. */ #include "decode-msa.c.inc" -#define OPC_MSA (0x1E << 26) - -#define MASK_MSA_MINOR(op) (MASK_OP_MAJOR(op) | (op & 0x3F)) -enum { - OPC_MSA_ELM = 0x19 | OPC_MSA, -}; - -enum { - /* ELM instructions df(bits 21..16) = _b, _h, _w, _d */ - OPC_CTCMSA = (0x0 << 22) | (0x3E << 16) | OPC_MSA_ELM, - OPC_CFCMSA = (0x1 << 22) | (0x3E << 16) | OPC_MSA_ELM, -}; - static const char msaregnames[][6] = { "w0.d0", "w0.d1", "w1.d0", "w1.d1", "w2.d0", "w2.d1", "w3.d0", "w3.d1", @@ -552,33 +539,46 @@ static bool trans_MOVE_V(DisasContext *ctx, arg_msa_elm *a) return true; } -static void gen_msa_elm_3e(DisasContext *ctx) +static bool trans_CTCMSA(DisasContext *ctx, arg_msa_elm *a) { -#define MASK_MSA_ELM_DF3E(op) (MASK_MSA_MINOR(op) | (op & (0x3FF << 16))) - uint8_t source = (ctx->opcode >> 11) & 0x1f; - uint8_t dest = (ctx->opcode >> 6) & 0x1f; - TCGv telm = tcg_temp_new(); - TCGv_i32 tsr = tcg_const_i32(source); - TCGv_i32 tdt = tcg_const_i32(dest); + TCGv telm; + TCGv_i32 tdt; - switch (MASK_MSA_ELM_DF3E(ctx->opcode)) { - case OPC_CTCMSA: - gen_load_gpr(telm, source); - gen_helper_msa_ctcmsa(cpu_env, telm, tdt); - break; - case OPC_CFCMSA: - gen_helper_msa_cfcmsa(telm, cpu_env, tsr); - gen_store_gpr(telm, dest); - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - break; + if (!check_msa_access(ctx)) { + return false; } + telm = tcg_temp_new(); + tdt = tcg_const_i32(a->wd); + + gen_load_gpr(telm, a->ws); + gen_helper_msa_ctcmsa(cpu_env, telm, tdt); + tcg_temp_free(telm); tcg_temp_free_i32(tdt); + + return true; +} + +static bool trans_CFCMSA(DisasContext *ctx, arg_msa_elm *a) +{ + TCGv telm; + TCGv_i32 tsr; + + if (!check_msa_access(ctx)) { + return false; + } + + telm = tcg_temp_new(); + tsr = tcg_const_i32(a->ws); + + gen_helper_msa_cfcmsa(telm, cpu_env, tsr); + gen_store_gpr(telm, a->wd); + + tcg_temp_free(telm); tcg_temp_free_i32(tsr); + + return true; } static bool trans_msa_elm_df(DisasContext *ctx, arg_msa_elm *a, @@ -676,19 +676,6 @@ TRANS_DF_D64(COPY_S, trans_msa_elm_d64, gen_helper_msa_copy_s); TRANS_DF_W64(COPY_U, trans_msa_elm_d64, gen_helper_msa_copy_u); TRANS_DF_D64(INSERT, trans_msa_elm_d64, gen_helper_msa_insert); -static void gen_msa_elm(DisasContext *ctx) -{ - uint8_t dfn = (ctx->opcode >> 16) & 0x3f; - - if (dfn == 0x3E) { - /* CTCMSA, CFCMSA */ - gen_msa_elm_3e(ctx); - return; - } - - gen_reserved_instruction(ctx); -} - static bool trans_msa_3rf(DisasContext *ctx, arg_msa_r *a, enum CPUMIPSMSADataFormat df_base, void (*gen_msa_3rf)(TCGv_ptr, TCGv_i32, TCGv_i32, @@ -880,21 +867,7 @@ TRANS_MSA(BSEL_V, trans_msa_vec, gen_helper_msa_bsel_v); static bool trans_MSA(DisasContext *ctx, arg_MSA *a) { - uint32_t opcode = ctx->opcode; - - if (!check_msa_access(ctx)) { - return false; - } - - switch (MASK_MSA_MINOR(opcode)) { - case OPC_MSA_ELM: - gen_msa_elm(ctx); - break; - default: - MIPS_INVAL("MSA instruction"); - gen_reserved_instruction(ctx); - break; - } + gen_reserved_instruction(ctx); return true; } From patchwork Sat Oct 23 21:48:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545263 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=lUzLDqp3; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFZ26CvCz9s1l for ; Sun, 24 Oct 2021 09:02:18 +1100 (AEDT) Received: from localhost ([::1]:54666 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1meP5k-0003B9-LB for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:02:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41214) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOuY-0007sx-MM for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:43 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:33708) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOuW-0006HQ-HD for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:42 -0400 Received: by mail-wr1-x42a.google.com with SMTP id m22so1507861wrb.0 for ; Sat, 23 Oct 2021 14:50:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/DCgbVw+IWwtmfhUeAw0OJzG5d3SGRVlyig0pM8g5Pc=; b=lUzLDqp3jtACykWhHjgcvlgfNJ4BPpYSRu9/XVThB2iSlCp8FPVKQ9kjYroJbOawm+ uFAgh5OayPQBv6d8oniGsdzf/rr1S4WvPMPLnyqnV//JfIxHigDyeEo/nM0SPDK/0eme 9K13Vbge71e8pV6Py6EB5b/mbwuyuFN61oEKipoVhgej18A0JoEWwvNTVKT0CIK+mRe4 NB2dSUjMHCrFi9oDkvG1bxJXe8wiZZM6RutKtzUfcKnXTfvRb5v741xE+ejwFr1qb3gi XPSmcmz1W4mBNKQgRY+etCMlC+QdqWOn3VBLoKFRgJk20o7Sjem1lWMXs1UakvYMhZZp AKVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=/DCgbVw+IWwtmfhUeAw0OJzG5d3SGRVlyig0pM8g5Pc=; b=c4ukRlSBAViThPbQeHh7+N6nEGjOv8oo2sB5YMYLW2Syziiwu3lNS7eeKNz+27n619 iGs750jrUBAI68C0WSjeT4Tw6als7tG5OHVRuJXOeYu462NVnT4pJSdpselZIUMyi38E 9cx7fHSreLC0VKS6tEA0d+D115J1Ahu/UMmzUWWBFCPdbN50bQ+nY5OLIOYI9+6G4kkk 9SUZU85m7/P4tX8yJlGWSfqZNAbrCrvOvzUlHRlIE1AW/P+X0j/M7PJrM0HFkV+by0Hh dAjK3G23K8idyQKOuhHqtpGU6jlasGHibUtLLwwyyRhGKzm9ImIIXdZ4/DKYBKuR4D35 QFQw== X-Gm-Message-State: AOAM5325OfudBk4BoMGBBkZ1h//48VnWRarVMR6XA7Nvvjovw8euQnL6 EbKh3SdS4ybZZTBnxm2n235lPACUbXE= X-Google-Smtp-Source: ABdhPJwzcYgLCMgXjh4owB7y6WR4htDU7K0R0civQf3D+XVYiVs5I2jRyoWdfEsnxTPVshYBt+1rHA== X-Received: by 2002:a5d:4949:: with SMTP id r9mr1857262wrs.439.1635025839117; Sat, 23 Oct 2021 14:50:39 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id o10sm12999826wmq.46.2021.10.23.14.50.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:38 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 31/33] target/mips: Remove generic MSA opcode Date: Sat, 23 Oct 2021 23:48:01 +0200 Message-Id: <20211023214803.522078-32-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42a.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" All opcodes have been converted to decodetree. The generic MSA handler is now pointless, remove it. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 2 -- target/mips/tcg/msa_translate.c | 7 ------- 2 files changed, 9 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 52dac0fde6d..8189eae3499 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -245,6 +245,4 @@ BNZ 010001 111 .. ..... ................ @bz LD 011110 .......... ..... ..... 1000 .. @ldst ST 011110 .......... ..... ..... 1001 .. @ldst - - MSA 011110 -------------------------- } diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 51af6f39cc4..5d8cad378e6 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -865,13 +865,6 @@ TRANS_MSA(BMNZ_V, trans_msa_vec, gen_helper_msa_bmnz_v); TRANS_MSA(BMZ_V, trans_msa_vec, gen_helper_msa_bmz_v); TRANS_MSA(BSEL_V, trans_msa_vec, gen_helper_msa_bsel_v); -static bool trans_MSA(DisasContext *ctx, arg_MSA *a) -{ - gen_reserved_instruction(ctx); - - return true; -} - static bool trans_msa_ldst(DisasContext *ctx, arg_msa_ldst *a, void (*gen_msa_b)(TCGv_ptr, TCGv_i32, TCGv), void (*gen_msa_h)(TCGv_ptr, TCGv_i32, TCGv), From patchwork Sat Oct 23 21:48:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545277 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=UYtzagVd; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFsm5DzLz9s1l for ; Sun, 24 Oct 2021 09:15:56 +1100 (AEDT) Received: from localhost ([::1]:60842 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePIw-0001Hm-GW for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:15:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41238) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOug-00086e-8l for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:53 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]:42680) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOuc-0006Jr-88 for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:48 -0400 Received: by mail-wr1-x434.google.com with SMTP id v17so3527341wrv.9 for ; Sat, 23 Oct 2021 14:50:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5T4gXPoUo/qza6spxy7SgG6iv4hgkAkl7bCbMPO3Vzc=; b=UYtzagVdXoenxfrIq7nDfSM6Spoj7mYlvpQ3V9L70aW1hEJP4Or3lYRrY0r4YTNQ/O uaesm7CSfCvO0jSoqHLsMWxi1KWCGV8dQ56hfethspcI3pkpqzU3HMMs6hRZ5pz4Sl/R +7HhJnKcFiU2mdQAK+GZGhcauTeioKZ2M5s/ouDmhtyO63OMen6Bkip53WRag//0FXVh R+gsRCqUX1+HRSPXOcky0KedK8MThblMIdYd0NfXLVCc6H4gZzBARC9etuV0ucJnCeTy 4rw+5si/plYjhXYbIubWFcro8wEDne+5y/fJRrHCtdrCOGk9VLjoMlrejGxyl5QpLUhd hdow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=5T4gXPoUo/qza6spxy7SgG6iv4hgkAkl7bCbMPO3Vzc=; b=fGMjaLsb6Q5UcoprsqESC/77xsnhINM2uLRFzTHz0ksETrQ6bHghJa13gApqJ/T6qX XFYSzOx0OA2QwDMmQ5bwRI7/FypbspI+F5djOJ7YZo/J+9f+z9s9Za2PLkgcIkz0bKnF mns8CJ9IWWVtaGeTCuHOD7xMK8YI2TRNzumP+JBkKdvWMx7xhE0WajNTepO2j3JDkyKl iKdSwLVZvRGlBsEaY4PQOe8Jsurk8eUwU5pA0Vk0GiVhVYxkqYT0osyzVE7/C/AqAqrJ zaZAaL4XBcqO8lor8iQ77/B5TbHEgObJn5BEWxxQcPOmHUsmybazTGzx6t550Lmu5G2b fJYQ== X-Gm-Message-State: AOAM532eeh3k3MQH7V2Oh6PHglEqydkWKUk+2eXZaxBzr2XhaU1JB4/m HjN4Fi3TNOGvoMSZOceXc8DwVC9OBdw= X-Google-Smtp-Source: ABdhPJwfG2q3QIgO6Wr1XGyAdyclFIdFdWvOXpkx79P2jFY19AcfCgt0AfZFxnfEFfgGpi7o0OJ5lQ== X-Received: by 2002:adf:c986:: with SMTP id f6mr11044180wrh.216.1635025843889; Sat, 23 Oct 2021 14:50:43 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id e6sm5082225wrr.69.2021.10.23.14.50.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:43 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 32/33] target/mips: Remove one MSA unnecessary decodetree overlap group Date: Sat, 23 Oct 2021 23:48:02 +0200 Message-Id: <20211023214803.522078-33-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x434.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Only the MSA generic opcode was overlapping with the other instructions. Since the previous commit removed it, we can now remove the overlap group. The decodetree script forces us to re-indent the opcodes. Diff trivial to review using `git-diff --ignore-all-space`. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa.decode | 398 ++++++++++++++++++------------------- 1 file changed, 198 insertions(+), 200 deletions(-) diff --git a/target/mips/tcg/msa.decode b/target/mips/tcg/msa.decode index 8189eae3499..9af995b71b6 100644 --- a/target/mips/tcg/msa.decode +++ b/target/mips/tcg/msa.decode @@ -44,205 +44,203 @@ BNZ_V 010001 01111 ..... ................ @bz_v BZ 010001 110 .. ..... ................ @bz BNZ 010001 111 .. ..... ................ @bz +ANDI 011110 00 ........ ..... ..... 000000 @i8 +ORI 011110 01 ........ ..... ..... 000000 @i8 +NORI 011110 10 ........ ..... ..... 000000 @i8 +XORI 011110 11 ........ ..... ..... 000000 @i8 +BMNZI 011110 00 ........ ..... ..... 000001 @i8 +BMZI 011110 01 ........ ..... ..... 000001 @i8 +BSELI 011110 10 ........ ..... ..... 000001 @i8 +SHF 011110 .. ........ ..... ..... 000010 @i8_df + +ADDVI 011110 000 .. ..... ..... ..... 000110 @u5 +SUBVI 011110 001 .. ..... ..... ..... 000110 @u5 +MAXI_S 011110 010 .. ..... ..... ..... 000110 @s5 +MAXI_U 011110 011 .. ..... ..... ..... 000110 @u5 +MINI_S 011110 100 .. ..... ..... ..... 000110 @s5 +MINI_U 011110 101 .. ..... ..... ..... 000110 @u5 + +CEQI 011110 000 .. ..... ..... ..... 000111 @s5 +CLTI_S 011110 010 .. ..... ..... ..... 000111 @s5 +CLTI_U 011110 011 .. ..... ..... ..... 000111 @u5 +CLEI_S 011110 100 .. ..... ..... ..... 000111 @s5 +CLEI_U 011110 101 .. ..... ..... ..... 000111 @u5 + +LDI 011110 110 .. .......... ..... 000111 @ldi + +SLLI 011110 000 ....... ..... ..... 001001 @bit +SRAI 011110 001 ....... ..... ..... 001001 @bit +SRLI 011110 010 ....... ..... ..... 001001 @bit +BCLRI 011110 011 ....... ..... ..... 001001 @bit +BSETI 011110 100 ....... ..... ..... 001001 @bit +BNEGI 011110 101 ....... ..... ..... 001001 @bit +BINSLI 011110 110 ....... ..... ..... 001001 @bit +BINSRI 011110 111 ....... ..... ..... 001001 @bit + +SAT_S 011110 000 ....... ..... ..... 001010 @bit +SAT_U 011110 001 ....... ..... ..... 001010 @bit +SRARI 011110 010 ....... ..... ..... 001010 @bit +SRLRI 011110 011 ....... ..... ..... 001010 @bit + +SLL 011110 000.. ..... ..... ..... 001101 @3r +SRA 011110 001.. ..... ..... ..... 001101 @3r +SRL 011110 010.. ..... ..... ..... 001101 @3r +BCLR 011110 011.. ..... ..... ..... 001101 @3r +BSET 011110 100.. ..... ..... ..... 001101 @3r +BNEG 011110 101.. ..... ..... ..... 001101 @3r +BINSL 011110 110.. ..... ..... ..... 001101 @3r +BINSR 011110 111.. ..... ..... ..... 001101 @3r + +ADDV 011110 000.. ..... ..... ..... 001110 @3r +SUBV 011110 001.. ..... ..... ..... 001110 @3r +MAX_S 011110 010.. ..... ..... ..... 001110 @3r +MAX_U 011110 011.. ..... ..... ..... 001110 @3r +MIN_S 011110 100.. ..... ..... ..... 001110 @3r +MIN_U 011110 101.. ..... ..... ..... 001110 @3r +MAX_A 011110 110.. ..... ..... ..... 001110 @3r +MIN_A 011110 111.. ..... ..... ..... 001110 @3r + +CEQ 011110 000.. ..... ..... ..... 001111 @3r +CLT_S 011110 010.. ..... ..... ..... 001111 @3r +CLT_U 011110 011.. ..... ..... ..... 001111 @3r +CLE_S 011110 100.. ..... ..... ..... 001111 @3r +CLE_U 011110 101.. ..... ..... ..... 001111 @3r + +ADD_A 011110 000.. ..... ..... ..... 010000 @3r +ADDS_A 011110 001.. ..... ..... ..... 010000 @3r +ADDS_S 011110 010.. ..... ..... ..... 010000 @3r +ADDS_U 011110 011.. ..... ..... ..... 010000 @3r +AVE_S 011110 100.. ..... ..... ..... 010000 @3r +AVE_U 011110 101.. ..... ..... ..... 010000 @3r +AVER_S 011110 110.. ..... ..... ..... 010000 @3r +AVER_U 011110 111.. ..... ..... ..... 010000 @3r + +SUBS_S 011110 000.. ..... ..... ..... 010001 @3r +SUBS_U 011110 001.. ..... ..... ..... 010001 @3r +SUBSUS_U 011110 010.. ..... ..... ..... 010001 @3r +SUBSUU_S 011110 011.. ..... ..... ..... 010001 @3r +ASUB_S 011110 100.. ..... ..... ..... 010001 @3r +ASUB_U 011110 101.. ..... ..... ..... 010001 @3r + +MULV 011110 000.. ..... ..... ..... 010010 @3r +MADDV 011110 001.. ..... ..... ..... 010010 @3r +MSUBV 011110 010.. ..... ..... ..... 010010 @3r +DIV_S 011110 100.. ..... ..... ..... 010010 @3r +DIV_U 011110 101.. ..... ..... ..... 010010 @3r +MOD_S 011110 110.. ..... ..... ..... 010010 @3r +MOD_U 011110 111.. ..... ..... ..... 010010 @3r + +DOTP_S 011110 000.. ..... ..... ..... 010011 @3r +DOTP_U 011110 001.. ..... ..... ..... 010011 @3r +DPADD_S 011110 010.. ..... ..... ..... 010011 @3r +DPADD_U 011110 011.. ..... ..... ..... 010011 @3r +DPSUB_S 011110 100.. ..... ..... ..... 010011 @3r +DPSUB_U 011110 101.. ..... ..... ..... 010011 @3r + +SLD 011110 000 .. ..... ..... ..... 010100 @3r +SPLAT 011110 001 .. ..... ..... ..... 010100 @3r +PCKEV 011110 010 .. ..... ..... ..... 010100 @3r +PCKOD 011110 011 .. ..... ..... ..... 010100 @3r +ILVL 011110 100 .. ..... ..... ..... 010100 @3r +ILVR 011110 101 .. ..... ..... ..... 010100 @3r +ILVEV 011110 110 .. ..... ..... ..... 010100 @3r +ILVOD 011110 111 .. ..... ..... ..... 010100 @3r + +VSHF 011110 000 .. ..... ..... ..... 010101 @3r +SRAR 011110 001 .. ..... ..... ..... 010101 @3r +SRLR 011110 010 .. ..... ..... ..... 010101 @3r +HADD_S 011110 100.. ..... ..... ..... 010101 @3r +HADD_U 011110 101.. ..... ..... ..... 010101 @3r +HSUB_S 011110 110.. ..... ..... ..... 010101 @3r +HSUB_U 011110 111.. ..... ..... ..... 010101 @3r + { - ANDI 011110 00 ........ ..... ..... 000000 @i8 - ORI 011110 01 ........ ..... ..... 000000 @i8 - NORI 011110 10 ........ ..... ..... 000000 @i8 - XORI 011110 11 ........ ..... ..... 000000 @i8 - BMNZI 011110 00 ........ ..... ..... 000001 @i8 - BMZI 011110 01 ........ ..... ..... 000001 @i8 - BSELI 011110 10 ........ ..... ..... 000001 @i8 - SHF 011110 .. ........ ..... ..... 000010 @i8_df - - ADDVI 011110 000 .. ..... ..... ..... 000110 @u5 - SUBVI 011110 001 .. ..... ..... ..... 000110 @u5 - MAXI_S 011110 010 .. ..... ..... ..... 000110 @s5 - MAXI_U 011110 011 .. ..... ..... ..... 000110 @u5 - MINI_S 011110 100 .. ..... ..... ..... 000110 @s5 - MINI_U 011110 101 .. ..... ..... ..... 000110 @u5 - - CEQI 011110 000 .. ..... ..... ..... 000111 @s5 - CLTI_S 011110 010 .. ..... ..... ..... 000111 @s5 - CLTI_U 011110 011 .. ..... ..... ..... 000111 @u5 - CLEI_S 011110 100 .. ..... ..... ..... 000111 @s5 - CLEI_U 011110 101 .. ..... ..... ..... 000111 @u5 - - LDI 011110 110 .. .......... ..... 000111 @ldi - - SLLI 011110 000 ....... ..... ..... 001001 @bit - SRAI 011110 001 ....... ..... ..... 001001 @bit - SRLI 011110 010 ....... ..... ..... 001001 @bit - BCLRI 011110 011 ....... ..... ..... 001001 @bit - BSETI 011110 100 ....... ..... ..... 001001 @bit - BNEGI 011110 101 ....... ..... ..... 001001 @bit - BINSLI 011110 110 ....... ..... ..... 001001 @bit - BINSRI 011110 111 ....... ..... ..... 001001 @bit - - SAT_S 011110 000 ....... ..... ..... 001010 @bit - SAT_U 011110 001 ....... ..... ..... 001010 @bit - SRARI 011110 010 ....... ..... ..... 001010 @bit - SRLRI 011110 011 ....... ..... ..... 001010 @bit - - SLL 011110 000.. ..... ..... ..... 001101 @3r - SRA 011110 001.. ..... ..... ..... 001101 @3r - SRL 011110 010.. ..... ..... ..... 001101 @3r - BCLR 011110 011.. ..... ..... ..... 001101 @3r - BSET 011110 100.. ..... ..... ..... 001101 @3r - BNEG 011110 101.. ..... ..... ..... 001101 @3r - BINSL 011110 110.. ..... ..... ..... 001101 @3r - BINSR 011110 111.. ..... ..... ..... 001101 @3r - - ADDV 011110 000.. ..... ..... ..... 001110 @3r - SUBV 011110 001.. ..... ..... ..... 001110 @3r - MAX_S 011110 010.. ..... ..... ..... 001110 @3r - MAX_U 011110 011.. ..... ..... ..... 001110 @3r - MIN_S 011110 100.. ..... ..... ..... 001110 @3r - MIN_U 011110 101.. ..... ..... ..... 001110 @3r - MAX_A 011110 110.. ..... ..... ..... 001110 @3r - MIN_A 011110 111.. ..... ..... ..... 001110 @3r - - CEQ 011110 000.. ..... ..... ..... 001111 @3r - CLT_S 011110 010.. ..... ..... ..... 001111 @3r - CLT_U 011110 011.. ..... ..... ..... 001111 @3r - CLE_S 011110 100.. ..... ..... ..... 001111 @3r - CLE_U 011110 101.. ..... ..... ..... 001111 @3r - - ADD_A 011110 000.. ..... ..... ..... 010000 @3r - ADDS_A 011110 001.. ..... ..... ..... 010000 @3r - ADDS_S 011110 010.. ..... ..... ..... 010000 @3r - ADDS_U 011110 011.. ..... ..... ..... 010000 @3r - AVE_S 011110 100.. ..... ..... ..... 010000 @3r - AVE_U 011110 101.. ..... ..... ..... 010000 @3r - AVER_S 011110 110.. ..... ..... ..... 010000 @3r - AVER_U 011110 111.. ..... ..... ..... 010000 @3r - - SUBS_S 011110 000.. ..... ..... ..... 010001 @3r - SUBS_U 011110 001.. ..... ..... ..... 010001 @3r - SUBSUS_U 011110 010.. ..... ..... ..... 010001 @3r - SUBSUU_S 011110 011.. ..... ..... ..... 010001 @3r - ASUB_S 011110 100.. ..... ..... ..... 010001 @3r - ASUB_U 011110 101.. ..... ..... ..... 010001 @3r - - MULV 011110 000.. ..... ..... ..... 010010 @3r - MADDV 011110 001.. ..... ..... ..... 010010 @3r - MSUBV 011110 010.. ..... ..... ..... 010010 @3r - DIV_S 011110 100.. ..... ..... ..... 010010 @3r - DIV_U 011110 101.. ..... ..... ..... 010010 @3r - MOD_S 011110 110.. ..... ..... ..... 010010 @3r - MOD_U 011110 111.. ..... ..... ..... 010010 @3r - - DOTP_S 011110 000.. ..... ..... ..... 010011 @3r - DOTP_U 011110 001.. ..... ..... ..... 010011 @3r - DPADD_S 011110 010.. ..... ..... ..... 010011 @3r - DPADD_U 011110 011.. ..... ..... ..... 010011 @3r - DPSUB_S 011110 100.. ..... ..... ..... 010011 @3r - DPSUB_U 011110 101.. ..... ..... ..... 010011 @3r - - SLD 011110 000 .. ..... ..... ..... 010100 @3r - SPLAT 011110 001 .. ..... ..... ..... 010100 @3r - PCKEV 011110 010 .. ..... ..... ..... 010100 @3r - PCKOD 011110 011 .. ..... ..... ..... 010100 @3r - ILVL 011110 100 .. ..... ..... ..... 010100 @3r - ILVR 011110 101 .. ..... ..... ..... 010100 @3r - ILVEV 011110 110 .. ..... ..... ..... 010100 @3r - ILVOD 011110 111 .. ..... ..... ..... 010100 @3r - - VSHF 011110 000 .. ..... ..... ..... 010101 @3r - SRAR 011110 001 .. ..... ..... ..... 010101 @3r - SRLR 011110 010 .. ..... ..... ..... 010101 @3r - HADD_S 011110 100.. ..... ..... ..... 010101 @3r - HADD_U 011110 101.. ..... ..... ..... 010101 @3r - HSUB_S 011110 110.. ..... ..... ..... 010101 @3r - HSUB_U 011110 111.. ..... ..... ..... 010101 @3r - - { - CTCMSA 011110 0000111110 ..... ..... 011001 @elm - SLDI 011110 0000 ...... ..... ..... 011001 @elm_df - } - { - CFCMSA 011110 0001111110 ..... ..... 011001 @elm - SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df - } - { - MOVE_V 011110 0010111110 ..... ..... 011001 @elm - COPY_S 011110 0010 ...... ..... ..... 011001 @elm_df - } - COPY_U 011110 0011 ...... ..... ..... 011001 @elm_df - INSERT 011110 0100 ...... ..... ..... 011001 @elm_df - INSVE 011110 0101 ...... ..... ..... 011001 @elm_df - - FCAF 011110 0000 . ..... ..... ..... 011010 @3rf - FCUN 011110 0001 . ..... ..... ..... 011010 @3rf - FCEQ 011110 0010 . ..... ..... ..... 011010 @3rf - FCUEQ 011110 0011 . ..... ..... ..... 011010 @3rf - FCLT 011110 0100 . ..... ..... ..... 011010 @3rf - FCULT 011110 0101 . ..... ..... ..... 011010 @3rf - FCLE 011110 0110 . ..... ..... ..... 011010 @3rf - FCULE 011110 0111 . ..... ..... ..... 011010 @3rf - FSAF 011110 1000 . ..... ..... ..... 011010 @3rf - FSUN 011110 1001 . ..... ..... ..... 011010 @3rf - FSEQ 011110 1010 . ..... ..... ..... 011010 @3rf - FSUEQ 011110 1011 . ..... ..... ..... 011010 @3rf - FSLT 011110 1100 . ..... ..... ..... 011010 @3rf - FSULT 011110 1101 . ..... ..... ..... 011010 @3rf - FSLE 011110 1110 . ..... ..... ..... 011010 @3rf - FSULE 011110 1111 . ..... ..... ..... 011010 @3rf - - FADD 011110 0000 . ..... ..... ..... 011011 @3rf - FSUB 011110 0001 . ..... ..... ..... 011011 @3rf - FMUL 011110 0010 . ..... ..... ..... 011011 @3rf - FDIV 011110 0011 . ..... ..... ..... 011011 @3rf - FMADD 011110 0100 . ..... ..... ..... 011011 @3rf - FMSUB 011110 0101 . ..... ..... ..... 011011 @3rf - FEXP2 011110 0111 . ..... ..... ..... 011011 @3rf - FEXDO 011110 1000 . ..... ..... ..... 011011 @3rf - FTQ 011110 1010 . ..... ..... ..... 011011 @3rf - FMIN 011110 1100 . ..... ..... ..... 011011 @3rf - FMIN_A 011110 1101 . ..... ..... ..... 011011 @3rf - FMAX 011110 1110 . ..... ..... ..... 011011 @3rf - FMAX_A 011110 1111 . ..... ..... ..... 011011 @3rf - - FCOR 011110 0001 . ..... ..... ..... 011100 @3rf - FCUNE 011110 0010 . ..... ..... ..... 011100 @3rf - FCNE 011110 0011 . ..... ..... ..... 011100 @3rf - MUL_Q 011110 0100 . ..... ..... ..... 011100 @3rf - MADD_Q 011110 0101 . ..... ..... ..... 011100 @3rf - MSUB_Q 011110 0110 . ..... ..... ..... 011100 @3rf - FSOR 011110 1001 . ..... ..... ..... 011100 @3rf - FSUNE 011110 1010 . ..... ..... ..... 011100 @3rf - FSNE 011110 1011 . ..... ..... ..... 011100 @3rf - MULR_Q 011110 1100 . ..... ..... ..... 011100 @3rf - MADDR_Q 011110 1101 . ..... ..... ..... 011100 @3rf - MSUBR_Q 011110 1110 . ..... ..... ..... 011100 @3rf - - AND_V 011110 00000 ..... ..... ..... 011110 @vec - OR_V 011110 00001 ..... ..... ..... 011110 @vec - NOR_V 011110 00010 ..... ..... ..... 011110 @vec - XOR_V 011110 00011 ..... ..... ..... 011110 @vec - BMNZ_V 011110 00100 ..... ..... ..... 011110 @vec - BMZ_V 011110 00101 ..... ..... ..... 011110 @vec - BSEL_V 011110 00110 ..... ..... ..... 011110 @vec - FILL 011110 11000000 .. ..... ..... 011110 @2r - PCNT 011110 11000001 .. ..... ..... 011110 @2r - NLOC 011110 11000010 .. ..... ..... 011110 @2r - NLZC 011110 11000011 .. ..... ..... 011110 @2r - FCLASS 011110 110010000 . ..... ..... 011110 @2rf - FTRUNC_S 011110 110010001 . ..... ..... 011110 @2rf - FTRUNC_U 011110 110010010 . ..... ..... 011110 @2rf - FSQRT 011110 110010011 . ..... ..... 011110 @2rf - FRSQRT 011110 110010100 . ..... ..... 011110 @2rf - FRCP 011110 110010101 . ..... ..... 011110 @2rf - FRINT 011110 110010110 . ..... ..... 011110 @2rf - FLOG2 011110 110010111 . ..... ..... 011110 @2rf - FEXUPL 011110 110011000 . ..... ..... 011110 @2rf - FEXUPR 011110 110011001 . ..... ..... 011110 @2rf - FFQL 011110 110011010 . ..... ..... 011110 @2rf - FFQR 011110 110011011 . ..... ..... 011110 @2rf - FTINT_S 011110 110011100 . ..... ..... 011110 @2rf - FTINT_U 011110 110011101 . ..... ..... 011110 @2rf - FFINT_S 011110 110011110 . ..... ..... 011110 @2rf - FFINT_U 011110 110011111 . ..... ..... 011110 @2rf - - LD 011110 .......... ..... ..... 1000 .. @ldst - ST 011110 .......... ..... ..... 1001 .. @ldst + CTCMSA 011110 0000111110 ..... ..... 011001 @elm + SLDI 011110 0000 ...... ..... ..... 011001 @elm_df } +{ + CFCMSA 011110 0001111110 ..... ..... 011001 @elm + SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df +} +{ + MOVE_V 011110 0010111110 ..... ..... 011001 @elm + COPY_S 011110 0010 ...... ..... ..... 011001 @elm_df +} +COPY_U 011110 0011 ...... ..... ..... 011001 @elm_df +INSERT 011110 0100 ...... ..... ..... 011001 @elm_df +INSVE 011110 0101 ...... ..... ..... 011001 @elm_df + +FCAF 011110 0000 . ..... ..... ..... 011010 @3rf +FCUN 011110 0001 . ..... ..... ..... 011010 @3rf +FCEQ 011110 0010 . ..... ..... ..... 011010 @3rf +FCUEQ 011110 0011 . ..... ..... ..... 011010 @3rf +FCLT 011110 0100 . ..... ..... ..... 011010 @3rf +FCULT 011110 0101 . ..... ..... ..... 011010 @3rf +FCLE 011110 0110 . ..... ..... ..... 011010 @3rf +FCULE 011110 0111 . ..... ..... ..... 011010 @3rf +FSAF 011110 1000 . ..... ..... ..... 011010 @3rf +FSUN 011110 1001 . ..... ..... ..... 011010 @3rf +FSEQ 011110 1010 . ..... ..... ..... 011010 @3rf +FSUEQ 011110 1011 . ..... ..... ..... 011010 @3rf +FSLT 011110 1100 . ..... ..... ..... 011010 @3rf +FSULT 011110 1101 . ..... ..... ..... 011010 @3rf +FSLE 011110 1110 . ..... ..... ..... 011010 @3rf +FSULE 011110 1111 . ..... ..... ..... 011010 @3rf + +FADD 011110 0000 . ..... ..... ..... 011011 @3rf +FSUB 011110 0001 . ..... ..... ..... 011011 @3rf +FMUL 011110 0010 . ..... ..... ..... 011011 @3rf +FDIV 011110 0011 . ..... ..... ..... 011011 @3rf +FMADD 011110 0100 . ..... ..... ..... 011011 @3rf +FMSUB 011110 0101 . ..... ..... ..... 011011 @3rf +FEXP2 011110 0111 . ..... ..... ..... 011011 @3rf +FEXDO 011110 1000 . ..... ..... ..... 011011 @3rf +FTQ 011110 1010 . ..... ..... ..... 011011 @3rf +FMIN 011110 1100 . ..... ..... ..... 011011 @3rf +FMIN_A 011110 1101 . ..... ..... ..... 011011 @3rf +FMAX 011110 1110 . ..... ..... ..... 011011 @3rf +FMAX_A 011110 1111 . ..... ..... ..... 011011 @3rf + +FCOR 011110 0001 . ..... ..... ..... 011100 @3rf +FCUNE 011110 0010 . ..... ..... ..... 011100 @3rf +FCNE 011110 0011 . ..... ..... ..... 011100 @3rf +MUL_Q 011110 0100 . ..... ..... ..... 011100 @3rf +MADD_Q 011110 0101 . ..... ..... ..... 011100 @3rf +MSUB_Q 011110 0110 . ..... ..... ..... 011100 @3rf +FSOR 011110 1001 . ..... ..... ..... 011100 @3rf +FSUNE 011110 1010 . ..... ..... ..... 011100 @3rf +FSNE 011110 1011 . ..... ..... ..... 011100 @3rf +MULR_Q 011110 1100 . ..... ..... ..... 011100 @3rf +MADDR_Q 011110 1101 . ..... ..... ..... 011100 @3rf +MSUBR_Q 011110 1110 . ..... ..... ..... 011100 @3rf + +AND_V 011110 00000 ..... ..... ..... 011110 @vec +OR_V 011110 00001 ..... ..... ..... 011110 @vec +NOR_V 011110 00010 ..... ..... ..... 011110 @vec +XOR_V 011110 00011 ..... ..... ..... 011110 @vec +BMNZ_V 011110 00100 ..... ..... ..... 011110 @vec +BMZ_V 011110 00101 ..... ..... ..... 011110 @vec +BSEL_V 011110 00110 ..... ..... ..... 011110 @vec +FILL 011110 11000000 .. ..... ..... 011110 @2r +PCNT 011110 11000001 .. ..... ..... 011110 @2r +NLOC 011110 11000010 .. ..... ..... 011110 @2r +NLZC 011110 11000011 .. ..... ..... 011110 @2r +FCLASS 011110 110010000 . ..... ..... 011110 @2rf +FTRUNC_S 011110 110010001 . ..... ..... 011110 @2rf +FTRUNC_U 011110 110010010 . ..... ..... 011110 @2rf +FSQRT 011110 110010011 . ..... ..... 011110 @2rf +FRSQRT 011110 110010100 . ..... ..... 011110 @2rf +FRCP 011110 110010101 . ..... ..... 011110 @2rf +FRINT 011110 110010110 . ..... ..... 011110 @2rf +FLOG2 011110 110010111 . ..... ..... 011110 @2rf +FEXUPL 011110 110011000 . ..... ..... 011110 @2rf +FEXUPR 011110 110011001 . ..... ..... 011110 @2rf +FFQL 011110 110011010 . ..... ..... 011110 @2rf +FFQR 011110 110011011 . ..... ..... 011110 @2rf +FTINT_S 011110 110011100 . ..... ..... 011110 @2rf +FTINT_U 011110 110011101 . ..... ..... 011110 @2rf +FFINT_S 011110 110011110 . ..... ..... 011110 @2rf +FFINT_U 011110 110011111 . ..... ..... 011110 @2rf + +LD 011110 .......... ..... ..... 1000 .. @ldst +ST 011110 .......... ..... ..... 1001 .. @ldst From patchwork Sat Oct 23 21:48:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1545275 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=a9WAet9w; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HcFq90WRNz9s1l for ; Sun, 24 Oct 2021 09:13:41 +1100 (AEDT) Received: from localhost ([::1]:55862 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mePGk-0006P3-Rg for incoming@patchwork.ozlabs.org; Sat, 23 Oct 2021 18:13:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41268) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1meOum-0008Cq-BS for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:56 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]:37505) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1meOug-0006M8-BQ for qemu-devel@nongnu.org; Sat, 23 Oct 2021 17:50:55 -0400 Received: by mail-wr1-x435.google.com with SMTP id e12so4790301wra.4 for ; Sat, 23 Oct 2021 14:50:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QX0MqgtzyZKOctor19fJypxbHtnwnz4pOB3v/AvZpLk=; b=a9WAet9wlHs/m6yUXVfaEv9ZQHmNcINmLCfX2FwCy+oPlBiSWkaVSCIt7dk1NeuD1W LcQW7WIOKgE+4/y8RYJOad9vONB0qjptd8eeDTppAOg7vPlct4et5G17sUNuCoWx97d6 4TxmHr9RYMe1RT0RY6GaaOW+I/lr3r+ixb4kqZEBG3Wl0i/YxYwrNDk/Dp/EsrwojsAD 31O4DoHWixW6QvQOIA5xTocWei7y6IxYpdZhjI0DGn56cJPMUOWccj8UhabsfzxOo05Q VeNTgpfUu5m71rIxZVFVRa+uIuH6lwXSd8gSQ55OJrPZ5jmBdTVu3RKaxtvDPBa95Okl TSPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=QX0MqgtzyZKOctor19fJypxbHtnwnz4pOB3v/AvZpLk=; b=pOMoT6FEknO9iOPtojgmZoG+/6Y/Xx+VW4WyYn+4yjzG0zEwh85nWXsuG/m3VRSwqY 1VTmTe5Qxn5UKwTj5aYwh2gl7lNCuXOH06xMVpNz6T5zo6tfFILpguzoBy6wntrVs+7y sdFfSbHBHoHlJn4asMtkznabxjqm1VQmSCRfmRsXAiRcp4xfSJuthRJa4HQx1EzraB9l VZRaxC2s8h7w4GZkpHJtpPOeI2055a1aekNQSouT3Bhsl3As/eb0WhIit0zkqDOWFlJ4 evIni4b0p8145pd6lKrUse/ki0NkGTplYsdLElp+RJ9RAXxD0DO7fT1ZBwBiAsEuCL0k 2uyw== X-Gm-Message-State: AOAM530XnVg5Y7JvTl7WJr6FGsbBst6HR4HVDcaB81IlXvErM5MYbdst B+NgkSRSM27ING78srj8gbNLDVxX2aE= X-Google-Smtp-Source: ABdhPJzwzbWy4hC6N9VL4jOhne6J1b8w6nWQ24GmtOpZ6a8lxON6prJKBAxJBSU/vKsUHrl36LVyDA== X-Received: by 2002:a05:6000:128f:: with SMTP id f15mr10517415wrx.143.1635025848768; Sat, 23 Oct 2021 14:50:48 -0700 (PDT) Received: from x1w.. (62.red-83-57-168.dynamicip.rima-tde.net. [83.57.168.62]) by smtp.gmail.com with ESMTPSA id c17sm11722128wmk.23.2021.10.23.14.50.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Oct 2021 14:50:48 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 33/33] target/mips: Adjust style in msa_translate_init() Date: Sat, 23 Oct 2021 23:48:03 +0200 Message-Id: <20211023214803.522078-34-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211023214803.522078-1-f4bug@amsat.org> References: <20211023214803.522078-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x435.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Aleksandar Rikalo , Luis Pires , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" While the first 'off' variable assignment is unused, it helps to better understand the code logic. Move the assignation where it would have been used so it is easier to compare the MSA registers based on FPU ones versus the MSA specific registers. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- target/mips/tcg/msa_translate.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/mips/tcg/msa_translate.c b/target/mips/tcg/msa_translate.c index 5d8cad378e6..d196cad196b 100644 --- a/target/mips/tcg/msa_translate.c +++ b/target/mips/tcg/msa_translate.c @@ -80,13 +80,15 @@ void msa_translate_init(void) int i; for (i = 0; i < 32; i++) { - int off = offsetof(CPUMIPSState, active_fpu.fpr[i].wr.d[0]); + int off; /* * The MSA vector registers are mapped on the * scalar floating-point unit (FPU) registers. */ + off = offsetof(CPUMIPSState, active_fpu.fpr[i].wr.d[0]); msa_wr_d[i * 2] = fpu_f64[i]; + off = offsetof(CPUMIPSState, active_fpu.fpr[i].wr.d[1]); msa_wr_d[i * 2 + 1] = tcg_global_mem_new_i64(cpu_env, off, msaregnames[i * 2 + 1]);