From nobody Tue Feb 10 11:33:40 2026 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=1639856694; cv=none; d=zohomail.com; s=zohoarc; b=W9N2mecdaydj0476iM2y1YGmKDO8FJDLBYMR5QGCwYtadIAA+uQoSzcQ4EJ896rqYlIx/RmhLXYWVGL4ImtGntVoshCMkAIpVmyXQ15uZYc5lqWpR45IDvxBMyM5rICjBIPaV2De+rgspM1q/G28mkATB47SWYYWSXP9g9zqA10= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639856694; h=Content-Transfer-Encoding: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=Py2CQU23qc5Ab7F/OtpE3uQ6+1+aoSI03Ao4KqfuEtM=; b=eR78DJCb19oYg+15e8PbdeaZdgfCfz+yPqlfJ/NbsOx5yRTEefYUdkCyLKOQio6992mavDf0PlE61sTluZQGke/t1sIDLcvUy5uMY4S2P8S73Y0BxiO8LS4IwCSICwiNJRjtAs47jC9x+LVeP5FFlRpRf4xB0qQuSxJFz0SuN/o= 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 1639856694214230.59762255532166; Sat, 18 Dec 2021 11:44:54 -0800 (PST) Received: from localhost ([::1]:44698 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfdV-0003JB-3Y for importer@patchew.org; Sat, 18 Dec 2021 14:44:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38482) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbb-0000Rn-Bp for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:55 -0500 Received: from [2607:f8b0:4864:20::631] (port=38416 helo=mail-pl1-x631.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbZ-0003RV-PJ for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:54 -0500 Received: by mail-pl1-x631.google.com with SMTP id o14so4764565plg.5 for ; Sat, 18 Dec 2021 11:42:53 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Py2CQU23qc5Ab7F/OtpE3uQ6+1+aoSI03Ao4KqfuEtM=; b=iL7arnROj0I5ahxLD+Ikwc5Pz3lq3PNItUQTFgKWijLf88XxOemVP926B7PfBCbObT X5BjHg74TI6GURv3l3Fxh24ChKTGUrcPGpxEkO4DT7uL9xTeD4v4LiAMVqOvz1HYWi0e dy+VUzHttpMlej5OitVwIkY7uNa87aVKVcEbZLWHpni64eJxL8IlpUcFvwA3iiwrwId5 c1MI0TLx68HBg/dZZMB0e1+088qjBFVC1686mQaPF7JG9rmR0e/JhVvSzju5IRO/UGAa ywrzKmsOu8mL0K9db3xume0rGK6o0ceH5YQG7Rkh8I6S6iXj7eNy5FHIaZ93db/rXQWq Z83w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Py2CQU23qc5Ab7F/OtpE3uQ6+1+aoSI03Ao4KqfuEtM=; b=YhvfTI1gJjPrnRXwF7lfQkNVCTGOWOP8OKJc5lxEIm515DFoNf+h+htlMyPgAD9hyp syYiEnl5R2V4qHmxFD41iieY+ElM5ywO3e6mzezZ+aeyLaXBBmvo5W8uNg9fpo4MN5Ti gQ1spnAn9kbGxQMU0xJi8bxgy8luwXCZQ7lSq8Y/aVMiiTp5c51PbQq2dN3shJbZ8wqZ N8eMqDT3+6xM/HBlgxtYv1USIU/hgt6m3vCpf8mIJwrI9eh/LFlpFL0dzUUmf7VuUK6Q O5TxLzfsUO2TV7h+9mnhnxs20gmbRvFRZUbrKFubvwA2WrBKJFTWryPXome8p+lQmWzK UHbg== X-Gm-Message-State: AOAM533/f7L1tsn9VKUUZEDAtW5UC63hrk5k4pgnFtZ7SmCeMBF/QO1y pE9wm1TuyLcAwklFmkLBvwdCMLffEevcmw== X-Google-Smtp-Source: ABdhPJzQa8LR3H5OHlKPYZVDctWhKLQbEDMUb8ZMNxG2Dr1e0+F/CDWEtywZVX9y4xyecSPl3tHtsA== X-Received: by 2002:a17:90b:4f4d:: with SMTP id pj13mr10992696pjb.4.1639856572488; Sat, 18 Dec 2021 11:42:52 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 01/20] tcg/optimize: Fix folding of vector ops Date: Sat, 18 Dec 2021 11:42:31 -0800 Message-Id: <20211218194250.247633-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::631 (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::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639856694899100002 Content-Type: text/plain; charset="utf-8" Bitwise operations are easy to fold, because the operation is identical regardess of element size. But add and sub need extra element size info that is not currently propagated. Fixes: 2f9f08ba43d Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Alex Benn=C3=A9e --- tcg/optimize.c | 49 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/tcg/optimize.c b/tcg/optimize.c index 2397f2cf93..e573000951 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -308,13 +308,13 @@ static uint64_t do_constant_folding_2(TCGOpcode op, u= int64_t x, uint64_t y) CASE_OP_32_64(mul): return x * y; =20 - CASE_OP_32_64(and): + CASE_OP_32_64_VEC(and): return x & y; =20 - CASE_OP_32_64(or): + CASE_OP_32_64_VEC(or): return x | y; =20 - CASE_OP_32_64(xor): + CASE_OP_32_64_VEC(xor): return x ^ y; =20 case INDEX_op_shl_i32: @@ -347,16 +347,16 @@ static uint64_t do_constant_folding_2(TCGOpcode op, u= int64_t x, uint64_t y) case INDEX_op_rotl_i64: return rol64(x, y & 63); =20 - CASE_OP_32_64(not): + CASE_OP_32_64_VEC(not): return ~x; =20 CASE_OP_32_64(neg): return -x; =20 - CASE_OP_32_64(andc): + CASE_OP_32_64_VEC(andc): return x & ~y; =20 - CASE_OP_32_64(orc): + CASE_OP_32_64_VEC(orc): return x | ~y; =20 CASE_OP_32_64(eqv): @@ -751,6 +751,12 @@ static bool fold_const2(OptContext *ctx, TCGOp *op) return false; } =20 +static bool fold_commutative(OptContext *ctx, TCGOp *op) +{ + swap_commutative(op->args[0], &op->args[1], &op->args[2]); + return false; +} + static bool fold_const2_commutative(OptContext *ctx, TCGOp *op) { swap_commutative(op->args[0], &op->args[1], &op->args[2]); @@ -905,6 +911,16 @@ static bool fold_add(OptContext *ctx, TCGOp *op) return false; } =20 +/* We cannot as yet do_constant_folding with vectors. */ +static bool fold_add_vec(OptContext *ctx, TCGOp *op) +{ + if (fold_commutative(ctx, op) || + fold_xi_to_x(ctx, op, 0)) { + return true; + } + return false; +} + static bool fold_addsub2(OptContext *ctx, TCGOp *op, bool add) { if (arg_is_const(op->args[2]) && arg_is_const(op->args[3]) && @@ -1938,10 +1954,10 @@ static bool fold_sub_to_neg(OptContext *ctx, TCGOp = *op) return false; } =20 -static bool fold_sub(OptContext *ctx, TCGOp *op) +/* We cannot as yet do_constant_folding with vectors. */ +static bool fold_sub_vec(OptContext *ctx, TCGOp *op) { - if (fold_const2(ctx, op) || - fold_xx_to_i(ctx, op, 0) || + if (fold_xx_to_i(ctx, op, 0) || fold_xi_to_x(ctx, op, 0) || fold_sub_to_neg(ctx, op)) { return true; @@ -1949,6 +1965,11 @@ static bool fold_sub(OptContext *ctx, TCGOp *op) return false; } =20 +static bool fold_sub(OptContext *ctx, TCGOp *op) +{ + return fold_const2(ctx, op) || fold_sub_vec(ctx, op); +} + static bool fold_sub2(OptContext *ctx, TCGOp *op) { return fold_addsub2(ctx, op, false); @@ -2052,9 +2073,12 @@ void tcg_optimize(TCGContext *s) * Sorted alphabetically by opcode as much as possible. */ switch (opc) { - CASE_OP_32_64_VEC(add): + CASE_OP_32_64(add): done =3D fold_add(&ctx, op); break; + case INDEX_op_add_vec: + done =3D fold_add_vec(&ctx, op); + break; CASE_OP_32_64(add2): done =3D fold_add2(&ctx, op); break; @@ -2193,9 +2217,12 @@ void tcg_optimize(TCGContext *s) CASE_OP_32_64(sextract): done =3D fold_sextract(&ctx, op); break; - CASE_OP_32_64_VEC(sub): + CASE_OP_32_64(sub): done =3D fold_sub(&ctx, op); break; + case INDEX_op_sub_vec: + done =3D fold_sub_vec(&ctx, op); + break; CASE_OP_32_64(sub2): done =3D fold_sub2(&ctx, op); break; --=20 2.25.1 From nobody Tue Feb 10 11:33:40 2026 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=1639856891; cv=none; d=zohomail.com; s=zohoarc; b=bXR3eU6qXWT0tk21rCulmnVTdo3lqvrd9dnRiU3l9nHyFnzmAF5gP5jv01xf/FRro53vSci3kwUejA4Qlnt3BcMRQdgGYnIxTug476qFMX2r3jNoz86bWAtQozni+ZQC5rk8VQIKqgY8i67dBqmPgpqH93F1tJzT9eK6KzeGi8w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639856891; h=Content-Transfer-Encoding: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=NfWFyLgL7Qw6I1vhRZH+vjcIAxJG6A3DVHYvj84DYIM=; b=YNl/8ANCIJFMRbBvjkjepl8BnsNB8+pl3IioaiWwLZx3Q3pFrUZxByp5rS8jEyJznbxNRyfbi4/70VTQ/310TXpB3S/CZXreN3dsvWlGr8PldbRh6aRgusyQLNaIBLj52rAgnb744zB9+QZA8mr72xEuRV2+NPkbJ52MyhV8ibE= 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 1639856891408352.4415467606051; Sat, 18 Dec 2021 11:48:11 -0800 (PST) Received: from localhost ([::1]:52354 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfgf-00007F-Bf for importer@patchew.org; Sat, 18 Dec 2021 14:48:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38514) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbc-0000Rw-9a for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:56 -0500 Received: from [2607:f8b0:4864:20::102f] (port=54222 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 1myfba-0003Rb-Gt for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:55 -0500 Received: by mail-pj1-x102f.google.com with SMTP id mj19so5390042pjb.3 for ; Sat, 18 Dec 2021 11:42:54 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=NfWFyLgL7Qw6I1vhRZH+vjcIAxJG6A3DVHYvj84DYIM=; b=mO1kBcDl3pW7wSwiUADKduMHPCLIgswMoku3Ku/HVN3Othc2w4ZIX3DLzPIIZ+rCc2 +nQXUkSzFWTY6FgdrSXOMsytS6VKyfUcpIpmsm0bPjxltg3gQf6Jzh1l6lKPSnLq0Fby ONkICpsrC9BwQgnWxWXn5jz7XxfHZ+GDEb0zPdYy5I0ZYZXah/VXjNg+1cXmtqFvGm1x D3J7WXBS0dUiS/93DJC8dy6KDmXNIwi91G65MH/f4Du4hJfIYEgadmJ6THCuHjDXG4Qo AQwMZ1POXA2T+Gp7UUbReK4fj/KNbIGtXOj6d/ifHRATH38vlnBWsw11W+OXomsjbTYb APcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NfWFyLgL7Qw6I1vhRZH+vjcIAxJG6A3DVHYvj84DYIM=; b=7mhNpmDU+hmyr4URb6sSKuULmqD5gKw5c10uyAFHG9RCxxxo8MCJnuBabTHLBFwnE2 EcZvGYuhoV9U1oL42M1B6OaOtGHelaAWEfmou9oYavHVU6CM9iZomU7tu1kwxDE4Vz8d jsi+ya36Ih8b04UwSei5lWeP156Szlmtl5iWJ8jeAy/ZeOKdTeOFaNwO9MfZLHuKN5rN 5nwjS27eWf1T5kEZbZIbsrd/KCF59gYwiklkjFPhYf8ve2eFNOI/vR1cEzXH+dsx9dco RCv2gnwkO+KsgchMnq+xhbCs9BlfnNOmDu9Vxa7CWaQoRZi7QTc/gHsz6rYxmfuAVqfr dTCQ== X-Gm-Message-State: AOAM531eaAQdctOxGGWvf/PUrDUY3820P4hnBWGJLSrAnBINEeYhn7KA RYigtVWxJ2PTuT3lGmofSMpxZZNjyrdGzQ== X-Google-Smtp-Source: ABdhPJxdEDk24Cl+j3+MQjUHHz7JAejjqLxRT2qlLoVUpaBDKyGIHJQS/QqNp8TH9srZF7El/nlICw== X-Received: by 2002:a17:90a:db0f:: with SMTP id g15mr15118009pjv.76.1639856573229; Sat, 18 Dec 2021 11:42:53 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 02/20] tcg: Add opcodes for vector nand, nor, eqv Date: Sat, 18 Dec 2021 11:42:32 -0800 Message-Id: <20211218194250.247633-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::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: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639856893290100001 Content-Type: text/plain; charset="utf-8" We've had placeholders for these opcodes for a while, and should have support on ppc, s390x and avx512 hosts. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Alex Benn=C3=A9e --- 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 42f5b500ed..30c8fe2b83 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 7a93ac8023..1c669cd806 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 f41b809554..a9f1b30436 100644 --- a/tcg/arm/tcg-target.h +++ b/tcg/arm/tcg-target.h @@ -132,6 +132,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 b00a6da293..64c1013182 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 0943192cde..d4fd28c6b0 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 527ada0f63..ad29e62b16 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 e573000951..89a3396c9c 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 934aa8510b..fca23858d4 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1406,6 +1406,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 Feb 10 11:33:40 2026 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=1639857000; cv=none; d=zohomail.com; s=zohoarc; b=Ps/gGOv5akSGFvYhpI9aLdNDErgfvhfk0G/sQvs2ElFdNjXzWsP4krqUzwRkQRaKeCyM14LIoGmxmNOdvVhDJk+eqaebGeliu4un32JMMjtYGuEgS+inOg0/4iixUjeywri6ryEjUu7fUwhhnZU0oaYQ0Lc/0h+y+eIsbD2shQA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857000; h=Content-Transfer-Encoding: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=qkswC6z0sn+Yr5unD90+s06LblEPuKcn0DMTalQ57KA=; b=SbrQlephAMTmYLW3vI3SXboUm70vvLTZRum0AnM36mPqJ1t+7g4H+OCxFLz8/gP8R6fIj+aNu9qeXhuqjqpnbwe7W2ZYrQljVhEdBgCYf0UPvc0KABYH6AgnNrtW+YEf1Vw1Jr+vPnuBcoifxQ8ezEls14RSpVfk5Nl4Dp/Nmnk= 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 163985700083918.795426686642486; Sat, 18 Dec 2021 11:50:00 -0800 (PST) Received: from localhost ([::1]:58880 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfiR-0004YC-IH for importer@patchew.org; Sat, 18 Dec 2021 14:49:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38524) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbc-0000Ry-E8 for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:56 -0500 Received: from [2607:f8b0:4864:20::631] (port=39914 helo=mail-pl1-x631.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfba-0003Rf-UY for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:56 -0500 Received: by mail-pl1-x631.google.com with SMTP id z6so4765853plk.6 for ; Sat, 18 Dec 2021 11:42:54 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=qkswC6z0sn+Yr5unD90+s06LblEPuKcn0DMTalQ57KA=; b=l5vQw2+kcA76nG3RWy8udMZ6KgCFDxon6RdejAjO8f0RgXzukvQB1J79/nEvqSYOx/ EW6SmfUuY2loGcu5N544aGk1YX4AtBR+dOpKAMMck0TQ2YECTsiZq+6dnKLvPNbq1sPD U1av9qaLcgEuffQvSTtfMXpSIF6EHo125+tLnO66Kk8t4o4i3Tg+FdwDS4iAHuoWzrsj 49d3r4y59/dlFI/RmdTpQencULSnqyCji+N24iiZ1o/ty9Jcu3suvI+7e1q+aQfASXTh 2W0OMKUJsgPmH4g9rISUsayOobKNVk9x6Bsvh2PR3daRtZZ1+YNk7OgXY80yNrN2pddN c+GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qkswC6z0sn+Yr5unD90+s06LblEPuKcn0DMTalQ57KA=; b=Wa3TTZ0DZGZJwXbpff2xQijZtKMzOMz1LFbNx9ABRz6DVCEsncs1C+wjIY9C61YWkZ m4er2XLiVY8CiMTJTmTLhY0umRUopjqeYWZhI6b24XWzgnZ0DEJ5s6lq6Hzym6ETDmL0 RkBZZQdswySvdY2G7dswK8OpEPRCpnAJqDRgDchCLaBJguR2J2z/sxkX1Ewt41BbR4tr OCt0sIqz7+O2Y5r3dBmcUi2clbKpdP7Ka0VoA+LnVf+r3LJRg+wXdV7wuP+Lc/dxUvnR SZc9B2XqLQAUccmfddB1a6JU8TwxTW0/O+th6tTWKD9aYsDc2SmElmTgteaS0v/fzCBx Zf7Q== X-Gm-Message-State: AOAM533dqZU93aosWGVZmVutudHbkEg31y81BSnoE1W/IylGScpB7JTp th7QFSn06UxkcH+2Lv/JBYiByywVypU8Ww== X-Google-Smtp-Source: ABdhPJzX7jqsH+jfDodxt0HY7cFosK/ViCBw0eXsAe3ZkQ53g4202w/4bhD7fy2XLlFshK3Avde3Og== X-Received: by 2002:a17:90a:f196:: with SMTP id bv22mr1185800pjb.155.1639856573792; Sat, 18 Dec 2021 11:42:53 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 03/20] tcg/ppc: Implement vector NAND, NOR, EQV Date: Sat, 18 Dec 2021 11:42:33 -0800 Message-Id: <20211218194250.247633-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::631 (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::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857001322100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Alex Benn=C3=A9e --- 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 d4fd28c6b0..6a6bc3f480 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 3e4ca2be88..01fd327eb9 100644 --- a/tcg/ppc/tcg-target.c.inc +++ b/tcg/ppc/tcg-target.c.inc @@ -3040,6 +3040,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; @@ -3318,6 +3321,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]) { @@ -3705,6 +3717,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 Feb 10 11:33:40 2026 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=1639857169; cv=none; d=zohomail.com; s=zohoarc; b=eW1Nl1I+8/qLP3ft43N74EVnI+gDh8UYSqM2yIg4G9jMq17ZiIdMrN0hJHXVwtKZylnmzItVTDPmpDbUv31Mj4hvkCDfETgSR6FiHeWnsOy33Phkx3AXN0lz8wGfP8sNuvFMEEjs4U12wvs4wolTUVOtrWIOvO9K1j91+1u8Vhg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857169; h=Content-Transfer-Encoding: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=S0JZ9ByDKVmFQ12ne9IM9idva919FSGMdL7rWL2jTDQ=; b=aS4dF26lqjMj+1GrGetib8UZcJPeOIbcGhRQ0+j2lY6wOaqmeeHZfA//AeufpavNJIiOrrZjjdpPrMACEsaspmbBtHHmYgAbQxuRHM+aeehZulhlI6fRsGZ0KYE+xu6ZljbNBtTZP0AfZ891znUCZYDLy0j0d4m5yj2Rv+JA000= 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 1639857169196272.42578105660755; Sat, 18 Dec 2021 11:52:49 -0800 (PST) Received: from localhost ([::1]:37114 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfl8-0000VC-2e for importer@patchew.org; Sat, 18 Dec 2021 14:52:46 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38544) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbd-0000SH-4t for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:57 -0500 Received: from [2607:f8b0:4864:20::635] (port=46837 helo=mail-pl1-x635.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbb-0003Rt-NA for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:56 -0500 Received: by mail-pl1-x635.google.com with SMTP id p18so4740603pld.13 for ; Sat, 18 Dec 2021 11:42:55 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=S0JZ9ByDKVmFQ12ne9IM9idva919FSGMdL7rWL2jTDQ=; b=a3FSJF4b6TDSpmegrKdIj7mtTDwhnEXg9pFYZB8qffelpxW3vpkE6UeQYLsM5uVggN 44/833DnlhZPwS7a/LZsSDUiROZr676ZgPSVbwDBRtCPrHa9ZOS+XpoJA9kaRb2Z5lUR GKjsgfza08bvkL7FZua8ngbA+5kBQUlRHJnpV+fQgQ3fmPdGomjhTmIWbA0HUVEms5Gu 9xpymel1vttoX72ysB2ODB6pXrS4I94NDLFJsAhLdz7Ow6TdZcoT+PeL4GrZJKK5atki SzciohLmq2zsILnSGoEwspsNerigzWVaNkL1pCB7W2nwby4K7/kTZctQwSaRl2JufEnt d+Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=S0JZ9ByDKVmFQ12ne9IM9idva919FSGMdL7rWL2jTDQ=; b=vGOd54vK5yLK+dWQScMm3Tqxs5wEk3/QbptjkrgP3WDn3DhpfQYXczr3ip9TkRsope EEUH1Vhn3yIqe25CA786fjav8y+OTwlGusXbeTqlraeJIVFPOu7+Qoxjcmnk9sjVpj+l f5JMB/G7vhyD7/QoguKVFvS5F3TWIGBKJCb1qNJu+KaucOMZFM1UH7x9N6Hlx2eEZTDX yPXfNbZB5jN714+qvEdSkusQ17e4qitmlFl4eDGk10HGbr1BslvdIOybiUiEO8pRtQJ5 rJ0PC0sE+XgHarVr8mFOc3BZCNFq1Xxt4OE9BELLBuCbMuHcI7eL3wp5uj8u1rcKjJRp qABg== X-Gm-Message-State: AOAM53068yz6G+yN9nBZHfGfT865f+IaJvm0blnQ6U72ZjJIjlkY6nIz 7cKs7loVvpM8YRk1xYxyRuoDOsQ+/15TOQ== X-Google-Smtp-Source: ABdhPJy9D6fjJS+CnRV62tp8h/VMoTviwBdhmoM7oApErrnSNaYPahbL+rVjDBodc1NPWbKMRIqgeA== X-Received: by 2002:a17:902:ed85:b0:148:adf6:cbe1 with SMTP id e5-20020a170902ed8500b00148adf6cbe1mr8995341plj.170.1639856574439; Sat, 18 Dec 2021 11:42:54 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 04/20] tcg/s390x: Implement vector NAND, NOR, EQV Date: Sat, 18 Dec 2021 11:42:34 -0800 Message-Id: <20211218194250.247633-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::635 (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::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857170666100003 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Alex Benn=C3=A9e --- 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 ad29e62b16..fef227b0fe 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 57e803e339..5a90b892cb 100644 --- a/tcg/s390x/tcg-target.c.inc +++ b/tcg/s390x/tcg-target.c.inc @@ -288,7 +288,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 */ @@ -2750,6 +2752,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); @@ -2846,7 +2857,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: @@ -3191,6 +3205,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 Feb 10 11:33:40 2026 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=1639856697; cv=none; d=zohomail.com; s=zohoarc; b=MTtrTMzXMTEz1iThKmxASpehd8hNNz+F/m/tc65nmyXrQ0DK3w/I5X/1ToloHYXLachooTZYC84CmMTqtNWF97H3B7lijKm9rYbwfQQy+EKW9uOK2d3Ps+vlRtsRFpeO9QC9LxRRRE8F9uRSCo1MLVxktU3niNIS/F34AtXvHqY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639856697; h=Content-Transfer-Encoding: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=5nbr21I+MTpD5QHgKHZh+UJGGRu3TEX+Zp9LU/tNFEk=; b=P6kX8pVqD+EP/PvUjx0wvzDGPf9Sf8S2gcgfedWg5K6FeBzcE5DVY0vErlTVfIqaAWnS3N2zH14TKi8IsRp+5WFH2DffJtSrt5zLOdE6B9mLYExQHJaXV9tziH7w6SH0YMoelgTPVozj/Kgh+iBa6gpwbEFJVz39L/xp+2jsih4= 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 1639856697761216.30486340141874; Sat, 18 Dec 2021 11:44:57 -0800 (PST) Received: from localhost ([::1]:44892 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfdY-0003Qi-D6 for importer@patchew.org; Sat, 18 Dec 2021 14:44:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38562) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbd-0000U1-OE for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:57 -0500 Received: from [2607:f8b0:4864:20::633] (port=37441 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 1myfbc-0003SI-6v for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:57 -0500 Received: by mail-pl1-x633.google.com with SMTP id n8so4775159plf.4 for ; Sat, 18 Dec 2021 11:42:55 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=5nbr21I+MTpD5QHgKHZh+UJGGRu3TEX+Zp9LU/tNFEk=; b=gZ9SMoPM/J2tnNp+jOVseWDsZQBe5wrvOG7wLIWn7JZzff1u0y6/l9rakad2DoLsRN 2GYcpGmHuW2M3ByfZT2/R9LCw3xNCG6IFv42Re768Qfnufv3gel4Lpnr/yKNrUMwO0MC zrB2vg8cub8w0vKneBV7/uWk9oqLJYSZQBsKeVfeCVI6xvNrfdHkEehn/v3DPpXOa0/X 9rVcc3Jiq63/90c5rywibrnEKzquKHWfWWG+gLSmKcqj7J35Mz/inYZuDXxey0z1Pwgt 8ABMB44UT4jRrGe1BGhWvwK2SeKdaPhrZZvbo+OZHDG6ggoXWq7fxsc+LAQIPYySOMAs MlMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5nbr21I+MTpD5QHgKHZh+UJGGRu3TEX+Zp9LU/tNFEk=; b=ZVn7SOvVyIpcQOGt9C6/PdPOd9fSM1+kKhblnKYez3LgZlZDdw3Un6+/tIlcqJad/1 i4HVblrTtoAeLTrFkJrCbtdhh04omS7z2S1p+xuk4qyzsL1HiEqFFNhBlpCyyzykKO8L N3/FhqmXrFKYC43rBU55Cm46Q6oHc5fbLFNaAHTeM1SWRQrin9W4PFXGfl03gAMXH3OG k45gF+m5U5tpMpLuIPIM3ijy+PQEtE4GZbBO8za87ke4FbY9UwCNUv36wgI8sx0GwJcG mIVmX0MZFGCL4JFiw7YVcmzW/BH+fluPp130g/fXhagrzfd7sZ/iqWiPxaGj28dkNoAj NNZw== X-Gm-Message-State: AOAM5318apiQS8+ArwhoLvvdBH8VzcgRblDtOZfr5uZY+GeOEy9xbTcv FnyBAsnXIQWzU51TLyQm7+p26Sic2dyr5g== X-Google-Smtp-Source: ABdhPJytuq77fdC/BDu7MpdnyvsxdFg2EBMZKkq/8CuvBC2ZYigExC1aMCOiZhHYnSkG0ICh0b6tIQ== X-Received: by 2002:a17:90b:4f4e:: with SMTP id pj14mr18819688pjb.61.1639856575016; Sat, 18 Dec 2021 11:42:55 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 05/20] tcg/i386: Detect AVX512 Date: Sat, 18 Dec 2021 11:42:35 -0800 Message-Id: <20211218194250.247633-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::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: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639856698861100001 Content-Type: text/plain; charset="utf-8" There are some operation sizes in some subsets of AVX512 that are missing from previous iterations of AVX. Detect them. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 64c1013182..12d098ad6c 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 84b109bb84..e266f937d6 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -170,6 +170,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 @@ -3746,12 +3750,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; int 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; } @@ -3781,6 +3785,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 Feb 10 11:33:40 2026 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=1639857336; cv=none; d=zohomail.com; s=zohoarc; b=hG3b68lUYTssP2nEEja3mbP9uHM0pCUobxTLCTL5Hzr789go9Uq+WY6ld7b7/4zAN88rJUHcOBT3KLe5oxPERNpsyNgwGAx7eGaOJug7XLfJeheQvYD5LyEVXa9a1+8mSFcZrva3QIrS7tpy2BTHcFjzXOkZJcyUCjD0MgC61l8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857336; h=Content-Transfer-Encoding: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=95rHiwhaXG6c/+FSCnwWFdNxtgk++vyIoqlU46EymI8=; b=FDHNWISZQkrcDnkvNV/8CnIT9vdVyWmi6pT4aJeMiRyNUT06xPznXe4bXzOz4atFeVToyZljw23XJLMfgnNZM/AP8lemSyygLUtpaTs0HcaRYhLB/vzg2RQ7n5BvUDtWSj2nKH/dOGR6ttuuvZtPh6Ptfjs5POH8IScIvgpXtYY= 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 1639857336678597.6895495284648; Sat, 18 Dec 2021 11:55:36 -0800 (PST) Received: from localhost ([::1]:43554 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfnr-0004nF-BY for importer@patchew.org; Sat, 18 Dec 2021 14:55:35 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38578) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbe-0000VE-5D for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:58 -0500 Received: from [2607:f8b0:4864:20::632] (port=41646 helo=mail-pl1-x632.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbc-0003SQ-NA for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:57 -0500 Received: by mail-pl1-x632.google.com with SMTP id z3so21874plg.8 for ; Sat, 18 Dec 2021 11:42:56 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=95rHiwhaXG6c/+FSCnwWFdNxtgk++vyIoqlU46EymI8=; b=Aoh1iZbd90S8tGpUtdcZFXmGt38Md2F4P0ouG05loyuB48Na9tvg5LWdwYVWEnkZyk mevnz4OLH7Qi9D3D53W8T+iYhXroFi/8mNKdNOueHTc4cxqUNrLQSJj7ev6Q5MWov8QU 6uToNTmze6V3YGrGjleHVuPRxeme/CfCQ/z9umQXJoxKhKt7AF0KR709lj7ZVCD18mmz lUzD6H/CymIz+CCFEv8SHzsmjv+ei6xGuN1ilzs6sp4H07GFF2NS23LwGNxpKXTyxyZH rEN/VoBnNrvVPyJxG9vch9ODrqsFjzbYM9JE4xLpO/bQTBMylER1r6uiHTVYWerdg0+t 7Fkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=95rHiwhaXG6c/+FSCnwWFdNxtgk++vyIoqlU46EymI8=; b=IOHRD2Hbv9PLpMbvvaQQmG6FryHFXy9gN/2Ax7qyKgEEaeBNjcLQHzHFiW3xdY1mJ3 E1ZikVgFUJhnHvUo5XatO66GMcSWIhNXvUeolz7bWf4SWscfMRWzI5U90fH6oZpZUDuZ 8xZEd2ocaRWpc1oL+f9TW5L3ifTOWINvJ2wF4oz3u1XsvNrEgTiLgNCltNpIizAJFvru 22CwZy0rULzs+l9ES31//da27eo525E0alYYU65GH/bu5YE/IctXXdgqT4ZcEbYHbrWh uCeqFheAoILU8RRWYxCeSOR7oAXINTxNgnJPMqA7rXQojLcMe1rmzlu/AjWp7acELfBl en7Q== X-Gm-Message-State: AOAM532cu6c3RajbEabtCPNhyGBPJfTQoqSZDUkEEXDFYQYHtrgJmRdH 9wQOJrZ8J/ffoWhchskVManBdGh3WegYSg== X-Google-Smtp-Source: ABdhPJy/KLgLs0aQzOxSyPPMcCJaWXsL9mVo6Qgkf6aOHZUMWfO0fOgUn2Shig8mMPUqWlZHBPD47w== X-Received: by 2002:a17:902:aa89:b0:148:a2e7:fb69 with SMTP id d9-20020a170902aa8900b00148a2e7fb69mr9152558plr.170.1639856575525; Sat, 18 Dec 2021 11:42:55 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 06/20] tcg/i386: Add tcg_out_evex_opc Date: Sat, 18 Dec 2021 11:42:36 -0800 Message-Id: <20211218194250.247633-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::632 (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::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857338413100002 Content-Type: text/plain; charset="utf-8" The evex encoding is added here, for use in a subsequent patch. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 e266f937d6..44d2919047 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -261,6 +261,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) @@ -623,9 +624,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 Feb 10 11:33:40 2026 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=1639856892; cv=none; d=zohomail.com; s=zohoarc; b=W2ZOEeAM6NK8G/SmZb6Y1gnu2lYQUObZEhXoCWKBIXzCUYDuvCwbmGDkvVK55U6GN2/hMdSSTNQLzZRGttLn34Nq3WkywBRaJH4ZMZERMDglD8jfiCJQzac1cG9mOezT+zmSdPH307c4imovcC10zJmAiVvqDjG0Mc0+WtjYIP8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639856892; h=Content-Transfer-Encoding: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=5X3wtuEA7K0MfXipdGCYFMj200wnivNx0M8eb7nyK+s=; b=lKkEhOKBMIZvl86NFu/2WhlWizUZ6kDW9LOnFEpxrIT9qfVNGOlT+UwyAhwuUJscFDFSvuRBzIOhb9Fl4Nnv6XzBiZcD9BqHDAXvm2H0S9qJTgT5JvdqHTkwQJrJ0g6ZfIVQCs1xzpZ310/3HC8aUv+lbGXdRibpHjx4vp/LRk8= 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 1639856892677302.04943120352243; Sat, 18 Dec 2021 11:48:12 -0800 (PST) Received: from localhost ([::1]:52454 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfgh-0000BN-KW for importer@patchew.org; Sat, 18 Dec 2021 14:48:11 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38592) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbe-0000Wx-O3 for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:58 -0500 Received: from [2607:f8b0:4864:20::102a] (port=38894 helo=mail-pj1-x102a.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbd-0003Sf-82 for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:58 -0500 Received: by mail-pj1-x102a.google.com with SMTP id n15-20020a17090a394f00b001b0f6d6468eso8908454pjf.3 for ; Sat, 18 Dec 2021 11:42:56 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=5X3wtuEA7K0MfXipdGCYFMj200wnivNx0M8eb7nyK+s=; b=abBVFizTRMK3F8e3Clm6vjdhLeIOKLdySdYCogbhkRhQITvIwGWApCzkBEjyxuERMp xjOoUGENro+bEdsHykpiSRQfTqcABEe4jecpt3i48vyuudfS56wY9CUqVxGTCfmhAfZD KO6U6Hj1l3ncHgH4PC6RMXA5STKeqi0TP6/nfRwKe9d4fEWUff0Ec2A2rhpT0QL6cnbZ F+lyRIDO3lpDk/Hj7EwfK4tlWCRtw9h8NM+vOIf/3u7T/uIjhdlS+WLqnL0JrJuhgX/7 zY8PxwWYlKZJ+NPVpxtkwmfRCmRJuHCMyDsR2ZVUng2nCguu7RxPOz4AIDyv34FdE7Kn lxkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5X3wtuEA7K0MfXipdGCYFMj200wnivNx0M8eb7nyK+s=; b=1uAIOTQbmP8jmkYKNY9kPwKotYVDShZgkdw5MvNfoIYs/BID/Hq9V3h4KZmL+Ouirh SIJ7jE+IwTrf1Tf2i+8yL+lAZmyE8TaYNHudSVHzyz9er/36sTOxQlogQCQqIfpeTusP LviBaX93uPrEj19mZ3V+omwJA4aqs8Nr1SpYogGwTt/9Uw6+6bQwL5Gu1FXq0g8Kt9Sr JhtglFuFFdfFaYfMUcHt92PEwEpZtBiKFostqzqQCwVZzqRSSgSRIt9nYgW4lMSseX0f Nc0vS5Z3rO3NuGrMerTHkP9nfgKT73PhFiQowiqUfoZ4DEqPmAzqF5mOMFKpuFx2Bf4S oXhg== X-Gm-Message-State: AOAM533cYqtOb+Jt1vX6Nmlvhlywy318MXtfA8oVhpr4oXeCf2HtbiRU Nc5QCVzHT9JN9WA4LhW7V7s8+K/x6mqJGQ== X-Google-Smtp-Source: ABdhPJzae7w/8CFIC/6LIKMlkJy14r61G1zNfJPDhIU/OIcyOuTWIrkk73kzxjTTlgMyIZrOugFQzQ== X-Received: by 2002:a17:90a:f283:: with SMTP id fs3mr8089500pjb.103.1639856576085; Sat, 18 Dec 2021 11:42:56 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 07/20] tcg/i386: Use tcg_can_emit_vec_op in expand_vec_cmp_noinv Date: Sat, 18 Dec 2021 11:42:37 -0800 Message-Id: <20211218194250.247633-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::102a (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::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639856893302100002 Content-Type: text/plain; charset="utf-8" The condition for UMIN/UMAX availability is about to change; use the canonical version. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 44d2919047..316e550b38 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -3527,28 +3527,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 Feb 10 11:33:40 2026 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=1639857418; cv=none; d=zohomail.com; s=zohoarc; b=A8vZJnvn1q+zvskmai6LBVvfrArXZmCkRb+nwtljpdCtqJiHRAAx1a1DbqJTzXcHBEH4JsyKNvLi//dplyBYax6uj3y7IxCweCkZz0o2jga5M/BN3fkkNwP+8EYDeYW5mw6YdlYlyuFtyDk5raS7bYiG3d298y5x9iFTDcb59CY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857418; h=Content-Transfer-Encoding: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=zLpyJRnVbdMMg8McBcT7Y+Ojo6TUl8xPyTBke++OHns=; b=KPKyBU5olRPF+JvqWTG/GPdu49iUKY9Mcb0NLNW8zMYqwAMgmHEElzhADoakUtVmBAhS0VvQgrc5gmSZXHL56Dm5Ef+JnOXksCCc1xYOJTGRBwzTS2ITjdiKK/08K2Ng0CRu3kpb/D/22vjSedsxoQXHbSPzMJt826yfNzWRXFI= 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 163985741833294.32269568700372; Sat, 18 Dec 2021 11:56:58 -0800 (PST) Received: from localhost ([::1]:49450 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfpB-0000OH-Ex for importer@patchew.org; Sat, 18 Dec 2021 14:56:57 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbf-0000YC-CE for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:59 -0500 Received: from [2607:f8b0:4864:20::102f] (port=43791 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 1myfbd-0003Sy-UD for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:59 -0500 Received: by mail-pj1-x102f.google.com with SMTP id a11-20020a17090a854b00b001b11aae38d6so6112743pjw.2 for ; Sat, 18 Dec 2021 11:42:57 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=zLpyJRnVbdMMg8McBcT7Y+Ojo6TUl8xPyTBke++OHns=; b=wHvGRJMduCGwBwYgW9y7y9zycqRploVrjtgv74Tv5bLGJM5R5zN7X5+rmVbd5UVD8t x4DvC45tMpf+2HMYWy3sbLXrEoJjYfRIQ+vvIgmTtkkVjBeRCsevb3lOF8nsebC+tj1k 0uaxUenc707XPYTBzF13TgJUzSetE2pgm6NYzB8vWj2RqoSFDayG3mBKAzWCz/yJTvv1 w/47H+sa1e0GKiMRlg44d7FUNqG+vN+LcokhhSwiOaXw/sWBLu3gnDBn/akMZ1XQL3UB AEt4pGZ0ykJGR8AVIHUqDXFfiiCzfvb6iU9dZHg48NRJdxJq69uM7hzw3KuQwkbGU+ec JRuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zLpyJRnVbdMMg8McBcT7Y+Ojo6TUl8xPyTBke++OHns=; b=pgENaTS+atGq9QPWXa6D/koQJPPg3oCdiPWxaxQbTUFZIshX5Qfct15cJS0yNei8+m e5jjqnqttskCHIJjCSRzVh22lxxzN7bNaOVeKFhJ4SigzLUjEjUA1KR2q2EyLrOyTmbz 9eB8ikuyvfdL2N75GmtYn8eGUqjRPgiWbGR2VGVvVqQ9TQk05921ZmL6rCt4kCXz3Mq/ hhYE90AlW0q73zW5Koscg0JPaResMo0Aam/ZRSCInwhrfMTn+9U1GZXaZsXJzNEXw6Sy oZTNymNWhLdiHLh0pgGTH59dEwiRI5J5aOY/kCu+D7pC/U88SPq6nQEY7uap63noApLb lZuQ== X-Gm-Message-State: AOAM531UfLIyBor2oRjwQf/euk45iy4HLCg56FeA6ynWDtvw+xG1nhh4 UpfygCA8+z7QFQpC0dIOSGP8UUs4cW0QlA== X-Google-Smtp-Source: ABdhPJw5h1fA7WKd4yze68OVVJcdgevMDd7ktWwbHrCCdx/JLyfgpHOgcAbp9B7o/wVwP1ofpxStfg== X-Received: by 2002:a17:90a:1f45:: with SMTP id y5mr10890252pjy.138.1639856576754; Sat, 18 Dec 2021 11:42:56 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 08/20] tcg/i386: Implement avx512 variable shifts Date: Sat, 18 Dec 2021 11:42:38 -0800 Message-Id: <20211218194250.247633-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::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: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857419506100002 Content-Type: text/plain; charset="utf-8" AVX512VL has VPSRAVQ, and AVX512BW has VPSLLVW, VPSRAVW, VPSRLVW. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 316e550b38..7b9302fcc2 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -418,9 +418,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) @@ -2742,16 +2746,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 @@ -3242,9 +3243,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 Feb 10 11:33:40 2026 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=1639856697; cv=none; d=zohomail.com; s=zohoarc; b=h+oY2TP/Y2iig0w8aPGUx6HiU1uEoqsZV8F/PpL8As+4TIpZPmXIkpYSmSebGdggmInqmvrX2fiJ8qut6GFyuIKF6vEpqMnomFlg5u3/N4/2YTUYFZAzzVAEp0ItRa/uRU+6/KXqg/BIPrx3Q4bpK+O7fTZZk9YfQ3c6TEvfS18= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639856697; h=Content-Transfer-Encoding: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=vEWXGgUUx2/oRlyxRim0WIyazrpg3deafsssX7vLivY=; b=lsGByV4kka/ncrd8qPCIgdcZRU4gPe9vNYx1YwMEiUUo7y48xP+oytxufbwp4HXc7BRddkpxm95k7/EjDyZOJpWKua4hUwpN0caOjHP723mSZ0CE6R4ncjovaiRxjI85q6YNSNFnGG90L7EfBKvI3gltiEEHakr5ctKPayYjmgo= 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 1639856697727248.6536390098936; Sat, 18 Dec 2021 11:44:57 -0800 (PST) Received: from localhost ([::1]:45012 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfdY-0003Vb-Mo for importer@patchew.org; Sat, 18 Dec 2021 14:44:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38618) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbg-0000a9-06 for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:00 -0500 Received: from [2607:f8b0:4864:20::1034] (port=39708 helo=mail-pj1-x1034.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbe-0003TG-IO for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:42:59 -0500 Received: by mail-pj1-x1034.google.com with SMTP id z9-20020a17090a7b8900b001b13558eadaso7243751pjc.4 for ; Sat, 18 Dec 2021 11:42:58 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=vEWXGgUUx2/oRlyxRim0WIyazrpg3deafsssX7vLivY=; b=ZHe1zXK5/M2k7fZndU+huY+SYIoY38jJcGNf8uOBcN5aU93dQH61PkWUPiBBsKJLFq dBWyor1FxvEcK4RZxkL8/9jr4xe8kW6Ye4fTMZC5DPyICii0UjHzCUp08HujvaCnLzG6 lR65bOmkKZRbIE7JnZCjoxaSPa4bH405VumNKjth1tQkFX4S4pvE0W8Lhg3UTMxkvYFx WYl2GQsYd3mr1XZY7q2YKpcsjN0Wm0WTNHnbUX5EZHS01o0R53XxhYKRBsBVtCPwX9Va 8ljnPFzQrXMI9YpgmETxfqWxUa4JEgtw8Z/xYMDB5/OTI8lfYLclDfKM9UNd9IoNhuuz LLag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vEWXGgUUx2/oRlyxRim0WIyazrpg3deafsssX7vLivY=; b=K91Jc0d6YHTOE3GTd7jHkk8VWlfb0tdYXCIaJ3xIeFY88fqdzHZ5kEY5+J2O67/sxt wT0CPJ0G7Ubvo5Ts435I/9m3IUYHL5HGaXNqjMYV+3bWmh6TXxBP69xyIX364gukkNfz l1NZXTHUUMIJ81xiK50pi64bJCqtc2tIsuLClEg2nWkeQM2u667cNd4XkQjU0aukW03+ JHTfu/4XLikCpFtvVQ89aiwlVBzyywVe4PhJhqnI1JNelrFD+uUsqkQmR7ckL3P9Sppv v9qXXiG78TzRCQITNe8HazuwZQohKQD+J1XuI/0XACGAZ2kBeEsr412U3JKhXRRXwyFz i3YA== X-Gm-Message-State: AOAM530XmtfY5QtiEdzRRybiCCb4tlOKJ7M0ElmUSG3LnMaP/5XL/TmN rUJXfTds1hVkavG8RMG4ykXlq2RR7nj8yg== X-Google-Smtp-Source: ABdhPJyYkj8GpdRDgSQ2E0+cMKFnNNmmSaClWQxKkRUUP1X/inIK70wj1hHa+wofaeiUsZZmSvnooQ== X-Received: by 2002:a17:90a:c253:: with SMTP id d19mr4421587pjx.157.1639856577266; Sat, 18 Dec 2021 11:42:57 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 09/20] tcg/i386: Implement avx512 scalar shift Date: Sat, 18 Dec 2021 11:42:39 -0800 Message-Id: <20211218194250.247633-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::1034 (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::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857599906100001 Content-Type: text/plain; charset="utf-8" AVX512VL has VPSRAQ. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 7b9302fcc2..69481c188c 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -368,6 +368,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) @@ -2761,7 +2762,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. */ @@ -3237,7 +3238,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 Feb 10 11:33:40 2026 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=1639856895; cv=none; d=zohomail.com; s=zohoarc; b=I6JSKQRGzvld/K6nCo3BT52sazghQTcmclgT5eloSvdChLo80uvxj+zX13d73IbVbwS1g2VnYGF/I0n8tp4tjI5ISsl1b2qyftxPk03UAkjmAnWtY/RomRFZe5l32Ix9u7xgPQpGqXiZSrslEMJg5CcN/5xmGk4jcLl4+z3xEcM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639856895; h=Content-Transfer-Encoding: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=HfHYaZNB0V22mnQelQb5DJf7nmoyesrxg45mPLAArN4=; b=AmJSM9MXYkSkxJj5wrZv9nGHh99opDxgV8VRfJokPnA0rJ4QL6uUdlmNjuxJtON1VmE3PKxmTm/Pv4VN96yg25KpqWyOEXS9Lf87Z7CD3ig8+Yeyl7nTPIVVbDJpI7R5S4Kr01GQZ3ZE9Ac393NRztbz4lsm+/5hVoc0B5xxbmA= 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 1639856895124298.0497150671408; Sat, 18 Dec 2021 11:48:15 -0800 (PST) Received: from localhost ([::1]:52710 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfgk-0000Lf-3S for importer@patchew.org; Sat, 18 Dec 2021 14:48:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38636) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbg-0000cy-Nm for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:00 -0500 Received: from [2607:f8b0:4864:20::62b] (port=43874 helo=mail-pl1-x62b.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbf-0003TS-7q for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:00 -0500 Received: by mail-pl1-x62b.google.com with SMTP id m24so4751192pls.10 for ; Sat, 18 Dec 2021 11:42:58 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=HfHYaZNB0V22mnQelQb5DJf7nmoyesrxg45mPLAArN4=; b=krJFl/zfnZsaBG1nwGU6OXYzWI9rbCBAh8TznBwNMKjIu/fgilswRX/9uEqRXKcqy6 WY/Y3exWNS16+OX+/7qoKnqpetimS9TtQd6nTCWmeZI8bwnnBZIStBvpAe1XZpqnBLQV cuaZc9ZCwkiearS6NzVnLUFzD9sDlbpo5JWSp8/qJsngnC7G8UELfZAQEipbW8hF75L/ fQl06HcZQLwVsKXXsb2OOgntTqK7xOL813rOU3hHFlkrE3plN60yULyAszU09Lu81N+u VH2SSts/Lxm37o/hrCrGSe82qszSv33yP0LeqdelbT0GXg7CWHweQUdqUP1YZPtJBMLc BdIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HfHYaZNB0V22mnQelQb5DJf7nmoyesrxg45mPLAArN4=; b=6aPJ6HXfPrJ5kS3Uu9O9oGXl8dyrWSUwQHtpwqZemen/QEYOnBmik3vcJsXr+UkWUE ohGXC+djlHANEngo73T/xvioHyUwcFkUsBeHbNfADYveHRKPaqwE9ikFxvvqshcXGYum eotf4n3vn/fwiipv69DW2QQIuq60jgQiINHFlWiSoYQkHNqI2Ir25DbMx7mxTKEgZtTo VI5uaX4RRb46S2Zgy53AXLxTmEQtOsk6/pGEMITIKLFNhLWhUlOHsHRKnfa500oMxk+f 221m29f6+xZSSeXtU4Y3MC63hzoM697qbgnJnp1Y5Mu9qZRlN1bHdMgYlER5rJkVBXwK Pkuw== X-Gm-Message-State: AOAM530SCWDIIFmGqNRTxtz7tH/5qXCmupHdwOm5nHOhgqnLEdtLxD6t lSzf6ljsQjErhHslAGBMOcp/41PTMmUrKg== X-Google-Smtp-Source: ABdhPJwZCLlGHOUhld7u79g+yFFz/CG5nKOnx9Q0KggyHz5K9ffYgUC9MVmHKgOMqhOMF9TxUDc20A== X-Received: by 2002:a17:90b:2252:: with SMTP id hk18mr10858081pjb.218.1639856577970; Sat, 18 Dec 2021 11:42:57 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 10/20] tcg/i386: Implement avx512 immediate sari shift Date: Sat, 18 Dec 2021 11:42:40 -0800 Message-Id: <20211218194250.247633-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::62b (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::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639856895455100001 Content-Type: text/plain; charset="utf-8" AVX512 has VPSRAQ with immediate operand, in the same form as with AVX, but requires EVEX encoding and W1. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- tcg/i386/tcg-target.c.inc | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index 69481c188c..c4e6f2e5ea 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -2893,17 +2893,21 @@ 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); + insn =3D shift_imm_insn[vece]; + if (vece =3D=3D MO_64) { + insn |=3D P_VEXW | P_EVEX; + } 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; } @@ -3223,16 +3227,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 Feb 10 11:33:40 2026 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=1639857531; cv=none; d=zohomail.com; s=zohoarc; b=RP10vGt8hMXIBEIqxn0F33fwRe7YKZIJs5Lak8+msXPVmHycYMtmj7plbGpN0CzZiZHECSpVwDF46CRQpBf/XFWBRR5MCIACfYYc/fFfIcoe1DLNs93XAmWM01t4icy6rFq8iDgB545V8MEkZWnEXNQYueclMfcwkNT8Fa+7jFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857531; h=Content-Transfer-Encoding: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=ZKtl3eQLDrPDo5wLMGrCHs/bvnXVBSx+UlJ8IYMRTRo=; b=AUHggC1qdabz9NSpCq1KkR9ECPpleSe7lgg0WrUFbxY7L3qOs/3AyZj8G5aV1vB9CxuWdKa5iCX4buYJkynqI5EqnoNLrVZEDoADlbhTiIiw6u+JjRoIBmNqUcP+3otPoIaNIh0JgUr30E68A6gEF1Hy2Fhho75RrmYOwBeJ0FA= 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 1639857531678822.8326475619955; Sat, 18 Dec 2021 11:58:51 -0800 (PST) Received: from localhost ([::1]:53534 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfr0-0003CL-Ol for importer@patchew.org; Sat, 18 Dec 2021 14:58:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38658) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbh-0000gU-Lc for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:01 -0500 Received: from [2607:f8b0:4864:20::62c] (port=43875 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 1myfbg-0003Td-4S for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:01 -0500 Received: by mail-pl1-x62c.google.com with SMTP id m24so4751203pls.10 for ; Sat, 18 Dec 2021 11:42:59 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=ZKtl3eQLDrPDo5wLMGrCHs/bvnXVBSx+UlJ8IYMRTRo=; b=cOwRALHOp0ozN519tWk1/13y9qu12KSIfKSefZxHyv0mue8cTUIQuz4qf5oVes35NQ hvaoyow78ZZIaECeYgRu9JHML/pm+j3P4JoJrO++hYv+enf6BSb9l320SKHDQUFElyAU 9QOvJf5LgatKyYGPWCayur1hin7n4t3tBeyKQ4HcDs53YcZr7NOYVnM0fwQrZWjXEFZT GTCIn9Y0hBgZUhMnEAGKKZcmW3X8lBYfi2qIPWmjXU+WKhGeTOR6UHGLkfwTrlBdclGQ myVhew4SoyKooZHJAyYGkWiqEXgT/kd3NtbIY1sN7hbmnb6swplIIcoxHKvCl5fPdHfn rmsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZKtl3eQLDrPDo5wLMGrCHs/bvnXVBSx+UlJ8IYMRTRo=; b=i4K3UndK8X8e9cjKlRP4/RIKGk2pTP+gJ4/foTEEQJVrsJB5Idl+G998xQtHwDcJl2 5HObH2izB7rFQgOvXTlq6UsyP+rDW2g6sauum1YEhLeG6xCwQ5Y7zkRqM2BhqkuSeav5 hXSnRRYtSBtbdEtHlOe8EueC/3+6F1Lj6ZaW3xVZnJjwbEK578vTgKkyX621nzvRVP5R 856UL7licgorU9VsxNxcrer7GLK3Q1sK7GjPOa1H851dyLh6GY+dXhQSEGrIQMZe0bu+ et0qdhpNLOHx5HOU8g2163sZkLYoVjZZ0SCZFvkOeadDdx5q9QUsfUzcMxi4XHmIIbF8 4kpw== X-Gm-Message-State: AOAM532gWPWO+I3CsAPJww8GUeji8QO+oa9NB27IhJ9LAS+FPjMRacnC QNKgjNSZwbrqKCtTeeC7PlbslX86nP0tUw== X-Google-Smtp-Source: ABdhPJzrhlGHWHnebvD7dSqEL1jmCSXH7XefICSCU9uvpwOxLqxBRNfNzzgIpoNhvpIS9teZlsKFpg== X-Received: by 2002:a17:90b:4a83:: with SMTP id lp3mr19252747pjb.34.1639856578705; Sat, 18 Dec 2021 11:42:58 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 11/20] tcg/i386: Implement avx512 immediate rotate Date: Sat, 18 Dec 2021 11:42:41 -0800 Message-Id: <20211218194250.247633-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::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: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857533461100001 Content-Type: text/plain; charset="utf-8" AVX512VL has VPROLD and VPROLQ, layered onto the same opcode as PSHIFTD, but requires EVEX encoding and W. Signed-off-by: Richard Henderson Tested-by: Alex Benn=C3=A9e --- 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 12d098ad6c..38c09fd66c 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 c4e6f2e5ea..5ab7c4c0fa 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -361,7 +361,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) @@ -2906,6 +2906,14 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, insn |=3D P_VEXW | P_EVEX; } 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) { @@ -3195,6 +3203,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 @@ -3216,11 +3225,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 Feb 10 11:33:40 2026 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=1639857000; cv=none; d=zohomail.com; s=zohoarc; b=EYd+/8uhnAFymF2M58aNKh0ZxWUpPPMslfaqNBnJLc0IavpSlp7A87z04DdjXNGLUUSurgVW5UOrTGZfjyjzOUVA3mbpJoX+CJhSNJGjxE2aTbJSsY/pLGKCT+g9UKOh6KLAVw0QJUFzuzTgoAzY7i1NlXri9rD33cvLQ1g5Rj0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857000; h=Content-Transfer-Encoding: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=k1PmKhdxec5NltYpxawSaqCtC9T1nkGzqXVscI3MHeI=; b=A+QiHYf/WJho9Q18axSnQtLySJ9kUAPy4CVc2n4NjHoxdqhfTdrYHejbUOPI5T2p1yb/X/broXb65WQ3mV/PxxpjxRcspwg6M+H0YWxNbYnp9srJWDuPtIPooiijARHjaT6gIB+0xT8lK1yWvA2OMhlwDYBBLqX8VELnF/OVslA= 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 163985700073157.796052009835876; Sat, 18 Dec 2021 11:50:00 -0800 (PST) Received: from localhost ([::1]:58882 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfiR-0004YD-MC for importer@patchew.org; Sat, 18 Dec 2021 14:49:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38672) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbi-0000ii-5Y for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:02 -0500 Received: from [2607:f8b0:4864:20::1034] (port=36764 helo=mail-pj1-x1034.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbg-0003Tl-Is for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:01 -0500 Received: by mail-pj1-x1034.google.com with SMTP id n15-20020a17090a160f00b001a75089daa3so8927913pja.1 for ; Sat, 18 Dec 2021 11:43:00 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=k1PmKhdxec5NltYpxawSaqCtC9T1nkGzqXVscI3MHeI=; b=xXx6a4fOnYGb5Lz51tADCrt+LDCUA2Mn2XN10LRN8kPGS1MZemQ+l0n9l2zFkrG6Vj 4c2/4lwXqXWuo2XZTZS06AUnJXiRSXxSs0a8TIC/Lv3en+Isnk0xHmIHvk1J13WwQKq7 TytLwE0zr05vghf7CY7J9Ko3O9ILK6wjqp+76OEq49S09gsMb25jBo6UhJaeU/GamVqE imRqSgEGPxkvCQdk9BZlZLQDCfs/FLwGtYAbUDLWinPzGc9rxW4KHwRxANzuDYQ5yZIy q3tEmEunltjhuZsrYiigEDsj4Qx3hFDnhfGLXhApQInOy2UBnPah7w4c6J4HWftU0jmo 2P5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=k1PmKhdxec5NltYpxawSaqCtC9T1nkGzqXVscI3MHeI=; b=iEaKmVBMs1P5bYu6UE9WLVuoe8TEbxffwqeI2IF4sajh4L20Ke1FM0eWxGO96sY4vS mG1tQS+zh5wqeL1BBYuZovh0XNp2e6RDozms5eWpvS2GsgDi4UmQJBskT1l9ZF+30jiE nciont4LrOw8yK8dqvYwB2igjxdH2/yiyDx3wIKwLdBOYjH4PrfCn0eJL5kekATobAtf qNMVBd18ffU91rxEoOS5YSg6af0kHYsRyWvI+Lu81y8uAYg4LxWgipqKhQqrTM+FzLuf gs2gk8KXS/Z7u+4yxzZ3TZSc4j7C6ZPdR9BaswMrKsF+UI8Xw5QVGPP/7SKLkKqyK0Wy DuBg== X-Gm-Message-State: AOAM530WCMi9KEdsd+a4upkIx57SAx4bJYAANVZ/l8FnQPS4sx8D2KvN 1lY/xW4wiTRCXSRyk6PG57UtOZCohKHnWg== X-Google-Smtp-Source: ABdhPJy+5ZniaFobziCJf8pTLr42Ap/qlw38ybpAGzJGGjNl0EHcKjQwjxpT9fNmdi81kAF3asZmtQ== X-Received: by 2002:a17:90a:9291:: with SMTP id n17mr10850981pjo.219.1639856579337; Sat, 18 Dec 2021 11:42:59 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 12/20] tcg/i386: Implement avx512 variable rotate Date: Sat, 18 Dec 2021 11:42:42 -0800 Message-Id: <20211218194250.247633-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::1034 (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::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857001336100002 Content-Type: text/plain; charset="utf-8" AVX512VL has VPROLVQ and VPRORVQ. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 38c09fd66c..841b1febab 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 5ab7c4c0fa..7fd6edb887 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -419,6 +419,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) @@ -2746,6 +2750,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 }; @@ -2829,6 +2839,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; @@ -3181,6 +3197,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: @@ -3293,7 +3311,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 Feb 10 11:33:40 2026 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=1639857004; cv=none; d=zohomail.com; s=zohoarc; b=PUBk6ARPD5UTR1W3Y1NekcLIQre4mco1j5aAapKZQoXpK3i+xFoSIPLUy+iUO/MqeG/ZzFrq4Qbp3pBcPLW39AWUZkabSu1BacMTFTk4FKo3G5WBv9MbMmApJ0cqfAoi3VGYd6j1mkYuF3FOmpko7DQdmwvSI6CrNDPQsXwTKWk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857004; h=Content-Transfer-Encoding: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=3BxDKbNZOJjvmRbureJbaNIxOWOPVaowITK+Wk22ZVM=; b=XZp0oyCOkQ1qjNUAbjl2CO21hgzzGUB/8uC/mVCC2XZ3FM+4wxZYr5v6qbuw5e333CkWeupX0scDcYtaMCEblwDl4ep2MZGBvqiiStzoSUaTlISL/pUbmiDYiUw+f+8KH789yv+T8mghzSZJTuhfyQILAKxO8GAw88SxYOSzGu4= 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 16398570039991011.3738988296805; Sat, 18 Dec 2021 11:50:03 -0800 (PST) Received: from localhost ([::1]:59178 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfiU-0004jw-Th for importer@patchew.org; Sat, 18 Dec 2021 14:50:02 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38686) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbi-0000lT-Rc for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:02 -0500 Received: from [2607:f8b0:4864:20::42d] (port=39705 helo=mail-pf1-x42d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbh-0003Tv-6L for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:02 -0500 Received: by mail-pf1-x42d.google.com with SMTP id i12so5122753pfd.6 for ; Sat, 18 Dec 2021 11:43:00 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.42.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:42:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=3BxDKbNZOJjvmRbureJbaNIxOWOPVaowITK+Wk22ZVM=; b=S1VICXGiXSUyblBwipYqvnb295RiJ4w7Vha8xum/F29iOEKs15BeW5nLG4R6u59Rct h5DhI885GDUihPTls94xmJPDjWBeXTXRhxevRFJKyDvENflKJXhMwQEKnV1kE5UPmdDy /BQgSBVprkdfoxESdGEey18WkgE1Qzhb9tYJMocEGVymNNOi37pjUSFHCDi9RVN7ZMEv GH6I/41K7w2dIVMqqlj5UDlsM4FhSMzfdCmjHAgp3D+E4v0BZzgtQUmtQhBcGrlXb/ZK /e1rJVO4bOrpVsvcSRQ1jNg/POCJch+mxb5tsGgyEOaZkIgCroiUEMQwSenJLDcq9asC mixA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3BxDKbNZOJjvmRbureJbaNIxOWOPVaowITK+Wk22ZVM=; b=NrGseg7JC9JtZQ5hLCnHM8CsycmI2TKHdfVX2YgJJOFvZYmfMRqQDA6cWa/iGPw2iE BYrqEQ27nhGI1jeGpnIUgbVfWt9VGbizfN0Sv7KuFrUwljc7N63AjtSRSTBvr9FgdjNt QXpQ7FJcP5RzBtuUB2pcv9l0o0emTZjeemY1r9CoGzx54YOBGw3QC+/mFYMnYOg9vHND ePndgBOFAXreD62l8ZlOWNRVqEV+VpuZ3qYkqHjtmF4xB/OGYjLUPvpYbIJCrghVF1FW bVjHa5rbwz39B3BaDoRpRB2/97s/VarbfAWPnBsS4wENLyJ84aiYMFxg0RAY2RK1QuNg 0JCA== X-Gm-Message-State: AOAM531pZlbCvqADrEnKOzN8fT09p/XqWaA51uEOqZ0XDhIwR/NQ3o81 M94wXR5OTEYiQpGKV+gox+GstYUydNfkHQ== X-Google-Smtp-Source: ABdhPJwdngY7oCmEFrkTwbV8swXZ03lbfZUhltMvq7DaaVvuLFdD3Dd5Kv2gz/f61zVk/1UyHa/2WQ== X-Received: by 2002:a05:6a00:198c:b0:4a4:e75f:75cb with SMTP id d12-20020a056a00198c00b004a4e75f75cbmr8627225pfl.38.1639856579860; Sat, 18 Dec 2021 11:42:59 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 13/20] tcg/i386: Support avx512vbmi2 vector shift-double instructions Date: Sat, 18 Dec 2021 11:42:43 -0800 Message-Id: <20211218194250.247633-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::42d (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::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857005382100001 Content-Type: text/plain; charset="utf-8" We will use VPSHLD, VPSHLDV and VPSHRDV for 16-bit rotates. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 7fd6edb887..30b9afc1d3 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -423,6 +423,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) @@ -2774,6 +2783,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 @@ -2866,6 +2884,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. */ @@ -2967,7 +2995,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; } @@ -3211,6 +3244,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 @@ -3225,6 +3259,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 Feb 10 11:33:40 2026 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=1639857169; cv=none; d=zohomail.com; s=zohoarc; b=M9JvzGRiE9Fw5uX3a4Tv+11uaS57+lckw9UaDHNR/YCYepWP0GHAgVNVRJ9pObTjFTTiij9OOVu/AI11RB6jgA/+lSyhbrJRKv6J+pnqAe1so7XTebP4cXQ2d+6qoCIXqJeXfDiLkRd5Ez9ITFax1sNicRsgiZQPrO2Rc+kqsAI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857169; h=Content-Transfer-Encoding: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=nf0so4qrr+/bxDxj+Sw0o2TYL+Hd96M6E8AXnkGVi40=; b=Nt9CD6zy1GFPC58Vd6pz2aEjJDCKsjHATjxjhyXmUpTjSMgjD08YLHtHqHnshKn2sKa7cS3pJmdeGhyNRBnIwtJRfmwh/Az+PVudYozc9L3AV2OA3MPi5xPKQkkNNiRELZGYZXTT8tiYsdnq7pkEUpgfyMl+aGH3f/Qz55yj6GA= 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 1639857169095742.8761631675948; Sat, 18 Dec 2021 11:52:49 -0800 (PST) Received: from localhost ([::1]:37104 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myflA-0000Uz-0u for importer@patchew.org; Sat, 18 Dec 2021 14:52:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38718) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbk-0000pp-CI for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:04 -0500 Received: from [2607:f8b0:4864:20::52c] (port=46863 helo=mail-pg1-x52c.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbh-0003U4-RG for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:04 -0500 Received: by mail-pg1-x52c.google.com with SMTP id r138so5440123pgr.13 for ; Sat, 18 Dec 2021 11:43:01 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.43.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:43:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=nf0so4qrr+/bxDxj+Sw0o2TYL+Hd96M6E8AXnkGVi40=; b=IKEKm8ZVV8a6JXaL1nB5ed/v6aXecSEyTisgvUoUbHHLw4Ab/xVo2bvaY547HeJSVp gBIiXJ/xzI0ANGRAa2Sz4mkHvesGGCBPnP+g+1yqrMjxWj4JuKdBNrCjhdLkhP5+F2Xn 4cvQYud6fWu03W2kEUmwyZDtmhqNfckzp+8AVt5ZxL3KpqM4EzP6Cw7AX1WmFYCR/YdT wZJJrK2xTel7xNm0ZwiqRNpVpQ4UbVp2lpYS4AOu54Lf7jDHDrkIkoHrlVPoUCMVgoyZ kc6QZfJUn+9n26C2awZYlgyN5/JFQYs6CHdhqEhLtqU8Casz5HgWUdlUuajqNCDczAI3 rOAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nf0so4qrr+/bxDxj+Sw0o2TYL+Hd96M6E8AXnkGVi40=; b=690MANBOShF4LjRhYdhGCTEOjpCvxRBXT55F7c4I81zBPCEwy0/5cl7lzedjqFsHpY Rsr6/BZDK9g5LNiSROQjoFYw5bw618fYTOrESNlGfQTCSI297EnX0TNUvF7S06AUzTTR JZsTdJ4zazPjuiX6UPJIlEfPc5TKoNo7u4HUksOFnLJ7MoYJNxBHgfrA71AX1DjTvU5E uo69YiAAFJkWW4ugkun6haI2f0uV5PejUtA/UdSj/7NBSSu0HNNW4Jw0M2P3e3WjzHuX J04KRdRKFKexA8BzRfq1UZmp8Ew5yTnk1z4j+P5SmrchqBgssMCzLwR0PR2l2C9wSkOH tzrQ== X-Gm-Message-State: AOAM531gPn0in01CLsiUjH/ISMpkYeqVg0YijYG5Blxb2oBpxeg7Nz5Y d9cScy/UDlOvbrRqmAc7i7aXSkUIZrHvjA== X-Google-Smtp-Source: ABdhPJxrtwVtyHbDGbcSrfI6YWt0s8dKsP1Y0g4SpUUX/6DJZTgjzLvmLxUshGLKXTv/uajyMtiatw== X-Received: by 2002:a63:701b:: with SMTP id l27mr8112639pgc.241.1639856580516; Sat, 18 Dec 2021 11:43:00 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 14/20] tcg/i386: Expand vector word rotate as avx512vbmi2 shift-double Date: Sat, 18 Dec 2021 11:42:44 -0800 Message-Id: <20211218194250.247633-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::52c (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::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857170551100001 Content-Type: text/plain; charset="utf-8" While there are no specific 16-bit rotate instructions, there are double-word shifts, which can perform the same operation. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 30b9afc1d3..54fb8321a9 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -3350,6 +3350,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; @@ -3494,6 +3496,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); @@ -3524,8 +3532,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 Feb 10 11:33:40 2026 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=1639857593; cv=none; d=zohomail.com; s=zohoarc; b=fv2SCMaDEYdPS4UZcFnfxzq6F7d2EcPv3kfQ0WyutlHy2iG+goeKue3SaRHUBrKcv53pIYbeq9OIUgv43jMfeZ6Cuw2WYSRgtzvQ7acliQmFwiXk6CHWX/w6johWwwvt2tDVLumwKBTDULfR9hznblqkYWHCucv7EuHQZGjUux0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857593; h=Content-Transfer-Encoding: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=g3Nq0ia1EnuIjxs/Mhwgb8DdNQHpgozpO7mrb3WB+O4=; b=lX95U57bYgXSH54mFe9h0uDyySlPRZ1yBIPMbdcAQAhurX1SWAUV+Hqz8CvKm/wVu6CvVLOwsFhfboSNc3QTEfY4f37zxt7tRBzFkWq4JQAb2yYPi2ZSEgGIELJdP0NYHdnojTDap1S5hin22lWZGz8sTCHpgkxajf0S2cAvEwE= 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 1639857593009443.4172432770748; Sat, 18 Dec 2021 11:59:53 -0800 (PST) Received: from localhost ([::1]:55890 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfrz-0004qN-TU for importer@patchew.org; Sat, 18 Dec 2021 14:59:51 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38710) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbj-0000pM-Vp for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:03 -0500 Received: from [2607:f8b0:4864:20::42f] (port=34803 helo=mail-pf1-x42f.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbi-0003UD-Fk for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:03 -0500 Received: by mail-pf1-x42f.google.com with SMTP id c2so5109252pfc.1 for ; Sat, 18 Dec 2021 11:43:01 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.43.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:43:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=g3Nq0ia1EnuIjxs/Mhwgb8DdNQHpgozpO7mrb3WB+O4=; b=b6enAHiNYOIHoJTVwXndvBJaZu447EHBRpN7OrROyPrsWbm8RHcgS1WSdM2bKlWeZ0 XlfRw2ulZArLZfjWnobYD3mAb3tqDejskC+ReM/sDzLFljM+mL4MBDHb06sXutNMEuK3 GmwENJpzf3Pu+HiKXGb0hTW725mw+QFrtu96jyWl4EDlbqYcVv+WYDCVokzswCjmLCyK TSSZ7B+MfD5Wcj1FC2g1rF+JV15TxZmu6UmKNN2VDi5S4ofuawX5uGSDsf/vrpudGJqM xI4VQjBKcYkj0GpYWm5rMkhMDkCDer6FttAPOahAPNYlGcss3EbIvBHxBXjfDfVQTgy4 SPyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=g3Nq0ia1EnuIjxs/Mhwgb8DdNQHpgozpO7mrb3WB+O4=; b=BeeRTr3E0aGB4/ZnmPKSs7iACPNWnxD2p4OJXH4inIR3xDeUFn9x+YK4t7S9vVbUEf 5Z92/N0KvjE7fXE8BC4KBC/d8Wi/ZJgbHmVoof25+waBOIj79mEOIN6GFIkWyP7dxXiu 3LKMz5/xzPQJ8g6j8W75ENK5BtBZeG1fbb6/vGvBhUQu6ydCbdeBbFxIpZGDq3eZikp+ kKsnIdLhl85WNfcr/1lwhVkqpO7bFm98SWT6DxsRuEAy458z4M6TFE/x+SPP4gvfNOJh JfJp3XBvJUl+HKY365OBJupytJF2E03EjSDY6fvXP6KbnsHedOTEvoFxiCWP2JfrbSDc tOUg== X-Gm-Message-State: AOAM533HzJUO4DUHToBaftrfHlU8IVYFSfjIGqX2W4gOZFdTA85h5/fP P5TZqstr5ACyQIxsQOygNRRUMKqnv/ZdzA== X-Google-Smtp-Source: ABdhPJyoszJPIq0MWDQoDZzgIDJ+FJBVpcQSND2FDA8AKse1xDpmgHVTBFxleiShzXv8tixqDDXvKw== X-Received: by 2002:a05:6a00:811:b0:4af:d1c9:fa3f with SMTP id m17-20020a056a00081100b004afd1c9fa3fmr8976265pfk.21.1639856581079; Sat, 18 Dec 2021 11:43:01 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 15/20] tcg/i386: Remove rotls_vec from tcg_target_op_def Date: Sat, 18 Dec 2021 11:42:45 -0800 Message-Id: <20211218194250.247633-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::42f (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::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857593613100001 Content-Type: text/plain; charset="utf-8" There is no such instruction on x86, so we should not be pretending it has arguments. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 54fb8321a9..99ec31977a 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -3235,7 +3235,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 Feb 10 11:33:40 2026 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=1639857418; cv=none; d=zohomail.com; s=zohoarc; b=MPDrz8K+g7HVRKD9VXZBG6B9I7NgrhKCg9xyiCqa4ISOLV/jHt7funB7CDG67zsX+tpwRF9R8hCFHoxcYNICdADMyOiqwylOhWTyIiZTrdv6ZkPQkOpY0+z4jrHf85sr/IwW7+Lsc5sij64kmGPUr2oHlXJJS/mmu0eUf2RpZ/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857418; h=Content-Transfer-Encoding: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=XHyeOii0ZhnExA6vwEVQHkpV1I3AvOoVnhEEyh3pzMc=; b=HT/bqmrHGToJ5AauApalNu7uGCpqS3egG0BlD8mOuxmlbWOZMScjqYYrP0mzTriOxxO/n+rOuqxwQVh0wVsmaG/HEy9QD1auB3EEGUOyTg22qWHYRLjothtMzoWT5aXehBbcLJxQUYQonHLyP6lbj86KKO1PjLMZemzWISWIKtA= 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 1639857418763784.8994142771176; Sat, 18 Dec 2021 11:56:58 -0800 (PST) Received: from localhost ([::1]:49392 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfpB-0000M3-Pv for importer@patchew.org; Sat, 18 Dec 2021 14:56:57 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38808) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbo-000144-04 for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:08 -0500 Received: from [2607:f8b0:4864:20::433] (port=35551 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 1myfbj-0003UP-2A for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:07 -0500 Received: by mail-pf1-x433.google.com with SMTP id v11so1949976pfu.2 for ; Sat, 18 Dec 2021 11:43:02 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.43.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:43:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=XHyeOii0ZhnExA6vwEVQHkpV1I3AvOoVnhEEyh3pzMc=; b=gxIqnur4TdMe/uQ/DG9SIUW/C6R/AEL7wRrDN4A4w/Bam1AG+dBzj6o3J3UJQ1ag+o 65SySWE5NwjufColxCtZxCaNdFlwckg3WO9uJdYbmGqh1oMESoxPJH1i6wBSUZ3agV3y bdpfgeqE5hSdjFc8aHPbP7z2bcVkXK+lvcnzhroHMx4SjV2kAbI3Ryu36+TMj+BooCSp 45vcTl2LPum33LkBKq9oWYYf80uhec0lMJktJmEcQPUVkHptK35r5Vn3BknIzhzvjVNt pmKKKsbZ4yWMe+taGTOlmzeCT5FRcOco2t0nvc7l9/I/qf5UgLY8wjBCe/FG1O3xj9Pl jgUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XHyeOii0ZhnExA6vwEVQHkpV1I3AvOoVnhEEyh3pzMc=; b=YSOykuW+4d3xEMtDIIvObdqbqfeAuUr4qqbE3bs/fh0cwGaCY7YCFMglNHgztYX6Lt 1nRWyb2/h0PruFm7B1CxjXo/mMJvdsCWJ2H9la3iaOMJ/9G1IWSsEPpHFV/FTj0jYcli DWOjDub1EvFZ9LYBQLuyArUx74PCHSqP+WNBC8aKWpD4tTBCdXXAwohOC7pJrqXEHDuJ X9GKnBlrB0bWz9SY2GVwC/eBeNALXchARNgnSZ5S1QNtSNmUiX4pN1bSBEwtJzuaKFYO +vNFKqiWl+mfFJqfWphjJKDnTvBCpux6uqcjfvBhtB8jnUq2IHSHv0pGcGREmfE5CpBJ b+Iw== X-Gm-Message-State: AOAM533qMlrlkT94WmkVd+Y/qhAI81TFL6m85E9767RBpyPoTTmshHpz Jzwurv7cLAWcfV9jhiS3qIvp7Sk5l2R+SA== X-Google-Smtp-Source: ABdhPJy22M/dlKioHMZiqPOKzJTDmZU60XIFn/skkb23fYb31sgqDzsTq0cewthpfT1hzsm1QREsWA== X-Received: by 2002:a63:81c3:: with SMTP id t186mr8194696pgd.150.1639856581777; Sat, 18 Dec 2021 11:43:01 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 16/20] tcg/i386: Expand scalar rotate with avx512 insns Date: Sat, 18 Dec 2021 11:42:46 -0800 Message-Id: <20211218194250.247633-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::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: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857419506100001 Content-Type: text/plain; charset="utf-8" Expand 32-bit and 64-bit scalar rotate with VPRO[LR]V; expand 16-bit scalar rotate with VPSHLDV. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 99ec31977a..447aab7438 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -3508,26 +3508,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) { @@ -3554,6 +3534,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 Feb 10 11:33:40 2026 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=1639857184; cv=none; d=zohomail.com; s=zohoarc; b=DQPDqP/go/9Ek6bcFFPmGWictS4Y4l7cfTe8RayN8Fp0euoOHtHYVpzWubnS1j7RhSAoVVsF7Yz0UmuUgD1u3gS/FnVAhA2mmoKT2P9jRcToe4ikz08k26l/t9ghMg6BKaS5K6Z3eZRfpciUNstQmF9szzLpQYo5wIHnlf6W/KI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857184; h=Content-Transfer-Encoding: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=o/7najhkR5qPEA2ciVqzf3+aTS5Pj28E4SIFbzKl/N0=; b=ZhpfJOqvsY/JVNcihxBKWCM5fmayO18cCncMfZ4mzdVkUmc8vPzKLzaw69rdfoUF4NqMUQ8mA+yG2kKs5vUImszyWWfeb4fKvvc0EMa+7YYA1i2gZAvRtfLyYScXkRPGeXoeYNItZU0IVblNSfq6xB3xAkjS9bukcyPBzr74FQk= 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 1639857184228189.47884939800667; Sat, 18 Dec 2021 11:53:04 -0800 (PST) Received: from localhost ([::1]:37438 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myflN-0000hy-Fb for importer@patchew.org; Sat, 18 Dec 2021 14:53:03 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38760) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbl-0000ul-UV for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:05 -0500 Received: from [2607:f8b0:4864:20::102b] (port=53165 helo=mail-pj1-x102b.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbk-0003UW-2f for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:05 -0500 Received: by mail-pj1-x102b.google.com with SMTP id co15so5398388pjb.2 for ; Sat, 18 Dec 2021 11:43:03 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.43.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:43:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=o/7najhkR5qPEA2ciVqzf3+aTS5Pj28E4SIFbzKl/N0=; b=dBRUwLc9e3kFu4k5pj3QTJ5DUuLNEXgfvGEf++Lg3i/7fTN+Jo1bolz+VdTfdpwFsd w7uMQAK6pp5+MqL78HuOdluqhsCt6yC4SK33hkhlRMyLw0QlU73uCbQAMrVHqiQJr7/k /iF3YPSb9E+MRhL8zT4xtZBtAxSBkN+Ut4TAF5AW+oos0En+2/Va3aOL9NBKGWlVrL5C Y29gFEZSlfmLPTL7v0sPsVwGVCD5WJ28KP25g0oLsrPHTM0BiMyRVFB9X/KL+oVlD/lJ 193RNEiH7PrsUUH/Z/P0HAxSQkUXfJ/Fs072sqotpxfkAg6Kps2/fphd3hxC5yi6FQmX wk2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=o/7najhkR5qPEA2ciVqzf3+aTS5Pj28E4SIFbzKl/N0=; b=lBhgHxWclUgysj2VzbvgiQXLLeVF5rORUr2TcIBu6x2OIOxWHU0ZwzebLTkQAnQXAU s3O/mlDFq3N3G+X5uhUqoyCpFlbcyYhQa4ZV00CTkz6fm3jqafyViOLMGGf2JvMtxwe+ QHStfQ0rOCCAMFqhABOuDKnQ1gJ6ynCI/K2VbwfhT+hD4E+MfhRn0nVq+SO8h+dYfpfn JJT7W7YSjOwzBPtcS9ImbDR8smvn+CIF7HZz6pLpgQZt7uDzN8JuFguEThNuDQ/saowT fLOb22mD+IR2rnBTFyo7+ywVXJH5KULK4UZ4olGqSZdfmxhYyGMHtq4CSuH3aBgAoaxV C3hw== X-Gm-Message-State: AOAM530t2q+m/WZv9kOYBQpEklVlUMla3TJq0YeWqo8MBkoobcML8V2A AcUP5prnbdsURyn9IchAFoqwyc2b11csYQ== X-Google-Smtp-Source: ABdhPJxwQOGh902x8gtSy3lVsRALLy7KS7WPaw8oOdLd+ZI2A1/LKRtJqVCPlDXjGHCgMycd+IBLYA== X-Received: by 2002:a17:90a:f998:: with SMTP id cq24mr14422241pjb.64.1639856582310; Sat, 18 Dec 2021 11:43:02 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 17/20] tcg/i386: Implement avx512 min/max/abs Date: Sat, 18 Dec 2021 11:42:47 -0800 Message-Id: <20211218194250.247633-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::102b (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::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857184954100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 447aab7438..22eaa53cb1 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -312,6 +312,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) @@ -338,15 +339,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) @@ -2748,16 +2753,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 @@ -2793,8 +2798,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; @@ -3377,7 +3381,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 Feb 10 11:33:40 2026 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=1639857340; cv=none; d=zohomail.com; s=zohoarc; b=LYICK1NQ9x5M/pCZceZAJMQY+KPN7nI0C5dUmrKWTp4tk4/m3uBi7DHwVCb+OhO8hwzFtsh4gfY14JbI/V5P9tEoH0zvm4iqgAPR2alVYJfZrGlgXvwgLGz+A/DVisz2JBKn7VtmZ8wP/LBfb9Wk3JMjk29EdO6CUdJ1iddTp/g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857340; h=Content-Transfer-Encoding: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=OBfcKB7ihQPhoD18jSdrZ0NowRt0i851gsuI5YBV/hQ=; b=EB7azgKnWXj0tjELr3GI64+0znXnsicxKMSAqodpYpK58XPqGa7AzlIHv+pAPEDpvfcEygzcIEJUkfzKF+LD0IqbcRMLHY06AgiSRple7cFVuaHwBh7wskJD7WPHwUgogSfBqNfTZSp35ag5czQPqyigoF/4RXPjoFAbELdtChM= 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 1639857340740487.93404438112054; Sat, 18 Dec 2021 11:55:40 -0800 (PST) Received: from localhost ([::1]:43906 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfnv-00051R-Qr for importer@patchew.org; Sat, 18 Dec 2021 14:55:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38790) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbn-00010f-3m for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:07 -0500 Received: from [2607:f8b0:4864:20::52b] (port=41764 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 1myfbl-0003Uh-BQ for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:06 -0500 Received: by mail-pg1-x52b.google.com with SMTP id k4so5458107pgb.8 for ; Sat, 18 Dec 2021 11:43:04 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.43.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:43:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=OBfcKB7ihQPhoD18jSdrZ0NowRt0i851gsuI5YBV/hQ=; b=aOlhLHBi0mQ9da8M12PIcdAtyNEqUofCnClQSZGjB6xWDizs1abXFkscIfCbbyHHHL 7lxfCDVHnVciF+rFS/VaQhr8gKwca8Br79Uya/vyQyNEd6UhbccIdCzR1NLkPPU8+eE+ vtj5Axhd/aODahL+hoGHQBWJmIUDR+bfoNZMNHVhjg1twDmT8l08L7Q/cXZiX/5uMQLB ed0kt1GU7/OKsAG6RbCNnjJH76y/cxGW4kbvvwg3GGQrMSHWg07KYphcz+/JaCfECMXh RXDXCvAxgaomyuQL9yz4xQ4pTl9S4z0BgQH6sBTNaY06NW+Ofuhjr4QhLYyHpnriRElu gWbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OBfcKB7ihQPhoD18jSdrZ0NowRt0i851gsuI5YBV/hQ=; b=DRhJjdb3fgufUhMQ5ZxxdjrGGJsQ3C1L3lP2RT/ZzeF+iMma2j1F30RMPS0LiBT+SZ 1izkcIjF2Q6CpvLo8wizKfwAwFHmFSU2FHp3hf08OFTCvrXZqtNQlfglnkSPZ7X1H9Zu EVS4u9hKzB78J80LZfLWU+WsPraZ4rTACEMNJpkVy8ilg18gnm/UKMz0NpblW12iJBO5 TkO/K8hQWLzqxc6KDN1pGAqce9ZFteduRXxPm7mPRU0kJ3H/TLVpoXL2+juBV25TuiES ETLsidANbkzqc/TSbsSNvBdY5hIA85IlOsNBwNEh93iNwLFsA987Uk0gnws0qI9THFlw vDZA== X-Gm-Message-State: AOAM530It2qYVdpthQjL0HhA/JCDF+H5nqzER9JiPFfWMMasb/d+TYUG Dh4+JmlyhXY68sp4bvqwNUzDFCOLEnQlRA== X-Google-Smtp-Source: ABdhPJybEUxlMHi6VLCE7W8t6b0U1vgDfMv+KRxxBfBFQdFgXqLdr7efJByMl/GdkhklkGXg/QZzNg== X-Received: by 2002:a63:f250:: with SMTP id d16mr8163911pgk.494.1639856583044; Sat, 18 Dec 2021 11:43:03 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 18/20] tcg/i386: Implement avx512 multiply Date: Sat, 18 Dec 2021 11:42:48 -0800 Message-Id: <20211218194250.247633-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::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: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857342694100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 22eaa53cb1..f982b6e615 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -360,6 +360,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) @@ -2729,7 +2730,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 @@ -3362,12 +3363,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 Feb 10 11:33:40 2026 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=1639857336; cv=none; d=zohomail.com; s=zohoarc; b=Dveq2swxxWzYfnue2g9J2j8kgB6MYjIJJYlxPjfE90aZwGL7cCcSZ71U2gGjMpnuUo/+2l5Y6usjLBfrHHtiML9zg2/Ol2puBankIIIZZ1Fj0XPC9yuNcgEA8Dk46I7c9a5Gddgp9ztEt2wRld+vn03I4+WlMib1wVpyBpfsKik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857336; h=Content-Transfer-Encoding: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=My4hA1ygdO+oZr4YTamroxkNdNl0FZ1DhEZu3fZGnqk=; b=O891+RDWSTHgmfynfLaLxNIZxTPlAsL8A0FqALTTSF/WLfWgaHJZm0SyoRQjQrvqx4pTpg8SSz7coNIwEyxd12YCO7bFzyQ+j486gy4a99HIAVfDw4ZUmwM1i38SqWDDTHPvCDiwB8HnLeUswM0ofnY3R24lofvZq3/MNImxj+0= 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 1639857336523382.79842040760093; Sat, 18 Dec 2021 11:55:36 -0800 (PST) Received: from localhost ([::1]:43582 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfnr-0004oC-BL for importer@patchew.org; Sat, 18 Dec 2021 14:55:35 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38780) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbm-0000y2-Ho for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:06 -0500 Received: from [2607:f8b0:4864:20::636] (port=34491 helo=mail-pl1-x636.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1myfbk-0003Ur-Th for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:06 -0500 Received: by mail-pl1-x636.google.com with SMTP id x15so4371842plg.1 for ; Sat, 18 Dec 2021 11:43:04 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.43.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:43:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=My4hA1ygdO+oZr4YTamroxkNdNl0FZ1DhEZu3fZGnqk=; b=OlCUk6IP03wUu89B15+vnUdj1EFBI2grEqbhFyDCjfHBY73m3UE04MTU01D44BCz+/ 4rQzw7m09grg3m6FJRudt0CyN7waaXdy6vB7ms+mjAOGo/Uurmcxc6N4Rn9DqS10YUUM a8fvCItWYGVb2QBS/x+fvb2v/6lKTHaeQcXmSWWjrWG81l0Jb2pdkQBXbC4Kx4g0P3Jb r8yFQ2tuBsK8vdV7Cc5XK9L9lW9s3QG9QFWWi9SfsedtXV00rYAkiNZlGvrZoicSKXZw mwHLfOoWbIoYEXX0vWxQhn4sk2IKCWojgEAng3SdQrcMg3UPuFa00qLQ7J4OFe4ULyTD GVNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=My4hA1ygdO+oZr4YTamroxkNdNl0FZ1DhEZu3fZGnqk=; b=slXsW1SPZABx8WlxS+inF7IaAB3Jl/VOvJ6JWOqeGgBmQ1XbX93wTvOuXE1e/FHqxq ZtWgEESBRZ3uWZssA6tPH3/xlGQPOqV6o+rAEFKXNN0vzKyiEHFF4sVzAdILjvEE0RPh 4Sx04FaT7kBK3VbRACHESorbteKkynZkbH0xC0F988qHdsaEH5tzbyab6gQSHLXEf0XY c+eQ13JBAKAKGJ+ycYw0Yknkqm6E0HGU9gfYL6Gk4j1iVoOhmvetIlwR5NuVeVkCph1A ka7uhfM7yf2hblGnGA7E/94F1tg5SB7Z1KTZ/qOw+bpPwoXoGRb/Uqtf/zFZWrTzarHK YGzA== X-Gm-Message-State: AOAM533nEvPExJthM229JDBqEBV2g9ogA0lkNmNSvTTcT7elIs5fM5SV Hk6zgcxEtXlpYAWbuiu9ZcMvVb2cdO0Kyg== X-Google-Smtp-Source: ABdhPJzG5HpefEevMBWcYUMfXW1nW9nrKA/dfYkjIJa+jiuOmL1ZLvczZ1UjdXmjaEvMZ2eLgC06tw== X-Received: by 2002:a17:90a:4dcc:: with SMTP id r12mr18977877pjl.13.1639856583698; Sat, 18 Dec 2021 11:43:03 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 19/20] tcg/i386: Implement more logical operations for avx512 Date: Sat, 18 Dec 2021 11:42:49 -0800 Message-Id: <20211218194250.247633-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::636 (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::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857338382100001 Content-Type: text/plain; charset="utf-8" The general ternary logic operation can implement NOT, ORC, NAND, NOR, EQV. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 841b1febab..433a632d6a 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 f982b6e615..86c66f9522 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -447,6 +447,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 @@ -3004,6 +3005,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) { @@ -3224,6 +3248,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: @@ -3256,6 +3284,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: @@ -3284,6 +3313,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 Feb 10 11:33:40 2026 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=1639857737; cv=none; d=zohomail.com; s=zohoarc; b=EPyhzqibZCLHF05YBw7nPkkJwoeJAQxeLlrh2tqzNwVAaYB5atRJ4sGwk4rC+fbB5/JTjDGvQGGPlEUxCtka+k0gxs/Lbxio1PHtBsMlPZ51PXy3vUKXoEEGb+uEa20/ipn50jh75mS+e3oY6AKii7UP8WlyIivh5sOhHnieaEs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1639857737; h=Content-Transfer-Encoding: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=sZ9K7tJZ0dbIFsAXLmbrvSrGl7nkW2G5YKXIJR+v6Hk=; b=gILHEQPchJVB8HDrKccUoMLpAkdQT+YwGuq7Jb+4ll+3nS0I8O1dRWk5bV1011qj8wJB1O4F0vSm2zLcUaWrGkDstkcXy6rjRwX4pR/R4gUECCyb9AxTSXUtrILxESr8HXPuwuMYfcL0I/i4UZ7fqGAzGiz8LHV137eypcwUsp4= 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 1639857737297134.4168809970679; Sat, 18 Dec 2021 12:02:17 -0800 (PST) Received: from localhost ([::1]:58530 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myfuK-0006fN-8w for importer@patchew.org; Sat, 18 Dec 2021 15:02:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38794) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myfbn-00011P-8Q for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:07 -0500 Received: from [2607:f8b0:4864:20::42e] (port=40827 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 1myfbl-0003V0-H0 for qemu-devel@nongnu.org; Sat, 18 Dec 2021 14:43:06 -0500 Received: by mail-pf1-x42e.google.com with SMTP id z6so5122913pfe.7 for ; Sat, 18 Dec 2021 11:43:05 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id g19sm10645919pfc.145.2021.12.18.11.43.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 11:43:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=sZ9K7tJZ0dbIFsAXLmbrvSrGl7nkW2G5YKXIJR+v6Hk=; b=pM/U19VnWDw/owYGiw2IPyhljV9HK25YkuKQ048x+MUlzX9bw4wgm8B+re/ezV/iMj toLdD1jiMomj8I5+iNAVi9OopqkpmfD1Z0ICno3il8JaNCZH2WPBnUcrTtTn4VuSlc2Q /jYygIWkbo86gWzW7ljDdg+o6+GdUH8DDSauqv3beJ0hqrIDJC3I9IrKa/EYw2AuVPlH KLEcADgssCCJqHndPD+i3AcMjQyK5m+mqJzNOB5W7B+WUg2/3xGQQHC1NwauwHuxa0YJ ZW/2rLlBTBTQF9yPHL8X+CozwGdL/PCXVlkzE0e02qeE30p5AcSCNHnmhONg5lLy7nhw djJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sZ9K7tJZ0dbIFsAXLmbrvSrGl7nkW2G5YKXIJR+v6Hk=; b=eOquJAyKTpXvS6CPI8rSvzYih82Lymm8xPOxOYldNTAwxeatGbU5XB1qISZAzxBEdu 3zG0eMp+WihBlpRQXzi+/pGAJ2iEKrvnfFS5rsMcgFpaUE5NRNk986k4YIi91swx0lo1 14ix0J2ICZko/IlVXgywdyMftPXH1z+5rWgkbTMoWY1S43MIWQylbFHK8tI8X6oF425G RUi2YFp+LAvo5LunlC6yEdqXVI425T7tjiPsFzW7ritmYqJ/96qR2WTXc+ir2wIC0czD 2gpMx5HBi1HJLamti06vS+dcSAdXOA0yNSFyOA/beLHprOeBW/BRdFXoEzO39zojBfYQ h1hw== X-Gm-Message-State: AOAM532OK2XxwXJuQQ8gYSvtpP8KD5uzhwW8SpTU4YkOP9kH9EPSocCy vaa9kuhWfuLuIgT7kS+ZWuq/9CQBQajSnQ== X-Google-Smtp-Source: ABdhPJxk4sXq2VQwKY2i7J+1J3OsH3vAr5Bz+k6biWtFwtD2GnhRl9s2j5VL72oMf9ECbfKQu3pGtA== X-Received: by 2002:a05:6a00:ac6:b029:374:a33b:a74 with SMTP id c6-20020a056a000ac6b0290374a33b0a74mr8682285pfl.51.1639856584251; Sat, 18 Dec 2021 11:43:04 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 20/20] tcg/i386: Implement bitsel for avx512 Date: Sat, 18 Dec 2021 11:42:50 -0800 Message-Id: <20211218194250.247633-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211218194250.247633-1-richard.henderson@linaro.org> References: <20211218194250.247633-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::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: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1639857738724100001 Content-Type: text/plain; charset="utf-8" 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. Signed-off-by: Richard Henderson Reviewed-by: Alex Benn=C3=A9e Tested-by: Alex Benn=C3=A9e --- 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 433a632d6a..ae3612d745 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 86c66f9522..be88ccae4d 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -2805,7 +2805,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]; @@ -3028,6 +3028,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) { @@ -3296,6 +3312,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 @@ -3318,6 +3335,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