From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646341650; cv=none; d=zohomail.com; s=zohoarc; b=k9kC40r17ESSZ7qkEPgSU8V6kHSKW1c2v7NbcCDZjjnfQOchhzo4Qhs1bR2QNncH3jrKKsWeedgBuXHC9VR8oHC/t2ZqXBHYsDAyMqw5AiydL2lethzuSkQTLJQCs7zyX7AwwsvUCAfaOB9Xe6IiV67LkL/w8L+tc8TFmaPItOU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646341650; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=H//za3f5S9J3H+KCj3xVMYCo08x35IHoinSOucS409A=; b=M325CwFS0ky3pHGhRCCmn2pcxTR2R6LtockZRNm/fbwvOLg+m6Z32clRil3ogX9ph/gDMclG37LGeVk847HdGyP5J8946YPTQeAXC9cybLOmW66DI66NOODvWX4mwdhR/Rrw2TjYm9HtWT8PXkEb/NiP0FtidE8bJ6pI4oPMy04= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646341650933514.7068629684507; Thu, 3 Mar 2022 13:07:30 -0800 (PST) Received: from localhost ([::1]:45688 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsfZ-0002wT-Ne for importer@patchew.org; Thu, 03 Mar 2022 16:07:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58766) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYC-00058M-4O for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:52 -0500 Received: from [2607:f8b0:4864:20::1030] (port=44715 helo=mail-pj1-x1030.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYA-000420-91 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:51 -0500 Received: by mail-pj1-x1030.google.com with SMTP id gj15-20020a17090b108f00b001bef86c67c1so6034104pjb.3 for ; Thu, 03 Mar 2022 12:59:49 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.12.59.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:59:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=H//za3f5S9J3H+KCj3xVMYCo08x35IHoinSOucS409A=; b=UYf/DTNfdFvd8+X0RzS8aUkB12v1a3/0Sig1ej3Ov6JqO6uLEyRhClN6XpKncMCO9F i2yd4+JchjXHvhuGV+pw3InMFV85IhFvqh1PeltxK8GuSXCNfs6x8hAkhU6do1MZ/mUu QlfWIufZHX7xJ4MAUT52Jup0FR7ZFsLVkmO/eew0//sIHYeqIGN2QrmWaGnm8lznT/+q 9nR4CDOzCV4Iboi4WGpFjnA+wFnZpQQrwVgAz+yP9qIuiB3JrTVLHbaudQOQkkvx3/D9 yiLPmi1gWIvYwz1C2O1TLUGJ9NuK7RJcdbZYiHnKRlvjuxbbNW/VMuXiLQ0ihzXx1r79 nSEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=H//za3f5S9J3H+KCj3xVMYCo08x35IHoinSOucS409A=; b=Y/UM+J2cy5icKUQ3zukt3M0dQNLedOSYiYFu71A9A2vKZFQTSChC0FtS17pLNKIIlj 6OsUcNksO0AWiiJePfBggfoYZ4eNEjgSt0LE1bqDAf5ldCZyh2JTbReowxhnLYTzZsgU 0yvAq2jvrSp03wDEN2f7TZ5glRd0AZHzwoVOVP/1VHsXzmLGLfH2eRfybke3LxvV4cdN avhI1b9M3jWBSzazlb7JjflGCmV3r13AmxSPJzEmzLVTKV03/5D6/q4veOdvos+0NVkw ay2Awr7jj88KYCMEwLODX1Hs0xky41QqKPAserY0fMmPoYllN9tjiJuL3BP6xb4B5mqi ek1g== X-Gm-Message-State: AOAM5319TVCIOxvUkbW6FFYL/EIhhkIgGPAHKILrWyxREW3NYznvFsrE IQGMpcm9gK9hYIZg7AVkpSrsDNqkA0ZZMQ== X-Google-Smtp-Source: ABdhPJzXVFr3Ag0VSCkvzLOaw+ave39Q+INn1w42oHRoDhUwuFyew1O7//bxK3ZkfmWnvuw1LACk9A== X-Received: by 2002:a17:90b:17cb:b0:1bf:138d:e0f8 with SMTP id me11-20020a17090b17cb00b001bf138de0f8mr3590506pjb.157.1646341188936; Thu, 03 Mar 2022 12:59:48 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 01/30] tcg/optimize: only read val after const check Date: Thu, 3 Mar 2022 10:59:15 -1000 Message-Id: <20220303205944.469445-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1030 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646341652939100003 From: Alex Benn=C3=A9e valgrind pointed out that arg_info()->val can be undefined which will be the case if the arguments are not constant. The ordering of the checks will have ensured we never relied on an undefined value but for the sake of completeness re-order the code to be clear. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Alex Benn=C3=A9e Message-Id: <20220209112142.3367525-1-alex.bennee@linaro.org> Signed-off-by: Richard Henderson --- tcg/optimize.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tcg/optimize.c b/tcg/optimize.c index e573000951..06213fd434 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -552,10 +552,10 @@ static bool do_constant_folding_cond_eq(TCGCond c) static int do_constant_folding_cond(TCGType type, TCGArg x, TCGArg y, TCGCond c) { - uint64_t xv =3D arg_info(x)->val; - uint64_t yv =3D arg_info(y)->val; - if (arg_is_const(x) && arg_is_const(y)) { + uint64_t xv =3D arg_info(x)->val; + uint64_t yv =3D arg_info(y)->val; + switch (type) { case TCG_TYPE_I32: return do_constant_folding_cond_32(xv, yv, c); @@ -567,7 +567,7 @@ static int do_constant_folding_cond(TCGType type, TCGAr= g x, } } else if (args_are_copies(x, y)) { return do_constant_folding_cond_eq(c); - } else if (arg_is_const(y) && yv =3D=3D 0) { + } else if (arg_is_const(y) && arg_info(y)->val =3D=3D 0) { switch (c) { case TCG_COND_LTU: return 0; --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646341524541636.1797310490599; Thu, 3 Mar 2022 13:05:24 -0800 (PST) Received: from localhost ([::1]:39336 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsdX-0006rk-Gq for importer@patchew.org; Thu, 03 Mar 2022 16:05:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58798) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYD-0005DA-Le for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:53 -0500 Received: from [2607:f8b0:4864:20::62d] (port=40544 helo=mail-pl1-x62d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYC-00042T-2G for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:53 -0500 Received: by mail-pl1-x62d.google.com with SMTP id z11so5862120pla.7 for ; Thu, 03 Mar 2022 12:59:51 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.12.59.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:59:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+u6WJ4o87lULpTmMeIiEBRzSihebLo/7su9/1OJOC8k=; b=xK003ffMaIrcY/dbWaRaFuCbTF8uPblRubVt4NLgZSINCFbFocMEiinQDt0eRAA1xp ZiXKTvzxXHB53TQhBa6Fi2VpG9lwB08/nIX7OO1wrVoXmZ6ShZkxdLbQIy3ZlcddfnSE MSUM1gPzRPtBsLIrJu/kP/5I69EmMKYzFlQWgLFCOHAAX5JxFVZ8nK7NctCEm9QaPYJe j8W10XGLryUKduvRo0awK6/V8COWyoqXO6H7nkJR515HjBMYa+HcpWD5P2CpxcIhHt7Q wFVz+xjEMBdgExtFy5UGotvsWXGmd2/07c2znsBd7GJiZEjsbnkwJAIDoqZD6cJbQm7Z X8Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+u6WJ4o87lULpTmMeIiEBRzSihebLo/7su9/1OJOC8k=; b=iIdd4CLXC4+umZSrOyWoDee3WdPQ2/rSNke7MQ9wj/LfQvSgduHB3Do6xy51u6RrLH WOtnC/tsfIz0YYCP+f+QqoLdSsunnmNpfabGUbSKl7Ko1clTqpsqY+kt6q2ZpOyRD9+M AGGbC1GMCSLNPsBNYAbkvOB1rAUy74/51cbpn/rCiD/gCATurnUTJRpcA0b235zMO0Nc YyguJroYezZPZs2mNrUA3Hpo1A6UMCiCpiIC/7POixomKQI8EWKwndyKfbKd1KOMkNb7 Gg2ZG/xELm1j+VRaiXUzdkSP8/JG/lhgn1MvXABxLNDFfnWTdn52y4ASw/x+54J4NVVl dK9Q== X-Gm-Message-State: AOAM532wkTGXT+ViEKMyBScqmB3MiVioRkGlaoJwN+65TEWYs7YQYz5+ 3gG7YzZv9m34SOa3fBqlYbIa8IxGf8eTrw== X-Google-Smtp-Source: ABdhPJyZic5F8c5U54MqvdHJBIivi8Ew9i4pLbl8YU+7tpEr5py9QF9d8NMhooA9HgrCh87O9YVHzg== X-Received: by 2002:a17:902:ecc1:b0:151:9614:59f5 with SMTP id a1-20020a170902ecc100b00151961459f5mr10901222plh.132.1646341190481; Thu, 03 Mar 2022 12:59:50 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 02/30] tcg: Set MAX_OPC_PARAM_IARGS to 7 Date: Thu, 3 Mar 2022 10:59:16 -1000 Message-Id: <20220303205944.469445-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::62d (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Taylor Simpson , Ziqiao Kong Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1646341525812100001 Content-Type: text/plain; charset="utf-8" From: Ziqiao Kong The last entry of DEF_HELPERS_FLAGS_n is DEF_HELPER_FLAGS_7 and thus the MAX_OPC_PARAM_IARGS should be 7. Reviewed-by: Taylor Simpson Signed-off-by: Ziqiao Kong Message-Id: <20220227113127.414533-2-ziqiaokong@gmail.com> Fixes: e6cadf49c3d ("tcg: Add support for a helper with 7 arguments") Signed-off-by: Richard Henderson --- include/tcg/tcg.h | 2 +- tcg/tci/tcg-target.c.inc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 42f5b500ed..939041103e 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -43,7 +43,7 @@ #else #define MAX_OPC_PARAM_PER_ARG 1 #endif -#define MAX_OPC_PARAM_IARGS 6 +#define MAX_OPC_PARAM_IARGS 7 #define MAX_OPC_PARAM_OARGS 1 #define MAX_OPC_PARAM_ARGS (MAX_OPC_PARAM_IARGS + MAX_OPC_PARAM_OARGS) =20 diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc index 9ff1fa0832..98337c567a 100644 --- a/tcg/tci/tcg-target.c.inc +++ b/tcg/tci/tcg-target.c.inc @@ -197,7 +197,7 @@ static const int tcg_target_reg_alloc_order[] =3D { TCG_REG_R0, }; =20 -#if MAX_OPC_PARAM_IARGS !=3D 6 +#if MAX_OPC_PARAM_IARGS !=3D 7 # error Fix needed, number of supported input arguments changed! #endif =20 --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646341710; cv=none; d=zohomail.com; s=zohoarc; b=ikpK4rIBUPgjcWnY+ntIRH3lRu/blnmL62qdCFNkoL8nW+qN/fFE2LQauWFCRP0M/PYmXKuWCdAqFUnIG1JRfKfdYv8RFN7sf9yzkgcWmjp+Zir27twUdUqjqXKSUcmRQaHyvkWCxdWVBOkhG6gjfoJyVvRAiVR8vzAfzNtr7ts= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646341710; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iuN42q8KMvVK0TQs3sogcIuNPw7L/H9YoxKwGCCfuI8=; b=LAqpVPHAp9IwSKIv2o48rifX0neiJjxS50usJy8e2obIjauVa2PDXM4KxwVjaOrx6liy3RNg5nvkMV136K6Vld39UI+U9dPwzG4QchB0s+362Uta3BiJOD1cgDXAqDVzDgTz2BUgWk6iet3f3g+zexjuShMLVE6dRyQP+mTxJWE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646341710068734.170962404728; Thu, 3 Mar 2022 13:08:30 -0800 (PST) Received: from localhost ([::1]:48444 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsgX-0004oH-0B for importer@patchew.org; Thu, 03 Mar 2022 16:08:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58816) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYF-0005IH-5A for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:55 -0500 Received: from [2607:f8b0:4864:20::62a] (port=42628 helo=mail-pl1-x62a.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYD-00042q-Bk for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:54 -0500 Received: by mail-pl1-x62a.google.com with SMTP id p17so5857222plo.9 for ; Thu, 03 Mar 2022 12:59:52 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.12.59.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:59:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iuN42q8KMvVK0TQs3sogcIuNPw7L/H9YoxKwGCCfuI8=; b=Mg3c2blb7qBM2/oiU/UeBS/dbJJaUYzGqLkwCXoVOLnSAR1DdcolxlWx4/2r0oifvD bkTmKa3rN+B0f/nVuJ+147jW7eO6RiOHFpdo29jangdgIz4EuaPI2rwNwCL99XbIDg+v nJegbDWHhA3FYTMnsCOlgIRm752KISKE7nIN/PxP7Y5pYVq0TMHo6k8R1ftxBsG6GnKv bC+/oTeYZrFBLdgZ/5zzkiAYxIG0j/ojQc3d02xEIyRU+hrw8Uzt0L3PaS4CYVSivICz fUVIi9KbBmxfvxfMu+ReEcO0Fj2QQoXJU9EjAVo0OIRhiFNhrIvnyQXmwIIjF2QFcTH0 T4Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iuN42q8KMvVK0TQs3sogcIuNPw7L/H9YoxKwGCCfuI8=; b=gSLXsIXECLY4QM7xBUUJh0brf/tH+SGQZBq0X48ca6yZ+01O/dfkJE5LuLFGYh2nsW aZFMuPyY0YcN/RNfklSOqcgChu+jvpW7FZQ5KhrWmcRiRU0V/eY18LY2EriXi0AMTtt7 usTjU3Sc6T/FqWuYIs8odoxI26I0mrnI7Mo1DdkXlJYNlQicpygvxK3THx70ByOcgv43 gVnICKHKML+nVDZiByp9dkAqx28fU0d5U1zr1XJye0QOaHgwEl4HTXuJnJEZfV5xigQO Uyyc65M1CRoe95WvkUY6bqciAP2uEqQ4qnQgHbNalar37pYd1BwAr+BFQmIwu72fNPkD 6waQ== X-Gm-Message-State: AOAM531T+aVpbTl+Zw/eg+uUQMEJtkaRqJvkEbkZWTCmHhqzCfIWYWLt 5N9wLyZPi+cfZOT6TXC0PJN69JWzo6CCJg== X-Google-Smtp-Source: ABdhPJwaiM9qdWYH+sdLuxU6UYoauaIyO6QNojRvX5ew4En4hcIdLvpTJGM51P0AttJBq/mSs1K9xw== X-Received: by 2002:a17:90a:2c0b:b0:1be:da5a:b294 with SMTP id m11-20020a17090a2c0b00b001beda5ab294mr7232731pjd.9.1646341192059; Thu, 03 Mar 2022 12:59:52 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 03/30] tcg: Add opcodes for vector nand, nor, eqv Date: Thu, 3 Mar 2022 10:59:17 -1000 Message-Id: <20220303205944.469445-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::62a (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646341711848100001 We've had placeholders for these opcodes for a while, and should have support on ppc, s390x and avx512 hosts. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/tcg/tcg-opc.h | 3 +++ include/tcg/tcg.h | 3 +++ tcg/aarch64/tcg-target.h | 3 +++ tcg/arm/tcg-target.h | 3 +++ tcg/i386/tcg-target.h | 3 +++ tcg/ppc/tcg-target.h | 3 +++ tcg/s390x/tcg-target.h | 3 +++ tcg/optimize.c | 12 ++++++------ tcg/tcg-op-vec.c | 27 ++++++++++++++++++--------- tcg/tcg.c | 6 ++++++ 10 files changed, 51 insertions(+), 15 deletions(-) diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index 675873e200..dd444734d9 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -245,6 +245,9 @@ DEF(or_vec, 1, 2, 0, IMPLVEC) DEF(xor_vec, 1, 2, 0, IMPLVEC) DEF(andc_vec, 1, 2, 0, IMPLVEC | IMPL(TCG_TARGET_HAS_andc_vec)) DEF(orc_vec, 1, 2, 0, IMPLVEC | IMPL(TCG_TARGET_HAS_orc_vec)) +DEF(nand_vec, 1, 2, 0, IMPLVEC | IMPL(TCG_TARGET_HAS_nand_vec)) +DEF(nor_vec, 1, 2, 0, IMPLVEC | IMPL(TCG_TARGET_HAS_nor_vec)) +DEF(eqv_vec, 1, 2, 0, IMPLVEC | IMPL(TCG_TARGET_HAS_eqv_vec)) DEF(not_vec, 1, 1, 0, IMPLVEC | IMPL(TCG_TARGET_HAS_not_vec)) =20 DEF(shli_vec, 1, 1, 1, IMPLVEC | IMPL(TCG_TARGET_HAS_shi_vec)) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 939041103e..73869fd9d0 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -183,6 +183,9 @@ typedef uint64_t TCGRegSet; #define TCG_TARGET_HAS_not_vec 0 #define TCG_TARGET_HAS_andc_vec 0 #define TCG_TARGET_HAS_orc_vec 0 +#define TCG_TARGET_HAS_nand_vec 0 +#define TCG_TARGET_HAS_nor_vec 0 +#define TCG_TARGET_HAS_eqv_vec 0 #define TCG_TARGET_HAS_roti_vec 0 #define TCG_TARGET_HAS_rots_vec 0 #define TCG_TARGET_HAS_rotv_vec 0 diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h index 876af589ce..485f685bd2 100644 --- a/tcg/aarch64/tcg-target.h +++ b/tcg/aarch64/tcg-target.h @@ -131,6 +131,9 @@ typedef enum { =20 #define TCG_TARGET_HAS_andc_vec 1 #define TCG_TARGET_HAS_orc_vec 1 +#define TCG_TARGET_HAS_nand_vec 0 +#define TCG_TARGET_HAS_nor_vec 0 +#define TCG_TARGET_HAS_eqv_vec 0 #define TCG_TARGET_HAS_not_vec 1 #define TCG_TARGET_HAS_neg_vec 1 #define TCG_TARGET_HAS_abs_vec 1 diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h index 27c27a1f14..7e96495392 100644 --- a/tcg/arm/tcg-target.h +++ b/tcg/arm/tcg-target.h @@ -130,6 +130,9 @@ extern bool use_neon_instructions; =20 #define TCG_TARGET_HAS_andc_vec 1 #define TCG_TARGET_HAS_orc_vec 1 +#define TCG_TARGET_HAS_nand_vec 0 +#define TCG_TARGET_HAS_nor_vec 0 +#define TCG_TARGET_HAS_eqv_vec 0 #define TCG_TARGET_HAS_not_vec 1 #define TCG_TARGET_HAS_neg_vec 1 #define TCG_TARGET_HAS_abs_vec 1 diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index 3b2c9437a0..ecd0fa6e05 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -185,6 +185,9 @@ extern bool have_movbe; =20 #define TCG_TARGET_HAS_andc_vec 1 #define TCG_TARGET_HAS_orc_vec 0 +#define TCG_TARGET_HAS_nand_vec 0 +#define TCG_TARGET_HAS_nor_vec 0 +#define TCG_TARGET_HAS_eqv_vec 0 #define TCG_TARGET_HAS_not_vec 0 #define TCG_TARGET_HAS_neg_vec 0 #define TCG_TARGET_HAS_abs_vec 1 diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h index c775c97b61..3e543161eb 100644 --- a/tcg/ppc/tcg-target.h +++ b/tcg/ppc/tcg-target.h @@ -162,6 +162,9 @@ extern bool have_vsx; =20 #define TCG_TARGET_HAS_andc_vec 1 #define TCG_TARGET_HAS_orc_vec have_isa_2_07 +#define TCG_TARGET_HAS_nand_vec 0 +#define TCG_TARGET_HAS_nor_vec 0 +#define TCG_TARGET_HAS_eqv_vec 0 #define TCG_TARGET_HAS_not_vec 1 #define TCG_TARGET_HAS_neg_vec have_isa_3_00 #define TCG_TARGET_HAS_abs_vec 0 diff --git a/tcg/s390x/tcg-target.h b/tcg/s390x/tcg-target.h index 69217d995b..94ccb179b8 100644 --- a/tcg/s390x/tcg-target.h +++ b/tcg/s390x/tcg-target.h @@ -145,6 +145,9 @@ extern uint64_t s390_facilities[3]; =20 #define TCG_TARGET_HAS_andc_vec 1 #define TCG_TARGET_HAS_orc_vec HAVE_FACILITY(VECTOR_ENH1) +#define TCG_TARGET_HAS_nand_vec 0 +#define TCG_TARGET_HAS_nor_vec 0 +#define TCG_TARGET_HAS_eqv_vec 0 #define TCG_TARGET_HAS_not_vec 1 #define TCG_TARGET_HAS_neg_vec 1 #define TCG_TARGET_HAS_abs_vec 1 diff --git a/tcg/optimize.c b/tcg/optimize.c index 06213fd434..ae081ab29c 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -359,13 +359,13 @@ static uint64_t do_constant_folding_2(TCGOpcode op, u= int64_t x, uint64_t y) CASE_OP_32_64_VEC(orc): return x | ~y; =20 - CASE_OP_32_64(eqv): + CASE_OP_32_64_VEC(eqv): return ~(x ^ y); =20 - CASE_OP_32_64(nand): + CASE_OP_32_64_VEC(nand): return ~(x & y); =20 - CASE_OP_32_64(nor): + CASE_OP_32_64_VEC(nor): return ~(x | y); =20 case INDEX_op_clz_i32: @@ -2119,7 +2119,7 @@ void tcg_optimize(TCGContext *s) case INDEX_op_dup2_vec: done =3D fold_dup2(&ctx, op); break; - CASE_OP_32_64(eqv): + CASE_OP_32_64_VEC(eqv): done =3D fold_eqv(&ctx, op); break; CASE_OP_32_64(extract): @@ -2170,13 +2170,13 @@ void tcg_optimize(TCGContext *s) CASE_OP_32_64(mulu2): done =3D fold_multiply2(&ctx, op); break; - CASE_OP_32_64(nand): + CASE_OP_32_64_VEC(nand): done =3D fold_nand(&ctx, op); break; CASE_OP_32_64(neg): done =3D fold_neg(&ctx, op); break; - CASE_OP_32_64(nor): + CASE_OP_32_64_VEC(nor): done =3D fold_nor(&ctx, op); break; CASE_OP_32_64_VEC(not): diff --git a/tcg/tcg-op-vec.c b/tcg/tcg-op-vec.c index faf30f9cdd..463dabf515 100644 --- a/tcg/tcg-op-vec.c +++ b/tcg/tcg-op-vec.c @@ -371,23 +371,32 @@ void tcg_gen_orc_vec(unsigned vece, TCGv_vec r, TCGv_= vec a, TCGv_vec b) =20 void tcg_gen_nand_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b) { - /* TODO: Add TCG_TARGET_HAS_nand_vec when adding a backend supports it= . */ - tcg_gen_and_vec(0, r, a, b); - tcg_gen_not_vec(0, r, r); + if (TCG_TARGET_HAS_nand_vec) { + vec_gen_op3(INDEX_op_nand_vec, 0, r, a, b); + } else { + tcg_gen_and_vec(0, r, a, b); + tcg_gen_not_vec(0, r, r); + } } =20 void tcg_gen_nor_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b) { - /* TODO: Add TCG_TARGET_HAS_nor_vec when adding a backend supports it.= */ - tcg_gen_or_vec(0, r, a, b); - tcg_gen_not_vec(0, r, r); + if (TCG_TARGET_HAS_nor_vec) { + vec_gen_op3(INDEX_op_nor_vec, 0, r, a, b); + } else { + tcg_gen_or_vec(0, r, a, b); + tcg_gen_not_vec(0, r, r); + } } =20 void tcg_gen_eqv_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b) { - /* TODO: Add TCG_TARGET_HAS_eqv_vec when adding a backend supports it.= */ - tcg_gen_xor_vec(0, r, a, b); - tcg_gen_not_vec(0, r, r); + if (TCG_TARGET_HAS_eqv_vec) { + vec_gen_op3(INDEX_op_eqv_vec, 0, r, a, b); + } else { + tcg_gen_xor_vec(0, r, a, b); + tcg_gen_not_vec(0, r, r); + } } =20 static bool do_op2(unsigned vece, TCGv_vec r, TCGv_vec a, TCGOpcode opc) diff --git a/tcg/tcg.c b/tcg/tcg.c index 528277d1d3..33a97eabdb 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1407,6 +1407,12 @@ bool tcg_op_supported(TCGOpcode op) return have_vec && TCG_TARGET_HAS_andc_vec; case INDEX_op_orc_vec: return have_vec && TCG_TARGET_HAS_orc_vec; + case INDEX_op_nand_vec: + return have_vec && TCG_TARGET_HAS_nand_vec; + case INDEX_op_nor_vec: + return have_vec && TCG_TARGET_HAS_nor_vec; + case INDEX_op_eqv_vec: + return have_vec && TCG_TARGET_HAS_eqv_vec; case INDEX_op_mul_vec: return have_vec && TCG_TARGET_HAS_mul_vec; case INDEX_op_shli_vec: --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646341849; cv=none; d=zohomail.com; s=zohoarc; b=YRt4+wkgOeOoGmV6J/peYLLrtLHqxLLmdW8CPiWAG4aRypPC9spy1Q6mBlzKURgL3VpT5jku2Qbrvi9bokDBn5JqEI0qLOK4/S9KOwlHhYMMvKi4NHPAiZsn0ShhNWFSimjRt5pMCfW3gy4LYReUwiJJWWznS1eJrIMSvK1j3EA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646341849; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=bWl3aAWm4Lw6+OWvwzdrL8E0pb9qeQYkIVix/IeF/Z4=; b=Glk2H8qN6LkyFTWcUvwZBiUEjjDEE3B/dxRn1wJVVXryN408XXF509YCqdebtrmbOFO2ctCxbhghqHr+fPjLZfuDaJpnPiBWw/7kZygwUsZsQ81z9lTOc0uLSmV92VJdganS0rd5vFh9hfu/Nz6GDSFh81Wwi+Vbd+I34I6EhXA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646341849984351.0751352954411; Thu, 3 Mar 2022 13:10:49 -0800 (PST) Received: from localhost ([::1]:54476 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsim-0000Tc-Ip for importer@patchew.org; Thu, 03 Mar 2022 16:10:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58826) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYG-0005NA-EQ for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:56 -0500 Received: from [2607:f8b0:4864:20::102e] (port=44714 helo=mail-pj1-x102e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYE-000435-SQ for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:56 -0500 Received: by mail-pj1-x102e.google.com with SMTP id gj15-20020a17090b108f00b001bef86c67c1so6034398pjb.3 for ; Thu, 03 Mar 2022 12:59:54 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.12.59.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:59:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=bWl3aAWm4Lw6+OWvwzdrL8E0pb9qeQYkIVix/IeF/Z4=; b=qG0QogFcyfN/2UyLT7oP8Y3ghhI2M3eFkTQ9fABffn8BXNas7S2i2GpqjVNmbPSxTr AUOhEBx3pZNCVfhU1BsgkeEoK61xZhSQLiGNV/Kfvh6/CMgGELLAiNJ3j2yyZDOUjuOh IqGCUpkxZQartb4V2slMrfvNQ2pKPztKyHXmD/9FdJM3IMMb6cXecU3hgr/4dyy/rJKH oueNJoPnPhi4ArB85kxZEF5nC1TC9zllExBWtBxqxdD+1IayMWqOVpF5pdaDhQ0GCgQu BdKGGUq2untujLIhw+Tvh0s4wFqcZHGlS52/Tp46HJH3oSfzGkjTtW3dzgH0hgTWA6PR H28g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bWl3aAWm4Lw6+OWvwzdrL8E0pb9qeQYkIVix/IeF/Z4=; b=elVK5aWTbFtb9QAvhtSk0XIBG2o3XXltSQfbBQZpxdo7ppzQXJi9AzovhyHM+z9Tsz azv39Og86rJiaF/5FdxcbtPZWqx2PnDxha2aZy+G299ygC43maeeqrIQ9X5lO0/rnF2T +UXAru3MvX7QgvdZeiFR/luTqxiRSKU4g0vCj2Ftd4dXJMXR8nLZL0vpSokkyjMyRtU6 RqXSsFMVqacKkUBDyDMpt8fjrT7rZYMGEnwH4mZ6EAGeaaUDdRcoDbYryfHPWZHMMIMD fRzY6b3hdBsh6cKl3g7+Ws0HGp9vOwuVsUnAADXevv13lu07oeGDv1PXsJtGoK1Jjnzo 19Ag== X-Gm-Message-State: AOAM531TK8TTbeuw7C+uWZun8IhwpNeryg1GoarkxXtaMnbzqhNP9pNS X5Dm3wAiHW690WV951wBsh9iXaVhTsDA8Q== X-Google-Smtp-Source: ABdhPJwZmMN5n/BhlHCWjgSdiB0S34+27cndkT+q1VfuBLgGHHogjY3faq534dmDaTmgsPclnraYFQ== X-Received: by 2002:a17:90a:7e95:b0:1bc:5d56:8d4c with SMTP id j21-20020a17090a7e9500b001bc5d568d4cmr7221728pjl.93.1646341193593; Thu, 03 Mar 2022 12:59:53 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 04/30] tcg/ppc: Implement vector NAND, NOR, EQV Date: Thu, 3 Mar 2022 10:59:18 -1000 Message-Id: <20220303205944.469445-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102e (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646341851055100001 Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/ppc/tcg-target.h | 6 +++--- tcg/ppc/tcg-target.c.inc | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h index 3e543161eb..e6cf72503f 100644 --- a/tcg/ppc/tcg-target.h +++ b/tcg/ppc/tcg-target.h @@ -162,9 +162,9 @@ extern bool have_vsx; =20 #define TCG_TARGET_HAS_andc_vec 1 #define TCG_TARGET_HAS_orc_vec have_isa_2_07 -#define TCG_TARGET_HAS_nand_vec 0 -#define TCG_TARGET_HAS_nor_vec 0 -#define TCG_TARGET_HAS_eqv_vec 0 +#define TCG_TARGET_HAS_nand_vec have_isa_2_07 +#define TCG_TARGET_HAS_nor_vec 1 +#define TCG_TARGET_HAS_eqv_vec have_isa_2_07 #define TCG_TARGET_HAS_not_vec 1 #define TCG_TARGET_HAS_neg_vec have_isa_3_00 #define TCG_TARGET_HAS_abs_vec 0 diff --git a/tcg/ppc/tcg-target.c.inc b/tcg/ppc/tcg-target.c.inc index 69d22e08cb..1f3c5c171c 100644 --- a/tcg/ppc/tcg-target.c.inc +++ b/tcg/ppc/tcg-target.c.inc @@ -3122,6 +3122,9 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type, = unsigned vece) case INDEX_op_xor_vec: case INDEX_op_andc_vec: case INDEX_op_not_vec: + case INDEX_op_nor_vec: + case INDEX_op_eqv_vec: + case INDEX_op_nand_vec: return 1; case INDEX_op_orc_vec: return have_isa_2_07; @@ -3400,6 +3403,15 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, case INDEX_op_orc_vec: insn =3D VORC; break; + case INDEX_op_nand_vec: + insn =3D VNAND; + break; + case INDEX_op_nor_vec: + insn =3D VNOR; + break; + case INDEX_op_eqv_vec: + insn =3D VEQV; + break; =20 case INDEX_op_cmp_vec: switch (args[3]) { @@ -3787,6 +3799,9 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) case INDEX_op_xor_vec: case INDEX_op_andc_vec: case INDEX_op_orc_vec: + case INDEX_op_nor_vec: + case INDEX_op_eqv_vec: + case INDEX_op_nand_vec: case INDEX_op_cmp_vec: case INDEX_op_ssadd_vec: case INDEX_op_sssub_vec: --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646341880; cv=none; d=zohomail.com; s=zohoarc; b=CVQkU2bFEt8+60KyxJN24gqjIgotBuiNdR1LLZgr6z9Leq+s0xeR0tC/IDNFNAF2UWNaKbWAgSSV3gnIixiB9MqLSI91qrTyFXsKyOE5TVUMi8pxv6DCSYYDMi5jaziRGBXWOq+fbnWAXi3JLgrin9gLGIJwQ8m853AE+jQ7YkY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646341880; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Iz3qFqZ6syttnMIonSrIWrfGNkbxAI11UgZmBPXKCFo=; b=dO/GKR05oO6+YJqvLC2jShVsgssaqT7uwu/SSloIlV2Cly+louw5XPPu/nnEFEhdb723FDR72ZDNkF/zZxcEKEsLhfpvw2s92oNzeU6RoKm+G4Aq2f+tR3A8914AKVYEqWF2t9rFNhK/2e5+4g/siKqJZ1qv1aQW6i3XfRE15pg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646341880140248.429053256673; Thu, 3 Mar 2022 13:11:20 -0800 (PST) Received: from localhost ([::1]:55960 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsjH-0001Zk-JJ for importer@patchew.org; Thu, 03 Mar 2022 16:11:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58842) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYH-0005Si-TB for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:57 -0500 Received: from [2607:f8b0:4864:20::42e] (port=42978 helo=mail-pf1-x42e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYG-00043L-CB for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:57 -0500 Received: by mail-pf1-x42e.google.com with SMTP id a5so5785989pfv.9 for ; Thu, 03 Mar 2022 12:59:55 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.12.59.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:59:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Iz3qFqZ6syttnMIonSrIWrfGNkbxAI11UgZmBPXKCFo=; b=Gdx+4k1JY98lKYzFkNjiuBtdwtPoNBd9q9nGj8DmCaCz4M0Bb/7Iy6K8JK4X9c0ZzH Ly5BW6XubrDpWKEm3bg7kFUoJtjdlRbB6J9GZkSPgmY0666BI16/akGZ6wBWjF20JgTh 3WJNVHkaywfnpB7Jqql18nLrLT0iRjK8HN3JbWrBr/rfZoRAltGYq8hSp/bvoTXwug3o c6Y9OELtk3xJVVCsiViNh15bhy7kCrn6KnaqKDNyIUkHbu3vaITAqX8BM7/yFMwpOuB2 9TFCsOc/i9y4wF02RMHgSYdDtTJhciECnKWyI9gx5bzr3AxiS/1qBpScb37fCkZDda9S tvUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Iz3qFqZ6syttnMIonSrIWrfGNkbxAI11UgZmBPXKCFo=; b=WsXomDVs0M7ODtvGv5Znpv2/w/jtGrlbHuVSnAYkPjDYxw33IP0OrBx9UvnKeZv0xM TaZs9YeubRmC4xoSMKcfevUZSaJGnydqf+tI5h0Ct7ub3xWppApHNT7RvW4r9lFsuimj p3OPG1U4CTXbcNF/DYSIEWPw9IOXmmDVZwGIu3H3HejIu0E88MWossvk77T4KOr/vf0d 3HKhCu5L+P7wJQLmDVPRjc6ZMTtymR8ZXbksAmJTtNTABlO6nDQRlDMDfoNTnVW5ujmy Hoe1FaHGrZDGZ3s7o1QYdYpGV67ee3vOwzKWDDYsg3+vkDR/x6AlFoIQ/MJ2wAxwhyab UZFw== X-Gm-Message-State: AOAM533TElqDz6tRuOfJwjnsgZ3mJhTSCOzjQ9ejXXnE3F4XQbCoWOyx IwjRLbHe8Kr4xPYigPNLE5whMkX3J3iQVA== X-Google-Smtp-Source: ABdhPJy44xZp16O2+iYX3KbFfQ/m2iwcFO/8rR1qideluRrK5cvZqsUn0sAy0R0slKhvXO1feTOhbg== X-Received: by 2002:a05:6a00:1795:b0:4e1:6e1f:5aed with SMTP id s21-20020a056a00179500b004e16e1f5aedmr39799685pfg.70.1646341195050; Thu, 03 Mar 2022 12:59:55 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 05/30] tcg/s390x: Implement vector NAND, NOR, EQV Date: Thu, 3 Mar 2022 10:59:19 -1000 Message-Id: <20220303205944.469445-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::42e (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646341892251100001 Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/s390x/tcg-target.h | 6 +++--- tcg/s390x/tcg-target.c.inc | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/tcg/s390x/tcg-target.h b/tcg/s390x/tcg-target.h index 94ccb179b8..23e2063667 100644 --- a/tcg/s390x/tcg-target.h +++ b/tcg/s390x/tcg-target.h @@ -145,9 +145,9 @@ extern uint64_t s390_facilities[3]; =20 #define TCG_TARGET_HAS_andc_vec 1 #define TCG_TARGET_HAS_orc_vec HAVE_FACILITY(VECTOR_ENH1) -#define TCG_TARGET_HAS_nand_vec 0 -#define TCG_TARGET_HAS_nor_vec 0 -#define TCG_TARGET_HAS_eqv_vec 0 +#define TCG_TARGET_HAS_nand_vec HAVE_FACILITY(VECTOR_ENH1) +#define TCG_TARGET_HAS_nor_vec 1 +#define TCG_TARGET_HAS_eqv_vec HAVE_FACILITY(VECTOR_ENH1) #define TCG_TARGET_HAS_not_vec 1 #define TCG_TARGET_HAS_neg_vec 1 #define TCG_TARGET_HAS_abs_vec 1 diff --git a/tcg/s390x/tcg-target.c.inc b/tcg/s390x/tcg-target.c.inc index d56c1e51e4..6e65828c09 100644 --- a/tcg/s390x/tcg-target.c.inc +++ b/tcg/s390x/tcg-target.c.inc @@ -290,7 +290,9 @@ typedef enum S390Opcode { VRRc_VMXL =3D 0xe7fd, VRRc_VN =3D 0xe768, VRRc_VNC =3D 0xe769, + VRRc_VNN =3D 0xe76e, VRRc_VNO =3D 0xe76b, + VRRc_VNX =3D 0xe76c, VRRc_VO =3D 0xe76a, VRRc_VOC =3D 0xe76f, VRRc_VPKS =3D 0xe797, /* we leave the m5 cs field 0 */ @@ -2805,6 +2807,15 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, case INDEX_op_xor_vec: tcg_out_insn(s, VRRc, VX, a0, a1, a2, 0); break; + case INDEX_op_nand_vec: + tcg_out_insn(s, VRRc, VNN, a0, a1, a2, 0); + break; + case INDEX_op_nor_vec: + tcg_out_insn(s, VRRc, VNO, a0, a1, a2, 0); + break; + case INDEX_op_eqv_vec: + tcg_out_insn(s, VRRc, VNX, a0, a1, a2, 0); + break; =20 case INDEX_op_shli_vec: tcg_out_insn(s, VRSa, VESL, a0, a2, TCG_REG_NONE, a1, vece); @@ -2901,7 +2912,10 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type,= unsigned vece) case INDEX_op_and_vec: case INDEX_op_andc_vec: case INDEX_op_bitsel_vec: + case INDEX_op_eqv_vec: + case INDEX_op_nand_vec: case INDEX_op_neg_vec: + case INDEX_op_nor_vec: case INDEX_op_not_vec: case INDEX_op_or_vec: case INDEX_op_orc_vec: @@ -3246,6 +3260,9 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) case INDEX_op_or_vec: case INDEX_op_orc_vec: case INDEX_op_xor_vec: + case INDEX_op_nand_vec: + case INDEX_op_nor_vec: + case INDEX_op_eqv_vec: case INDEX_op_cmp_vec: case INDEX_op_mul_vec: case INDEX_op_rotlv_vec: --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342019; cv=none; d=zohomail.com; s=zohoarc; b=SFCEsxHnHrInn9hBVhdtDfDIE5jQB6qPcX2TTCi+kND468leWrQNU0BcpH/HdDEx+mbSsdKRox3yWVIzmD2t6WPJUdl0hE03afATnXX8xHo7F+gCVQKnK5+cf5z+6WoyvWaUqYgWfPi9V4R93mXwJp47lSjVxWV8Z2JLf4x2hIM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342019; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Q4ztDzPr5E6ml7W6Zmqb62vg4iAy99rspvKuLZXH7gY=; b=lhu/p8f3uPm1/s9m2lDp6b/Yha27eRKl43M0jteIHjF9sqXVSrMyp33/tv2opY5LtHVBeMxjhshow/QxbCc0YQy57tKdoWSJNWOuzNQdImAtU2eMPqg5rmQroPuf0793xH0GTa482wlz1ixwX5cMoPZ7iIxBHFQdC8kdOOTKbl0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342019240961.8240584141031; Thu, 3 Mar 2022 13:13:39 -0800 (PST) Received: from localhost ([::1]:36348 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPslW-0007Ye-QH for importer@patchew.org; Thu, 03 Mar 2022 16:13:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58864) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYJ-0005aB-N9 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:59 -0500 Received: from [2607:f8b0:4864:20::52e] (port=36454 helo=mail-pg1-x52e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYI-00043Z-24 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:59:59 -0500 Received: by mail-pg1-x52e.google.com with SMTP id t14so5754676pgr.3 for ; Thu, 03 Mar 2022 12:59:57 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.12.59.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:59:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Q4ztDzPr5E6ml7W6Zmqb62vg4iAy99rspvKuLZXH7gY=; b=lXv6R6s9FVr3Vzx4dG71l6RYx/ozvMjnKMPBptQXtrY5xpsX4S1ImzIYJCfFNbDuPN SIMyBK8Yrgt/xCQxD+I65/ovIyJBIUt2o7wh0qHeGwGJPAtv2BxkJd3MbtU6uQqW8ADT dQepGFHdrj9tgs82FxwdTQVKy/IhUT5BGqFTnpA5x+ohTl257wy2jF1SFvssicE75fpV HYpVYHC3SPgYbKeAnn0s5FoCh5pdUTdQnhwm2fR7kvFA1RyMJ8igFjg/i6/ZAN8Z+Nqw +42plp7rn+OG4/bYWzF0RVYV1zzGLbJkwlPvQPBjMC3VkJ1Y9G3fNYzYkr7398pF3W68 uesg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Q4ztDzPr5E6ml7W6Zmqb62vg4iAy99rspvKuLZXH7gY=; b=4nikkzyXk97zI1iaRh1VOVA5zI7+sMyVJuwBIr1ea5bRFDvCy3xUrqXj1ozXyMgfTZ +0TdAsdPIxUWqEeaDSzRLjEiI6T6WkFrZCVwFxXQFdhGN/7AO/k4cd+3HCm5/2j1xcnh 9wtJHMoeM9uunAazWpy8DFP9xDhlfcj5zomjWkYqkJaRcAPmWgsqmwnYt4bq7cr+NSrv tr1KCCba5FKJmkFCVbLHl5BOo25Wz5yj3fWIkcZUrsJFhZw1xCNBj5kbGJNz2kpjU5bN 8M/bmIj2iQkUxzv+wuZDphUbWW7TDeKnLjq7+PvNbx/diI/QsmwDWHYYTHcB4N7BHvUd ujXQ== X-Gm-Message-State: AOAM532o2anANEVlcanAgs+mng+MNCduZdXbeOafooE7vSKoq3MNlOgO MXZldc13msFMGT75mPC08Z4uAdc8kXsDMA== X-Google-Smtp-Source: ABdhPJy8AzxxpIa7qXIJN+vporUVCR2uS4VCTr+fP71TIXCdlbKgRTuh0ExSPmBw3N+rspmrRBfQqg== X-Received: by 2002:a63:be0e:0:b0:363:e0be:613f with SMTP id l14-20020a63be0e000000b00363e0be613fmr31423896pgf.448.1646341196809; Thu, 03 Mar 2022 12:59:56 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 06/30] tcg/i386: Detect AVX512 Date: Thu, 3 Mar 2022 10:59:20 -1000 Message-Id: <20220303205944.469445-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::52e (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342020550100001 There are some operation sizes in some subsets of AVX512 that are missing from previous iterations of AVX. Detect them. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- include/qemu/cpuid.h | 20 +++++++++++++++++--- tcg/i386/tcg-target.h | 4 ++++ tcg/i386/tcg-target.c.inc | 24 ++++++++++++++++++++++-- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/include/qemu/cpuid.h b/include/qemu/cpuid.h index 09fc245b91..7adb12d320 100644 --- a/include/qemu/cpuid.h +++ b/include/qemu/cpuid.h @@ -45,12 +45,26 @@ #ifndef bit_AVX2 #define bit_AVX2 (1 << 5) #endif -#ifndef bit_AVX512F -#define bit_AVX512F (1 << 16) -#endif #ifndef bit_BMI2 #define bit_BMI2 (1 << 8) #endif +#ifndef bit_AVX512F +#define bit_AVX512F (1 << 16) +#endif +#ifndef bit_AVX512DQ +#define bit_AVX512DQ (1 << 17) +#endif +#ifndef bit_AVX512BW +#define bit_AVX512BW (1 << 30) +#endif +#ifndef bit_AVX512VL +#define bit_AVX512VL (1u << 31) +#endif + +/* Leaf 7, %ecx */ +#ifndef bit_AVX512VBMI2 +#define bit_AVX512VBMI2 (1 << 6) +#endif =20 /* Leaf 0x80000001, %ecx */ #ifndef bit_LZCNT diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index ecd0fa6e05..79af353860 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -103,6 +103,10 @@ extern bool have_bmi1; extern bool have_popcnt; extern bool have_avx1; extern bool have_avx2; +extern bool have_avx512bw; +extern bool have_avx512dq; +extern bool have_avx512vbmi2; +extern bool have_avx512vl; extern bool have_movbe; =20 /* optional instructions */ diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index faa15eecab..7516be5d5f 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -171,6 +171,10 @@ bool have_bmi1; bool have_popcnt; bool have_avx1; bool have_avx2; +bool have_avx512bw; +bool have_avx512dq; +bool have_avx512vbmi2; +bool have_avx512vl; bool have_movbe; =20 #ifdef CONFIG_CPUID_H @@ -3839,12 +3843,12 @@ static void tcg_out_nop_fill(tcg_insn_unit *p, int = count) static void tcg_target_init(TCGContext *s) { #ifdef CONFIG_CPUID_H - unsigned a, b, c, d, b7 =3D 0; + unsigned a, b, c, d, b7 =3D 0, c7 =3D 0; unsigned max =3D __get_cpuid_max(0, 0); =20 if (max >=3D 7) { /* BMI1 is available on AMD Piledriver and Intel Haswell CPUs. */ - __cpuid_count(7, 0, a, b7, c, d); + __cpuid_count(7, 0, a, b7, c7, d); have_bmi1 =3D (b7 & bit_BMI) !=3D 0; have_bmi2 =3D (b7 & bit_BMI2) !=3D 0; } @@ -3874,6 +3878,22 @@ static void tcg_target_init(TCGContext *s) if ((xcrl & 6) =3D=3D 6) { have_avx1 =3D (c & bit_AVX) !=3D 0; have_avx2 =3D (b7 & bit_AVX2) !=3D 0; + + /* + * There are interesting instructions in AVX512, so long + * as we have AVX512VL, which indicates support for EVEX + * on sizes smaller than 512 bits. We are required to + * check that OPMASK and all extended ZMM state are enabled + * even if we're not using them -- the insns will fault. + */ + if ((xcrl & 0xe0) =3D=3D 0xe0 + && (b7 & bit_AVX512F) + && (b7 & bit_AVX512VL)) { + have_avx512vl =3D true; + have_avx512bw =3D (b7 & bit_AVX512BW) !=3D 0; + have_avx512dq =3D (b7 & bit_AVX512DQ) !=3D 0; + have_avx512vbmi2 =3D (c7 & bit_AVX512VBMI2) !=3D 0; + } } } } --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646341929; cv=none; d=zohomail.com; s=zohoarc; b=mb2yUvULuKQ+s82WX1FCgRRKwEE4TFWpMBgnto3G1lpUFLuIqCZ7rTmmKziCaN2+M73VOvDwgXzBW80/2NkuF6X13vO3ePg3OtqAMhq1X0LHKEWtSn65JcnpPNhymC1b7bu886O/sjUGDbWlF320LpdPP617XHnPnEU/2lFW0Pw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646341929; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lmCGsVlVB2Sxn+d9Xto17STB1G1KASx4q7ezK/DByYA=; b=MgAKi0b4yCrZGny3vUZ+y/Ftfgw0G19i6d6PuXRlw/T6KhEoIHNRTcjUz3y753uwpM8WPnXdUPl9W+BPv5hDc8VxLtRIv/vtQATgbQMkDSrzD6POoCw3PeL0D49uVRMCi5JJUptc4616eCpnhrYMH3x5yOspuAEi6S/Z/zacfyw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646341929966528.3690702305037; Thu, 3 Mar 2022 13:12:09 -0800 (PST) Received: from localhost ([::1]:57252 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsk5-0002Uv-J4 for importer@patchew.org; Thu, 03 Mar 2022 16:12:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58884) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYL-0005g4-72 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:01 -0500 Received: from [2607:f8b0:4864:20::630] (port=33656 helo=mail-pl1-x630.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYJ-00043l-H5 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:00 -0500 Received: by mail-pl1-x630.google.com with SMTP id c9so5907696pll.0 for ; Thu, 03 Mar 2022 12:59:59 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.12.59.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:59:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lmCGsVlVB2Sxn+d9Xto17STB1G1KASx4q7ezK/DByYA=; b=U9VTLjWMzIC9TiXpbhZYmxOEJA3DIu0hl1q9ZiAVagoqxxxdvqjyHhesVJasb7JWXj P6klqKSXUcgcdD0X6Do+W9BtIJkndGiGQ8BCAm3dHJylExjCRqTyGDvuOHsF4iPXOwWJ ca0HhALc47DJJqFFABZknjFVGtyJYtjlX8+0s98iRWSbtCQ+zqIey8F/xs8o4nuO3Xj0 gO62ofLVJ1JeDFOrs9D4uIotqCaRkEQEQtZ+jbVr/MeFDkJR4RtV2SFoFMQqrBKC+/P4 szQU8E1SfDbGxfwwS1KrTrTwvrW6A0dNio84v5iH7CLTj01y1geBTd6vhAigM7teObX9 hEpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lmCGsVlVB2Sxn+d9Xto17STB1G1KASx4q7ezK/DByYA=; b=ovP9UFA9ZCO8U4sejUi5wDMBVv5LPHjhwYdQk2zORgA9aj7aB0sbSQhPaZ3ZpvqVUt 43hUW4dtMUG01zFZUQuXt5A6OJ6VbEDli1Ayqw6PuC2XzWDoZCck2qUioQMRor3K0cLS qE0M/Qu6TDCd27voQWnHEFdggd2x/5DxxmJFPTz9qMhiRIjbEAcNv6/kZDl/fKQKqHG9 zzXDBC2NazIH8ASkIeR88FLo5+BN6b0UyFKYIYT/w1MGRXN8WJAVW6/fQaoYhKh4NpOa +N1JfWRuBkdrTCOlyfaTp7edK5Y3yzvJfcT6PTKmWjU2OrKkvebMFcCu7cK1XXn6jQzY mrkw== X-Gm-Message-State: AOAM531sEV64aU5z0w8TBoQtpjIVv+F/4/+yMBTn59YzdAT00rb5umqD woS6qbKV4BLjsb+RlVWNfW9rxhnGzi42hQ== X-Google-Smtp-Source: ABdhPJwFUsUxRJRG5GPHBtgnYnyARUdZO7nNOVtYIXwIcBc4b/dGeWSVFgUEecGmjviQOKLD/NDNTA== X-Received: by 2002:a17:902:e541:b0:151:8722:5a87 with SMTP id n1-20020a170902e54100b0015187225a87mr14173904plf.71.1646341198227; Thu, 03 Mar 2022 12:59:58 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 07/30] tcg/i386: Add tcg_out_evex_opc Date: Thu, 3 Mar 2022 10:59:21 -1000 Message-Id: <20220303205944.469445-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::630 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646341931475100001 The evex encoding is added here, for use in a subsequent patch. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 51 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 7516be5d5f..89497b2b45 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -262,6 +262,7 @@ static bool tcg_target_const_match(int64_t val, TCGType= type, int ct) #define P_SIMDF3 0x20000 /* 0xf3 opcode prefix */ #define P_SIMDF2 0x40000 /* 0xf2 opcode prefix */ #define P_VEXL 0x80000 /* Set VEX.L =3D 1 */ +#define P_EVEX 0x100000 /* Requires EVEX encoding */ =20 #define OPC_ARITH_EvIz (0x81) #define OPC_ARITH_EvIb (0x83) @@ -626,9 +627,57 @@ static void tcg_out_vex_opc(TCGContext *s, int opc, in= t r, int v, tcg_out8(s, opc); } =20 +static void tcg_out_evex_opc(TCGContext *s, int opc, int r, int v, + int rm, int index) +{ + /* The entire 4-byte evex prefix; with R' and V' set. */ + uint32_t p =3D 0x08041062; + int mm, pp; + + tcg_debug_assert(have_avx512vl); + + /* EVEX.mm */ + if (opc & P_EXT3A) { + mm =3D 3; + } else if (opc & P_EXT38) { + mm =3D 2; + } else if (opc & P_EXT) { + mm =3D 1; + } else { + g_assert_not_reached(); + } + + /* EVEX.pp */ + if (opc & P_DATA16) { + pp =3D 1; /* 0x66 */ + } else if (opc & P_SIMDF3) { + pp =3D 2; /* 0xf3 */ + } else if (opc & P_SIMDF2) { + pp =3D 3; /* 0xf2 */ + } else { + pp =3D 0; + } + + p =3D deposit32(p, 8, 2, mm); + p =3D deposit32(p, 13, 1, (rm & 8) =3D=3D 0); /* EVEX.RXB.= B */ + p =3D deposit32(p, 14, 1, (index & 8) =3D=3D 0); /* EVEX.RXB.= X */ + p =3D deposit32(p, 15, 1, (r & 8) =3D=3D 0); /* EVEX.RXB.= R */ + p =3D deposit32(p, 16, 2, pp); + p =3D deposit32(p, 19, 4, ~v); + p =3D deposit32(p, 23, 1, (opc & P_VEXW) !=3D 0); + p =3D deposit32(p, 29, 2, (opc & P_VEXL) !=3D 0); + + tcg_out32(s, p); + tcg_out8(s, opc); +} + static void tcg_out_vex_modrm(TCGContext *s, int opc, int r, int v, int rm) { - tcg_out_vex_opc(s, opc, r, v, rm, 0); + if (opc & P_EVEX) { + tcg_out_evex_opc(s, opc, r, v, rm, 0); + } else { + tcg_out_vex_opc(s, opc, r, v, rm, 0); + } tcg_out8(s, 0xc0 | (LOWREGMASK(r) << 3) | LOWREGMASK(rm)); } =20 --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342266; cv=none; d=zohomail.com; s=zohoarc; b=NL8mVPJP+YKMGLNmnNWpVVWe+I3fogGZHhfxHYLmI6ZILcxccJ3hiF6GNVirD4MF4mQTP832tVucLijxCxB3VrxGH1WTu4ZHlXDpMJjS6ykZ1mlerI3cNQQrCbWgzwXGn4gtplL+9PulErbYN4aXQ4hf9aGx89Ly8EfjuA7orIM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342266; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=z75EGj4CNGTU3HtUoe8PTzeS4bhGOlSVRpDZyhuG0Pw=; b=Et8LtvKGK7HKI+FSOvZgJ36fFerB0lCYvl0jAZiCB0GlpO8UOMzr7wWgVKRCE04fP3/HiaV2XnZxHBiJltLC3IHS3aiJ8JxE3/ZhJ8XHaVOC2zGxXXTOEUE9/z2Fh95C1s/xFgQc6TEY6nqUpabOQPmwYsCUGktvz74znjfEwvg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342266850132.94048532317663; Thu, 3 Mar 2022 13:17:46 -0800 (PST) Received: from localhost ([::1]:48584 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPspV-0007QW-1t for importer@patchew.org; Thu, 03 Mar 2022 16:17:45 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58912) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYM-0005kv-Rs for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:02 -0500 Received: from [2607:f8b0:4864:20::62f] (port=43945 helo=mail-pl1-x62f.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYL-00044B-2w for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:02 -0500 Received: by mail-pl1-x62f.google.com with SMTP id e2so5861240pls.10 for ; Thu, 03 Mar 2022 13:00:00 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.12.59.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:59:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=z75EGj4CNGTU3HtUoe8PTzeS4bhGOlSVRpDZyhuG0Pw=; b=joT1F4WBbnIx1tRrBmaQwQo40/nUV/bJeGqeHko7w3LjW63yOtt/3I5DTfSMR3Ai51 gEeH4cJh+lhxM8xObbEg2nM2nEkV3mt1k3MOnv1a7/be3enVxTlTzr5olM++bANxy22O nT4gWJi1TO1P7tbB/0BebWNkE2WOfpb89JnY3uKf35I9bfQo6qVj0x5wO2XvyIgm2dvH AKnJK8HLP4xWKm9y3JrxSd/cgfcJkTkuxykndPl3gyI7OtMoBKiToLhYg4qffwtkIIeY 2JiGKqXEbqq716VXKmSiBRLwR5oj84pVxqc4o2BwHI2pXacGOGnlKIAXdZ2qUsj1Mdgk VFvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=z75EGj4CNGTU3HtUoe8PTzeS4bhGOlSVRpDZyhuG0Pw=; b=Ujix6RwvVACGyif7I1CzbJfMWTR3u4ZzVCE9vBy4m0xiXP1bZ1K8eA1KdhxReo96CN n6/UFEl84goT3l/sk5+U2UdkxxSQ1EsybPQdU+B7zaUFNsDeqlKe8br2+ZHG1atMtfeM ZB8NGYi0kUljyHD5fiXjINrRJXK8OpyQdoRYiSw4zNEj3Jmc9EN+RSsj53xiq+n76B/y N8upiy/6In6wsRrE8MiVfKqgK1v33/Goy+plrlUaledI7w1sSr4ZTV1eSmDdprCXcJ9N Twkkstg8WdYTs2jKUO/nitBRRYK3snsrkhD6S9O2ViCpEbAzGIYhK/955BRYOJmAQi4T ae8A== X-Gm-Message-State: AOAM530/BHJKBJN3Ny+HU58fm8t7f0IjZ09Dr9D3ylleFsESIs0PL4tv WGUvcVcVgwaL6cx1ZwIzTiNydrALNQacnQ== X-Google-Smtp-Source: ABdhPJxrjlyp0myuXSTgxTd0L30yD66w98raQUdUvrK6LYraURscKvyzP8E6eho/U7eS6BLto5ZVVA== X-Received: by 2002:a17:902:f643:b0:14d:7b8f:14b3 with SMTP id m3-20020a170902f64300b0014d7b8f14b3mr38114402plg.19.1646341199788; Thu, 03 Mar 2022 12:59:59 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 08/30] tcg/i386: Use tcg_can_emit_vec_op in expand_vec_cmp_noinv Date: Thu, 3 Mar 2022 10:59:22 -1000 Message-Id: <20220303205944.469445-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::62f (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342268295100001 The condition for UMIN/UMAX availability is about to change; use the canonical version. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 89497b2b45..6a53f378cc 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -3620,28 +3620,28 @@ static bool expand_vec_cmp_noinv(TCGType type, unsi= gned vece, TCGv_vec v0, fixup =3D NEED_SWAP | NEED_INV; break; case TCG_COND_LEU: - if (vece <=3D MO_32) { + if (tcg_can_emit_vec_op(INDEX_op_umin_vec, type, vece)) { fixup =3D NEED_UMIN; } else { fixup =3D NEED_BIAS | NEED_INV; } break; case TCG_COND_GTU: - if (vece <=3D MO_32) { + if (tcg_can_emit_vec_op(INDEX_op_umin_vec, type, vece)) { fixup =3D NEED_UMIN | NEED_INV; } else { fixup =3D NEED_BIAS; } break; case TCG_COND_GEU: - if (vece <=3D MO_32) { + if (tcg_can_emit_vec_op(INDEX_op_umax_vec, type, vece)) { fixup =3D NEED_UMAX; } else { fixup =3D NEED_BIAS | NEED_SWAP | NEED_INV; } break; case TCG_COND_LTU: - if (vece <=3D MO_32) { + if (tcg_can_emit_vec_op(INDEX_op_umax_vec, type, vece)) { fixup =3D NEED_UMAX | NEED_INV; } else { fixup =3D NEED_BIAS | NEED_SWAP; --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342003; cv=none; d=zohomail.com; s=zohoarc; b=enYSECUxJefuTwLQo5V/S4C6NCyFM62rA8vbsTfn0xWpNWqklCt2XIsnTZSYgalOs/FLBU0iSGQPl/1K1SG4D3yt7Xd6lqmd/s4KksyTBQOOlyPFEOWCBSF0CMmCYN98debM80IZjrWbDNsQ9p76UY5UrK/pPyDJvIEHIhD6lc0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342003; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=cv8rekvHfXBD5FgVr8FJHUh95M1X519FeesHcglTBx4=; b=ltp1LLYwTK3zpXHT2zipGERqOtIY4EEid9D9HrT1hravp+T25hPzYGi+Nz6AduIFlRgfz3J0PRYILsUv7OstIjOhc6u6OzqT957ToLaEBViJHFGa5au5fU0XYjwEX5w7pHukp5TC91tXPOoQ2/14oIumK5k6PqnaC8m9t3P6rVg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342003396270.3853845880019; Thu, 3 Mar 2022 13:13:23 -0800 (PST) Received: from localhost ([::1]:34890 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPslG-0006bY-Py for importer@patchew.org; Thu, 03 Mar 2022 16:13:22 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58940) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYP-0005qj-7w for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:05 -0500 Received: from [2607:f8b0:4864:20::1033] (port=53963 helo=mail-pj1-x1033.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYN-00045o-GS for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:04 -0500 Received: by mail-pj1-x1033.google.com with SMTP id bx5so5698525pjb.3 for ; Thu, 03 Mar 2022 13:00:03 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.12.59.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cv8rekvHfXBD5FgVr8FJHUh95M1X519FeesHcglTBx4=; b=uzfPR0qpizS1A51wbNF03Sbn7UdEEGWLGH24UK6l6c+wF08lfZcIQcrlZso333Q6A+ BUPk6qyTwQLNy8Fro6juhElwrj2PPg+GjD5h/qVu42VPVNvs96ItMaOZalc0ymZ9seEH aKKZv0ykeQkX3tbSHDYxIpXUo4B4s0BI0SRTuk4GM1aMN0M0Z9v5sWjVT7ZM1gnAR0ce WaPHlkMwNt4TFJV3MfXFSA62jkPStdI6eXdEH//ZHMWwJ6xRcUwHxnFwGsuMKRynrl/q Zz5CNsxfIUstRTLDiUZhZoloYjVP7i2h9uK5+TDRBcvNne9Lezxb2PLKNDCl/hZOYVUw mK0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cv8rekvHfXBD5FgVr8FJHUh95M1X519FeesHcglTBx4=; b=n4M2OhMz/FjNy9PmJDdQ+zNc2gJ2mjVU6mAB7a6CR0zprhmFa5/odacOlZ3ySS/iXV rX97b5CDEtu40NolQac/DJvxdbquP5q0+GHVXnIvSvVSmDrLjePgX0gqeSTHFlrM2LMu psyGM19zd6R6zU6fDgBeqgvwsXGZanpbP58btB1o3Cv2OwFfHfHFJDuMrMmEpGD4A6Iz sGzYSMLFfr1ySC0CSVnJXecmfVOI14HKH4Hqq+7249JStJRdzPPA5UXDY2lw9Og6Ndia AclMLJUqXYqrVRSQWPPzl3YVf97QBMq3oeVtTWzUP7uFR76CbToFOGwXVC3ABTPuo6s2 E4UQ== X-Gm-Message-State: AOAM530d9+lpBL7Rvh31WOuPaNdu0fUADl4VEd99P3VgFhB2jmpqrnAK 9znPsgRjCErYu2sONyqy6dTU0CtuTd+9gw== X-Google-Smtp-Source: ABdhPJwvm+PmZM6Nzy2nwoNgY+xAyan3jiju8w4GFfmxIvSQ6X9jvWTzVddg2a9TyBVt1Mjdr8p+kQ== X-Received: by 2002:a17:902:b692:b0:14c:935b:2b03 with SMTP id c18-20020a170902b69200b0014c935b2b03mr38395485pls.81.1646341201182; Thu, 03 Mar 2022 13:00:01 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 09/30] tcg/i386: Implement avx512 variable shifts Date: Thu, 3 Mar 2022 10:59:23 -1000 Message-Id: <20220303205944.469445-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1033 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342012976100001 AVX512VL has VPSRAVQ, and AVX512BW has VPSLLVW, VPSRAVW, VPSRLVW. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 6a53f378cc..055db88422 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -419,9 +419,13 @@ static bool tcg_target_const_match(int64_t val, TCGTyp= e type, int ct) #define OPC_VPBROADCASTQ (0x59 | P_EXT38 | P_DATA16) #define OPC_VPERMQ (0x00 | P_EXT3A | P_DATA16 | P_VEXW) #define OPC_VPERM2I128 (0x46 | P_EXT3A | P_DATA16 | P_VEXL) +#define OPC_VPSLLVW (0x12 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VPSLLVD (0x47 | P_EXT38 | P_DATA16) #define OPC_VPSLLVQ (0x47 | P_EXT38 | P_DATA16 | P_VEXW) +#define OPC_VPSRAVW (0x11 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VPSRAVD (0x46 | P_EXT38 | P_DATA16) +#define OPC_VPSRAVQ (0x46 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) +#define OPC_VPSRLVW (0x10 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VPSRLVD (0x45 | P_EXT38 | P_DATA16) #define OPC_VPSRLVQ (0x45 | P_EXT38 | P_DATA16 | P_VEXW) #define OPC_VZEROUPPER (0x77 | P_EXT) @@ -2835,16 +2839,13 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode= opc, OPC_PMAXUB, OPC_PMAXUW, OPC_PMAXUD, OPC_UD2 }; static int const shlv_insn[4] =3D { - /* TODO: AVX512 adds support for MO_16. */ - OPC_UD2, OPC_UD2, OPC_VPSLLVD, OPC_VPSLLVQ + OPC_UD2, OPC_VPSLLVW, OPC_VPSLLVD, OPC_VPSLLVQ }; static int const shrv_insn[4] =3D { - /* TODO: AVX512 adds support for MO_16. */ - OPC_UD2, OPC_UD2, OPC_VPSRLVD, OPC_VPSRLVQ + OPC_UD2, OPC_VPSRLVW, OPC_VPSRLVD, OPC_VPSRLVQ }; static int const sarv_insn[4] =3D { - /* TODO: AVX512 adds support for MO_16, MO_64. */ - OPC_UD2, OPC_UD2, OPC_VPSRAVD, OPC_UD2 + OPC_UD2, OPC_VPSRAVW, OPC_VPSRAVD, OPC_VPSRAVQ }; static int const shls_insn[4] =3D { OPC_UD2, OPC_PSLLW, OPC_PSLLD, OPC_PSLLQ @@ -3335,9 +3336,24 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type,= unsigned vece) =20 case INDEX_op_shlv_vec: case INDEX_op_shrv_vec: - return have_avx2 && vece >=3D MO_32; + switch (vece) { + case MO_16: + return have_avx512bw; + case MO_32: + case MO_64: + return have_avx2; + } + return 0; case INDEX_op_sarv_vec: - return have_avx2 && vece =3D=3D MO_32; + switch (vece) { + case MO_16: + return have_avx512bw; + case MO_32: + return have_avx2; + case MO_64: + return have_avx512vl; + } + return 0; case INDEX_op_rotlv_vec: case INDEX_op_rotrv_vec: return have_avx2 && vece >=3D MO_32 ? -1 : 0; --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646341926; cv=none; d=zohomail.com; s=zohoarc; b=RJAfTq+s6gRAB6324+bb13/PneugwV3c05bfafu7g2QokTtemuOyOWeZQdvFh1g7iru2Fg2TS3rayjTcOvyEq7Sp4zuTlBY/uM5AsLWjDq5a5mFk85Cjkd4VEgyC9sxdb1rviG6gd5AwQhuZ9ckc5bb6NkUOVP6z0SV8idWTLB0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646341926; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NVZxBYjya/bVlEFKs7qigQ6ua4ofT68Gshv8z31H2EM=; b=jnb++pB109D4idt6pI6QHDlCdJNpYhv425YcZ6Q43mGMNUHYDGhyqYm0W7mnMqlZqUsbWwpITjITRiaW1vyxIAh5LB9SV+g8C0zfzxpWVksBxM3GC8MO46npxxwAa8h4531va7YZ6y1sFm6t6+wBdkiAYP2w1tFSS33/5ChgEbo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646341926044615.7829354333716; Thu, 3 Mar 2022 13:12:06 -0800 (PST) Received: from localhost ([::1]:56892 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsk1-0002DN-0l for importer@patchew.org; Thu, 03 Mar 2022 16:12:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58950) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYP-0005sK-TP for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:05 -0500 Received: from [2607:f8b0:4864:20::62f] (port=44677 helo=mail-pl1-x62f.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYO-00046g-Ac for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:05 -0500 Received: by mail-pl1-x62f.google.com with SMTP id q11so5850817pln.11 for ; Thu, 03 Mar 2022 13:00:03 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NVZxBYjya/bVlEFKs7qigQ6ua4ofT68Gshv8z31H2EM=; b=WaUA0hnt0W0ZkrD7Q9SZu3e+9pJWlMDZu59Kx8tjiOdbhNjQJ6jj5FrQgSfwv62MuX Xvo+btsFa1jSrF/sPEfnuri/mKlOpBeULV3bsjEIVNcUh0uuc1ayBoqFwMi6bDrIR3QX E9b6uoRcCT7yKkpT0S+gkmwQlqobuLSyi3hN1CI0DYmdMrTPMHU3Mzd/XxmPdeWz6fTd mxm7MfbC35oX2oAb9u4n4B34/NOYiYnaqIbPkXqyDsN/Lj80O2Jhy8o4iqcc5LwisDnk 7aGmZTlOKa+c+sunOQuFS3HLkUXUR4CK1Wc9qw4tPPdruu7ucgyaavwItbdXe3CGlTVV +EoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NVZxBYjya/bVlEFKs7qigQ6ua4ofT68Gshv8z31H2EM=; b=PAkpHf5/TDx3QBMsDdPIErm564v16M5ePglOSet38NiaRrgthmH17gwMh8oKCiAhnH 0ZPHypND24fWWGSlDaL4y0Sw9cu+3ZMK6Fviqq5QJar8Kqug9zLPVYbctWZAYhrUCqkh 5xAvC66G9W4EGICQNsdzH02J3u+ykicPjEtNP2/yTXIz/ySKZakHpm8gSyJiGvZq3A8W bHp7wJZgSHRojz4ZxWZTGy3evMwaR/N40/s+9yeAa9qgDHryieHQtuW1bpIjiKqj0caY J8y324Bpet3qx5ZTRY/wrv1iQ7fFHGEl/2q6Lv+ofBh3spIzS9nOmdtbdVrwkYC83lqA 3EmQ== X-Gm-Message-State: AOAM530xCnCcJyIPaAo6rRcICRXdhEdp61DVq8+wpuTXXkS1ctqC/Phz hHB5EE7REJKHi4MtGjXLY674H2MecBzAJw== X-Google-Smtp-Source: ABdhPJx5HFHJeIFS1VYYXc89/NeX1Kj6GzRzihl7eu3btJIEoCcnh0fV37nt6LcsOj2HzO2P3WVW3g== X-Received: by 2002:a17:90b:3b4b:b0:1bf:d4e:d677 with SMTP id ot11-20020a17090b3b4b00b001bf0d4ed677mr5261181pjb.56.1646341202596; Thu, 03 Mar 2022 13:00:02 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 10/30] tcg/i386: Implement avx512 scalar shift Date: Thu, 3 Mar 2022 10:59:24 -1000 Message-Id: <20220303205944.469445-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::62f (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646341927542100003 AVX512VL has VPSRAQ. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 055db88422..1ef34f0b52 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -369,6 +369,7 @@ static bool tcg_target_const_match(int64_t val, TCGType= type, int ct) #define OPC_PSLLQ (0xf3 | P_EXT | P_DATA16) #define OPC_PSRAW (0xe1 | P_EXT | P_DATA16) #define OPC_PSRAD (0xe2 | P_EXT | P_DATA16) +#define OPC_VPSRAQ (0x72 | P_EXT | P_DATA16 | P_VEXW | P_EVEX) #define OPC_PSRLW (0xd1 | P_EXT | P_DATA16) #define OPC_PSRLD (0xd2 | P_EXT | P_DATA16) #define OPC_PSRLQ (0xd3 | P_EXT | P_DATA16) @@ -2854,7 +2855,7 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode o= pc, OPC_UD2, OPC_PSRLW, OPC_PSRLD, OPC_PSRLQ }; static int const sars_insn[4] =3D { - OPC_UD2, OPC_PSRAW, OPC_PSRAD, OPC_UD2 + OPC_UD2, OPC_PSRAW, OPC_PSRAD, OPC_VPSRAQ }; static int const abs_insn[4] =3D { /* TODO: AVX512 adds support for MO_64. */ @@ -3330,7 +3331,14 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type,= unsigned vece) case INDEX_op_shrs_vec: return vece >=3D MO_16; case INDEX_op_sars_vec: - return vece >=3D MO_16 && vece <=3D MO_32; + switch (vece) { + case MO_16: + case MO_32: + return 1; + case MO_64: + return have_avx512vl; + } + return 0; case INDEX_op_rotls_vec: return vece >=3D MO_16 ? -1 : 0; =20 --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342034; cv=none; d=zohomail.com; s=zohoarc; b=F/i8vdqBpElQx0a44J6DW09kJfSO76whtiUU2YrXOwBq3qF0cq+ejGcssiUp3xgRygdY9Zh7w/Mm2MgJDmQ6sBOpvz2Q4uQi7TWeSlSEu1r2Irv36cRQbwJbRPnomcQbN6vYml4Im8itlpB1TCvRQlSQorC6ymZD7rzm8M2Tzgc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342034; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pd3yrxT35d4SOyEjqIqaXgmr9vG25Nh62apx3szcfnk=; b=NqQZSNw/srDTRHqCrNZYSlAaeXzGIM1Mzgoj5kBLzzZ9+GBnSxonDg8KiWzk8vyb+DiIEePxrGBtxCGMTynuXnRgCtpi15XDNQuJ1hqCQVUI9pqY6V6TfL5ttwRS5NmCHgmhY9lrYZbS/gmwsO02EcDh9ihzZLj+ArNlWpOBXtw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342034095571.5077421722171; Thu, 3 Mar 2022 13:13:54 -0800 (PST) Received: from localhost ([::1]:37766 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsll-0008V7-IL for importer@patchew.org; Thu, 03 Mar 2022 16:13:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58970) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYR-0005wx-EB for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:07 -0500 Received: from [2607:f8b0:4864:20::52b] (port=36452 helo=mail-pg1-x52b.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYP-0004EL-M1 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:07 -0500 Received: by mail-pg1-x52b.google.com with SMTP id t14so5754911pgr.3 for ; Thu, 03 Mar 2022 13:00:05 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pd3yrxT35d4SOyEjqIqaXgmr9vG25Nh62apx3szcfnk=; b=Mm93nEYKmYEUiPnIUUa+xvTossscaaaO41G7bRxukfRsnxlNcMEzYy5lcugLvjLGsl ZCgWh78UcerFpj1XCwKvPnIofcBu5p0Hm5nwAPOElO8ypbYGsYyGf2m4WTs3PU/Bp+/f FSF+BHJqj14ccVVH/PnHhYiQrwXYUJRR7KLbuxKNs8zkjg1esWKGfN9GypI4/hqYCShb YINwVVdkH1nyxZcFVMLSP0n/P7SjyNA34v+fV2Qp00tSd2ponnC6bBzdn/fruNzTSlTH G+NX0zoXDbQ2RRgS9/KEgCJwLUNmFdpRQHVXGMDQwqq4dqa0YkDHu5JqwoiRyjXPFBzJ J8Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pd3yrxT35d4SOyEjqIqaXgmr9vG25Nh62apx3szcfnk=; b=u+5CSnqigdGTjVuHefbQcr19nZvucteXUJTL4ReCGVN7ohbiyFI9vRnYKiUJTBYui+ qb4n8CkZA2COe6mHsPNBRRE8AA73qxQS0NJSulvOqgA7QaGRK5nCKK9rZNxXpdxKO9ni F5QvCNW22N9GCH/70I/P4Rz9RoSP0r2+/BhYAClOHlhVqzN6j9KAD+CS8pWcWDWfMshD ZNDffls6ajGTjDkaW6sq5LyNlT8+rsxT1Ehp1KJXY92IL63mKzS4ckItfVXIfDbJTaPf xZq3o6tcmCf5MCo4lH1ahtUWxa+YIi8VjYnjYpgV5A0Ab/yOistv/+Q1mLj3SHD+iV1i iYzQ== X-Gm-Message-State: AOAM532FOUkKRckNwf2GGLragUUYHPSFjbKWLN1I2rmK7XPxzL+1a4CU wxDTF2jEbYZDHyoBEgTlsxsucz46y2ZCjQ== X-Google-Smtp-Source: ABdhPJwRvBaKB5uJQd3hWaBYGdTA2qjiU4zD0Vx5VkbH63jRgBpQJ+6oogLBiuphYxanI8PRaeRP8g== X-Received: by 2002:aa7:85d8:0:b0:4f6:8ae9:16a8 with SMTP id z24-20020aa785d8000000b004f68ae916a8mr3181958pfn.15.1646341204358; Thu, 03 Mar 2022 13:00:04 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 11/30] tcg/i386: Implement avx512 immediate sari shift Date: Thu, 3 Mar 2022 10:59:25 -1000 Message-Id: <20220303205944.469445-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::52b (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342042982100003 AVX512 has VPSRAQ with immediate operand, in the same form as with AVX, but requires EVEX encoding and W1. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 1ef34f0b52..de01fbf40c 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -2986,17 +2986,22 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode= opc, break; =20 case INDEX_op_shli_vec: + insn =3D shift_imm_insn[vece]; sub =3D 6; goto gen_shift; case INDEX_op_shri_vec: + insn =3D shift_imm_insn[vece]; sub =3D 2; goto gen_shift; case INDEX_op_sari_vec: - tcg_debug_assert(vece !=3D MO_64); + if (vece =3D=3D MO_64) { + insn =3D OPC_PSHIFTD_Ib | P_VEXW | P_EVEX; + } else { + insn =3D shift_imm_insn[vece]; + } sub =3D 4; gen_shift: tcg_debug_assert(vece !=3D MO_8); - insn =3D shift_imm_insn[vece]; if (type =3D=3D TCG_TYPE_V256) { insn |=3D P_VEXL; } @@ -3316,16 +3321,23 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type= , unsigned vece) return vece =3D=3D MO_8 ? -1 : 1; =20 case INDEX_op_sari_vec: - /* We must expand the operation for MO_8. */ - if (vece =3D=3D MO_8) { + switch (vece) { + case MO_8: return -1; - } - /* We can emulate this for MO_64, but it does not pay off - unless we're producing at least 4 values. */ - if (vece =3D=3D MO_64) { + case MO_16: + case MO_32: + return 1; + case MO_64: + if (have_avx512vl) { + return 1; + } + /* + * We can emulate this for MO_64, but it does not pay off + * unless we're producing at least 4 values. + */ return type >=3D TCG_TYPE_V256 ? -1 : 0; } - return 1; + return 0; =20 case INDEX_op_shls_vec: case INDEX_op_shrs_vec: --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342030; cv=none; d=zohomail.com; s=zohoarc; b=n9NA4RKcRPixBgWybnaYGSI/LOZbZvgXkGVc9bmqj/RWSY5SKl6HLc4HFKJmIGnxr7O74v85HQjGS+fxsttWUQV22DDjvkmPdy3VH7pxIPxuwmznmHK11fPkQsfGlCmw1QALxeQ/KTT5aKt3aymDSY0YCGXLzrm+JBKV743LNXM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342030; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=cQT9zMG4FhkFaAOj70Z7g11F51tSzJO8zWBn/QmjzwM=; b=YciCpvP2lh05jSUdUBza5vwv4Z0ASkjs1vBF5wUbA67EW5UKTwdNgEjfIZ2gm2wHhuINpJvJjlTD5YD7WhzhslCaMf85ZGOCfh2swKAeb2cU5RRkchE6SzyVjaBqOlM0aGb69mg8tb73zxoLTgzyAqoBw2pFDVg4i6KfL82739A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342030300424.4595727758318; Thu, 3 Mar 2022 13:13:50 -0800 (PST) Received: from localhost ([::1]:37420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPslh-0008Ht-1y for importer@patchew.org; Thu, 03 Mar 2022 16:13:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59002) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYS-0005zf-ST for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:09 -0500 Received: from [2607:f8b0:4864:20::62e] (port=36582 helo=mail-pl1-x62e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYR-0004HG-38 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:08 -0500 Received: by mail-pl1-x62e.google.com with SMTP id e13so5875522plh.3 for ; Thu, 03 Mar 2022 13:00:06 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cQT9zMG4FhkFaAOj70Z7g11F51tSzJO8zWBn/QmjzwM=; b=MhR+9nDhEMB/UdupTHC68b7DOCxs9TewlPsLE2p7Hm1T3K4iVINr56FNck1SPvWhh9 KBka8IkoVM+za1/QyqvD/+DMKMmimxYbLrs456EyLs7sdZdy2jMzB3tERQyqweNs5BjI 2Kekze/nS6Gh9U6fFPfxYkIUt9btM1+ZqgaGs2r27CSVZCAtaBVMlILI1IbNAyC7d7/c IqbyetpxtJHVejV0okIt5vRQKS9AHgy3FgElmtA4meaUij4REXzzSUu/Co99BL7DcDl6 oqxYx7vs2uChG6bkbhAVBa7ZGvGtwYw0F+qPjBNYopLHnZtBqXRPZfV0wncXZy2Hdc2Q 1JQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cQT9zMG4FhkFaAOj70Z7g11F51tSzJO8zWBn/QmjzwM=; b=zEt42BTqWHT7sjp2oCoLewhA/6jyzYB8mtVso9m5LG6KKhrgeW9Ecyxlu7zQwJwI1i M5vX6jVUOkI2+QTo9zNr8E8K1rjDYVrqTC591fJ2UBL6GG79ld9tO2Fm8WRw2sjLIUrR 2wvxuJzJSCNAAQQyb46K3rYlBUZKLiJ1HOX2UnfgAMdRomaXeaYXNY8wS8k426aSPI9R okCFTecTZrD6x31mUhfWctwtLQIPpfl1Cs4s33DoJ4uLDuB3/WBOLkzVdMhZmfsIcD/T 2eYhICfjRR//f1BWhEKFzCIoMmwbScjBPjvgymFdAeecKKo+Uv8k63uFW6LPoWoINaaI Toaw== X-Gm-Message-State: AOAM533gCgPTIbMGfFGL1kkyppshNLXP+9iBXV2/C5WZiPal4iWdurYI axY+JsiX3vmjdTaBbOwCydpWNSfDmjUE+A== X-Google-Smtp-Source: ABdhPJyWhJ1ltpEUpJrWVeXUjVKwgZN2ehJTriAQGjkSZwWnxKXNtWG4pZREUnhst9zdW4BlhfOMwA== X-Received: by 2002:a17:90a:7f84:b0:1bc:aba8:f281 with SMTP id m4-20020a17090a7f8400b001bcaba8f281mr7271185pjl.101.1646341205722; Thu, 03 Mar 2022 13:00:05 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 12/30] tcg/i386: Implement avx512 immediate rotate Date: Thu, 3 Mar 2022 10:59:26 -1000 Message-Id: <20220303205944.469445-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::62e (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342032715100003 Content-Type: text/plain; charset="utf-8" AVX512VL has VPROLD and VPROLQ, layered onto the same opcode as PSHIFTD, but requires EVEX encoding and W1. Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.h | 2 +- tcg/i386/tcg-target.c.inc | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index 79af353860..23a8b2a8c8 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -195,7 +195,7 @@ extern bool have_movbe; #define TCG_TARGET_HAS_not_vec 0 #define TCG_TARGET_HAS_neg_vec 0 #define TCG_TARGET_HAS_abs_vec 1 -#define TCG_TARGET_HAS_roti_vec 0 +#define TCG_TARGET_HAS_roti_vec have_avx512vl #define TCG_TARGET_HAS_rots_vec 0 #define TCG_TARGET_HAS_rotv_vec 0 #define TCG_TARGET_HAS_shi_vec 1 diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index de01fbf40c..3a9f6a3360 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -362,7 +362,7 @@ static bool tcg_target_const_match(int64_t val, TCGType= type, int ct) #define OPC_PSHUFLW (0x70 | P_EXT | P_SIMDF2) #define OPC_PSHUFHW (0x70 | P_EXT | P_SIMDF3) #define OPC_PSHIFTW_Ib (0x71 | P_EXT | P_DATA16) /* /2 /6 /4 */ -#define OPC_PSHIFTD_Ib (0x72 | P_EXT | P_DATA16) /* /2 /6 /4 */ +#define OPC_PSHIFTD_Ib (0x72 | P_EXT | P_DATA16) /* /1 /2 /6 /4 */ #define OPC_PSHIFTQ_Ib (0x73 | P_EXT | P_DATA16) /* /2 /6 /4 */ #define OPC_PSLLW (0xf1 | P_EXT | P_DATA16) #define OPC_PSLLD (0xf2 | P_EXT | P_DATA16) @@ -3000,6 +3000,14 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, insn =3D shift_imm_insn[vece]; } sub =3D 4; + goto gen_shift; + case INDEX_op_rotli_vec: + insn =3D OPC_PSHIFTD_Ib | P_EVEX; /* VPROL[DQ] */ + if (vece =3D=3D MO_64) { + insn |=3D P_VEXW; + } + sub =3D 1; + goto gen_shift; gen_shift: tcg_debug_assert(vece !=3D MO_8); if (type =3D=3D TCG_TYPE_V256) { @@ -3289,6 +3297,7 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) case INDEX_op_shli_vec: case INDEX_op_shri_vec: case INDEX_op_sari_vec: + case INDEX_op_rotli_vec: case INDEX_op_x86_psrldq_vec: return C_O1_I1(x, x); =20 @@ -3310,11 +3319,13 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type= , unsigned vece) case INDEX_op_xor_vec: case INDEX_op_andc_vec: return 1; - case INDEX_op_rotli_vec: case INDEX_op_cmp_vec: case INDEX_op_cmpsel_vec: return -1; =20 + case INDEX_op_rotli_vec: + return have_avx512vl && vece >=3D MO_32 ? 1 : -1; + case INDEX_op_shli_vec: case INDEX_op_shri_vec: /* We must expand the operation for MO_8. */ --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342198; cv=none; d=zohomail.com; s=zohoarc; b=jJiNk2krye1x8ifxhlU7W6t7+AjSwn+uTYsLj5wJWwyIEpxWSK7ZWZVWPwObPkuF+VU4UBSLHayjUEckrBSSCZuVEbC6+bmG9A0h/BXpUKieQLpog8S0hOQAJz2xjHlQbIjSK3mnCq/TVVy04KCrJk3DRDEnrcdnCrzVh/1g0kM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342198; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EnmFxj+fZU2f2HHas6eAUj0uJ7KzSplIKT7ukEJg/z0=; b=lFsVDPoknHDn+TYED8EbyRnM3gG/t/6mLxUrDBLyTK3TaV1HAZUq/0WuYukumzYDZC14us/OJ+VHkh1j4+MLYnerZmTMr9bDv12NBQHY3d1vYnI94LzKKPVnJsWtg0Skt47Y17DVPfds5um3YuK6E7ytUPZL1lJkDWCo/5otBls= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342198336504.09616149593876; Thu, 3 Mar 2022 13:16:38 -0800 (PST) Received: from localhost ([::1]:46028 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsoP-0005hL-5G for importer@patchew.org; Thu, 03 Mar 2022 16:16:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59044) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYU-00062T-Fx for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:10 -0500 Received: from [2607:f8b0:4864:20::1031] (port=55203 helo=mail-pj1-x1031.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYS-0004HZ-Hr for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:10 -0500 Received: by mail-pj1-x1031.google.com with SMTP id b8so5697167pjb.4 for ; Thu, 03 Mar 2022 13:00:07 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EnmFxj+fZU2f2HHas6eAUj0uJ7KzSplIKT7ukEJg/z0=; b=HvctizwnTdr3jcUbawyaHLhRcF5Zmc12wg4H3a7hgxwCa4G5GW3a7YZUyKhpjf3bl7 VFcICgwYq9Tg6Mh9/Q7I5VcBtQI4mEquwU/VZ4ZstF65vIgBpNxfQyccfXslSxsfyori WvMT56qfo0r9zcw7+n/JhnFIzkAy1xe8dgdS9p+DEejp8Cspxjyk+Xug/bZEnvKyuXsS OZJyN4xKKK2BG0tns08TKVEIPGSybE2/Yr2a+snQfGQV2cMTX2dwj0K2LTvgbnW/MDfd msfnNKd3Ao0uW/KMMT+ajwQ2gZYkSQRzicJ3RdP3O9Tnjpi3yjBqTaVWYpL0Zj9RLAUK THJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EnmFxj+fZU2f2HHas6eAUj0uJ7KzSplIKT7ukEJg/z0=; b=6s63mFOV0C0AreFgB5mTnf05GnWlrc+63RddKQCH2xMe0lm+N82MDeIZ2IoR9YKqOQ m3ryvXkk2rgukczjfZic0XPgBDnipm2W+XficwepLy9OcwnNPRW7LtQBXPCySUQnPONl 9VrgbTYuakkvdQ+pFz5pIcG+3zxmDFdpV6jv9GwLRDlUBRKnwBOnd5L0tqaItiJ9UgID +YL9LsgVIgu91H0Mop3luWsYws2dllXEfsMslxvjQxJBbTEBq040S6We/RwzVBDUWPOo mwqb0/e/+nv7r4rJC1Pjgn/W7yjZo2AmFns/wufJu7m1xtf24esJ1i53lGjZ/cIv3iEZ cM1g== X-Gm-Message-State: AOAM532sUjzVVkurz9UWz+EmkMHezPlltbrQIVYQK5FRv5/1/4yTu1il uJdCuZiyhbElSg+gXFbE37OxtBHcznhu2g== X-Google-Smtp-Source: ABdhPJxeTQRNAZSCJJ/Ye9SjhltNwVLbO9JcxsIu1Sv+/nF3VcwvmKKCJt2TVaCvF/hV2oM0vkUjyw== X-Received: by 2002:a17:90b:1e4b:b0:1bd:4c83:56a7 with SMTP id pi11-20020a17090b1e4b00b001bd4c8356a7mr7322732pjb.109.1646341207127; Thu, 03 Mar 2022 13:00:07 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 13/30] tcg/i386: Implement avx512 variable rotate Date: Thu, 3 Mar 2022 10:59:27 -1000 Message-Id: <20220303205944.469445-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1031 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342199852100003 AVX512VL has VPROLVD and VPRORVQ. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.h | 2 +- tcg/i386/tcg-target.c.inc | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index 23a8b2a8c8..da1eff59aa 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -197,7 +197,7 @@ extern bool have_movbe; #define TCG_TARGET_HAS_abs_vec 1 #define TCG_TARGET_HAS_roti_vec have_avx512vl #define TCG_TARGET_HAS_rots_vec 0 -#define TCG_TARGET_HAS_rotv_vec 0 +#define TCG_TARGET_HAS_rotv_vec have_avx512vl #define TCG_TARGET_HAS_shi_vec 1 #define TCG_TARGET_HAS_shs_vec 1 #define TCG_TARGET_HAS_shv_vec have_avx2 diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 3a9f6a3360..712ae3a168 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -420,6 +420,10 @@ static bool tcg_target_const_match(int64_t val, TCGTyp= e type, int ct) #define OPC_VPBROADCASTQ (0x59 | P_EXT38 | P_DATA16) #define OPC_VPERMQ (0x00 | P_EXT3A | P_DATA16 | P_VEXW) #define OPC_VPERM2I128 (0x46 | P_EXT3A | P_DATA16 | P_VEXL) +#define OPC_VPROLVD (0x15 | P_EXT38 | P_DATA16 | P_EVEX) +#define OPC_VPROLVQ (0x15 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) +#define OPC_VPRORVD (0x14 | P_EXT38 | P_DATA16 | P_EVEX) +#define OPC_VPRORVQ (0x14 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VPSLLVW (0x12 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VPSLLVD (0x47 | P_EXT38 | P_DATA16) #define OPC_VPSLLVQ (0x47 | P_EXT38 | P_DATA16 | P_VEXW) @@ -2839,6 +2843,12 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, static int const umax_insn[4] =3D { OPC_PMAXUB, OPC_PMAXUW, OPC_PMAXUD, OPC_UD2 }; + static int const rotlv_insn[4] =3D { + OPC_UD2, OPC_UD2, OPC_VPROLVD, OPC_VPROLVQ + }; + static int const rotrv_insn[4] =3D { + OPC_UD2, OPC_UD2, OPC_VPRORVD, OPC_VPRORVQ + }; static int const shlv_insn[4] =3D { OPC_UD2, OPC_VPSLLVW, OPC_VPSLLVD, OPC_VPSLLVQ }; @@ -2922,6 +2932,12 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, case INDEX_op_sarv_vec: insn =3D sarv_insn[vece]; goto gen_simd; + case INDEX_op_rotlv_vec: + insn =3D rotlv_insn[vece]; + goto gen_simd; + case INDEX_op_rotrv_vec: + insn =3D rotrv_insn[vece]; + goto gen_simd; case INDEX_op_shls_vec: insn =3D shls_insn[vece]; goto gen_simd; @@ -3275,6 +3291,8 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) case INDEX_op_shlv_vec: case INDEX_op_shrv_vec: case INDEX_op_sarv_vec: + case INDEX_op_rotlv_vec: + case INDEX_op_rotrv_vec: case INDEX_op_shls_vec: case INDEX_op_shrs_vec: case INDEX_op_sars_vec: @@ -3387,7 +3405,12 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type,= unsigned vece) return 0; case INDEX_op_rotlv_vec: case INDEX_op_rotrv_vec: - return have_avx2 && vece >=3D MO_32 ? -1 : 0; + switch (vece) { + case MO_32: + case MO_64: + return have_avx512vl ? 1 : have_avx2 ? -1 : 0; + } + return 0; =20 case INDEX_op_mul_vec: if (vece =3D=3D MO_8) { --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342214; cv=none; d=zohomail.com; s=zohoarc; b=SVKGHQoXzKYVz4hgSBxUP7rg6OzhvK4FyvMJM6YS95UAFYlcpHQ9WGEZoL75Tyk9g+rHxCOIgK2hiPOPY7wpr1pPSiVONujkkS7fcoKj0Kv40DGY7tOBXOVmkV/BA5ro0vXhML7iUYnpHT+kr+URHiopQHXAnrohWKr3FlZGNjY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342214; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GxqbaeGaqhtNNI3GWh/zd5zM1ofbIy5Pq91AeE2m2ho=; b=N8cksP+o1qj9rNSia9SFeMgrJ/Oy2T1DPjh5xy4/kDkKwC6qWXTWFDwECLwO6IZ/8fsMC8QhtxX0yUX52F0vXGZ/XLypl7sEWl1av3Vm8p++P4wBF5rcPQgYTQ/j5PoHX7paCs2gfcgX4DDdLilmPXL4qkr9LgpGBSMH75JZQaI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342214109519.5526129645028; Thu, 3 Mar 2022 13:16:54 -0800 (PST) Received: from localhost ([::1]:46426 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsof-0005yv-1y for importer@patchew.org; Thu, 03 Mar 2022 16:16:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59060) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYV-00063b-QV for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:14 -0500 Received: from [2607:f8b0:4864:20::1029] (port=36400 helo=mail-pj1-x1029.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYT-0004I0-VG for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:11 -0500 Received: by mail-pj1-x1029.google.com with SMTP id g7-20020a17090a708700b001bb78857ccdso8903341pjk.1 for ; Thu, 03 Mar 2022 13:00:09 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GxqbaeGaqhtNNI3GWh/zd5zM1ofbIy5Pq91AeE2m2ho=; b=fjOajX71PR2ShO7W4/DTEvLAcGAR7K20ltudoHLPQ9YWBeYaj/B0AszLpu2EYmvQ9n OdFDvv4hqALSdXVaGr4apmOcb+jZDFZZ+c5sPQ8A+2ADNp+GziaK2oJze9LtQraBXyOz ieR2EggunVga2pm/BnH8yS+pW4T3mJ0vHZ6KA2TO6SHIYGK02F8KnqYVeaXj6Y/x93Xw fA9CH8nRpVonjW9ikFlWrguBDu7qga7z0vJLPBfhw09B7Ad/ExpPIrbU2xntArZtUFAr 0EpaX4h6A1kaK7uUZc0ikDCbYs//8s6/kSsEOdjOrse4rClcou+830WGpxBN86/rOC8f SvfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GxqbaeGaqhtNNI3GWh/zd5zM1ofbIy5Pq91AeE2m2ho=; b=7H9fydruaMuM8SR9F1u7aMl7ZyI+C7BMZHM+cR0lDUjn0AlOabbqbyJbUI8JaYjRHH 5em5sVPfqkA3fqQW9N/G2E77zc8NlL2UWGQSNIohQAHi1BLkSW+CfqYMbMGALkJu6hqE hDZxAUgzL5m3mVYqj9U0VlryqbZ16nbXoQgdyKMtxtZ2McO2L/5Zc7J005EZmQsKKsOF UpSXs+MqgWZMRUzKFQjqiTKW5ak2BWjFuhg/BDEvutp493AABsHy28LmF2wwTIE4xhUZ +Oa/Xkr5DVKtrCIiJQu26iUc+Dqt4bPl5FyXE1xOTHxlsNk3jftqhOCUbvaNnMNBvk66 W+VA== X-Gm-Message-State: AOAM530ubvAgSuwnhocq5D2AW10BZbqn/WXuipVMQMJw4atAGPPJaIaq OEJx8+mVRtdbqLZCBn2cCgA53/r2pI30vw== X-Google-Smtp-Source: ABdhPJzWxgZLYtSVy1cOl42q5eY+zBMza+F5pUgg64pW8JCYvNyA9ybBxViLWqe8DIIobDJh7TcHqg== X-Received: by 2002:a17:90b:4f8f:b0:1bf:ac1:2016 with SMTP id qe15-20020a17090b4f8f00b001bf0ac12016mr6153283pjb.21.1646341208672; Thu, 03 Mar 2022 13:00:08 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 14/30] tcg/i386: Support avx512vbmi2 vector shift-double instructions Date: Thu, 3 Mar 2022 10:59:28 -1000 Message-Id: <20220303205944.469445-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1029 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342215953100001 We will use VPSHLD, VPSHLDV and VPSHRDV for 16-bit rotates. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target-con-set.h | 1 + tcg/i386/tcg-target.opc.h | 3 +++ tcg/i386/tcg-target.c.inc | 38 +++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/tcg/i386/tcg-target-con-set.h b/tcg/i386/tcg-target-con-set.h index 78774d1005..91ceb0e1da 100644 --- a/tcg/i386/tcg-target-con-set.h +++ b/tcg/i386/tcg-target-con-set.h @@ -45,6 +45,7 @@ C_O1_I2(r, r, rI) C_O1_I2(x, x, x) C_N1_I2(r, r, r) C_N1_I2(r, r, rW) +C_O1_I3(x, 0, x, x) C_O1_I3(x, x, x, x) C_O1_I4(r, r, re, r, 0) C_O1_I4(r, r, r, ri, ri) diff --git a/tcg/i386/tcg-target.opc.h b/tcg/i386/tcg-target.opc.h index 1312941800..b5f403e35e 100644 --- a/tcg/i386/tcg-target.opc.h +++ b/tcg/i386/tcg-target.opc.h @@ -33,3 +33,6 @@ DEF(x86_psrldq_vec, 1, 1, 1, IMPLVEC) DEF(x86_vperm2i128_vec, 1, 2, 1, IMPLVEC) DEF(x86_punpckl_vec, 1, 2, 0, IMPLVEC) DEF(x86_punpckh_vec, 1, 2, 0, IMPLVEC) +DEF(x86_vpshldi_vec, 1, 2, 1, IMPLVEC) +DEF(x86_vpshldv_vec, 1, 3, 0, IMPLVEC) +DEF(x86_vpshrdv_vec, 1, 3, 0, IMPLVEC) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 712ae3a168..a39f890a7d 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -424,6 +424,15 @@ static bool tcg_target_const_match(int64_t val, TCGTyp= e type, int ct) #define OPC_VPROLVQ (0x15 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VPRORVD (0x14 | P_EXT38 | P_DATA16 | P_EVEX) #define OPC_VPRORVQ (0x14 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) +#define OPC_VPSHLDW (0x70 | P_EXT3A | P_DATA16 | P_VEXW | P_EVEX) +#define OPC_VPSHLDD (0x71 | P_EXT3A | P_DATA16 | P_EVEX) +#define OPC_VPSHLDQ (0x71 | P_EXT3A | P_DATA16 | P_VEXW | P_EVEX) +#define OPC_VPSHLDVW (0x70 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) +#define OPC_VPSHLDVD (0x71 | P_EXT38 | P_DATA16 | P_EVEX) +#define OPC_VPSHLDVQ (0x71 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) +#define OPC_VPSHRDVW (0x72 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) +#define OPC_VPSHRDVD (0x73 | P_EXT38 | P_DATA16 | P_EVEX) +#define OPC_VPSHRDVQ (0x73 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VPSLLVW (0x12 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VPSLLVD (0x47 | P_EXT38 | P_DATA16) #define OPC_VPSLLVQ (0x47 | P_EXT38 | P_DATA16 | P_VEXW) @@ -2867,6 +2876,15 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, static int const sars_insn[4] =3D { OPC_UD2, OPC_PSRAW, OPC_PSRAD, OPC_VPSRAQ }; + static int const vpshldi_insn[4] =3D { + OPC_UD2, OPC_VPSHLDW, OPC_VPSHLDD, OPC_VPSHLDQ + }; + static int const vpshldv_insn[4] =3D { + OPC_UD2, OPC_VPSHLDVW, OPC_VPSHLDVD, OPC_VPSHLDVQ + }; + static int const vpshrdv_insn[4] =3D { + OPC_UD2, OPC_VPSHRDVW, OPC_VPSHRDVD, OPC_VPSHRDVQ + }; static int const abs_insn[4] =3D { /* TODO: AVX512 adds support for MO_64. */ OPC_PABSB, OPC_PABSW, OPC_PABSD, OPC_UD2 @@ -2959,6 +2977,16 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, case INDEX_op_x86_packus_vec: insn =3D packus_insn[vece]; goto gen_simd; + case INDEX_op_x86_vpshldv_vec: + insn =3D vpshldv_insn[vece]; + a1 =3D a2; + a2 =3D args[3]; + goto gen_simd; + case INDEX_op_x86_vpshrdv_vec: + insn =3D vpshrdv_insn[vece]; + a1 =3D a2; + a2 =3D args[3]; + goto gen_simd; #if TCG_TARGET_REG_BITS =3D=3D 32 case INDEX_op_dup2_vec: /* First merge the two 32-bit inputs to a single 64-bit element. */ @@ -3061,7 +3089,12 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, insn =3D OPC_VPERM2I128; sub =3D args[3]; goto gen_simd_imm8; + case INDEX_op_x86_vpshldi_vec: + insn =3D vpshldi_insn[vece]; + sub =3D args[3]; + goto gen_simd_imm8; gen_simd_imm8: + tcg_debug_assert(insn !=3D OPC_UD2); if (type =3D=3D TCG_TYPE_V256) { insn |=3D P_VEXL; } @@ -3305,6 +3338,7 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) case INDEX_op_x86_vperm2i128_vec: case INDEX_op_x86_punpckl_vec: case INDEX_op_x86_punpckh_vec: + case INDEX_op_x86_vpshldi_vec: #if TCG_TARGET_REG_BITS =3D=3D 32 case INDEX_op_dup2_vec: #endif @@ -3319,6 +3353,10 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOp= code op) case INDEX_op_x86_psrldq_vec: return C_O1_I1(x, x); =20 + case INDEX_op_x86_vpshldv_vec: + case INDEX_op_x86_vpshrdv_vec: + return C_O1_I3(x, 0, x, x); + case INDEX_op_x86_vpblendvb_vec: return C_O1_I3(x, x, x, x); =20 --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342153; cv=none; d=zohomail.com; s=zohoarc; b=EI9jGHy2tGO3R/kUO7uY/DHnybGIm2wUD54hG047H/qxfclf4J6YtP/QRQgQPS8uQutrhcQCIMmAxv2bOlEFHMWxL41lpsOCeObSetnjiTDuMzPuXe+zQZHweovlnU3L5YLjFvJlPy4HCNdcEqlz41oM7sJhf59jnFMQ+Fj7Nvc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342153; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QDDlJN6MJVLgjog2f3d7nAGveYgDV1Ef+8NhvEcVhw0=; b=dOb2UgISSddZ9PfGUpFwpS/HFaz0L03+yIbrDV3aKsY5dm2k49VRwYJXwmc/khh7jKLkusGqlfbvuqRwnRzqmQEIgnSDa5wGdcRj2y06NiGY6ea7dQDUPE/faKPiyGw/KS8hZTafreH7vqeZciPUEmw+oYA6E4iCMN+sSoJxLbc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342153851874.866436689898; Thu, 3 Mar 2022 13:15:53 -0800 (PST) Received: from localhost ([::1]:43458 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsng-0003q7-Mn for importer@patchew.org; Thu, 03 Mar 2022 16:15:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59076) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYW-000642-Ub for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:14 -0500 Received: from [2607:f8b0:4864:20::431] (port=39680 helo=mail-pf1-x431.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYV-0004IK-FJ for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:12 -0500 Received: by mail-pf1-x431.google.com with SMTP id y11so5797947pfa.6 for ; Thu, 03 Mar 2022 13:00:11 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QDDlJN6MJVLgjog2f3d7nAGveYgDV1Ef+8NhvEcVhw0=; b=lZAummEdnh+Z7wOIbjqpW/rwV70H/w3ucGyUVo+HyLkATZGqNPP8UkLjf+sz0hZ+y6 jwuObTzX695uToHv5ehrGZ2MtNbaA4nKpJwF0vo1dw+ad09kgNud59NAve6j1hylMH5N FH4r9qAsNbBoiold7MZHvFqVKCdZEFSpWi5w2EKdF036XQ/m3gmQwOtouQoS/9mcR51s 6410YxxaTqG+P3i95z86RzcaQK/zO3Ssto+XEuytUJDCe8CcT/cO86bYBBMG1nI08Oaq HvOrlJaFm7CaxeiEt77v/18FXSwWWQ9D+n7PDpaTxXKJdDRhWjrCFo+CWIZvC/41+3Zo LnAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QDDlJN6MJVLgjog2f3d7nAGveYgDV1Ef+8NhvEcVhw0=; b=HU7zLqfMAE9/j8ILBm1HGmqEtRCtWfX5YxjvoJA3N6qyeuovSv/QR9mw5+qo+4u4W/ ENpAjBek/gKizeeehpK8Lv3/yOs3OgQvQBb1LAXtsKKzBwYgE2Hp1VbNakA1+4apLsju fdsZ8uitZuEy87CEMiJp+eO+p7h3xErrJvIJbzJmO3X5CtbByH/41VIaCHCvALdQc1bQ LcebR6OFtFljpXsPnpJg/rrc0nRchKCglPfZnMfTpYRHltZYLxgNr7gf2Yg5/25epb5f jrRj6U4W/fdCt8z1O0qMX9AvyoDMtNKnT6w55tSBBaGdzmK3cnbVY0rAi3aR9cXUyL9W 95oQ== X-Gm-Message-State: AOAM530ctvrWuSP/qhTUj9Gnw4hfDnc8jydYPDBrX/sLwKakzAAD0gnv MreFBTnDWfT+3MscJ+K5/pGjYyxXG2dHXw== X-Google-Smtp-Source: ABdhPJzurlz3ZoUIfclDWNuWUfvxbq6pjY97Z/9IghRn3b8sFGOu2x8yuI6tV3WtK6SYwvceDZ1HOQ== X-Received: by 2002:a63:202:0:b0:37c:4cfc:b89f with SMTP id 2-20020a630202000000b0037c4cfcb89fmr5635880pgc.396.1646341210102; Thu, 03 Mar 2022 13:00:10 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 15/30] tcg/i386: Expand vector word rotate as avx512vbmi2 shift-double Date: Thu, 3 Mar 2022 10:59:29 -1000 Message-Id: <20220303205944.469445-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::431 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342155546100001 While there are no specific 16-bit rotate instructions, there are double-word shifts, which can perform the same operation. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index a39f890a7d..19cf124456 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -3444,6 +3444,8 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type, = unsigned vece) case INDEX_op_rotlv_vec: case INDEX_op_rotrv_vec: switch (vece) { + case MO_16: + return have_avx512vbmi2 ? -1 : 0; case MO_32: case MO_64: return have_avx512vl ? 1 : have_avx2 ? -1 : 0; @@ -3588,6 +3590,12 @@ static void expand_vec_rotli(TCGType type, unsigned = vece, return; } =20 + if (have_avx512vbmi2) { + vec_gen_4(INDEX_op_x86_vpshldi_vec, type, vece, + tcgv_vec_arg(v0), tcgv_vec_arg(v1), tcgv_vec_arg(v1), im= m); + return; + } + t =3D tcg_temp_new_vec(type); tcg_gen_shli_vec(vece, t, v1, imm); tcg_gen_shri_vec(vece, v0, v1, (8 << vece) - imm); @@ -3618,8 +3626,16 @@ static void expand_vec_rotls(TCGType type, unsigned = vece, static void expand_vec_rotv(TCGType type, unsigned vece, TCGv_vec v0, TCGv_vec v1, TCGv_vec sh, bool right) { - TCGv_vec t =3D tcg_temp_new_vec(type); + TCGv_vec t; =20 + if (have_avx512vbmi2) { + vec_gen_4(right ? INDEX_op_x86_vpshrdv_vec : INDEX_op_x86_vpshldv_= vec, + type, vece, tcgv_vec_arg(v0), tcgv_vec_arg(v1), + tcgv_vec_arg(v1), tcgv_vec_arg(sh)); + return; + } + + t =3D tcg_temp_new_vec(type); tcg_gen_dupi_vec(vece, t, 8 << vece); tcg_gen_sub_vec(vece, t, t, sh); if (right) { --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342351; cv=none; d=zohomail.com; s=zohoarc; b=WE+5qTJUxHmKKQjmXus7gmMpcJV0PJQzv2XL39YETsDEDGfsHnIn5FJd01PxDB1AqeUptNcdTIDN+KQn6uQxEHKiYJB7ajEyuozP01FXsvsH3UXUmwvQZCJ5BcQ3ob+h3NaYTkN8r/AvvpndxpksFYnRBLaB6shrVzpGkv7+63w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342351; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=skxQgQ+RFu2/aWNtYDojkF6HkGJxnV7g042MDaIDVgY=; b=Yyxu2jyUdYox+ULfH+64k7Uij9fWqTBkkk5REow48wC6L0xXObaa6oiyf7BEGuvEFBOt87Yw6rgoMzpjijCM/68SU+cmtNkjSA8rZmWL2fGkqOd23q9FBPqudWQ/WdMkmY6chprX4P0tXLpRLgGljsRbgEKT0hnwUuS6Mki1Idg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342351483462.6227067793394; Thu, 3 Mar 2022 13:19:11 -0800 (PST) Received: from localhost ([::1]:54450 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsqs-00034J-4V for importer@patchew.org; Thu, 03 Mar 2022 16:19:10 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59098) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYY-00064O-7y for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:14 -0500 Received: from [2607:f8b0:4864:20::435] (port=40824 helo=mail-pf1-x435.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYW-0004IW-Oc for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:13 -0500 Received: by mail-pf1-x435.google.com with SMTP id z15so5796329pfe.7 for ; Thu, 03 Mar 2022 13:00:12 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=skxQgQ+RFu2/aWNtYDojkF6HkGJxnV7g042MDaIDVgY=; b=wrxxfHJEi5y51wg2AXYp3LLxXUjhCw58/qAmxceWi0dZPCphS/Itul+mfyawEJQVXn zPo+MlOvxaeKG6Ej8E3x3OH93C+66ouH9c0Wt7KLWrIYaJDo77okkNZJayWAu+JvJhKU 7MLSRwVToVrrAljzKH5MJneL6ObL4clv/gbzWOrUVQn1xsMPpm2oJY26TK8OJFGX/YTa Q6tMsrE9YlbN5jpH1xH3306EPmiG2atWM7sMcG28NXJ2C3j+NDlEGw8UqrcxG/ZVAyLE HbARlpvrStN5PAKt3l+et95NOGuadbDpNTsw13DaSL7rgkBKcdgyXRsQkHTczTQ4kV6N gGrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=skxQgQ+RFu2/aWNtYDojkF6HkGJxnV7g042MDaIDVgY=; b=717oru0crH8rOYOkxfxwDugXjMx7ZG0juWDMw77ycQFwC+RQH01/QpLbifLtnp0o1u peDbXy97QjeJfpFeupdZCGSTXBpSeMor2v9HAhD+oyNfZz8bIjXWegFdX9UFYbc9fPLn 82peJsxQSxptRr8WRVk94fUjZlWVNDWD3EmcFFqpYfPKbuRp8VWJEVF1GY1/pkfdJOrz hBc8tW2hnmq/dtJ/s86TmX28oqnscAkAsGl9SBOP78dK9NIodVjajMYad0uWQQgtRl0I TUC9GxYXEdNL2tV38ljsqYQMXfVBK0hCK74U7SFimaK0JNtEbrRcRS3mywP7LHBSc5vM Z28w== X-Gm-Message-State: AOAM530mJjG+PMH2IYWn7cwFU8I0fzhbBTyr3Vj0D9wrBUfjTCO1wHsK LQ33dRN1jjEgD9Na0lV0nprnMUNxSuFIIA== X-Google-Smtp-Source: ABdhPJxd+coDCTDAeWpcbVWv/eWyyYnzS0G7rW/kx6i38qnZBLPvBBqPdosW10op/mE8c/WGK0JGEw== X-Received: by 2002:a63:1651:0:b0:342:b566:57c4 with SMTP id 17-20020a631651000000b00342b56657c4mr30971957pgw.258.1646341211512; Thu, 03 Mar 2022 13:00:11 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 16/30] tcg/i386: Remove rotls_vec from tcg_target_op_def Date: Thu, 3 Mar 2022 10:59:30 -1000 Message-Id: <20220303205944.469445-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::435 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342352974100001 There is no such instruction on x86, so we should not be pretending it has arguments. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 19cf124456..1fbb4b0593 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -3329,7 +3329,6 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) case INDEX_op_shls_vec: case INDEX_op_shrs_vec: case INDEX_op_sars_vec: - case INDEX_op_rotls_vec: case INDEX_op_cmp_vec: case INDEX_op_x86_shufps_vec: case INDEX_op_x86_blend_vec: --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342363; cv=none; d=zohomail.com; s=zohoarc; b=EVRER2e9u2WdA1MiZb7WjI+On+Aeid06K0EMqV4eFJDXZA6VtRnPaC6IC5F7zpCCF6SfpcOM2j9VRyKgaMVxKXolmVyIiFf+G1YLIH851Am9Z1CZyU1raVEHOHVGEutIjrKN+/HBYADOf0mWvX8GZa33NpLE65fz8oBOiBNUJo8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342363; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IQ/0x+8h8rxUUYa6vJrQrqZC0+JwQj34mk+yoHCm+Sg=; b=aLM53AEhFMBtYkz1rR1Md1fom0AAYOiVjo5YJBCmhn7EtMjbx9DdnQo/pPwknMmUiXkAO/H65vlZNPlqR172J7P0daP9dLyV+U2bjue8+jwtDkJRgTGnKvG4XYe19yEK1n7OZRMPaOVlv6Fle/MSHLbCa05rI8tUKBCURn9UnRg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164634236326879.78932899552672; Thu, 3 Mar 2022 13:19:23 -0800 (PST) Received: from localhost ([::1]:54864 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsr3-0003LO-5c for importer@patchew.org; Thu, 03 Mar 2022 16:19:22 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59108) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYZ-00065q-L2 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:17 -0500 Received: from [2607:f8b0:4864:20::633] (port=46935 helo=mail-pl1-x633.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYY-0004Ir-3b for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:15 -0500 Received: by mail-pl1-x633.google.com with SMTP id bd1so5843510plb.13 for ; Thu, 03 Mar 2022 13:00:13 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IQ/0x+8h8rxUUYa6vJrQrqZC0+JwQj34mk+yoHCm+Sg=; b=PqVB1xXtzSjinr8sboh10+sg7DoG/bOc3qAsGQsx+271fgI73PyBuEMDYo7yyPlNwS L5P/aQump/k6AHVZxjVlxV7KH8jomeSy8bfpWUkLXTgJ1Zz79PbFIEyikqiKmmzv4rbj sgrru/KY/d54xvDBx08xfN2HKR9Eun9RLAnheEuinCu/OhgtaUKU3GPXwqpfB4XoiODw k/nW4xanS4sQ436x+fSgVEKDsYII2nWWAX6xnroqjmPTy3lE9ISHmVsml1FyGQb6mJ4S kU9hm8oqbiDSGvc4dvz8yXe02l44EmnXGWbVyNICh8F8DpQhRH/hBBiyDXTC0DVbysHd 33og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IQ/0x+8h8rxUUYa6vJrQrqZC0+JwQj34mk+yoHCm+Sg=; b=5PEjGcIW5HDAp9d5xZ190La7CpLrFh9q1912/VN9IVRqribt8soIPgfLHrdc4M5IGg M6jsv83jkzJ0xPpnWv54g25qpoyq6Vw1rj0c/6DLlvpNz5st3z5utdhLWDv8AdzET9F3 ZxDORKXoEApOVdvQCkLeuW98LUxmSG8WOodyywP8Td43pLudrjjOO5EK3yC5EOQ4JeKZ 2P+bVOit6r4Kd4Pzn8iUWsl/JpebCrMCjwdemC+qZMm/zwWwnqR2NLdfp/n1MIGyAevv sxNwOzfDNdLoS2C0jz4Tp8ZmitQoJpfyUgoj7rrpwiQ+w/mdXPOaG7qutn4igBrngex6 5N6Q== X-Gm-Message-State: AOAM5312U03KQPnzDcoUaCV03xyY70Ey/UlscbnYLQ/IB2mpxP1bjMRP XnxbHjWrMDeVcOUKiLYbxpzCBrZLd7xYvA== X-Google-Smtp-Source: ABdhPJzyk21OKL9kmuQPNgaN29vA5gCtcusLWOpvy3C7SRTQjqs+MTgMJ9WqnDmznmLrM0jxWH6Ebw== X-Received: by 2002:a17:90a:aa0e:b0:1bc:dbe9:1b20 with SMTP id k14-20020a17090aaa0e00b001bcdbe91b20mr7299452pjq.214.1646341212913; Thu, 03 Mar 2022 13:00:12 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 17/30] tcg/i386: Expand scalar rotate with avx512 insns Date: Thu, 3 Mar 2022 10:59:31 -1000 Message-Id: <20220303205944.469445-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::633 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342365133100001 Expand 32-bit and 64-bit scalar rotate with VPRO[LR]V; expand 16-bit scalar rotate with VPSHLDV. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 49 +++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 1fbb4b0593..edf0d066e7 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -3602,26 +3602,6 @@ static void expand_vec_rotli(TCGType type, unsigned = vece, tcg_temp_free_vec(t); } =20 -static void expand_vec_rotls(TCGType type, unsigned vece, - TCGv_vec v0, TCGv_vec v1, TCGv_i32 lsh) -{ - TCGv_i32 rsh; - TCGv_vec t; - - tcg_debug_assert(vece !=3D MO_8); - - t =3D tcg_temp_new_vec(type); - rsh =3D tcg_temp_new_i32(); - - tcg_gen_neg_i32(rsh, lsh); - tcg_gen_andi_i32(rsh, rsh, (8 << vece) - 1); - tcg_gen_shls_vec(vece, t, v1, lsh); - tcg_gen_shrs_vec(vece, v0, v1, rsh); - tcg_gen_or_vec(vece, v0, v0, t); - tcg_temp_free_vec(t); - tcg_temp_free_i32(rsh); -} - static void expand_vec_rotv(TCGType type, unsigned vece, TCGv_vec v0, TCGv_vec v1, TCGv_vec sh, bool right) { @@ -3648,6 +3628,35 @@ static void expand_vec_rotv(TCGType type, unsigned v= ece, TCGv_vec v0, tcg_temp_free_vec(t); } =20 +static void expand_vec_rotls(TCGType type, unsigned vece, + TCGv_vec v0, TCGv_vec v1, TCGv_i32 lsh) +{ + TCGv_vec t =3D tcg_temp_new_vec(type); + + tcg_debug_assert(vece !=3D MO_8); + + if (vece >=3D MO_32 ? have_avx512vl : have_avx512vbmi2) { + tcg_gen_dup_i32_vec(vece, t, lsh); + if (vece >=3D MO_32) { + tcg_gen_rotlv_vec(vece, v0, v1, t); + } else { + expand_vec_rotv(type, vece, v0, v1, t, false); + } + } else { + TCGv_i32 rsh =3D tcg_temp_new_i32(); + + tcg_gen_neg_i32(rsh, lsh); + tcg_gen_andi_i32(rsh, rsh, (8 << vece) - 1); + tcg_gen_shls_vec(vece, t, v1, lsh); + tcg_gen_shrs_vec(vece, v0, v1, rsh); + tcg_gen_or_vec(vece, v0, v0, t); + + tcg_temp_free_i32(rsh); + } + + tcg_temp_free_vec(t); +} + static void expand_vec_mul(TCGType type, unsigned vece, TCGv_vec v0, TCGv_vec v1, TCGv_vec v2) { --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342462; cv=none; d=zohomail.com; s=zohoarc; b=RT343m2zTq5DH01lkYKS2FivZm9L+i8A4268vB6FAniNIfWMKGJZHWpYR9eNaaQoOc7uQI0meCTabRMlEchOzDvvBuRVu3UzJnPVELCcBnm01sgwVF7HwmQrzR0+wJ2hCviyIg6hVX+g5p4ZEZCvPlUvTWISkMtmYV7LoPWN3js= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342462; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ORB0WZKLRvhYig2aj896fzDRd+pz6bQqLgVN/Bqwse4=; b=nSmCCRMGJvJIDJm8ocDK+VDDdmPJVNrok9NqLHr7QNVsiPHSrMBoDvPLQfuoA+rnZ8skXU9bo04eziCCyoiilclsdQdZ7fVNcQO6zil+BbAjYmwki3pfbuAFpJ5ufMePUxA71F11d8jE7fFqa/KKCuAGbvZe5EQa4/0tEh0x5W8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342462055589.3481944971464; Thu, 3 Mar 2022 13:21:02 -0800 (PST) Received: from localhost ([::1]:56886 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsse-0004hf-Sj for importer@patchew.org; Thu, 03 Mar 2022 16:21:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59146) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYc-00067E-5o for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:31 -0500 Received: from [2607:f8b0:4864:20::62c] (port=41714 helo=mail-pl1-x62c.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYa-0004J3-EY for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:17 -0500 Received: by mail-pl1-x62c.google.com with SMTP id z2so5864544plg.8 for ; Thu, 03 Mar 2022 13:00:15 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ORB0WZKLRvhYig2aj896fzDRd+pz6bQqLgVN/Bqwse4=; b=z0Km8Ogb+0FP636Ovn5Y0aguO/ZwklKdUDtkowFiE8CRA3v9MqjuUR9ZuttYDrIOX/ xXR+7ub5+QP5NxQxfRpXn7U2vPn3CK5uwouRxGv9N9CNETw67CA5BOLuhuaLFBODZdJT bj9/eFDg0wdAwg3CwcfzVO+1Kgj5IHJkDp/26fgMpWwE2T5DFYkXH39kstXvhhaMDzmD u99NbrUPL5FIJxOLQhmsARiyYdDX9E32r6BbeH5yg49Ohkq5SMSjiBBd6y4VlgeR/Qqb 5YrL2PXItPxpalHf9l1SCCNWBIe7XIRxfW/0YJQ9kIqsLnd+Kl7fonzzdoFVnon55fD8 HLeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ORB0WZKLRvhYig2aj896fzDRd+pz6bQqLgVN/Bqwse4=; b=CmyOQ1TMzjynN9H9TzQRMf9nUlZluiDU58axpf8pRRW7hx2LTgj8cvpUVPmAkhVPlr ZBwFK5gYJ376l/kw0OXoAETDSrrtT5M6k0jmzwyGWN7AMwThTG1YZlJwhAH/yzEVo9VN X9pRMQZzIU5MnUpoxlv8xbNQ6br1LWUPMUO3bN87W1PDxRvLIs15DmKO0hkgZVJVEuda 4UNVs6AzTpaPQ75J7haVCB7vYvhGcq5xwwMq1iBSHEhcnF3a1WTh20rw+KQLTx2Q2wVC 7o/thbs0aR20yqnINmaSGvyfGTLwl2DSSAXYxP/Vr/JHDhhYA17qPFtB1p9r84uU+GGw N/mQ== X-Gm-Message-State: AOAM530Qk5aKngXOJly5iOkcuRlHb+kg5DOilJeckpH7MaPyLuqPi9/k WCu8BN45LRQLPtr3Gpy8hGpijsbUsaMlqQ== X-Google-Smtp-Source: ABdhPJxNczEaSpyz/c9lGgZT3K7fzrpiKfejWPScJyWjQSgLWkiVn2AJd9AhFxkXod39TIaWWAaO6Q== X-Received: by 2002:a17:90a:8911:b0:1bd:395e:40e5 with SMTP id u17-20020a17090a891100b001bd395e40e5mr7246714pjn.121.1646341214341; Thu, 03 Mar 2022 13:00:14 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 18/30] tcg/i386: Implement avx512 min/max/abs Date: Thu, 3 Mar 2022 10:59:32 -1000 Message-Id: <20220303205944.469445-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::62c (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342463740100001 AVX512VL has VPABSQ, VPMAXSQ, VPMAXUQ, VPMINSQ, VPMINUQ. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index edf0d066e7..be94b82fd6 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -313,6 +313,7 @@ static bool tcg_target_const_match(int64_t val, TCGType= type, int ct) #define OPC_PABSB (0x1c | P_EXT38 | P_DATA16) #define OPC_PABSW (0x1d | P_EXT38 | P_DATA16) #define OPC_PABSD (0x1e | P_EXT38 | P_DATA16) +#define OPC_VPABSQ (0x1f | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_PACKSSDW (0x6b | P_EXT | P_DATA16) #define OPC_PACKSSWB (0x63 | P_EXT | P_DATA16) #define OPC_PACKUSDW (0x2b | P_EXT38 | P_DATA16) @@ -339,15 +340,19 @@ static bool tcg_target_const_match(int64_t val, TCGTy= pe type, int ct) #define OPC_PMAXSB (0x3c | P_EXT38 | P_DATA16) #define OPC_PMAXSW (0xee | P_EXT | P_DATA16) #define OPC_PMAXSD (0x3d | P_EXT38 | P_DATA16) +#define OPC_VPMAXSQ (0x3d | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_PMAXUB (0xde | P_EXT | P_DATA16) #define OPC_PMAXUW (0x3e | P_EXT38 | P_DATA16) #define OPC_PMAXUD (0x3f | P_EXT38 | P_DATA16) +#define OPC_VPMAXUQ (0x3f | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_PMINSB (0x38 | P_EXT38 | P_DATA16) #define OPC_PMINSW (0xea | P_EXT | P_DATA16) #define OPC_PMINSD (0x39 | P_EXT38 | P_DATA16) +#define OPC_VPMINSQ (0x39 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_PMINUB (0xda | P_EXT | P_DATA16) #define OPC_PMINUW (0x3a | P_EXT38 | P_DATA16) #define OPC_PMINUD (0x3b | P_EXT38 | P_DATA16) +#define OPC_VPMINUQ (0x3b | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_PMOVSXBW (0x20 | P_EXT38 | P_DATA16) #define OPC_PMOVSXWD (0x23 | P_EXT38 | P_DATA16) #define OPC_PMOVSXDQ (0x25 | P_EXT38 | P_DATA16) @@ -2841,16 +2846,16 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode= opc, OPC_PACKUSWB, OPC_PACKUSDW, OPC_UD2, OPC_UD2 }; static int const smin_insn[4] =3D { - OPC_PMINSB, OPC_PMINSW, OPC_PMINSD, OPC_UD2 + OPC_PMINSB, OPC_PMINSW, OPC_PMINSD, OPC_VPMINSQ }; static int const smax_insn[4] =3D { - OPC_PMAXSB, OPC_PMAXSW, OPC_PMAXSD, OPC_UD2 + OPC_PMAXSB, OPC_PMAXSW, OPC_PMAXSD, OPC_VPMAXSQ }; static int const umin_insn[4] =3D { - OPC_PMINUB, OPC_PMINUW, OPC_PMINUD, OPC_UD2 + OPC_PMINUB, OPC_PMINUW, OPC_PMINUD, OPC_VPMINUQ }; static int const umax_insn[4] =3D { - OPC_PMAXUB, OPC_PMAXUW, OPC_PMAXUD, OPC_UD2 + OPC_PMAXUB, OPC_PMAXUW, OPC_PMAXUD, OPC_VPMAXUQ }; static int const rotlv_insn[4] =3D { OPC_UD2, OPC_UD2, OPC_VPROLVD, OPC_VPROLVQ @@ -2886,8 +2891,7 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode o= pc, OPC_UD2, OPC_VPSHRDVW, OPC_VPSHRDVD, OPC_VPSHRDVQ }; static int const abs_insn[4] =3D { - /* TODO: AVX512 adds support for MO_64. */ - OPC_PABSB, OPC_PABSW, OPC_PABSD, OPC_UD2 + OPC_PABSB, OPC_PABSW, OPC_PABSD, OPC_VPABSQ }; =20 TCGType type =3D vecl + TCG_TYPE_V64; @@ -3471,7 +3475,7 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type, = unsigned vece) case INDEX_op_umin_vec: case INDEX_op_umax_vec: case INDEX_op_abs_vec: - return vece <=3D MO_32; + return vece <=3D MO_32 || have_avx512vl; =20 default: return 0; --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342325; cv=none; d=zohomail.com; s=zohoarc; b=RnuDpbCIjeWnRNWFPXo6iVyXgzvz4CXYCkCIEsfmgW2IugS3aH7ANdcfsdnRnf4ZkbjQR5tQiMBGWizec/GzK0eQwAwVZksy+O+3FxspYu7s9/BUucE8C/wblwHQ8kJs72koOcInvc7uHGduc3yEBc1wLb8NJiWo4trUO68ItkY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342325; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Vifo7q6L9IkoLUdxKHrGN8YzcFRSVAdcJsKjVkqwOiI=; b=ILNbeOKI7oLEiYC88GhTFKByYe60ZQxsDAzIWIYA42Jl1Smm6+UtKh3p0aG88tGSRVY6+X2T7uCaU9pUuqe/viEoFcR3YZUQfFhvxtzAESbRf6+fuo0Fd2nSrPjQt9ptfd9UJx7o5OCxrQLKi1XRt3XbHA20ITNITKJshOuM62Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342325955109.43741877356035; Thu, 3 Mar 2022 13:18:45 -0800 (PST) Received: from localhost ([::1]:51976 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsqP-0001OE-9w for importer@patchew.org; Thu, 03 Mar 2022 16:18:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59164) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYd-00067S-JX for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:31 -0500 Received: from [2607:f8b0:4864:20::534] (port=39867 helo=mail-pg1-x534.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYb-0004JH-B3 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:18 -0500 Received: by mail-pg1-x534.google.com with SMTP id 195so5747052pgc.6 for ; Thu, 03 Mar 2022 13:00:16 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Vifo7q6L9IkoLUdxKHrGN8YzcFRSVAdcJsKjVkqwOiI=; b=dyKP8Qy6ZWwsm7A64LedhcCiJQwKwzmy3m6fwmYfwDihIgR3MuvOPDjBHO9xSaKTOX RGKkj9e35NZojeKk+IxL4vV9NNlOAZ3Pq3+CSayjytpoyTU89f/5Y2b8irV1IOhSnKtJ +4j7LCEYuQWptxitch6whFQmK2W4qD6Li2MMeU0oTI5IyP19Zhcew1SvBQ+OOIeVZ9aI ucf5/6n43I4TdcoccrVx8gH6pY3csxPnL9GZgtDOLY2MtlOeRk+VtG4vbXSO/WVR/4Zl tE+LRjNbHqazR3SQN9DdPK+tyVF7PGPIxG4V+F16O1W9uIZSoGgGtmkqLS7P5ZfGb/7D DzmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Vifo7q6L9IkoLUdxKHrGN8YzcFRSVAdcJsKjVkqwOiI=; b=McewW3jnIaJx/rh0vX8QUyHj0+KUJ6oRoYrYR+lmre0wAz2hJ4UtZhusoY+wQmYatx /2ara0jHx5M+e24lR24RuqYdlS9EQIU88mpW/IxB5LzgDzbHYdRLrWuVoPbjA7y/e61W Dx64t2UJkJv1Wnh+yE+CC1nQUieSICXlNrp4QFISts2K1KqqaFmYuLsRk8U9xc9Y0EN9 6M8iJ2vYqf3jJIb+qpniJ0m8haHzyOffzHfOS2kKTndL9oUumdWzb/x4StYzciiNq2Ja XWGpTTXehVvP4/Ik9JroP5z+EEUN0MEovcOdo6MVaVTboK8pMn43FfkMl7BAeAsjvxdz G8Pg== X-Gm-Message-State: AOAM532MgOO/G/1tSrYsscV1Ny5XUlERkL5YAYJiw54VLEhjVArA3avh eYxafqkClFm3n9yOhMk+Y1wtHQG61eREzg== X-Google-Smtp-Source: ABdhPJz1mY4BYUR8yO/O1NbA8J33W7H9cLRU1/6JKjSbIDf/YGu8uO4MZgrAAGaMPAqEUQZ44C3n8w== X-Received: by 2002:a63:da0d:0:b0:364:b771:ff4 with SMTP id c13-20020a63da0d000000b00364b7710ff4mr32239062pgh.514.1646341215678; Thu, 03 Mar 2022 13:00:15 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 19/30] tcg/i386: Implement avx512 multiply Date: Thu, 3 Mar 2022 10:59:33 -1000 Message-Id: <20220303205944.469445-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::534 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342328852100001 AVX512DQ has VPMULLQ. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.c.inc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index be94b82fd6..a800764d2f 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -361,6 +361,7 @@ static bool tcg_target_const_match(int64_t val, TCGType= type, int ct) #define OPC_PMOVZXDQ (0x35 | P_EXT38 | P_DATA16) #define OPC_PMULLW (0xd5 | P_EXT | P_DATA16) #define OPC_PMULLD (0x40 | P_EXT38 | P_DATA16) +#define OPC_VPMULLQ (0x40 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_POR (0xeb | P_EXT | P_DATA16) #define OPC_PSHUFB (0x00 | P_EXT38 | P_DATA16) #define OPC_PSHUFD (0x70 | P_EXT | P_DATA16) @@ -2822,7 +2823,7 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode o= pc, OPC_PSUBUB, OPC_PSUBUW, OPC_UD2, OPC_UD2 }; static int const mul_insn[4] =3D { - OPC_UD2, OPC_PMULLW, OPC_PMULLD, OPC_UD2 + OPC_UD2, OPC_PMULLW, OPC_PMULLD, OPC_VPMULLQ }; static int const shift_imm_insn[4] =3D { OPC_UD2, OPC_PSHIFTW_Ib, OPC_PSHIFTD_Ib, OPC_PSHIFTQ_Ib @@ -3456,12 +3457,11 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type= , unsigned vece) return 0; =20 case INDEX_op_mul_vec: - if (vece =3D=3D MO_8) { - /* We can expand the operation for MO_8. */ + switch (vece) { + case MO_8: return -1; - } - if (vece =3D=3D MO_64) { - return 0; + case MO_64: + return have_avx512dq; } return 1; =20 --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342540; cv=none; d=zohomail.com; s=zohoarc; b=ESi/hq82ku5/yaQ1gyqFnOJAcYwe2Y/OBHQuC0wY+BWGNM+gh/MzO07TNfGvv3GV8Gj3KvLxPHigK7KuJU5QPcdjs2LBwt3Nv9kMsZA1qYb+y80ocfLXyFXVVpXYF5Y69O7iQr+mWbuUv6FmVBuzGFULeULsMUr5f0yrJ+KenPs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342540; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=1c1ppA+8RTch2imfz9xAE3XksAhgAsrDZznz0cROn8M=; b=hdXVdrKKVD25LiqHWakX/fI5zPOKOeUwv/Qri/gt5q5s2s3orSAat/sKw/uk7dN8RddRPY+cGao0OyNy2/dXa/OVfwQq9Ij2ZisqDdKKecDDJYzN5ZlRG5N0YkWMN3uHbrIx7J7v4u4GzjSVLWZdNkXBq+gfI5wC8pzVc7mgKRA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342540662734.7938265319244; Thu, 3 Mar 2022 13:22:20 -0800 (PST) Received: from localhost ([::1]:35016 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPstw-0000j6-9X for importer@patchew.org; Thu, 03 Mar 2022 16:22:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59204) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYn-00067q-K9 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:32 -0500 Received: from [2607:f8b0:4864:20::62a] (port=33652 helo=mail-pl1-x62a.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYd-0004Ja-B4 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:20 -0500 Received: by mail-pl1-x62a.google.com with SMTP id c9so5908549pll.0 for ; Thu, 03 Mar 2022 13:00:17 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1c1ppA+8RTch2imfz9xAE3XksAhgAsrDZznz0cROn8M=; b=oDmuIBNWwr7pgimqhUvrsQznbbQE3fHUq/mvzOdgj0hssV2cau+Mi6XBv5b4jzjAiz VSEiCk4A1S+RAuiXREa1O1ZbZOMgdngDIm9vC5LTGps3JqzKZzq8Gwd1xDdQ2bypgxy2 QQfRPz3oc8ChZMbjKCSu3xT5+1rMo2oUS/XBBVfo8O3JCljzO+iFT30i5fdcXfn+JWgv rCuOvc12k79aFOILKd48SwNuMRM5ybCL1gkWAD2mMjx8S4yp+E29A2Brb6VBDMxPzIey 9oYgruJ24R+aEQGzu4J4IuITNv0q59NWM4bwgMTqXzoQyPG6qCxa+ETPmViF4aYqndCS Ijbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1c1ppA+8RTch2imfz9xAE3XksAhgAsrDZznz0cROn8M=; b=Kq/8glpU6texgxP57tp4Zk7rnaGABvHaCVOrp0pvY3hAiMrAN4cGjhiUmwysnXflxs Ka9ldSnYz5Je6hK1JbU2uHSp+Sr5+Yv2m+HJISrezErJovCn1OIHbWjTB8Ja2v7FpIN7 bR1qvKPHFwh7FTIEGt2ObFJJ9gii3V3mgTfDwHwnxXfSQG9nnCzBvW2cYPSPE2ELGcm0 B+z0Rph+w3lSxRClkIrM3zrPEd/fTBsS9lwmAuli40NJD2P+hC96hsvipY8tp9dDjEsY lA6KEiNUuF9V/4+p8rvLReZWW5e97ueOO6nJvME4XrClkJa48ewWgl6CD+c26MHel4ix rrtg== X-Gm-Message-State: AOAM5328A4a9+716u0O5aTaiwm1AjFcdZEhbO2/84SiVhLiDwRYdKpHd Ef8hnL/mnUbwDkH9DtCLU51FdUMOW+J9bw== X-Google-Smtp-Source: ABdhPJzozUBdfp3DKGDLrtXR5ly4q+5am7byNpfz6X47bp5BJn4tMf/vtRf9/QrF5etSrZvb+uhNeA== X-Received: by 2002:a17:902:7610:b0:151:6152:549c with SMTP id k16-20020a170902761000b001516152549cmr24228368pll.91.1646341217104; Thu, 03 Mar 2022 13:00:17 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 20/30] tcg/i386: Implement more logical operations for avx512 Date: Thu, 3 Mar 2022 10:59:34 -1000 Message-Id: <20220303205944.469445-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::62a (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342542743100001 AVX512VL has a general ternary logic operation, VPTERNLOGQ, which can implement NOT, ORC, NAND, NOR, EQV. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.h | 10 +++++----- tcg/i386/tcg-target.c.inc | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index da1eff59aa..e02cef7575 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -188,11 +188,11 @@ extern bool have_movbe; #define TCG_TARGET_HAS_v256 have_avx2 =20 #define TCG_TARGET_HAS_andc_vec 1 -#define TCG_TARGET_HAS_orc_vec 0 -#define TCG_TARGET_HAS_nand_vec 0 -#define TCG_TARGET_HAS_nor_vec 0 -#define TCG_TARGET_HAS_eqv_vec 0 -#define TCG_TARGET_HAS_not_vec 0 +#define TCG_TARGET_HAS_orc_vec have_avx512vl +#define TCG_TARGET_HAS_nand_vec have_avx512vl +#define TCG_TARGET_HAS_nor_vec have_avx512vl +#define TCG_TARGET_HAS_eqv_vec have_avx512vl +#define TCG_TARGET_HAS_not_vec have_avx512vl #define TCG_TARGET_HAS_neg_vec 0 #define TCG_TARGET_HAS_abs_vec 1 #define TCG_TARGET_HAS_roti_vec have_avx512vl diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index a800764d2f..140a51ce70 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -448,6 +448,7 @@ static bool tcg_target_const_match(int64_t val, TCGType= type, int ct) #define OPC_VPSRLVW (0x10 | P_EXT38 | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VPSRLVD (0x45 | P_EXT38 | P_DATA16) #define OPC_VPSRLVQ (0x45 | P_EXT38 | P_DATA16 | P_VEXW) +#define OPC_VPTERNLOGQ (0x25 | P_EXT3A | P_DATA16 | P_VEXW | P_EVEX) #define OPC_VZEROUPPER (0x77 | P_EXT) #define OPC_XCHG_ax_r32 (0x90) =20 @@ -3098,6 +3099,29 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, insn =3D vpshldi_insn[vece]; sub =3D args[3]; goto gen_simd_imm8; + + case INDEX_op_not_vec: + insn =3D OPC_VPTERNLOGQ; + a2 =3D a1; + sub =3D 0x33; /* !B */ + goto gen_simd_imm8; + case INDEX_op_nor_vec: + insn =3D OPC_VPTERNLOGQ; + sub =3D 0x11; /* norCB */ + goto gen_simd_imm8; + case INDEX_op_nand_vec: + insn =3D OPC_VPTERNLOGQ; + sub =3D 0x77; /* nandCB */ + goto gen_simd_imm8; + case INDEX_op_eqv_vec: + insn =3D OPC_VPTERNLOGQ; + sub =3D 0x99; /* xnorCB */ + goto gen_simd_imm8; + case INDEX_op_orc_vec: + insn =3D OPC_VPTERNLOGQ; + sub =3D 0xdd; /* orB!C */ + goto gen_simd_imm8; + gen_simd_imm8: tcg_debug_assert(insn !=3D OPC_UD2); if (type =3D=3D TCG_TYPE_V256) { @@ -3318,6 +3342,10 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOp= code op) case INDEX_op_or_vec: case INDEX_op_xor_vec: case INDEX_op_andc_vec: + case INDEX_op_orc_vec: + case INDEX_op_nand_vec: + case INDEX_op_nor_vec: + case INDEX_op_eqv_vec: case INDEX_op_ssadd_vec: case INDEX_op_usadd_vec: case INDEX_op_sssub_vec: @@ -3350,6 +3378,7 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) =20 case INDEX_op_abs_vec: case INDEX_op_dup_vec: + case INDEX_op_not_vec: case INDEX_op_shli_vec: case INDEX_op_shri_vec: case INDEX_op_sari_vec: @@ -3378,6 +3407,11 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type,= unsigned vece) case INDEX_op_or_vec: case INDEX_op_xor_vec: case INDEX_op_andc_vec: + case INDEX_op_orc_vec: + case INDEX_op_nand_vec: + case INDEX_op_nor_vec: + case INDEX_op_eqv_vec: + case INDEX_op_not_vec: return 1; case INDEX_op_cmp_vec: case INDEX_op_cmpsel_vec: --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342577; cv=none; d=zohomail.com; s=zohoarc; b=CtXyib/XmRrYLqQw+L6LZEVh9TzVj2rg5NB2w2PFuMHZUHoyp+pUW5Sl2Ni6sa7xchix1HZQGMMNH3fBSM1R77riwttzrsp5Nz0Qti5iF57LOgDGpz14IWmGhYX50FT0brOtDGIpV1OWvJtVx3zhKtIYjG1y1L68Yhrm119nylQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342577; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GZeqg0WZetg1ni1zZeZXg4Eeu+pSLJpBQ2JK38q7DCI=; b=UhlL9teY8Y2jW0HqUR+rlgFktcGSYsWXKfzER/SLQe+SqFJCHBjjAzBtxBYzfrtaReyLQMN1r96tOafDB4WaMrOXf40NvoT2coMZqnCnmakrVLtKmFj1yXtgmCC1zmmzGQi5SJj6bZk+l8OZMxklH8ehX76G7hvhg8fjnbkCcDU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342577476596.5886201284511; Thu, 3 Mar 2022 13:22:57 -0800 (PST) Received: from localhost ([::1]:37012 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsuW-00023W-BV for importer@patchew.org; Thu, 03 Mar 2022 16:22:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59206) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsYq-0006AU-EO for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:43 -0500 Received: from [2607:f8b0:4864:20::102c] (port=44714 helo=mail-pj1-x102c.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYd-0004Jt-Qq for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:21 -0500 Received: by mail-pj1-x102c.google.com with SMTP id gj15-20020a17090b108f00b001bef86c67c1so6035406pjb.3 for ; Thu, 03 Mar 2022 13:00:19 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GZeqg0WZetg1ni1zZeZXg4Eeu+pSLJpBQ2JK38q7DCI=; b=Qg2AMYPCTYw+tIrcX1EkbQ6XpodKAO+/I8LWb0mrOnFM9McCqyHav1VFFVypanaJIm SJfpJuUbDGoWtCnOwy2si4DMtgOEdruSvGqyfGMkM0zSvUml85qMhEJLx16i1HlrRaqG 0kDitvem7l9Ms498Mmxys3NTlMA6yVsGPOvWPhMhsAMKhSDSH1iTpkxDhB45izuY4w2U 2gQDga2atjGloZnkpDp77XQPaDll82FvySbr3JVIrC73FsQj/yxA95fcE6AVhnj3Z3LD XS4JwESBeSHIv5O22LknaTCnFyLZsIBLLMF+r/o3S2EyhezHzzVuqZ3THNIhMNj7z0l9 fUnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GZeqg0WZetg1ni1zZeZXg4Eeu+pSLJpBQ2JK38q7DCI=; b=V++yQbNSButBJue1wUCLc7ihs7b3h2nvRe4qNsq/RxxBA/RbxeHJg9GG3HraNZYxwd zTI6GBuBEB8E0TLz5Avl8sfpU4+Q7LTc86Hfqq44COoaE0RpfDSmyXQqg8I7X8eUo2RI Bnth8jQAHqEJCt10H+IoO5KtTl4Fnj46w1T6SmjAN+0r2745+u5nS5hlN17BnadyUjYs yaqia0e1ylxdRYnv44mhFXgt5eyd3XO0AHka2t4PRcRTnsbPORcmfFLGZJSj9j3iovAB pUfg0bpIloKOfQHIEpGtxdRBRbFAZNMUfBXlzmuSkbGrklBPiaOvhKr7AsssU09x2stw v29w== X-Gm-Message-State: AOAM533O3tHUReUJ6e0XC2y+s8ucQM7UV7vPG0IP9X6Mcvapa2QZ/wu0 b4PtXXhEgYJWReebJOiI+6S+KXn/IzFmyg== X-Google-Smtp-Source: ABdhPJzvDPy8M9EyEvE4EDju6G2oIWGsV/5N32MT8FGYVp9pvs/k39/GCudO3fPK9k4AXQrK0vmTyQ== X-Received: by 2002:a17:903:292:b0:149:460a:9901 with SMTP id j18-20020a170903029200b00149460a9901mr38100197plr.44.1646341218547; Thu, 03 Mar 2022 13:00:18 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 21/30] tcg/i386: Implement bitsel for avx512 Date: Thu, 3 Mar 2022 10:59:35 -1000 Message-Id: <20220303205944.469445-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102c (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342578798100001 The general ternary logic operation can implement BITSEL. Funnel the 4-operand operation into three variants of the 3-operand instruction, depending on input operand overlap. Tested-by: Alex Benn=C3=A9e Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.h | 2 +- tcg/i386/tcg-target.c.inc | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index e02cef7575..00fcbe297d 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -204,7 +204,7 @@ extern bool have_movbe; #define TCG_TARGET_HAS_mul_vec 1 #define TCG_TARGET_HAS_sat_vec 1 #define TCG_TARGET_HAS_minmax_vec 1 -#define TCG_TARGET_HAS_bitsel_vec 0 +#define TCG_TARGET_HAS_bitsel_vec have_avx512vl #define TCG_TARGET_HAS_cmpsel_vec -1 =20 #define TCG_TARGET_deposit_i32_valid(ofs, len) \ diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 140a51ce70..b5c6159853 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -2898,7 +2898,7 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode o= pc, =20 TCGType type =3D vecl + TCG_TYPE_V64; int insn, sub; - TCGArg a0, a1, a2; + TCGArg a0, a1, a2, a3; =20 a0 =3D args[0]; a1 =3D args[1]; @@ -3122,6 +3122,22 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, sub =3D 0xdd; /* orB!C */ goto gen_simd_imm8; =20 + case INDEX_op_bitsel_vec: + insn =3D OPC_VPTERNLOGQ; + a3 =3D args[3]; + if (a0 =3D=3D a1) { + a1 =3D a2; + a2 =3D a3; + sub =3D 0xca; /* A?B:C */ + } else if (a0 =3D=3D a2) { + a2 =3D a3; + sub =3D 0xe2; /* B?A:C */ + } else { + tcg_out_mov(s, type, a0, a3); + sub =3D 0xb8; /* B?C:A */ + } + goto gen_simd_imm8; + gen_simd_imm8: tcg_debug_assert(insn !=3D OPC_UD2); if (type =3D=3D TCG_TYPE_V256) { @@ -3390,6 +3406,7 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) case INDEX_op_x86_vpshrdv_vec: return C_O1_I3(x, 0, x, x); =20 + case INDEX_op_bitsel_vec: case INDEX_op_x86_vpblendvb_vec: return C_O1_I3(x, x, x, x); =20 @@ -3412,6 +3429,7 @@ int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type, = unsigned vece) case INDEX_op_nor_vec: case INDEX_op_eqv_vec: case INDEX_op_not_vec: + case INDEX_op_bitsel_vec: return 1; case INDEX_op_cmp_vec: case INDEX_op_cmpsel_vec: --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342644937827.5693342277793; Thu, 3 Mar 2022 13:24:04 -0800 (PST) Received: from localhost ([::1]:43008 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsvb-0006Cd-Sn for importer@patchew.org; Thu, 03 Mar 2022 16:24:03 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59292) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsZ2-0006DA-Cx for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:49 -0500 Received: from [2607:f8b0:4864:20::1035] (port=37425 helo=mail-pj1-x1035.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYn-0004K6-I6 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:36 -0500 Received: by mail-pj1-x1035.google.com with SMTP id p3-20020a17090a680300b001bbfb9d760eso8894109pjj.2 for ; Thu, 03 Mar 2022 13:00:21 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eYMPBK8uImUtEf60mqBA0vpSt2l5oNERr0mQgdkY/9s=; b=xaqiNq+zku3KarcL4T2XSYSvyIozuwRYSZG/SR/pFF3fm5/GHLvRfS9+noFhL6pdjC XE7R+ahFp2VGSp3zMsTpERJFnW57oqWRizqv4y4ufsq4fkvICmdPhxovE4+FNlzhc0Ht lZA4ez9al59mH9eIR9NJgzFCIcV0yWObE7cT714oiHNfrXeHAk3kVT0DhSERORSp6+zr HNiyiOxRiIG2LXsClIIqHH6B11EAVbhOAJuJtTD2lPwXFFfCRxGr5aGua0XPLp3Tv0QQ 2bbCd8aDcl9Q/ayMt+AqMiINCu0rGlOkflMaKwDa5OY7WtSIaolI5Kw68YtZVQUusYMY 9i8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eYMPBK8uImUtEf60mqBA0vpSt2l5oNERr0mQgdkY/9s=; b=hEPDV4lpSnbmE440SJHtXMjH0Py/g+jkXrpWzanLyFdFdIRC5U8/XipIBiI4qpsinU tJHDfrDEyNfRSzVNtr2XzrwdJAlL4MMhF522ecL6hMIQzdQjd1DNHO3m3Y3tdqrtSync bQi8nkyTR/gycZGN8wMJhzPXhSfHWcWRCZFqExf7/JlqTvnw4cc5/b2qiLe5nsjyTTEL UBKeB8OMioTGHzaQFOS0PXRTytVVbhfHf7j7BGwrVjLHHZT15f0GdDiisWgO3iq52Lf6 5yd0VjKU1kxOI2uzvVzrdKUuBUUo2zOKu7YoXA1HWIqVOjIyonVk/MDfR71cEfMHWQqR P23w== X-Gm-Message-State: AOAM533xReEuqMrRteuo0xkJYfpRWvgBy68sS7j5Z5r8c909mLuQ2Ei2 qTZIihXZC6uUaxRbjBs7bVewi6rWOmyJ/g== X-Google-Smtp-Source: ABdhPJz7GI4ciCKFwxwkgUU9rYODPb6dM8OSqVRkmXt/CJS6NrjTXO9B5tdGO+7i8pbuuVjMDkEVfg== X-Received: by 2002:a17:902:ecca:b0:151:92a1:ce5 with SMTP id a10-20020a170902ecca00b0015192a10ce5mr11866866plh.79.1646341220253; Thu, 03 Mar 2022 13:00:20 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 22/30] tcg: Add TCG_TARGET_SIGNED_ADDR32 Date: Thu, 3 Mar 2022 10:59:36 -1000 Message-Id: <20220303205944.469445-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1035 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: WANG Xuerui , peter.maydell@linaro.org, Alistair Francis , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1646342647474100001 Define as 0 for all tcg hosts. Put this in a separate header, because we'll want this in places that do not ordinarily have access to all of tcg/tcg.h. Reviewed-by: WANG Xuerui Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Signed-off-by: Richard Henderson --- tcg/aarch64/tcg-target-sa32.h | 1 + tcg/arm/tcg-target-sa32.h | 1 + tcg/i386/tcg-target-sa32.h | 1 + tcg/loongarch64/tcg-target-sa32.h | 1 + tcg/mips/tcg-target-sa32.h | 1 + tcg/ppc/tcg-target-sa32.h | 1 + tcg/riscv/tcg-target-sa32.h | 1 + tcg/s390x/tcg-target-sa32.h | 1 + tcg/sparc/tcg-target-sa32.h | 1 + tcg/tci/tcg-target-sa32.h | 1 + tcg/tcg.c | 4 ++++ 11 files changed, 14 insertions(+) create mode 100644 tcg/aarch64/tcg-target-sa32.h create mode 100644 tcg/arm/tcg-target-sa32.h create mode 100644 tcg/i386/tcg-target-sa32.h create mode 100644 tcg/loongarch64/tcg-target-sa32.h create mode 100644 tcg/mips/tcg-target-sa32.h create mode 100644 tcg/ppc/tcg-target-sa32.h create mode 100644 tcg/riscv/tcg-target-sa32.h create mode 100644 tcg/s390x/tcg-target-sa32.h create mode 100644 tcg/sparc/tcg-target-sa32.h create mode 100644 tcg/tci/tcg-target-sa32.h diff --git a/tcg/aarch64/tcg-target-sa32.h b/tcg/aarch64/tcg-target-sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/aarch64/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/arm/tcg-target-sa32.h b/tcg/arm/tcg-target-sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/arm/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/i386/tcg-target-sa32.h b/tcg/i386/tcg-target-sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/i386/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/loongarch64/tcg-target-sa32.h b/tcg/loongarch64/tcg-target= -sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/loongarch64/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/mips/tcg-target-sa32.h b/tcg/mips/tcg-target-sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/mips/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/ppc/tcg-target-sa32.h b/tcg/ppc/tcg-target-sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/ppc/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/riscv/tcg-target-sa32.h b/tcg/riscv/tcg-target-sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/riscv/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/s390x/tcg-target-sa32.h b/tcg/s390x/tcg-target-sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/s390x/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/sparc/tcg-target-sa32.h b/tcg/sparc/tcg-target-sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/sparc/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/tci/tcg-target-sa32.h b/tcg/tci/tcg-target-sa32.h new file mode 100644 index 0000000000..cb185b1526 --- /dev/null +++ b/tcg/tci/tcg-target-sa32.h @@ -0,0 +1 @@ +#define TCG_TARGET_SIGNED_ADDR32 0 diff --git a/tcg/tcg.c b/tcg/tcg.c index 33a97eabdb..8c131293fe 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -61,6 +61,10 @@ #include "exec/log.h" #include "tcg/tcg-ldst.h" #include "tcg-internal.h" +#include "tcg-target-sa32.h" + +/* Sanity check for TCG_TARGET_SIGNED_ADDR32. */ +QEMU_BUILD_BUG_ON(TCG_TARGET_REG_BITS =3D=3D 32 && TCG_TARGET_SIGNED_ADDR3= 2); =20 #ifdef CONFIG_TCG_INTERPRETER #include --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342951484575.0734078958415; Thu, 3 Mar 2022 13:29:11 -0800 (PST) Received: from localhost ([::1]:57386 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPt0T-0007Sf-0x for importer@patchew.org; Thu, 03 Mar 2022 16:29:06 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59406) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsZ9-0006Gq-5p for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:58 -0500 Received: from [2607:f8b0:4864:20::429] (port=45863 helo=mail-pf1-x429.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsZ7-0004KH-B5 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:50 -0500 Received: by mail-pf1-x429.google.com with SMTP id s8so1716221pfk.12 for ; Thu, 03 Mar 2022 13:00:22 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=f5NF1Xhw+Erdj+thQwPRUzILFmSAD0uMaYQuiNMvI6I=; b=R0td/zInID6bRUVoxAlpov6zVHsPFZu9yW7DfrHXm0QKUXhAZHBYRs3dT/mc2uy3lk ZrmT9LLEWNBabtHFmDGs8NTEUI0HQYNjOxcTWf6E/2DmxiRNTcTfJTgGQ0QVo/AMt5BV lX/lB85LgpPBmqlLWaIERtYCDyismksD5Y0JEeVPS3M9NjRL35OzRxFjf+t3eA3sNmwN trsiCvPdIdwRHYGu2Z0LO1IKjUxSasHbpl4nsb20FCMPswc7Tlf2D85Z7iW9hGSOL8Zj nvt5Wsf1ifPpP0vVy3rebjFfBKHF0zGfQpsgO9VRmzQ0uuSafn5omr/qqHtaDE7CBEKf jStA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=f5NF1Xhw+Erdj+thQwPRUzILFmSAD0uMaYQuiNMvI6I=; b=IjOOUCq8sfMzQ1SnLF6q8Edt7T7aAVPGmKDjDGfMM7PlWCilsJsGaG8Ip0I8HMbxhi PjOHmTJbwoe7PZoFn9DIapyNYUBCLek0InK+DlkGRo9OajaWTBOd258cbV6WUny7DVnK 3iPtNhtQz76XtIbXRWVkRNwCHtJaeRAZz1UgFlQTVH8xz+/5c+CLv0PstXbsIbt0N5g/ jIMTtdcFcpjj4JXyklQBWhYC/f35cy61jDJTKRF6E6NShIg1+rsIg/8B5023e2AYV1Tm KsbT8+1qGi9LrBxF5vUQri/UFPJ61lqCn2hgLOjcHe4VoRHzNJH/LhxJsNeGbURMFGR8 idQA== X-Gm-Message-State: AOAM5331f20/CE+Ztc226FoCy+yewy1avKTj41eh0tszfQuqFCmjOAWw QuVH2jB0cyyut1M0AIzMWcpCCeKe91Zg1A== X-Google-Smtp-Source: ABdhPJxwLI7sSdzUKF77OhJuRhlY78YBITzIbsZuaVKtifizZqzgK3EeLlZWe97keu8o10YxwT+oGw== X-Received: by 2002:a63:cd49:0:b0:373:5fbb:c790 with SMTP id a9-20020a63cd49000000b003735fbbc790mr31949946pgj.206.1646341222042; Thu, 03 Mar 2022 13:00:22 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 23/30] accel/tcg: Split out g2h_tlbe Date: Thu, 3 Mar 2022 10:59:37 -1000 Message-Id: <20220303205944.469445-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::429 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: WANG Xuerui , peter.maydell@linaro.org, Alistair Francis , =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1646342952718100001 Create a new function to combine a CPUTLBEntry addend with the guest address to form a host address. Reviewed-by: WANG Xuerui Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Signed-off-by: Richard Henderson --- accel/tcg/cputlb.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index 3b918fe018..0e62aa5d7c 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -91,6 +91,11 @@ static inline size_t sizeof_tlb(CPUTLBDescFast *fast) return fast->mask + (1 << CPU_TLB_ENTRY_BITS); } =20 +static inline uintptr_t g2h_tlbe(const CPUTLBEntry *tlb, target_ulong gadd= r) +{ + return tlb->addend + (uintptr_t)gaddr; +} + static void tlb_window_reset(CPUTLBDesc *desc, int64_t ns, size_t max_entries) { @@ -986,8 +991,7 @@ static void tlb_reset_dirty_range_locked(CPUTLBEntry *t= lb_entry, =20 if ((addr & (TLB_INVALID_MASK | TLB_MMIO | TLB_DISCARD_WRITE | TLB_NOTDIRTY)) =3D=3D 0) { - addr &=3D TARGET_PAGE_MASK; - addr +=3D tlb_entry->addend; + addr =3D g2h_tlbe(tlb_entry, addr & TARGET_PAGE_MASK); if ((addr - start) < length) { #if TCG_OVERSIZED_GUEST tlb_entry->addr_write |=3D TLB_NOTDIRTY; @@ -1537,7 +1541,7 @@ tb_page_addr_t get_page_addr_code_hostp(CPUArchState = *env, target_ulong addr, return -1; } =20 - p =3D (void *)((uintptr_t)addr + entry->addend); + p =3D (void *)g2h_tlbe(entry, addr); if (hostp) { *hostp =3D p; } @@ -1629,7 +1633,7 @@ static int probe_access_internal(CPUArchState *env, t= arget_ulong addr, } =20 /* Everything else is RAM. */ - *phost =3D (void *)((uintptr_t)addr + entry->addend); + *phost =3D (void *)g2h_tlbe(entry, addr); return flags; } =20 @@ -1737,7 +1741,7 @@ bool tlb_plugin_lookup(CPUState *cpu, target_ulong ad= dr, int mmu_idx, data->v.io.offset =3D (iotlbentry->addr & TARGET_PAGE_MASK) + = addr; } else { data->is_io =3D false; - data->v.ram.hostaddr =3D (void *)((uintptr_t)addr + tlbe->adde= nd); + data->v.ram.hostaddr =3D (void *)g2h_tlbe(tlbe, addr); } return true; } else { @@ -1836,7 +1840,7 @@ static void *atomic_mmu_lookup(CPUArchState *env, tar= get_ulong addr, goto stop_the_world; } =20 - hostaddr =3D (void *)((uintptr_t)addr + tlbe->addend); + hostaddr =3D (void *)g2h_tlbe(tlbe, addr); =20 if (unlikely(tlb_addr & TLB_NOTDIRTY)) { notdirty_write(env_cpu(env), addr, size, @@ -1967,7 +1971,7 @@ load_helper(CPUArchState *env, target_ulong addr, Mem= OpIdx oi, access_type, op ^ (need_swap * MO_BSWAP)); } =20 - haddr =3D (void *)((uintptr_t)addr + entry->addend); + haddr =3D (void *)g2h_tlbe(entry, addr); =20 /* * Keep these two load_memop separate to ensure that the compiler @@ -2004,7 +2008,7 @@ load_helper(CPUArchState *env, target_ulong addr, Mem= OpIdx oi, return res & MAKE_64BIT_MASK(0, size * 8); } =20 - haddr =3D (void *)((uintptr_t)addr + entry->addend); + haddr =3D (void *)g2h_tlbe(entry, addr); return load_memop(haddr, op); } =20 @@ -2375,7 +2379,7 @@ store_helper(CPUArchState *env, target_ulong addr, ui= nt64_t val, notdirty_write(env_cpu(env), addr, size, iotlbentry, retaddr); } =20 - haddr =3D (void *)((uintptr_t)addr + entry->addend); + haddr =3D (void *)g2h_tlbe(entry, addr); =20 /* * Keep these two store_memop separate to ensure that the compiler @@ -2400,7 +2404,7 @@ store_helper(CPUArchState *env, target_ulong addr, ui= nt64_t val, return; } =20 - haddr =3D (void *)((uintptr_t)addr + entry->addend); + haddr =3D (void *)g2h_tlbe(entry, addr); store_memop(haddr, val, op); } =20 --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342648; cv=none; d=zohomail.com; s=zohoarc; b=O4W6UwlYDN8qAkAy7C4uPgHPQZ4Qu1xFpZIJG0x8twBwMNoMcyVSb3uue2/dVK0MePHJQWQuYOOhLHvPVpeiodJN1n7YH8qPdO/YT0mogtdJRswBuXSNRFIK/XssT1MWdvo25OQ8E7p57XeNCIJ01aRqFY7gC52IRY6Q1VwD9go= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342648; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=1XkfzGvn+ZlmZZNrl7Dk1RW038tolY/tjYs6706uD7c=; b=RQEsKkAjj7OuCiBMHbPl/Q9TrL0fDvVbktymEl8x38JIk0NhS1rJiRcBeldl1J2B1c8RPelTKv6KWm+O5HuAs7oW5BSY1Nf38NMgAXvQaqK2IE8qH/WVTogqkxyDtPd/Ec+cEEdyiG/RA9/GaMn5+rpjjjANatzAKv8Q8mNPNa0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342648758331.92295005202743; Thu, 3 Mar 2022 13:24:08 -0800 (PST) Received: from localhost ([::1]:43298 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsvf-0006NP-NT for importer@patchew.org; Thu, 03 Mar 2022 16:24:07 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59290) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsZ2-0006D9-Cl for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:49 -0500 Received: from [2607:f8b0:4864:20::102f] (port=40746 helo=mail-pj1-x102f.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYq-0004KP-6m for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:37 -0500 Received: by mail-pj1-x102f.google.com with SMTP id em10-20020a17090b014a00b001bc3071f921so8872617pjb.5 for ; Thu, 03 Mar 2022 13:00:24 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1XkfzGvn+ZlmZZNrl7Dk1RW038tolY/tjYs6706uD7c=; b=UWfD1YkGnU6ZtDvLvGlz8eSLOw1CJ1MYin9WEGe5wLMP/BxizntOJPxFyIBDc6Y3Rn GJMggH2T04KWs8HMAqB4WI/0Nq7z1w/7aLJjAF4Cnp4+ZzxfPxSRHPu8g72FfwyOLQDu vEjo06V3mLCdmxJCWhWJOausjVjCzpFQGawhnSg7bJ2H5HRrxtgNp5kyOOWKav9e9sYf QBxvw8cnfboVM0bCBRTTfL5TI8PnhWlIptkSwzxtQTIASNGe3IHb72XjMjRBGGvUA5BY PUfPIYUSOu1Mc6g1vMfwtYEruIlW6HL+7DhjFWRerZEyqbmya5XDkrEI7k3n2tz9/NUi FK8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1XkfzGvn+ZlmZZNrl7Dk1RW038tolY/tjYs6706uD7c=; b=gnxAUeHTp+wKTgoH7tH3fJgxnEV4iQNH3LXDiQPRnuNd4NIKkfPgL1Q1uEy7FDTvhH YKNuco0BCMrfwDhmo9Po1SGaw2vPIzDGVd28MZLIc6iZBcN1y/lHS0oyELdlLr/WS75Q wyr45prKsGNJNdG2SVVa3b9dWu5WkYko6XiNu7kilFIpmu1DecnQtSN0ciN+EL/smyd8 rTKH3Q6Y4mZYCvclBW5G0FbxynLqE1mlWWPFGylVWpJBQCvU64KuYq5NkcLI8lu7pBy2 SscTZ7t3Ss0RmdHKMxT3oholE5YY4M2oPT4mlJg/sQ7zMfdQJQnXV+5OmmGbJjjOaBxl yNuQ== X-Gm-Message-State: AOAM531DP/Oy223p3sMUJ09o49hEAmni/KSMb1dF8PfLUM/UdFMNrSIV hOCemeohCgUioHi8ushMwYcepCHoOdsWrg== X-Google-Smtp-Source: ABdhPJwaji2A0VFGnhWeRz6uMRfoGH8eUsQeNCgMlysApqvFKIWJ53K+fl73qLSYbVxuMjS8q3Vu0w== X-Received: by 2002:a17:903:11c9:b0:151:9521:d5c7 with SMTP id q9-20020a17090311c900b001519521d5c7mr11388492plh.73.1646341223486; Thu, 03 Mar 2022 13:00:23 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 24/30] accel/tcg: Support TCG_TARGET_SIGNED_ADDR32 for softmmu Date: Thu, 3 Mar 2022 10:59:38 -1000 Message-Id: <20220303205944.469445-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102f (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342649392100003 When TCG_TARGET_SIGNED_ADDR32 is set, adjust the tlb addend to allow the 32-bit guest address to be sign extended within the 64-bit host register instead of zero extended. This will simplify tcg hosts like MIPS, RISC-V, and LoongArch, which naturally sign-extend 32-bit values, in contrast to x86_64 and AArch64 which zero-extend them. Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- accel/tcg/cputlb.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index 0e62aa5d7c..0dbc3efbc7 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -40,6 +40,7 @@ #include "qemu/plugin-memory.h" #endif #include "tcg/tcg-ldst.h" +#include "tcg-target-sa32.h" =20 /* DEBUG defines, enable DEBUG_TLB_LOG to log to the CPU_LOG_MMU target */ /* #define DEBUG_TLB */ @@ -93,6 +94,9 @@ static inline size_t sizeof_tlb(CPUTLBDescFast *fast) =20 static inline uintptr_t g2h_tlbe(const CPUTLBEntry *tlb, target_ulong gadd= r) { + if (TCG_TARGET_SIGNED_ADDR32 && TARGET_LONG_BITS =3D=3D 32) { + return tlb->addend + (int32_t)gaddr; + } return tlb->addend + (uintptr_t)gaddr; } =20 @@ -1244,7 +1248,13 @@ void tlb_set_page_with_attrs(CPUState *cpu, target_u= long vaddr, desc->iotlb[index].attrs =3D attrs; =20 /* Now calculate the new entry */ - tn.addend =3D addend - vaddr_page; + + if (TCG_TARGET_SIGNED_ADDR32 && TARGET_LONG_BITS =3D=3D 32) { + tn.addend =3D addend - (int32_t)vaddr_page; + } else { + tn.addend =3D addend - vaddr_page; + } + if (prot & PAGE_READ) { tn.addr_read =3D address; if (wp_flags & BP_MEM_READ) { --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342669; cv=none; d=zohomail.com; s=zohoarc; b=N9C6l0AbQ1aazaAFn1STbt+yWVf2vAiz9cHzE7ATkjAV+PIr7QwXA/XUoMlJzNKF4EoGd/cX+IX/VarUTKge0Qr8705eieronTFZYcCORhwuyI6zU4vFYpKmaOcBVdYr9/Wi3pAcFoHsgBdDyGaKr/gvvNKtow52xeXigyf7fuI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342669; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=vyU1dEICQtRQByu98DNY2ApCIAVgpQWfK9xFqkqxnVc=; b=RdJd81AyoGECY7L5aM6VHAc6G5RGgsfzHkI+LPU1eNkqNIpwySfieuYIIw7w8h2hTyJ0erSFfLTbF2uzmOLJkJM2kBoF8ic8pNHcqtR2yR+hQaOPNG67D9JrxPmGRl44cx7EML7oCVASmhSx8ipspta0PstGjLygJHshER93y5U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342669230304.6544084305714; Thu, 3 Mar 2022 13:24:29 -0800 (PST) Received: from localhost ([::1]:45258 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsw0-0007fu-6N for importer@patchew.org; Thu, 03 Mar 2022 16:24:28 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59324) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsZ5-0006FX-A4 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:49 -0500 Received: from [2607:f8b0:4864:20::52f] (port=43907 helo=mail-pg1-x52f.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYu-0004LX-T7 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:44 -0500 Received: by mail-pg1-x52f.google.com with SMTP id 27so5726526pgk.10 for ; Thu, 03 Mar 2022 13:00:25 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vyU1dEICQtRQByu98DNY2ApCIAVgpQWfK9xFqkqxnVc=; b=FfcZBQ3wuadATBuLRc2vhaqnxEfvv5Q3OnfSESrbe6KxevUIjeWohkWmuc6akYLT8M L7K5EH8Tp8FLARXDBkmE3mmZ07msAFT/sLW8q14jDKYP2oLwC8KRx9PpfH3Uo/it4FRV rV3Ap0A9G8xxdPX4EjEEBuVG1Idbs3qjdiO/FzoUjatZfKg6zrDkGPvam1tKhXMl4VvA VtlK56K4pDB8bGODbIrErRSHmyv7GMdNZxKjaRbrqdHVMT6jL4BzOTfGp9MILRHpjReh AdTmdZXFVyScNuS4W+6U6Rzd2Bskr0gVopUKp876H+w662Yl50R4ZO/bbZ+tthz2+u31 hjNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vyU1dEICQtRQByu98DNY2ApCIAVgpQWfK9xFqkqxnVc=; b=kxAiOJqdwHDzsuSrySMpBFTVdSvwr7dgj1TK2bE5lvwKNrpI9dKDDWLrpiCNS3KX5c gtukql65rddGp+VfuYfLwLUiLfkFFn0KX9qOAJ49TVIZofc6F3c+YGPz/qg4iqmoBGn3 qxCmLnXm22R0XExqbNwziQ81OvCmu5YmwAtL8SFoOVO7SFAfl5jQIAjB7U+gu0tRbbuV V8vOAbpHv+EbF6fPiWUOzJytrHBbXTzs+fI9Y45C8k21AtkO3XJmFPCo9yxKJ2Tg4uTJ LfP2IxTSw3HlQOVGTPtzCRRIQKiodyt+FQiWF8cH80qSZMKvFui5sdXewUl2NbGqPVzS u/mA== X-Gm-Message-State: AOAM532h4NG3ElxSXyn76jtHhPRfYNNLSh/PpcNX+JWgWa+SEcb3bk3B GEa/yVxBbS8yoetyEEibR6vKtPISjzXlCw== X-Google-Smtp-Source: ABdhPJz+xgmcjMP3wWjSCNAdagQPZri51nL6a/DENbQhqzMWzEn2N5TgfLltv2fO/BEa/nyJ77Z7sA== X-Received: by 2002:a63:1b09:0:b0:378:faa5:c63a with SMTP id b9-20020a631b09000000b00378faa5c63amr11168896pgb.276.1646341224882; Thu, 03 Mar 2022 13:00:24 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 25/30] accel/tcg: Add guest_base_signed_addr32 for user-only Date: Thu, 3 Mar 2022 10:59:39 -1000 Message-Id: <20220303205944.469445-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::52f (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342671403100001 While the host may prefer to treat 32-bit addresses as signed, there are edge cases of guests that cannot be implemented with addresses 0x7fff_ffff and 0x8000_0000 being non-consecutive. Therefore, default to guest_base_signed_addr32 false, and allow probe_guest_base to determine whether it is possible to set it to true. A tcg backend which sets TCG_TARGET_SIGNED_ADDR32 will have to cope with either setting for user-only. Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/exec/cpu-all.h | 16 ++++++++++++++++ include/exec/cpu_ldst.h | 3 ++- bsd-user/main.c | 4 ++++ linux-user/main.c | 3 +++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index 84caf5c3d9..26ecd3c886 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -146,6 +146,7 @@ static inline void tswap64s(uint64_t *s) =20 #if defined(CONFIG_USER_ONLY) #include "exec/user/abitypes.h" +#include "tcg-target-sa32.h" =20 /* On some host systems the guest address space is reserved on the host. * This allows the guest address space to be offset to a convenient locati= on. @@ -154,6 +155,21 @@ extern uintptr_t guest_base; extern bool have_guest_base; extern unsigned long reserved_va; =20 +#if TCG_TARGET_SIGNED_ADDR32 && TARGET_LONG_BITS =3D=3D 32 +extern bool guest_base_signed_addr32; +#else +#define guest_base_signed_addr32 false +#endif + +static inline void set_guest_base_signed_addr32(void) +{ +#ifdef guest_base_signed_addr32 + qemu_build_not_reached(); +#else + guest_base_signed_addr32 =3D true; +#endif +} + /* * Limit the guest addresses as best we can. * diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h index da987fe8ad..add45499ee 100644 --- a/include/exec/cpu_ldst.h +++ b/include/exec/cpu_ldst.h @@ -87,7 +87,8 @@ static inline abi_ptr cpu_untagged_addr(CPUState *cs, abi= _ptr x) /* All direct uses of g2h and h2g need to go away for usermode softmmu. */ static inline void *g2h_untagged(abi_ptr x) { - return (void *)((uintptr_t)(x) + guest_base); + uintptr_t hx =3D guest_base_signed_addr32 ? (int32_t)x : (uintptr_t)x; + return (void *)(guest_base + hx); } =20 static inline void *g2h(CPUState *cs, abi_ptr x) diff --git a/bsd-user/main.c b/bsd-user/main.c index 88d347d05e..c181e54495 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -54,6 +54,10 @@ int singlestep; uintptr_t guest_base; bool have_guest_base; +#ifndef guest_base_signed_addr32 +bool guest_base_signed_addr32; +#endif + /* * When running 32-on-64 we should make sure we can fit all of the possible * guest address space into a contiguous chunk of virtual host memory. diff --git a/linux-user/main.c b/linux-user/main.c index fbc9bcfd5f..5d963ddb64 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -72,6 +72,9 @@ static const char *seed_optarg; unsigned long mmap_min_addr; uintptr_t guest_base; bool have_guest_base; +#ifndef guest_base_signed_addr32 +bool guest_base_signed_addr32; +#endif =20 /* * Used to implement backwards-compatibility for the `-strace`, and --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342804022588.7791649755371; Thu, 3 Mar 2022 13:26:44 -0800 (PST) Received: from localhost ([::1]:50512 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsyA-0002si-IO for importer@patchew.org; Thu, 03 Mar 2022 16:26:42 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59404) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsZ8-0006Gi-VH for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:58 -0500 Received: from [2607:f8b0:4864:20::535] (port=45986 helo=mail-pg1-x535.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsZ5-0004Mo-F7 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:50 -0500 Received: by mail-pg1-x535.google.com with SMTP id z4so5727019pgh.12 for ; Thu, 03 Mar 2022 13:00:27 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=F2bsGcziKKgWIATQyKoWzWtQMllrUtNMWOT4PiIDWxo=; b=xaM3nO1Z7t8mvnumCJbXeBaLgfVBw3Up3BI6SchgirWFH0FJt+uLTBBjJj830g95nV WnRut+EexZ6GueiZVmknRrO2wv6l7sFjE+ICg3BDJTZ+CWxtKV8VA1l2ctJY+wCpxNV9 97AbhheEC/USN8l4kofaXsosVC8XC0jftnt39hsHv5WT5RgCcR0FoHXNvoDGOIHgwKx+ ZmExvBiCnm95+BlnA6x58JW475OR5i7ShCww8kwmyc9mkxt9SUPSp+qjPhez+VE2ZpuY sKqPbLAAlmpKIprzAz2gi/B+28i0F/cmycJS1mFXlHpaUBg9qobfoSm4W09d3YA7GGvR 7xOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=F2bsGcziKKgWIATQyKoWzWtQMllrUtNMWOT4PiIDWxo=; b=VVGnYRIWmkyNkxms6lBm/6sukzhMDPUa7WtN0cjfQbRNlv9/pu3IW/2ZSFRRDPotkw GRYPehf28IGPx1BMehNF45a9O0cqAiO/Cz0qRn+rvOeJI+MRcDHxNtaxF7PoqCNfSOgt IxNyzh6jBJRB5XOR8Ji8EJz5PqVpr8roGGq/MC/nK+d5bzMjZ+of+X7CVGkbydNjrCID CUJWUPr9QfHw22ZHGKrinhxWYdlu7shq8csE12o5DKZ9ACIZ3y6aNJxPy3GG09NwEmDh +hbIDBSLQXB2XODYVtzddVx3CrVWRt/eWRm4uSoxMfCQUJwyB/E9vyAiUacUsTFRQydm DnnA== X-Gm-Message-State: AOAM530YTx2638s/jy11Mt5MKJEfXabi9S0qTwxZ4Lbxq27ZXxMjfNNf gI0u3YStYiSgEdTY4yysLyUxNH56PTKxGw== X-Google-Smtp-Source: ABdhPJzTu711mfWHD36F2u4tByQGATZtLq0mAZ+xpa26pXocLXyCuaRbhqd9O20WoYVJof63imPVig== X-Received: by 2002:a63:684a:0:b0:37c:5fa7:9f7e with SMTP id d71-20020a63684a000000b0037c5fa79f7emr2934407pgc.358.1646341226557; Thu, 03 Mar 2022 13:00:26 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 26/30] linux-user: Support TCG_TARGET_SIGNED_ADDR32 Date: Thu, 3 Mar 2022 10:59:40 -1000 Message-Id: <20220303205944.469445-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::535 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1646342806542100001 When using reserved_va, which is the default for a 64-bit host and a 32-bit guest, set guest_base_signed_addr32 if requested by TCG_TARGET_SIGNED_ADDR32, and the executable layout allows. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- include/exec/cpu-all.h | 4 --- linux-user/elfload.c | 62 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index 26ecd3c886..8bea0e069e 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -269,11 +269,7 @@ extern const TargetPageBits target_page; #define PAGE_RESET 0x0040 /* For linux-user, indicates that the page is MAP_ANON. */ #define PAGE_ANON 0x0080 - -#if defined(CONFIG_BSD) && defined(CONFIG_USER_ONLY) -/* FIXME: Code that sets/uses this is broken and needs to go away. */ #define PAGE_RESERVED 0x0100 -#endif /* Target-specific bits that will be used via page_get_flags(). */ #define PAGE_TARGET_1 0x0200 #define PAGE_TARGET_2 0x0400 diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 9628a38361..5522f9e721 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -2482,34 +2482,72 @@ static void pgb_dynamic(const char *image_name, lon= g align) static void pgb_reserved_va(const char *image_name, abi_ulong guest_loaddr, abi_ulong guest_hiaddr, long align) { - int flags =3D MAP_ANONYMOUS | MAP_PRIVATE | MAP_NORESERVE; + int flags =3D (MAP_ANONYMOUS | MAP_PRIVATE | + MAP_NORESERVE | MAP_FIXED_NOREPLACE); + unsigned long local_rva =3D reserved_va; + bool protect_wrap =3D false; void *addr, *test; =20 - if (guest_hiaddr > reserved_va) { + if (guest_hiaddr > local_rva) { error_report("%s: requires more than reserved virtual " "address space (0x%" PRIx64 " > 0x%lx)", - image_name, (uint64_t)guest_hiaddr, reserved_va); + image_name, (uint64_t)guest_hiaddr, local_rva); exit(EXIT_FAILURE); } =20 - /* Widen the "image" to the entire reserved address space. */ - pgb_static(image_name, 0, reserved_va, align); + if (TCG_TARGET_SIGNED_ADDR32 && TARGET_LONG_BITS =3D=3D 32) { + if (guest_loaddr < 0x80000000u && guest_hiaddr > 0x80000000u) { + /* + * The executable itself wraps on signed addresses. + * Without per-page translation, we must keep the + * guest address 0x7fff_ffff adjacent to 0x8000_0000 + * consecutive in host memory: unsigned addresses. + */ + } else { + set_guest_base_signed_addr32(); + if (local_rva <=3D 0x80000000u) { + /* No guest addresses are "negative": win! */ + } else { + /* Begin by allocating the entire address space. */ + local_rva =3D 0xfffffffful + 1; + protect_wrap =3D true; + } + } + } =20 - /* osdep.h defines this as 0 if it's missing */ - flags |=3D MAP_FIXED_NOREPLACE; + /* Widen the "image" to the entire reserved address space. */ + pgb_static(image_name, 0, local_rva, align); + assert(guest_base !=3D 0); =20 /* Reserve the memory on the host. */ - assert(guest_base !=3D 0); test =3D g2h_untagged(0); - addr =3D mmap(test, reserved_va, PROT_NONE, flags, -1, 0); + addr =3D mmap(test, local_rva, PROT_NONE, flags, -1, 0); if (addr =3D=3D MAP_FAILED || addr !=3D test) { + /* + * If protect_wrap, we could try again with the original reserved_= va + * setting, but the edge case of low ulimit vm setting on a 64-bit + * host is probably useless. + */ error_report("Unable to reserve 0x%lx bytes of virtual address " - "space at %p (%s) for use as guest address space (che= ck your" - "virtual memory ulimit setting, min_mmap_addr or rese= rve less " - "using -R option)", reserved_va, test, strerror(errno= )); + "space at %p (%s) for use as guest address space " + "(check your virtual memory ulimit setting, " + "min_mmap_addr or reserve less using -R option)", + local_rva, test, strerror(errno)); exit(EXIT_FAILURE); } =20 + if (protect_wrap) { + /* + * Prevent the page just before 0x80000000 from being allocated. + * This prevents a single guest object/allocation from crossing + * the signed wrap, and thus being discontiguous in host memory. + */ + page_set_flags(0x7fffffff & TARGET_PAGE_MASK, 0x80000000u, + PAGE_RESERVED); + /* Adjust guest_base so that 0 is in the middle of the reservation= . */ + guest_base +=3D 0x80000000ul; + } + qemu_log_mask(CPU_LOG_PAGE, "%s: base @ %p for %lu bytes\n", __func__, addr, reserved_va); } --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342537; cv=none; d=zohomail.com; s=zohoarc; b=i0L0V7pALv7vUGg5PbkZmU3aGe5xoW4HEMzZG0OG32OGpZ5hv1VF0RnSE5ICthd56R4UsvUg8j73R2n+y/y/dnWqDDjsaikky3fNlxxzaIKu5Njsrb22hPa9hRrB4iCCVi3HxjmBEAzuEogkjvgWWGmKZ3B2W1fq5J35Vm6P3+c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342537; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=r0wjfyMxZ3d8EIn1EG2HKBbXldpMaL2Owp04sCw5aBc=; b=NGRsT9e8EUFyq3s+DE1XqnPXJbdUsbTsUw6SiiZlJnQN4zEziJJb06StGTqNtz5a24nV1VUIOjOVF2WpDe4r9jbvDNzceiTl/eRPSz8rlLofapOPHCWqgHPGyXVSZz4f1jKVh9O3VNKUypDrRQ6jz9sb/HQTAQDcCWUxgWulpIs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342537714581.8270853769028; Thu, 3 Mar 2022 13:22:17 -0800 (PST) Received: from localhost ([::1]:34560 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsts-0000QQ-A2 for importer@patchew.org; Thu, 03 Mar 2022 16:22:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59322) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsZ5-0006FW-88 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:49 -0500 Received: from [2607:f8b0:4864:20::534] (port=36463 helo=mail-pg1-x534.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYr-0004NP-2Y for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:38 -0500 Received: by mail-pg1-x534.google.com with SMTP id t14so5755703pgr.3 for ; Thu, 03 Mar 2022 13:00:29 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=r0wjfyMxZ3d8EIn1EG2HKBbXldpMaL2Owp04sCw5aBc=; b=DG1e0pL5vZ/kW5TIGfgRXIjdxZA9cT6dURhP4rw+audAA+yfiI85p3ZOedku3E7bes kKcJ+kJszaUCrlVZaMy6lpXEClVyLFpMNwBIoyQzAoj+aKRBvcYzngjQPhWmAK+BYIfx AEEWs1yvFkYvqtl3KWeWwVsodLoelpRO9PhCzO21fNS0McPvGectqUnC5DI49QG2cuj7 TEtpLFX3JDPrWLQxvLgkjOScCO++UIzWLdCQYGJv9ZPTa2NNA2SMHZAmtcr4kG9lxHuv 5cq8JYv9O6HdNbXpkNLkDnJmWknA97+kq0uVcBAF0QnbBJRgbG+PC9b2HanLnppo9GDB rluQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=r0wjfyMxZ3d8EIn1EG2HKBbXldpMaL2Owp04sCw5aBc=; b=WWub2YLL4+YLoSTk9T/ftYELJmZ+JPjRwDK0BXn3R0yeOHnhsJLIpplIwjkl2/yTO/ FxgIsZoTK5eUNUB6MO+WL0VyY2YopmDEwiHLrOIru3Moz+ecSR3hYgfLk7WlnHN15PIn av7Wkw8F/yqSMQIS0wOkTVp3iPUKD7WvOlf860SwtSoh4mBoacX7fKB9z/52aM14VrDm llcR2TAtfai0AokhXprM2kStf5Aq1OKFviBzz2eaDo6t5lPproh+NL8Q/ILCFNQ7vjaQ GKlAStyAzxG12Emle7lt6gULf8MAt5RtopgVm5gSR9xht69Ktc7hW/ntw8RC0kh/drc8 yNXw== X-Gm-Message-State: AOAM531M8xlS9a5hjwBC/VYI3pjsabD+E1RjjlbgVZUVu77D66KkUgqx UQMy2zKMZw3WjCcEeZ5SWtVqZdeTONi5GQ== X-Google-Smtp-Source: ABdhPJwvLfahfW/lksHsgBNtL1/8JS2rwKsSkFPiJWa6MICc9PFjDqPv6nct6BYtQYVxaZcfRt3jKw== X-Received: by 2002:a63:8bca:0:b0:37c:9049:103 with SMTP id j193-20020a638bca000000b0037c90490103mr931570pge.387.1646341228097; Thu, 03 Mar 2022 13:00:28 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 27/30] tcg/aarch64: Support TCG_TARGET_SIGNED_ADDR32 Date: Thu, 3 Mar 2022 10:59:41 -1000 Message-Id: <20220303205944.469445-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::534 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342538511100001 Content-Type: text/plain; charset="utf-8" AArch64 has both sign and zero-extending addressing modes, which means that either treatment of guest addresses is equally efficient. Enabling this for AArch64 gives us testing of the feature in CI. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- tcg/aarch64/tcg-target-sa32.h | 8 +++- tcg/aarch64/tcg-target.c.inc | 81 ++++++++++++++++++++++++----------- 2 files changed, 64 insertions(+), 25 deletions(-) diff --git a/tcg/aarch64/tcg-target-sa32.h b/tcg/aarch64/tcg-target-sa32.h index cb185b1526..c99e502e4c 100644 --- a/tcg/aarch64/tcg-target-sa32.h +++ b/tcg/aarch64/tcg-target-sa32.h @@ -1 +1,7 @@ -#define TCG_TARGET_SIGNED_ADDR32 0 +/* + * AArch64 has both SXTW and UXTW addressing modes, which means that + * it is agnostic to how guest addresses should be represented. + * Because aarch64 is more common than the other hosts that will + * want to use this feature, enable it for continuous testing. + */ +#define TCG_TARGET_SIGNED_ADDR32 1 diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc index 077fc51401..4a3edd6963 100644 --- a/tcg/aarch64/tcg-target.c.inc +++ b/tcg/aarch64/tcg-target.c.inc @@ -361,6 +361,16 @@ typedef enum { LDST_LD_S_W =3D 3, /* load and sign-extend into Wt */ } AArch64LdstType; =20 +/* + * See aarch64/instrs/extendreg/DecodeRegExtend + * But note that option<1> =3D=3D 0 is UNDEFINED for LDR/STR. + */ +typedef enum { + LDST_EXT_UXTW =3D 2, /* zero-extend from uint32_t */ + LDST_EXT_UXTX =3D 3, /* zero-extend from uint64_t (i.e. no extension)= */ + LDST_EXT_SXTW =3D 6, /* sign-extend from int32_t */ +} AArch64LdstExt; + /* We encode the format of the insn into the beginning of the name, so that we can have the preprocessor help "typecheck" the insn vs the output function. Arm didn't provide us with nice names for the formats, so we @@ -806,12 +816,12 @@ static void tcg_out_insn_3617(TCGContext *s, AArch64I= nsn insn, bool q, } =20 static void tcg_out_insn_3310(TCGContext *s, AArch64Insn insn, - TCGReg rd, TCGReg base, TCGType ext, + TCGReg rd, TCGReg base, AArch64LdstExt optio= n, TCGReg regoff) { /* Note the AArch64Insn constants above are for C3.3.12. Adjust. */ tcg_out32(s, insn | I3312_TO_I3310 | regoff << 16 | - 0x4000 | ext << 13 | base << 5 | (rd & 0x1f)); + option << 13 | base << 5 | (rd & 0x1f)); } =20 static void tcg_out_insn_3312(TCGContext *s, AArch64Insn insn, @@ -1126,7 +1136,7 @@ static void tcg_out_ldst(TCGContext *s, AArch64Insn i= nsn, TCGReg rd, =20 /* Worst-case scenario, move offset to temp register, use reg offset. = */ tcg_out_movi(s, TCG_TYPE_I64, TCG_REG_TMP, offset); - tcg_out_ldst_r(s, insn, rd, rn, TCG_TYPE_I64, TCG_REG_TMP); + tcg_out_ldst_r(s, insn, rd, rn, LDST_EXT_UXTX, TCG_REG_TMP); } =20 static bool tcg_out_mov(TCGContext *s, TCGType type, TCGReg ret, TCGReg ar= g) @@ -1765,31 +1775,31 @@ static bool tcg_out_qemu_st_slow_path(TCGContext *s= , TCGLabelQemuLdst *l) =20 static void tcg_out_qemu_ld_direct(TCGContext *s, MemOp memop, TCGType ext, TCGReg data_r, TCGReg addr_r, - TCGType otype, TCGReg off_r) + AArch64LdstExt option, TCGReg off_r) { switch (memop & MO_SSIZE) { case MO_UB: - tcg_out_ldst_r(s, I3312_LDRB, data_r, addr_r, otype, off_r); + tcg_out_ldst_r(s, I3312_LDRB, data_r, addr_r, option, off_r); break; case MO_SB: tcg_out_ldst_r(s, ext ? I3312_LDRSBX : I3312_LDRSBW, - data_r, addr_r, otype, off_r); + data_r, addr_r, option, off_r); break; case MO_UW: - tcg_out_ldst_r(s, I3312_LDRH, data_r, addr_r, otype, off_r); + tcg_out_ldst_r(s, I3312_LDRH, data_r, addr_r, option, off_r); break; case MO_SW: tcg_out_ldst_r(s, (ext ? I3312_LDRSHX : I3312_LDRSHW), - data_r, addr_r, otype, off_r); + data_r, addr_r, option, off_r); break; case MO_UL: - tcg_out_ldst_r(s, I3312_LDRW, data_r, addr_r, otype, off_r); + tcg_out_ldst_r(s, I3312_LDRW, data_r, addr_r, option, off_r); break; case MO_SL: - tcg_out_ldst_r(s, I3312_LDRSWX, data_r, addr_r, otype, off_r); + tcg_out_ldst_r(s, I3312_LDRSWX, data_r, addr_r, option, off_r); break; case MO_UQ: - tcg_out_ldst_r(s, I3312_LDRX, data_r, addr_r, otype, off_r); + tcg_out_ldst_r(s, I3312_LDRX, data_r, addr_r, option, off_r); break; default: tcg_abort(); @@ -1798,31 +1808,52 @@ static void tcg_out_qemu_ld_direct(TCGContext *s, M= emOp memop, TCGType ext, =20 static void tcg_out_qemu_st_direct(TCGContext *s, MemOp memop, TCGReg data_r, TCGReg addr_r, - TCGType otype, TCGReg off_r) + AArch64LdstExt option, TCGReg off_r) { switch (memop & MO_SIZE) { case MO_8: - tcg_out_ldst_r(s, I3312_STRB, data_r, addr_r, otype, off_r); + tcg_out_ldst_r(s, I3312_STRB, data_r, addr_r, option, off_r); break; case MO_16: - tcg_out_ldst_r(s, I3312_STRH, data_r, addr_r, otype, off_r); + tcg_out_ldst_r(s, I3312_STRH, data_r, addr_r, option, off_r); break; case MO_32: - tcg_out_ldst_r(s, I3312_STRW, data_r, addr_r, otype, off_r); + tcg_out_ldst_r(s, I3312_STRW, data_r, addr_r, option, off_r); break; case MO_64: - tcg_out_ldst_r(s, I3312_STRX, data_r, addr_r, otype, off_r); + tcg_out_ldst_r(s, I3312_STRX, data_r, addr_r, option, off_r); break; default: tcg_abort(); } } =20 +/* + * Bits for the option field of LDR/STR (register), + * for application to a guest address. + */ +static AArch64LdstExt ldst_ext_option(void) +{ +#ifdef CONFIG_USER_ONLY + bool signed_addr32 =3D guest_base_signed_addr32; +#else + bool signed_addr32 =3D TCG_TARGET_SIGNED_ADDR32; +#endif + + if (TARGET_LONG_BITS =3D=3D 64) { + return LDST_EXT_UXTX; + } else if (signed_addr32) { + return LDST_EXT_SXTW; + } else { + return LDST_EXT_UXTW; + } +} + static void tcg_out_qemu_ld(TCGContext *s, TCGReg data_reg, TCGReg addr_re= g, MemOpIdx oi, TCGType ext) { MemOp memop =3D get_memop(oi); - const TCGType otype =3D TARGET_LONG_BITS =3D=3D 64 ? TCG_TYPE_I64 : TC= G_TYPE_I32; + AArch64LdstExt option =3D ldst_ext_option(); =20 /* Byte swapping is left to middle-end expansion. */ tcg_debug_assert((memop & MO_BSWAP) =3D=3D 0); @@ -1833,7 +1864,7 @@ static void tcg_out_qemu_ld(TCGContext *s, TCGReg dat= a_reg, TCGReg addr_reg, =20 tcg_out_tlb_read(s, addr_reg, memop, &label_ptr, mem_index, 1); tcg_out_qemu_ld_direct(s, memop, ext, data_reg, - TCG_REG_X1, otype, addr_reg); + TCG_REG_X1, option, addr_reg); add_qemu_ldst_label(s, true, oi, ext, data_reg, addr_reg, s->code_ptr, label_ptr); #else /* !CONFIG_SOFTMMU */ @@ -1843,10 +1874,11 @@ static void tcg_out_qemu_ld(TCGContext *s, TCGReg d= ata_reg, TCGReg addr_reg, } if (USE_GUEST_BASE) { tcg_out_qemu_ld_direct(s, memop, ext, data_reg, - TCG_REG_GUEST_BASE, otype, addr_reg); + TCG_REG_GUEST_BASE, option, addr_reg); } else { + /* This case is always a 64-bit guest with no extension. */ tcg_out_qemu_ld_direct(s, memop, ext, data_reg, - addr_reg, TCG_TYPE_I64, TCG_REG_XZR); + addr_reg, LDST_EXT_UXTX, TCG_REG_XZR); } #endif /* CONFIG_SOFTMMU */ } @@ -1855,7 +1887,7 @@ static void tcg_out_qemu_st(TCGContext *s, TCGReg dat= a_reg, TCGReg addr_reg, MemOpIdx oi) { MemOp memop =3D get_memop(oi); - const TCGType otype =3D TARGET_LONG_BITS =3D=3D 64 ? TCG_TYPE_I64 : TC= G_TYPE_I32; + AArch64LdstExt option =3D ldst_ext_option(); =20 /* Byte swapping is left to middle-end expansion. */ tcg_debug_assert((memop & MO_BSWAP) =3D=3D 0); @@ -1866,7 +1898,7 @@ static void tcg_out_qemu_st(TCGContext *s, TCGReg dat= a_reg, TCGReg addr_reg, =20 tcg_out_tlb_read(s, addr_reg, memop, &label_ptr, mem_index, 0); tcg_out_qemu_st_direct(s, memop, data_reg, - TCG_REG_X1, otype, addr_reg); + TCG_REG_X1, option, addr_reg); add_qemu_ldst_label(s, false, oi, (memop & MO_SIZE)=3D=3D MO_64, data_reg, addr_reg, s->code_ptr, label_ptr); #else /* !CONFIG_SOFTMMU */ @@ -1876,10 +1908,11 @@ static void tcg_out_qemu_st(TCGContext *s, TCGReg d= ata_reg, TCGReg addr_reg, } if (USE_GUEST_BASE) { tcg_out_qemu_st_direct(s, memop, data_reg, - TCG_REG_GUEST_BASE, otype, addr_reg); + TCG_REG_GUEST_BASE, option, addr_reg); } else { + /* This case is always a 64-bit guest with no extension. */ tcg_out_qemu_st_direct(s, memop, data_reg, - addr_reg, TCG_TYPE_I64, TCG_REG_XZR); + addr_reg, LDST_EXT_UXTX, TCG_REG_XZR); } #endif /* CONFIG_SOFTMMU */ } --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646342612; cv=none; d=zohomail.com; s=zohoarc; b=P/c13MliKrvOFENnR2kj1gMHFrn5v4t61uweTBwWcUx7oD0wV4wIR3/p06nEkQ6Kmj8WR59e4RRPYvAkclzwVqztgbS+K1BsWtFUoPy1g0zfkzbojq3kESen+YYeUre1SIMmoRlIA3nq9LvL6hyJ64VA6O9xlZGTmJSHzvR94DU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646342612; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+BD96XfV2twTSXl72v5Agr1at/ZBm5w6SA0tYUmlFcg=; b=FIevraFQE1rXggWQnCV9z92LHYf70ScFH3t4opm3LTZBf76CFkIy9xKhjeWLJJK1hqhcM15h4KLDGOeWOT53m8qDaTuVdRT9yUrJKrI0ZfQ+Md5mvKNJx9e/Hlf7bmIBYjlhyXVO3nrMpNbzU5uE0Hy/+ZgQvyxjrfzJhWO6+lw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342612275547.1055406666053; Thu, 3 Mar 2022 13:23:32 -0800 (PST) Received: from localhost ([::1]:40380 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsv5-0004OK-7i for importer@patchew.org; Thu, 03 Mar 2022 16:23:31 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59378) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsZ7-0006GT-Q3 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:58 -0500 Received: from [2607:f8b0:4864:20::433] (port=34322 helo=mail-pf1-x433.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsZ3-0004Nf-Ak for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:48 -0500 Received: by mail-pf1-x433.google.com with SMTP id g1so5818582pfv.1 for ; Thu, 03 Mar 2022 13:00:30 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+BD96XfV2twTSXl72v5Agr1at/ZBm5w6SA0tYUmlFcg=; b=PodAkFwxKmqZcZccYJ4tjT1bFF5kedzol1AqMLUu9KbkDHsuCBidfk6xuFUZ/6iEPy GDSv8YLxZiTvul/D9f93pZq/hfjfdOlk5sJ7kawq1KT5Ge90vZDmFRqwtK1QuMA0jSnQ WleQhZKGJrMNXW8i4moliohaDKlNWf1DRGmWIS8sQP6b5YkAMcDI9Dk/58zZRWsNO/K1 vxF7kb0S6DEsXODspsNo1rAAQe3HGA41/UdrQFOqXZ4IGgYEdR4tAy3X784HBbV0/ypt kFG2has+FgYp5s3WuqFo8xNMDuU8AYseKIqTyOnCYjsLMqoCYXJNPlyI/1JX2S1E46lS DwkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+BD96XfV2twTSXl72v5Agr1at/ZBm5w6SA0tYUmlFcg=; b=lFYSetMyW8O0ATtKAJVuG0dddI/82O+z2TPF35JsHaudvx2cgzZnvBxg8jkeGxYPBg WshUv5Uey0x7wqXBVI/gNOkjXC+0QUdVZzA9OceYNvthqSwPBQjlmHMnr1yWz0onjPE/ XFD+DWjiko7pBUe56Q9bT7wePf9XGcV51rnhUZXH7OA/qpYd1kV6z3TySScSX4nJGLux jfBH1S2IQN8Lo/XI0lSwYVRNnuQysOVeClfD3uZjjw1UU8xFmezAc5RjlD7OKOLxZ/rr HKm67HusiK+d7nMGSB8F+edVfF1FCmT94YWByfMdOYMnlLrjuz9dPdvWU4XE7mh8kyAS v+4A== X-Gm-Message-State: AOAM5310rtm144GCZQn4ZaJJd0lu/Q/jNsw94/rxsaN4GMxIXhW1qrd9 mZabNtTeoev+X2noEcHs1PBNWuZnDlGbyg== X-Google-Smtp-Source: ABdhPJxhEYB1HVk/2Ct6Xpa0arn3r1U6be2gukisw+yiwhBkWYfSSdxFM/RwKJsrCzPQ23MzlGD77Q== X-Received: by 2002:a65:5bc1:0:b0:373:ec8f:9f50 with SMTP id o1-20020a655bc1000000b00373ec8f9f50mr31656931pgr.289.1646341229385; Thu, 03 Mar 2022 13:00:29 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 28/30] tcg/mips: Support TCG_TARGET_SIGNED_ADDR32 Date: Thu, 3 Mar 2022 10:59:42 -1000 Message-Id: <20220303205944.469445-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::433 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646342613276100001 All 32-bit mips operations sign-extend the output, so we are easily able to keep TCG_TYPE_I32 values sign-extended in host registers. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/mips/tcg-target-sa32.h | 8 ++++++++ tcg/mips/tcg-target.c.inc | 10 ++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/tcg/mips/tcg-target-sa32.h b/tcg/mips/tcg-target-sa32.h index cb185b1526..51255e7cba 100644 --- a/tcg/mips/tcg-target-sa32.h +++ b/tcg/mips/tcg-target-sa32.h @@ -1 +1,9 @@ +/* + * Do not set TCG_TARGET_SIGNED_ADDR32 for mips32; + * TCG expects this to only be set for 64-bit hosts. + */ +#ifdef __mips64 +#define TCG_TARGET_SIGNED_ADDR32 1 +#else #define TCG_TARGET_SIGNED_ADDR32 0 +#endif diff --git a/tcg/mips/tcg-target.c.inc b/tcg/mips/tcg-target.c.inc index 993149d18a..b97c032ded 100644 --- a/tcg/mips/tcg-target.c.inc +++ b/tcg/mips/tcg-target.c.inc @@ -1168,12 +1168,6 @@ static void tcg_out_tlb_load(TCGContext *s, TCGReg b= ase, TCGReg addrl, TCG_TMP0, TCG_TMP3, cmp_off); } =20 - /* Zero extend a 32-bit guest address for a 64-bit host. */ - if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { - tcg_out_ext32u(s, base, addrl); - addrl =3D base; - } - /* * Mask the page bits, keeping the alignment bits to compare against. * For unaligned accesses, compare against the end of the access to @@ -1679,7 +1673,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGA= rg *args, bool is_64) data_regl, data_regh, addr_regl, addr_regh, s->code_ptr, label_ptr); #else - if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { + if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS && !guest_base_signed_addr3= 2) { tcg_out_ext32u(s, base, addr_regl); addr_regl =3D base; } @@ -1878,7 +1872,7 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGA= rg *args, bool is_64) data_regl, data_regh, addr_regl, addr_regh, s->code_ptr, label_ptr); #else - if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { + if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS && !guest_base_signed_addr3= 2) { tcg_out_ext32u(s, base, addr_regl); addr_regl =3D base; } --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342823743665.3494100120572; Thu, 3 Mar 2022 13:27:03 -0800 (PST) Received: from localhost ([::1]:52162 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsyU-0003zB-F9 for importer@patchew.org; Thu, 03 Mar 2022 16:27:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59408) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsZ9-0006Gs-8U for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:58 -0500 Received: from [2607:f8b0:4864:20::532] (port=47062 helo=mail-pg1-x532.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsZ7-0004Nj-Dh for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:51 -0500 Received: by mail-pg1-x532.google.com with SMTP id o23so5720419pgk.13 for ; Thu, 03 Mar 2022 13:00:31 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Ho2jnp9wAsj5SBP8tX6ESXDweHDs0USlRJ9dHfy8f/A=; b=Bn+6FdMKJSkiiNReFBPwUHZmnwvUIepsIZodrQpm0oxqt5teRzqdmrxooTP4sLnp7z zNvDooEt4YezUpyUty8z7Q+K8/WqpgkutTtqv5j/7zFw1KfX2nTymQ6bdlQlDTTBarYh 1a6Z785ZWS2nUScuLVHNMA18RB2VcunGgSsbocbNlr6DS0aeHymSQgM/Hidh1oe9hd61 IEmocs/FSbe+BvgfD/6buTccvRpzngnvGU+Wb9RrtvK/9L3LEzAsngNnUSDl/8EvE59X e0WGD5+5PBPGQDiPzd/eMWNQUcafVroobhZZ77Fk/JVTVdTBCEQQfgW4i93As8tuAIay 9axQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ho2jnp9wAsj5SBP8tX6ESXDweHDs0USlRJ9dHfy8f/A=; b=zseSp2knMNwPP0IdUWZ4GA5f26sJ6kciUhaPeqNAPXE21Z258q8Sv7kaM5jL2GEwmd N+B/rBjDImENFnL7m+b/u0VRbVcfFnvqYjbMbYNCETOo9u6lX1kp/S59bDuCC4ZZjzFY wfpmdpAUzvOJFzl47pXkMoXljrmDEKuy4tv9CLBsNbrBb+0Qq8ATpoJ/IBMX5BZKe5/B yFM/OVMVnd7QA4oms4hqCFJzMo+8t0YG3GRE4/RyjZifFZNrn3KjhPnjceyvoFdGaeME gjRmXfgn1q32Qhi+Au6A4le8Wy66r4auM2qAOFju9YavjFrB+5zX2XpcMNXj2MQeLZ1i V2xw== X-Gm-Message-State: AOAM533GmaRbALTSOosL71qBS/chsFc3js0L6nJ/JWWKL+wlcbtkSN8O gtxVxLzw8qmFnamNWc9orBkX/eMaC5PGug== X-Google-Smtp-Source: ABdhPJx15NZwVAeTeZRznqRMJWko5REW7pSHECOlZiYQfzfYuT8dqHV9piZcJwnkLIHpbviTt7lDig== X-Received: by 2002:a65:680a:0:b0:34d:efd6:7a5f with SMTP id l10-20020a65680a000000b0034defd67a5fmr31337128pgt.213.1646341230959; Thu, 03 Mar 2022 13:00:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 29/30] tcg/riscv: Support TCG_TARGET_SIGNED_ADDR32 Date: Thu, 3 Mar 2022 10:59:43 -1000 Message-Id: <20220303205944.469445-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::532 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1646342826954100001 All RV64 32-bit operations sign-extend the output, so we are easily able to keep TCG_TYPE_I32 values sign-extended in host registers. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Signed-off-by: Richard Henderson --- tcg/riscv/tcg-target-sa32.h | 6 +++++- tcg/riscv/tcg-target.c.inc | 8 ++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tcg/riscv/tcg-target-sa32.h b/tcg/riscv/tcg-target-sa32.h index cb185b1526..703467b37a 100644 --- a/tcg/riscv/tcg-target-sa32.h +++ b/tcg/riscv/tcg-target-sa32.h @@ -1 +1,5 @@ -#define TCG_TARGET_SIGNED_ADDR32 0 +/* + * Do not set TCG_TARGET_SIGNED_ADDR32 for RV32; + * TCG expects this to only be set for 64-bit hosts. + */ +#define TCG_TARGET_SIGNED_ADDR32 (__riscv_xlen =3D=3D 64) diff --git a/tcg/riscv/tcg-target.c.inc b/tcg/riscv/tcg-target.c.inc index 6409d9c3d5..c999711494 100644 --- a/tcg/riscv/tcg-target.c.inc +++ b/tcg/riscv/tcg-target.c.inc @@ -951,10 +951,6 @@ static void tcg_out_tlb_load(TCGContext *s, TCGReg add= rl, tcg_out_opc_branch(s, OPC_BNE, TCG_REG_TMP0, TCG_REG_TMP1, 0); =20 /* TLB Hit - translate address using addend. */ - if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { - tcg_out_ext32u(s, TCG_REG_TMP0, addrl); - addrl =3D TCG_REG_TMP0; - } tcg_out_opc_reg(s, OPC_ADD, TCG_REG_TMP0, TCG_REG_TMP2, addrl); } =20 @@ -1175,7 +1171,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGA= rg *args, bool is_64) data_regl, data_regh, addr_regl, addr_regh, s->code_ptr, label_ptr); #else - if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { + if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS && !guest_base_signed_addr3= 2) { tcg_out_ext32u(s, base, addr_regl); addr_regl =3D base; } @@ -1247,7 +1243,7 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGA= rg *args, bool is_64) data_regl, data_regh, addr_regl, addr_regh, s->code_ptr, label_ptr); #else - if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS) { + if (TCG_TARGET_REG_BITS > TARGET_LONG_BITS && !guest_base_signed_addr3= 2) { tcg_out_ext32u(s, base, addr_regl); addr_regl =3D base; } --=20 2.25.1 From nobody Tue May 14 03:52:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646342510533532.0458862568855; Thu, 3 Mar 2022 13:21:50 -0800 (PST) Received: from localhost ([::1]:60352 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPstR-0007Bj-F1 for importer@patchew.org; Thu, 03 Mar 2022 16:21:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59326) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsZ5-0006FY-8V for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:49 -0500 Received: from [2607:f8b0:4864:20::633] (port=46937 helo=mail-pl1-x633.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsYu-0004Ox-T8 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 16:00:44 -0500 Received: by mail-pl1-x633.google.com with SMTP id bd1so5844389plb.13 for ; Thu, 03 Mar 2022 13:00:33 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id t8-20020a6549c8000000b00372eb3a7fb3sm2729934pgs.92.2022.03.03.13.00.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 13:00:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KnojlxdJvLZ10xztEz7NOsevcqMVQEVsVSU9aLxpzTg=; b=DCaVZasdPQz2EBo3aBRp2UaE52zHtsG0FYX9v0HPKWPLD/DYcQNu3UhyEYLRbxalRt ruTjNDquWUHD7zxCTGFY9Dw5E82Cklg8uByt48UPD5B0Sb80ibeHRWchmsY/sTPUBxta HApTKBzjtQSw2F1Sn46OvjMLujhDUP/wvphpG0HATy1p6lxeoGkgvTdUETSkttKRwEIE eXswFaqYKdPVP1MXLB8Ygh5Qg/AvTy2FtNbxQq1WX7j8M2jFnNXd3VSkZQIeeAxPDkwo +SjprWlvFSPfOz0lzh9YuCDXQT27jfeTUorcH9HY9WpMnGxYlGa0XQ+9WwNH+BLZ2rKd AYZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KnojlxdJvLZ10xztEz7NOsevcqMVQEVsVSU9aLxpzTg=; b=BsQ2UcQLLo57Ox/Uf191RsyNzoaBoEeSgVjRridPOnmOO+nF3kk+Pt7MelvnkA+yRO PGAt6jGpjY0V2yKCKPCASg+TQwBdSGqcatjfoZiDBnD4FfKcAzSWfmg2SixunhlMqsNQ VnTjpKeiERWwcXt9RbQWgJqb/MFh7vWyjxsSLv49+N2wWl5Zsglxalqk4rO+pRfzfUuj sLABDaP/8M3cA1LGGC54NCrRFyePIQY+/EfGijXMxbuo8xw3Mq+/J4ebK27UX6gs+1h4 YV7ExVK8RFgLwpSLtGcixXribPRCt9hhh/s3zt3DbM6/vcKeiey/rjrZymNcTNSZn1vM iuCg== X-Gm-Message-State: AOAM532XKppl7bz10mBObsP/mmkGpvr5LLMG8Y8xvvvJpO4Cf2XbK6c0 U7yGNaaT7lq+16021QmqYZlciS6Nxw8njA== X-Google-Smtp-Source: ABdhPJwBq2+ejwdpHQP0dAdvcRZGqJBXlnNdhfMd8sD3n1W98KndUVncv8CNJTxB2npzlLY5bEuWBw== X-Received: by 2002:a17:903:110d:b0:14d:ca16:2c7 with SMTP id n13-20020a170903110d00b0014dca1602c7mr38243566plh.68.1646341232442; Thu, 03 Mar 2022 13:00:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 30/30] tcg/loongarch64: Support TCG_TARGET_SIGNED_ADDR32 Date: Thu, 3 Mar 2022 10:59:44 -1000 Message-Id: <20220303205944.469445-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303205944.469445-1-richard.henderson@linaro.org> References: <20220303205944.469445-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::633 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: WANG Xuerui , peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1646342512666100001 All 32-bit LoongArch operations sign-extend the output, so we are easily able to keep TCG_TYPE_I32 values sign-extended in host registers. Cc: WANG Xuerui Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-target-sa32.h | 2 +- tcg/loongarch64/tcg-target.c.inc | 15 ++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/tcg/loongarch64/tcg-target-sa32.h b/tcg/loongarch64/tcg-target= -sa32.h index cb185b1526..aaffd777bf 100644 --- a/tcg/loongarch64/tcg-target-sa32.h +++ b/tcg/loongarch64/tcg-target-sa32.h @@ -1 +1 @@ -#define TCG_TARGET_SIGNED_ADDR32 0 +#define TCG_TARGET_SIGNED_ADDR32 1 diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index a3debf6da7..425f6629ca 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -880,8 +880,6 @@ static bool tcg_out_qemu_st_slow_path(TCGContext *s, TC= GLabelQemuLdst *l) return tcg_out_fail_alignment(s, l); } =20 -#endif /* CONFIG_SOFTMMU */ - /* * `ext32u` the address register into the temp register given, * if target is 32-bit, no-op otherwise. @@ -891,12 +889,13 @@ static bool tcg_out_qemu_st_slow_path(TCGContext *s, = TCGLabelQemuLdst *l) static TCGReg tcg_out_zext_addr_if_32_bit(TCGContext *s, TCGReg addr, TCGReg tmp) { - if (TARGET_LONG_BITS =3D=3D 32) { + if (TARGET_LONG_BITS =3D=3D 32 && !guest_base_signed_addr32) { tcg_out_ext32u(s, tmp, addr); return tmp; } return addr; } +#endif /* CONFIG_SOFTMMU */ =20 static void tcg_out_qemu_ld_indexed(TCGContext *s, TCGReg rd, TCGReg rj, TCGReg rk, MemOp opc, TCGType type) @@ -944,8 +943,8 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg= *args, TCGType type) tcg_insn_unit *label_ptr[1]; #else unsigned a_bits; -#endif TCGReg base; +#endif =20 data_regl =3D *args++; addr_regl =3D *args++; @@ -954,8 +953,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg= *args, TCGType type) =20 #if defined(CONFIG_SOFTMMU) tcg_out_tlb_load(s, addr_regl, oi, label_ptr, 1); - base =3D tcg_out_zext_addr_if_32_bit(s, addr_regl, TCG_REG_TMP0); - tcg_out_qemu_ld_indexed(s, data_regl, base, TCG_REG_TMP2, opc, type); + tcg_out_qemu_ld_indexed(s, data_regl, addr_regl, TCG_REG_TMP2, opc, ty= pe); add_qemu_ldst_label(s, 1, oi, type, data_regl, addr_regl, s->code_ptr, label_ptr); @@ -1004,8 +1002,8 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGA= rg *args) tcg_insn_unit *label_ptr[1]; #else unsigned a_bits; -#endif TCGReg base; +#endif =20 data_regl =3D *args++; addr_regl =3D *args++; @@ -1014,8 +1012,7 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGA= rg *args) =20 #if defined(CONFIG_SOFTMMU) tcg_out_tlb_load(s, addr_regl, oi, label_ptr, 0); - base =3D tcg_out_zext_addr_if_32_bit(s, addr_regl, TCG_REG_TMP0); - tcg_out_qemu_st_indexed(s, data_regl, base, TCG_REG_TMP2, opc); + tcg_out_qemu_st_indexed(s, data_regl, addr_regl, TCG_REG_TMP2, opc); add_qemu_ldst_label(s, 0, oi, 0, /* type param is unused for stores */ data_regl, addr_regl, --=20 2.25.1