From nobody Sat Nov 15 14:49:50 2025 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=1750728035; cv=none; d=zohomail.com; s=zohoarc; b=XHWu6kaqgyi/2c9c64snxT2Hc0x9M+COoOFv2QfB6cUPxq6NpVQ7V9CkJrQU1SgeyGXBTqDEfVoe3ozv+sFRZEGrb5cpyHZEngE40VIHzLYWs46dh0hPtGgxy3h8xYxo4vhqhszSl88E5IcDs0QWwKI/R5kb0eX0mco6UDpaCFY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728035; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iPdTg3mTyrHOh2KwK9/hiLGU0SNJfuYE0WsynkUI5MU=; b=c5YTquwIrl+Yx1Pnxv7bBAmBUOZyl0/Z0RtBdWt3sGAhM+MDaCuSbb/8uvoN/YeGUW7XElvxjwCiCACsPeoa77IoAEAugFUNUhhDvAUTawcZA8UNPJgilnoauhdxE/jtQj+ebfLfH7g6bqyj+EZWQPVQyHFBorUHNPUH0DVaJ9k= 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 1750728035898397.3490413320317; Mon, 23 Jun 2025 18:20:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJe-0000ac-Iz; Mon, 23 Jun 2025 21:19:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJZ-0000Yx-GR for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:09 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJT-0005mz-Cs for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:09 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-73972a54919so3953444b3a.3 for ; Mon, 23 Jun 2025 18:19:02 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727941; x=1751332741; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iPdTg3mTyrHOh2KwK9/hiLGU0SNJfuYE0WsynkUI5MU=; b=xlXwoHnKve2EwpUGthO96x7DIRhtH5mZcnpZ4FgwAUCUklsTnF2px6FqMqXsgKdO7D IgzMg7OI9aSHS/+yCHZhHu7qGK1b7KZwXtVJE/CYlTRJy17drpkSV5+FSce2v4eDZlBK CjdqO4iUHSanqAxzH7nDyY0Px4lk0+bOjlPYArJG1oCn0bUi03C2CTUTQioPMmAwZAIV idjlY3frA6N/xi7JJWdK2GlLhpxwIg/8EResIHpXsDbCysHILqPUh98vn8Y3fR4GV+Ye nCdfW8pfjTrwwhAcFW7ZbJnocWNN0/1b7S5uu6hrbtBoHynplTkQBtYbOPBjkDrGqEWM omhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727941; x=1751332741; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iPdTg3mTyrHOh2KwK9/hiLGU0SNJfuYE0WsynkUI5MU=; b=MtRo9qRFhXe51oCsbBopMOnHGH4VMEoX1F6ZOhOuy8W0zT66txiFg+RftR034SqNcQ sMNti20jZYmM2whcxMQytyQcvHpIP9L2s4QJ3Tw3XQXkrsB+x1C0IumASxma40yQPgyt PvoQMbiVpehI6MTeAZIgBRyq5oMMp48KJjtTn9LietVqtWGHOw7RZSzivVIjQN9IRK2/ ro+UdMYX/OqSd2W6Wz3Cr41ZTe0z64rLR0eeCbCcanj/3CEQVv5zv/P72S5954ekWRTz qXqEgRZm2ywQkwt1KbQNWgLoYyfupj82PnN1jXGOvqL0VzN4kHazAuzMIaf+DM9HyhM8 tC9w== X-Gm-Message-State: AOJu0YwnMeMivDumuS93BhHZSS4DNSae/QElFsKjYpA/GtiDzyMqxbkp W5EB9WII9/lX1xqT7B7PvQh2K6rN4ofxecr04SdXdIvdCbNs+OuQtTOOI8lZA5Mi1SJfD2cP/4C z2+bKtic= X-Gm-Gg: ASbGnct/2LlsMw5EV1GJ4qV/fhA9KC0dPmyfeCPA0KxgFeg1EQC/RbdoLYq4E6yS8Rj RqUdblJPsGaeBLxgCvPjokanRnl73ai7Xn6MQt5afgyH+N9tIst0s85siivHxp6vAa0+IjGSzb5 R9PI2wJ7fSWPRhIx+KC/VCjW7MvY7tvv8IkV9V/UYZGdSdX5g3pUpTAvHoteoo4ttUT1l1iZy1a 8uR7ZH+qEmenINGUORo58q5zHJKUejGnuAsWTUZ2+woIb23UyIY1k5YTXD6HexI4YgZKyHDwDB6 mN+3OQ4c/otsHRbIqXx8O1/uhtPXx/NPkI49e266JwD6Il9dkfeYd0/YL7zXU+oE8mDZHH7jKfr N+eG93DmSz4KMqoKuAPIJ X-Google-Smtp-Source: AGHT+IHHxGSjJmp4QENNJrmSB1FsL8v/0NoXsxfJijq+9qyygZ1B6Tm5gkqso5C86fLPbKmcwFXnjA== X-Received: by 2002:a05:6a00:2789:b0:748:ff4d:b585 with SMTP id d2e1a72fcca58-7490db30e09mr20333697b3a.19.1750727941384; Mon, 23 Jun 2025 18:19:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 01/11] tcg: Add dbase argument to do_dup_store Date: Mon, 23 Jun 2025 18:18:49 -0700 Message-ID: <20250624011859.112010-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728037712116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- tcg/tcg-op-gvec.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index d32a4f146d..1aad7b0864 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -483,8 +483,8 @@ static TCGType choose_vector_type(const TCGOpcode *list= , unsigned vece, return 0; } =20 -static void do_dup_store(TCGType type, uint32_t dofs, uint32_t oprsz, - uint32_t maxsz, TCGv_vec t_vec) +static void do_dup_store(TCGType type, TCGv_ptr dbase, uint32_t dofs, + uint32_t oprsz, uint32_t maxsz, TCGv_vec t_vec) { uint32_t i =3D 0; =20 @@ -496,7 +496,7 @@ static void do_dup_store(TCGType type, uint32_t dofs, u= int32_t oprsz, * are misaligned wrt the maximum vector size, so do that first. */ if (dofs & 8) { - tcg_gen_stl_vec(t_vec, tcg_env, dofs + i, TCG_TYPE_V64); + tcg_gen_stl_vec(t_vec, dbase, dofs + i, TCG_TYPE_V64); i +=3D 8; } =20 @@ -508,17 +508,17 @@ static void do_dup_store(TCGType type, uint32_t dofs,= uint32_t oprsz, * that e.g. size =3D=3D 80 would be expanded with 2x32 + 1x16. */ for (; i + 32 <=3D oprsz; i +=3D 32) { - tcg_gen_stl_vec(t_vec, tcg_env, dofs + i, TCG_TYPE_V256); + tcg_gen_stl_vec(t_vec, dbase, dofs + i, TCG_TYPE_V256); } /* fallthru */ case TCG_TYPE_V128: for (; i + 16 <=3D oprsz; i +=3D 16) { - tcg_gen_stl_vec(t_vec, tcg_env, dofs + i, TCG_TYPE_V128); + tcg_gen_stl_vec(t_vec, dbase, dofs + i, TCG_TYPE_V128); } break; case TCG_TYPE_V64: for (; i < oprsz; i +=3D 8) { - tcg_gen_stl_vec(t_vec, tcg_env, dofs + i, TCG_TYPE_V64); + tcg_gen_stl_vec(t_vec, dbase, dofs + i, TCG_TYPE_V64); } break; default: @@ -574,7 +574,7 @@ static void do_dup(unsigned vece, uint32_t dofs, uint32= _t oprsz, } else { tcg_gen_dupi_vec(vece, t_vec, in_c); } - do_dup_store(type, dofs, oprsz, maxsz, t_vec); + do_dup_store(type, tcg_env, dofs, oprsz, maxsz, t_vec); return; } =20 @@ -1731,7 +1731,7 @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dof= s, uint32_t aofs, if (type !=3D 0) { TCGv_vec t_vec =3D tcg_temp_new_vec(type); tcg_gen_dup_mem_vec(vece, t_vec, tcg_env, aofs); - do_dup_store(type, dofs, oprsz, maxsz, t_vec); + do_dup_store(type, tcg_env, dofs, oprsz, maxsz, t_vec); } else if (vece <=3D MO_32) { TCGv_i32 in =3D tcg_temp_ebb_new_i32(); switch (vece) { --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728027; cv=none; d=zohomail.com; s=zohoarc; b=eG1R/NYwrhDFOEVNQVlCK2DkWqVMIzedIBa+Ufh7lHrcymRUVpBFf0pQMfwFvaRr14Q8s2Nb0WOgqaphRaE5og/PTkweOO/pr9zCOFhVk4+INisqZ3iBwvn4j8uFG6DJNgHwjrQ8LghNIoEGDAiw23TATrudG6ap2CppC7Y3SVQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728027; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nMQJXl2PRvKJ1Yoqc6SMhgXR/CsZqd9Hm7ziqyjccoM=; b=nLeNM0sMQqVOHRVzoOQ5UvLQG/jv6vcxO52xyqSfc1ogfd2PjEAf0OJ17zQ9BhKuEDf0DtM/xFsma7bx/eYnV9gnQ+ctUcmaFGe0YGxNh1QCUNhb1BxWZZcwWPP79Oa4a/b97RmFQFtTFD0ldtyPPMIc05z+PDxbcDYxWBGtr/k= 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 1750728027750995.2537734067052; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJf-0000ak-Gq; Mon, 23 Jun 2025 21:19:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJc-0000aR-Vx for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:13 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJT-0005n3-Hh for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:12 -0400 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-b31f0ef5f7aso2418852a12.3 for ; Mon, 23 Jun 2025 18:19:03 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727942; x=1751332742; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nMQJXl2PRvKJ1Yoqc6SMhgXR/CsZqd9Hm7ziqyjccoM=; b=PGGiJ+ucQIf9NvU0U5nRa8xONLZxCYPT+Ni7UjO/JJqQl+i5YdzFEucyNfsXNu5xk/ Y7wE6tsb4W3YcEgsMVe/89QWLS5gdVOj0RD3J2m8LOgcQB5SmU7C1qqemZjYt4C4uMmW nW9TEYZ0PGl/zi/vngdcsg813uxBnazFZsAhJ5FH2uu7mOGa/CqYcWzIRiLiLqtkfdOa uQB1bfMqbXq9CrshIyJliMIzZebHKlhOi2nUC6b87rCpQ6Vf295RfV9zjRJ2iZSVrKlB HYHz3DOgI3of0NamLZSTi9zP6SIu6PYrhPGpZXs5i9LgK0+nHgKVgc1dg76j7zoGoc5w YXXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727942; x=1751332742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nMQJXl2PRvKJ1Yoqc6SMhgXR/CsZqd9Hm7ziqyjccoM=; b=kYc2ykPvihGkKNXSg8VhX4VQFteeCgW3vGYQpeXTmkYD7wDGh/czqApfAh5vuW+Qr9 tgax5TmMPHfXODrJb76YpeyBc1PoJjFyywEqqZZ+jnHWtk4Raw0KsJLrwCdXc85+oLKW yZH+8jIWbobJqyXwQ8vUlhTpX+AoK03MNMcTGN58onprPSYhsNd7Oy3Q0/dRSshH8s6R zV7N1unshNe07nwVYYgn+KAE4jLj+yprCP6d9QBqRnc0UVmHnQmH8f5/1EdttHSMqU1J wUC7BktNPKXgaIwthoopSjKhaWNLFTxDqfcWy7NaH4rRDg/sqCIZ9pwBTgfQpfQbnPCt /qXw== X-Gm-Message-State: AOJu0Yzt8pLBX9zJMWbZJ9faC+cguukz7rA5B3Z7mkZGbjmHKgGve/Ix dk+h5OGyjWuNSXz2fgEJ8hGiPIs9yAmi7YtuEnBqX4kVvTLZ3IlXnM+wWfl8AH9dHzoAZQqgbYw G3dcJ6/c= X-Gm-Gg: ASbGncv8Nqd4AU5AeIchkuF09iQKy90C1yftV7VmStpFE/ype1mThKUV4ybBRs6mdzm iNKQd5Ns5zuqZshZPsEqEsTGBBfP2fORqO9dLrYXIRVU4jG8Z5Y4fLMEpLBYmciAT0u8ux7gvjX 0JwHFkpMpM9RysNzqCeXkoC3PwNhOgYDtgwgtrvgmsdZ198WuRo66kFtAhKXUytHstNgD0IwoHs 0HXDVFYya700EloqQxxZW17mHLfVpteuLZvEhWSl5XbfkM3fs13UvJTTrf2/jXZEuPKflvzqp0H 8hIulsvbhRbEcjd4nQeTNW0OU55Wx4Tddr5xzHk1yn/MnRyyDwWNFYpVpep3QNQGxH/MBoIMiaP LHvILhXGob+pyixuTrf+C X-Google-Smtp-Source: AGHT+IEfFqf58Wb3i3IBQtiZuvdLeIigqsRHbbLHBjWUEjBAjqKeokfXll35pcekbX718lVkpagq5A== X-Received: by 2002:a05:6a20:c90d:b0:220:6a40:eab with SMTP id adf61e73a8af0-2206a40125fmr3113334637.32.1750727942034; Mon, 23 Jun 2025 18:19:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 02/11] tcg: Add dbase argument to do_dup Date: Mon, 23 Jun 2025 18:18:50 -0700 Message-ID: <20250624011859.112010-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728029798116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- tcg/tcg-op-gvec.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 1aad7b0864..b100dd66ab 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -530,13 +530,14 @@ static void do_dup_store(TCGType type, TCGv_ptr dbase= , uint32_t dofs, } } =20 -/* Set OPRSZ bytes at DOFS to replications of IN_32, IN_64 or IN_C. +/* + * Set OPRSZ bytes at DBASE + DOFS to replications of IN_32, IN_64 or IN_C. * Only one of IN_32 or IN_64 may be set; * IN_C is used if IN_32 and IN_64 are unset. */ -static void do_dup(unsigned vece, uint32_t dofs, uint32_t oprsz, - uint32_t maxsz, TCGv_i32 in_32, TCGv_i64 in_64, - uint64_t in_c) +static void do_dup(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + uint32_t oprsz, uint32_t maxsz, + TCGv_i32 in_32, TCGv_i64 in_64, uint64_t in_c) { TCGType type; TCGv_i64 t_64; @@ -574,7 +575,7 @@ static void do_dup(unsigned vece, uint32_t dofs, uint32= _t oprsz, } else { tcg_gen_dupi_vec(vece, t_vec, in_c); } - do_dup_store(type, tcg_env, dofs, oprsz, maxsz, t_vec); + do_dup_store(type, dbase, dofs, oprsz, maxsz, t_vec); return; } =20 @@ -618,14 +619,14 @@ static void do_dup(unsigned vece, uint32_t dofs, uint= 32_t oprsz, /* Implement inline if we picked an implementation size above. */ if (t_32) { for (i =3D 0; i < oprsz; i +=3D 4) { - tcg_gen_st_i32(t_32, tcg_env, dofs + i); + tcg_gen_st_i32(t_32, dbase, dofs + i); } tcg_temp_free_i32(t_32); goto done; } if (t_64) { for (i =3D 0; i < oprsz; i +=3D 8) { - tcg_gen_st_i64(t_64, tcg_env, dofs + i); + tcg_gen_st_i64(t_64, dbase, dofs + i); } tcg_temp_free_i64(t_64); goto done; @@ -634,7 +635,7 @@ static void do_dup(unsigned vece, uint32_t dofs, uint32= _t oprsz, =20 /* Otherwise implement out of line. */ t_ptr =3D tcg_temp_ebb_new_ptr(); - tcg_gen_addi_ptr(t_ptr, tcg_env, dofs); + tcg_gen_addi_ptr(t_ptr, dbase, dofs); =20 /* * This may be expand_clr for the tail of an operation, e.g. @@ -710,7 +711,7 @@ static void do_dup(unsigned vece, uint32_t dofs, uint32= _t oprsz, /* Likewise, but with zero. */ static void expand_clr(uint32_t dofs, uint32_t maxsz) { - do_dup(MO_8, dofs, maxsz, maxsz, NULL, NULL, 0); + do_dup(MO_8, tcg_env, dofs, maxsz, maxsz, NULL, NULL, 0); } =20 /* Expand OPSZ bytes worth of two-operand operations using i32 elements. = */ @@ -1711,7 +1712,7 @@ void tcg_gen_gvec_dup_i32(unsigned vece, uint32_t dof= s, uint32_t oprsz, { check_size_align(oprsz, maxsz, dofs); tcg_debug_assert(vece <=3D MO_32); - do_dup(vece, dofs, oprsz, maxsz, in, NULL, 0); + do_dup(vece, tcg_env, dofs, oprsz, maxsz, in, NULL, 0); } =20 void tcg_gen_gvec_dup_i64(unsigned vece, uint32_t dofs, uint32_t oprsz, @@ -1719,7 +1720,7 @@ void tcg_gen_gvec_dup_i64(unsigned vece, uint32_t dof= s, uint32_t oprsz, { check_size_align(oprsz, maxsz, dofs); tcg_debug_assert(vece <=3D MO_64); - do_dup(vece, dofs, oprsz, maxsz, NULL, in, 0); + do_dup(vece, tcg_env, dofs, oprsz, maxsz, NULL, in, 0); } =20 void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dofs, uint32_t aofs, @@ -1745,12 +1746,12 @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t d= ofs, uint32_t aofs, tcg_gen_ld_i32(in, tcg_env, aofs); break; } - do_dup(vece, dofs, oprsz, maxsz, in, NULL, 0); + do_dup(vece, tcg_env, dofs, oprsz, maxsz, in, NULL, 0); tcg_temp_free_i32(in); } else { TCGv_i64 in =3D tcg_temp_ebb_new_i64(); tcg_gen_ld_i64(in, tcg_env, aofs); - do_dup(vece, dofs, oprsz, maxsz, NULL, in, 0); + do_dup(vece, tcg_env, dofs, oprsz, maxsz, NULL, in, 0); tcg_temp_free_i64(in); } } else if (vece =3D=3D 4) { @@ -1833,7 +1834,7 @@ void tcg_gen_gvec_dup_imm(unsigned vece, uint32_t dof= s, uint32_t oprsz, uint32_t maxsz, uint64_t x) { check_size_align(oprsz, maxsz, dofs); - do_dup(vece, dofs, oprsz, maxsz, NULL, NULL, x); + do_dup(vece, tcg_env, dofs, oprsz, maxsz, NULL, NULL, x); } =20 void tcg_gen_gvec_not(unsigned vece, uint32_t dofs, uint32_t aofs, @@ -3772,7 +3773,7 @@ void tcg_gen_gvec_cmp(TCGCond cond, unsigned vece, ui= nt32_t dofs, check_overlap_3(dofs, aofs, bofs, maxsz); =20 if (cond =3D=3D TCG_COND_NEVER || cond =3D=3D TCG_COND_ALWAYS) { - do_dup(MO_8, dofs, oprsz, maxsz, + do_dup(MO_8, tcg_env, dofs, oprsz, maxsz, NULL, NULL, -(cond =3D=3D TCG_COND_ALWAYS)); return; } @@ -3892,7 +3893,7 @@ void tcg_gen_gvec_cmps(TCGCond cond, unsigned vece, u= int32_t dofs, check_overlap_2(dofs, aofs, maxsz); =20 if (cond =3D=3D TCG_COND_NEVER || cond =3D=3D TCG_COND_ALWAYS) { - do_dup(MO_8, dofs, oprsz, maxsz, + do_dup(MO_8, tcg_env, dofs, oprsz, maxsz, NULL, NULL, -(cond =3D=3D TCG_COND_ALWAYS)); return; } --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728027; cv=none; d=zohomail.com; s=zohoarc; b=RLE2g/ktONtLOqB2VpUe2rOlClufVyx5JxqtKRxXOkqmJBt6wPhTJvWZCbOAdTWUIoBsnUI8/A9ELbgH1iNF/NaZjoxx07PjqK+9ixB7Ot5fImQup0PgpZ/YPHPgO2bDHuowqNLPAyzom98z3X3SMoLJdhhftjPo7BiPzBwwWNY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728027; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pmYH1WddXU4bWR5PssEGHGwYJIjgJGXWoY5n/9icTwA=; b=QLT5T4dxwwSKkQiNFGD0fFigzJo2BPaw2fE+3hHpu+Xo++bAgMULY398ySN8B0UHy9ZKP+e4VIqBa133oQ5VnGmjOf9S8Ngyb8sKpNB2GFBf9YceddfjbMzv2OwHoFeBpKzeCt2S381YTW1LGP3lOJV6Wkmlz2s2xCVETJwPeBo= 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 1750728027940767.1711672491251; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJY-0000YF-KI; Mon, 23 Jun 2025 21:19:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJW-0000XW-Is for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:06 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJU-0005n9-4G for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:06 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-b31d8dd18cbso5219246a12.3 for ; Mon, 23 Jun 2025 18:19:03 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727942; x=1751332742; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pmYH1WddXU4bWR5PssEGHGwYJIjgJGXWoY5n/9icTwA=; b=jABvRRjUPvoRcVBIXJCZsjlBpEh3cip6XNjDZlXFO9wCPvLWcBkubny6fEMUwibjKx FuvtSuom75DyE4t7rI5Z+6jJqndXC5cn8GbILma89+HviKKPKoOBDLj8jQjbp3nKPYMn t2tM9Cro/09iEbxsg69YmoGRgHEfOhx7YArPWL4W5Nf15bR4CqIorWXURfsOurD/sMb5 c2PrKDjojbLi+2x6o3/y2SoDjHtM44QgqwcVM3bSBzgyUEbjTJ2d9zhaiQdIbQ1x1NCM H8oVZnT3De/IcOSIlowlVCavV0pV97iliL21Ad5u3nAlLoPYA1oGabb86YnoDR7kcyLs vn+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727942; x=1751332742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pmYH1WddXU4bWR5PssEGHGwYJIjgJGXWoY5n/9icTwA=; b=bU4cUAA+xmSlAM7fwNjUVNgm1LxVOWjy74jnL3NhR0r/K0yoj63dBit/g4rct9Jubg so9dxum8t3Q9UH3gV4iQOYbDlIbudmgNjcY7Hl8M9yycwwhfOi4ABkqTdRkraexKcbWI WmVinefV0vyYcAAqbdgP+PWzAEgFdjmKULe8noSxbsI3bPKM/oDp1QQ5KNJjF45OoKZR RhJ0gZYAcMryWroBwnPsdFOaX3S7HyOUdkjEz4sIkc+/OP0rEHoAf2ZARE9QsTTm+dXw 4/149s8AG6lvpPmUAhtwA3Wr5bLH0DDWWo/NLy3oeU9QHWSIdRuJrh0D3Fnlcsajn+8D pPlw== X-Gm-Message-State: AOJu0YzJBOjE4Ecpzlm2x4DvFT4EAQSk4ZN6DU2dEKPefQ8a6E7m3pj/ JVrmmWjnkCdRA76whkOworGTiBF8J3IDEw80kXNGdX6Lamu9uojiMbBHUNjti94AkGwRGxD2Jr6 wcUlxHPU= X-Gm-Gg: ASbGncvf0NwIbyFeovlVq44gmClrnmxIgRJI5q39q9767eMgMNaHMTODbqchYtAy255 R7D1dwqqs+IsEWkNFa658KKkEsng1RupSp3X4Bd5vO24yjTZOOPamazSOUiQZxoVueiETP9yGmm XO8TlqP7RHsY773bnBBy55j/nGQufJ0Ax1N/vrbkI1AXRCPFfIOo11kyofMHh0+6vRkGm/eayV6 HUnET/uB9wi6BSnCfK+85m4on0mIxpFM7UI9SpP6QKb1l9DZWLw0/BrAVfOSqgyvAMOugvO67Cd AqP0MEMhRxcNCI8qwkXQY+p8kdD1n8GTF5oxSEXH8zc8peA03oL2Yy8dBtJGrj6aia6tJw+yMu8 2R3/riXIbQAiN5QM0m2/mgREg3d8ARQk= X-Google-Smtp-Source: AGHT+IE/aInwLQGz5EHcQU364Yq/Cl7D+fqGANqaxk5sKmjJ3h44iQlIfPOWhgJzUPmSbqMsFv3A9w== X-Received: by 2002:a05:6a21:6d90:b0:21a:ede2:2ea3 with SMTP id adf61e73a8af0-22026da21ddmr21945563637.17.1750727942628; Mon, 23 Jun 2025 18:19:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 03/11] tcg: Add dbase argument to expand_clr Date: Mon, 23 Jun 2025 18:18:51 -0700 Message-ID: <20250624011859.112010-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728029463116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- tcg/tcg-op-gvec.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index b100dd66ab..f5edadb992 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -380,7 +380,7 @@ static inline bool check_size_impl(uint32_t oprsz, uint= 32_t lnsz) return q <=3D MAX_UNROLL; } =20 -static void expand_clr(uint32_t dofs, uint32_t maxsz); +static void expand_clr(TCGv_ptr dbase, uint32_t dofs, uint32_t maxsz); =20 /* Duplicate C as per VECE. */ uint64_t (dup_const)(unsigned vece, uint64_t c) @@ -526,7 +526,7 @@ static void do_dup_store(TCGType type, TCGv_ptr dbase, = uint32_t dofs, } =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(dbase, dofs + oprsz, maxsz - oprsz); } } =20 @@ -704,14 +704,14 @@ static void do_dup(unsigned vece, TCGv_ptr dbase, uin= t32_t dofs, =20 done: if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(dbase, dofs + oprsz, maxsz - oprsz); } } =20 /* Likewise, but with zero. */ -static void expand_clr(uint32_t dofs, uint32_t maxsz) +static void expand_clr(TCGv_ptr dbase, uint32_t dofs, uint32_t maxsz) { - do_dup(MO_8, tcg_env, dofs, maxsz, maxsz, NULL, NULL, 0); + do_dup(MO_8, dbase, dofs, maxsz, maxsz, NULL, NULL, 0); } =20 /* Expand OPSZ bytes worth of two-operand operations using i32 elements. = */ @@ -1256,7 +1256,7 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, tcg_swap_vecop_list(hold_list); =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 @@ -1325,7 +1325,7 @@ void tcg_gen_gvec_2i(uint32_t dofs, uint32_t aofs, ui= nt32_t oprsz, tcg_swap_vecop_list(hold_list); =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 @@ -1402,7 +1402,7 @@ void tcg_gen_gvec_2s(uint32_t dofs, uint32_t aofs, ui= nt32_t oprsz, } =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 @@ -1468,7 +1468,7 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uin= t32_t bofs, tcg_swap_vecop_list(hold_list); =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 @@ -1537,7 +1537,7 @@ void tcg_gen_gvec_3i(uint32_t dofs, uint32_t aofs, ui= nt32_t bofs, tcg_swap_vecop_list(hold_list); =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 @@ -1606,7 +1606,7 @@ void tcg_gen_gvec_4(uint32_t dofs, uint32_t aofs, uin= t32_t bofs, uint32_t cofs, tcg_swap_vecop_list(hold_list); =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 @@ -1675,7 +1675,7 @@ void tcg_gen_gvec_4i(uint32_t dofs, uint32_t aofs, ui= nt32_t bofs, uint32_t cofs, tcg_swap_vecop_list(hold_list); =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 @@ -1702,7 +1702,7 @@ void tcg_gen_gvec_mov(unsigned vece, uint32_t dofs, u= int32_t aofs, } else { check_size_align(oprsz, maxsz, dofs); if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } } @@ -1780,7 +1780,7 @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dof= s, uint32_t aofs, tcg_temp_free_i64(in1); } if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } else if (vece =3D=3D 5) { /* 256-bit duplicate. */ @@ -1823,7 +1823,7 @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dof= s, uint32_t aofs, } } if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } else { g_assert_not_reached(); @@ -3256,7 +3256,7 @@ do_gvec_shifts(unsigned vece, uint32_t dofs, uint32_t= aofs, TCGv_i32 shift, =20 clear_tail: if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 @@ -3835,7 +3835,7 @@ void tcg_gen_gvec_cmp(TCGCond cond, unsigned vece, ui= nt32_t dofs, tcg_swap_vecop_list(hold_list); =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 @@ -3976,7 +3976,7 @@ void tcg_gen_gvec_cmps(TCGCond cond, unsigned vece, u= int32_t dofs, } =20 if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } =20 --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728066; cv=none; d=zohomail.com; s=zohoarc; b=c0RePcRBCWZv6VpvZ+DFXn6kvxoYpI51si3uuibHMQAsptrR2wNFaor2+UVDERHR5ecpnZ+ONneI27jENvFue6Vk+XHq2yfwCeCs08mTn/PdlLpBY60V4xr2pgwMxRt2+ncwVA6j3XzQSzRYAp/rlGwD6Qdi1CzQlfZHryfiJnU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728066; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yuydYiohJjAYeAfLOI6h5c9kv5DQU5vOeyLn5vjXhmM=; b=atb0XG4X1mreBuUgJHZi4V9ouIWJlI4jczk5w+vdAys0lJ7ZBX/GPzitSKZ5uKVEmfmTKJ/57ef5tK2WBmz2UV00xGsOKDOVRR9VxXWNImzCb4Pi6XGCydPUyxfTD1uxD5raJHFUWlU48jeXJHWzXEM2YZg+zuQbiK1xo/BIMU8= 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 1750728066220524.8547742261791; Mon, 23 Jun 2025 18:21:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJn-0000ch-4u; Mon, 23 Jun 2025 21:19:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJk-0000c2-IR for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:20 -0400 Received: from mail-qv1-xf35.google.com ([2607:f8b0:4864:20::f35]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJf-0005qA-J5 for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:20 -0400 Received: by mail-qv1-xf35.google.com with SMTP id 6a1803df08f44-6fb0a05b56cso101321706d6.3 for ; Mon, 23 Jun 2025 18:19:15 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727954; x=1751332754; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yuydYiohJjAYeAfLOI6h5c9kv5DQU5vOeyLn5vjXhmM=; b=dscb4V1d5P4Bq9xhM2S3jvDQC4sq+8PxdUX42O72lC04pTs5oT/o059wxzmGqsC60P uKnNfB/6j/14Z45jjJZps6AR1/wW24n98CZ8rIhMShAlsXhYfzL8nePRO1BWY2u59EI2 X8nR1gW/Ke2QCokshKsLY1R0/RinvFcRULgrFk2Nc62lMrgUVCmBNhheqS3I4kmRT4Zp VSS04jGZRUqopphFWliEfoe0uOmm04A061tk0RAKWraSDhKxbL1q2OkU3+qQR5BlWVXT 1hn+LOWC8LXprCMev8KrNcz1hUCmk4nFF+iWI/NwSQpOaHc2/gvzNAPZyqX8nMUzw8ot OcNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727954; x=1751332754; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yuydYiohJjAYeAfLOI6h5c9kv5DQU5vOeyLn5vjXhmM=; b=uisq5k2NLWcs1WrMjn65oZQtnGhLZmQi+y2XI/oJbP0S6FDyckuwp+foacP9z3jUsQ 79abvSrwU2HNYxA0if3R7pHPPJ1HAwsW528AJ4d8PNKE20Erv0gPzG6/rQPaWnstpk+7 k10uX0r3KsM+552Ey12bElatnOSySKPGr0yC2kV7NDLrRwqBjx7hwPy/2v2fRKmDF4Nn KHU2Kfp76JkdYvzQtxr/vgyi/KcMfy391TPLssS2qJjpX5nLlig+jVWKnRG+wDzaT0z6 NJrHvuWD8Y59zLKDQ/XW2Gumwkm2flXTYVSEpcA9OgoCq0V8qZG7ikWpPw8oQp06Vunl dfRw== X-Gm-Message-State: AOJu0YyHnakDKGBamIQ8XoffQ2CQ/RTbz2fOBbngCW6StjyhE/TTwwxG PSmXGTMRsh4TUs8ZOCDTtH+3vSWV9SGzoIEvCvkowYsYovcJa5v2oKE40ZIXWLvDbRXZTTacIld RrzaTb0M= X-Gm-Gg: ASbGncvsEY+tSSj+9ymgPF62eAPqsWSej7tfPZfCzQX90nm8WReWarJ85WAMIJrJ9B8 oojJ2az5uCiOx/ADBvsdd6fHNuMq3kV6k0wOolTZQ7zEf+K5CND+soGMMX/b2vsTA1UDxMx4hap +RSMgmGwd6wt7a2azrwBc/v7x2SDNSk7Yt+vjzNhcRdRIc8L28NvpQslEmPwm//sxSnH76eDVry ntdbQC2CfC1ITogEn1y2aWCdmwy4H92l//vvL8qxSEYd5YNw7eQCPCL66sX8OtS35IdZ6xwcxwn BfUEjg/dtyuCCY9oPxY7/d6QFu+xyZM9O5jo17YMz085Bfg9xqMHIXO60jqDtn2eRrbWPmMkP53 wL3SRTEeMVaVIdLyncKXQ X-Google-Smtp-Source: AGHT+IEWakOlwHPqgwj6Cxzo5fJvbaewbRy3QG3FJEsU5+ghanBRQHGaghDL8spyduW4Xw/apY9xng== X-Received: by 2002:a05:6a00:4f8c:b0:732:2484:e0ce with SMTP id d2e1a72fcca58-7490da9cd1amr32981876b3a.17.1750727943274; Mon, 23 Jun 2025 18:19:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 04/11] tcg: Add base arguments to check_overlap_[234] Date: Mon, 23 Jun 2025 18:18:52 -0700 Message-ID: <20250624011859.112010-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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::f35; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf35.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728067710116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- tcg/tcg-op-gvec.c | 61 ++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index f5edadb992..0e6b42476e 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -57,30 +57,39 @@ static void check_size_align(uint32_t oprsz, uint32_t m= axsz, uint32_t ofs) tcg_debug_assert((ofs & max_align) =3D=3D 0); } =20 -/* Verify vector overlap rules for two operands. */ -static void check_overlap_2(uint32_t d, uint32_t a, uint32_t s) +/* + * Verify vector overlap rules for two operands. + * When dbase and abase are not the same pointer, we cannot check for + * overlap at compile-time, but the runtime restrictions remain. + */ +static void check_overlap_2(TCGv_ptr dbase, uint32_t d, + TCGv_ptr abase, uint32_t a, uint32_t s) { - tcg_debug_assert(d =3D=3D a || d + s <=3D a || a + s <=3D d); + tcg_debug_assert(dbase !=3D abase || d =3D=3D a || d + s <=3D a || a += s <=3D d); } =20 /* Verify vector overlap rules for three operands. */ -static void check_overlap_3(uint32_t d, uint32_t a, uint32_t b, uint32_t s) +static void check_overlap_3(TCGv_ptr dbase, uint32_t d, + TCGv_ptr abase, uint32_t a, + TCGv_ptr bbase, uint32_t b, uint32_t s) { - check_overlap_2(d, a, s); - check_overlap_2(d, b, s); - check_overlap_2(a, b, s); + check_overlap_2(dbase, d, abase, a, s); + check_overlap_2(dbase, d, bbase, b, s); + check_overlap_2(abase, a, bbase, b, s); } =20 /* Verify vector overlap rules for four operands. */ -static void check_overlap_4(uint32_t d, uint32_t a, uint32_t b, - uint32_t c, uint32_t s) +static void check_overlap_4(TCGv_ptr dbase, uint32_t d, + TCGv_ptr abase, uint32_t a, + TCGv_ptr bbase, uint32_t b, + TCGv_ptr cbase, uint32_t c, uint32_t s) { - check_overlap_2(d, a, s); - check_overlap_2(d, b, s); - check_overlap_2(d, c, s); - check_overlap_2(a, b, s); - check_overlap_2(a, c, s); - check_overlap_2(b, c, s); + check_overlap_2(dbase, d, abase, a, s); + check_overlap_2(dbase, d, bbase, b, s); + check_overlap_2(dbase, d, cbase, c, s); + check_overlap_2(abase, a, bbase, b, s); + check_overlap_2(abase, a, cbase, c, s); + check_overlap_2(bbase, b, cbase, c, s); } =20 /* Create a descriptor from components. */ @@ -1206,7 +1215,7 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); =20 type =3D 0; if (g->fniv) { @@ -1270,7 +1279,7 @@ void tcg_gen_gvec_2i(uint32_t dofs, uint32_t aofs, ui= nt32_t oprsz, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); =20 type =3D 0; if (g->fniv) { @@ -1336,7 +1345,7 @@ void tcg_gen_gvec_2s(uint32_t dofs, uint32_t aofs, ui= nt32_t oprsz, TCGType type; =20 check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); =20 type =3D 0; if (g->fniv) { @@ -1416,7 +1425,7 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uin= t32_t bofs, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs | bofs); - check_overlap_3(dofs, aofs, bofs, maxsz); + check_overlap_3(tcg_env, dofs, tcg_env, aofs, tcg_env, bofs, maxsz); =20 type =3D 0; if (g->fniv) { @@ -1483,7 +1492,7 @@ void tcg_gen_gvec_3i(uint32_t dofs, uint32_t aofs, ui= nt32_t bofs, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs | bofs); - check_overlap_3(dofs, aofs, bofs, maxsz); + check_overlap_3(tcg_env, dofs, tcg_env, aofs, tcg_env, bofs, maxsz); =20 type =3D 0; if (g->fniv) { @@ -1551,7 +1560,8 @@ void tcg_gen_gvec_4(uint32_t dofs, uint32_t aofs, uin= t32_t bofs, uint32_t cofs, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs | bofs | cofs); - check_overlap_4(dofs, aofs, bofs, cofs, maxsz); + check_overlap_4(tcg_env, dofs, tcg_env, aofs, + tcg_env, bofs, tcg_env, cofs, maxsz); =20 type =3D 0; if (g->fniv) { @@ -1621,7 +1631,8 @@ void tcg_gen_gvec_4i(uint32_t dofs, uint32_t aofs, ui= nt32_t bofs, uint32_t cofs, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs | bofs | cofs); - check_overlap_4(dofs, aofs, bofs, cofs, maxsz); + check_overlap_4(tcg_env, dofs, tcg_env, aofs, + tcg_env, bofs, tcg_env, cofs, maxsz); =20 type =3D 0; if (g->fniv) { @@ -3150,7 +3161,7 @@ do_gvec_shifts(unsigned vece, uint32_t dofs, uint32_t= aofs, TCGv_i32 shift, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); =20 /* If the backend has a scalar expansion, great. */ type =3D choose_vector_type(g->s_list, vece, oprsz, vece =3D=3D MO_64); @@ -3770,7 +3781,7 @@ void tcg_gen_gvec_cmp(TCGCond cond, unsigned vece, ui= nt32_t dofs, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs | bofs); - check_overlap_3(dofs, aofs, bofs, maxsz); + check_overlap_3(tcg_env, dofs, tcg_env, aofs, tcg_env, bofs, maxsz); =20 if (cond =3D=3D TCG_COND_NEVER || cond =3D=3D TCG_COND_ALWAYS) { do_dup(MO_8, tcg_env, dofs, oprsz, maxsz, @@ -3890,7 +3901,7 @@ void tcg_gen_gvec_cmps(TCGCond cond, unsigned vece, u= int32_t dofs, TCGType type; =20 check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); =20 if (cond =3D=3D TCG_COND_NEVER || cond =3D=3D TCG_COND_ALWAYS) { do_dup(MO_8, tcg_env, dofs, oprsz, maxsz, --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728027; cv=none; d=zohomail.com; s=zohoarc; b=PmAUgG2bq+Babz5i35ul+5D7n5xdn/FW66to577U9LTiRrKpOl3bIVMe1onDt9onefaK9YkxCKkboD15bNdFFcYTkEBwLCZt7lXbYrnde7n5/OrEIq8Gdeh5em8skqu+2ztzS/pE/oGQFW3eDnOt/xygJAKdi6OCnmnQWw/Nj40= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728027; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=b3bQlxtzdvRq49LaNxL8i9SqtH1rO/onPFJfQvnOe7Y=; b=e0wNOGqU+JLepG8VIpT26FZ3RPca8y0B/H8fbzxjYnIK3tzYzxUBt7Gvl2RsYRDPgg+micWb6URhRKh4qWLe5/3MOJibEdVVKTNbQDK5FXdWalJpUxK3vQLb4BSkHrkofizthBKfgf2Mm1KAHILtuPWaZYYBdaiPS1bclshh5sk= 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 1750728027833512.405029176383; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJZ-0000Ye-9P; Mon, 23 Jun 2025 21:19:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJX-0000Y4-Ux for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:07 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJV-0005nS-TZ for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:07 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-747fba9f962so3733219b3a.0 for ; Mon, 23 Jun 2025 18:19:05 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727944; x=1751332744; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=b3bQlxtzdvRq49LaNxL8i9SqtH1rO/onPFJfQvnOe7Y=; b=txzcvkl+IvkV/PkJVAfGMqxsgZF40pTFCfh6waSH6vQ/WFolv6OhkdxPR8InBj15FI M9POI/bdg7YqXfhqLzzSTiyp+g1dojwUWdjl6E9IEaG+W0zikbOR7is6UkK/JBV/sTXl U+bpQAUbiAfZDuejbGX16/EQi+J98MhqVbacjheFrjOc+nfxeFyTLWtBXNvCu5F+dJX3 MeqG64KgfdYklQ5/eZwBu2E48ofKjXQl+ZKdxAOd3lq17lyrkGwH9GRgqCR/FnU38bw3 PzzYDd/sbsDAS7u/p0kXRSi07l6MI2mEZ/Q4rWy3+n+lywoa1aZsYu/n1Zyo71i3qeKh MPeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727944; x=1751332744; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b3bQlxtzdvRq49LaNxL8i9SqtH1rO/onPFJfQvnOe7Y=; b=AL8ZyYsh1Y6h46waVrppi4nqSST/Li1xiID4lxsxVkj6Mk2jWdDNbXuahCaUVaYykn LuSYVvHBn05jm4eii7wDjc06kWq1CosVmK9b1PaoPmSYPybOxKADFWNJhzTERNhSLAR5 OxHrSP5fupelUZPwN/DvkjFfo8EOMkBMAKtiufC+2xWe5XDmPT1xVkZfwvboU0ehWGf8 uph+fSnBv+i/7zisjumva3wa/hjf9C8YT0/akKRh+5fdIEJuYD6YxPvnPFBFgPcZlCzS Js68KnjK6U06rtT5pvrmlS4m8Aino51jsKGZR+5dCKdIJPHT+oFr0sxQM/8vQ6eS2jVV Q7Vw== X-Gm-Message-State: AOJu0YwktgXCo+2Egd0ogo+Vr6uS/pnlSAzi3Vf0DTrkmq4dEeQizen7 6cxlgVKgz6/gxmVCcTj5XSWv5xjdq2OIhe7a+OR6Kcram1Sp1SBkLgAPBIdwh8Eajl1ptpLLWVy dZx+vf7Q= X-Gm-Gg: ASbGncusWZxKA1rR0T3rO+mrjTnLgBhrt6PtlbePkqBEIsRuAJWKD1f9ZzAuN8wAk9B LOekkYIW64OdndXPUd97/rk60I+CXNOmUnR3o4oLfs7FcdOypFTtY/DyNzJwBt8PnjxXq4CoNrC alqk37Gv4rnEhIZxqDtFi1iIGY+H7NjgvE+9a8sbnJWD2F4gOEXLx+pvTc9BMXEMISzbnbGncwq iQ7aQX3MEzfUOP/B7JbUCr2o0SYwgFOB4FsY+wIOEGR7dPLeFNtzw5EdArRKaduU1D3C+PHe1qM wLAqX7CLzoC0lNE4wlUtgjNzSP+w6/ri/KeHpEm8AuE3WpZqNvpFGUMAA3Epk1+IWn7JdEBxZNk iGdX2Vn50HxAGg0FmX2nh X-Google-Smtp-Source: AGHT+IFrBScu+aNdN6vtQ+PDUqJp81Fk+6K1esGIU6WNUDnaCsoxb6AJmlp9i/AFk+ZNLxh+KELR6g== X-Received: by 2002:a05:6a00:a8c:b0:736:4d05:2e35 with SMTP id d2e1a72fcca58-74955b64e9amr2381953b3a.3.1750727944043; Mon, 23 Jun 2025 18:19:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 05/11] tcg: Split out tcg_gen_gvec_2_var Date: Mon, 23 Jun 2025 18:18:53 -0700 Message-ID: <20250624011859.112010-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 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, OBFU_UNSUB_UL=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728029602116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- include/tcg/tcg-op-gvec-common.h | 14 ++++-- tcg/tcg-op-gvec.c | 85 ++++++++++++++++++++------------ 2 files changed, 64 insertions(+), 35 deletions(-) diff --git a/include/tcg/tcg-op-gvec-common.h b/include/tcg/tcg-op-gvec-com= mon.h index 65553f5f97..f00af047c4 100644 --- a/include/tcg/tcg-op-gvec-common.h +++ b/include/tcg/tcg-op-gvec-common.h @@ -227,12 +227,20 @@ typedef struct { bool prefer_i64; } GVecGen4i; =20 +/* Expand (dbase+dofs) =3D op(abase+aofs), length @oprsz, clearing to @max= sz. */ +void tcg_gen_gvec_2_var(TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + uint32_t oprsz, uint32_t maxsz, const GVecGen2 *op= ); +/* Similarly, expand (env+dofs) =3D op(env+aofs). */ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, - uint32_t oprsz, uint32_t maxsz, const GVecGen2 *); + uint32_t oprsz, uint32_t maxsz, const GVecGen2 *op); +/* Similarly, expand (env+dofs) =3D op(env+aofs, c). */ void tcg_gen_gvec_2i(uint32_t dofs, uint32_t aofs, uint32_t oprsz, - uint32_t maxsz, int64_t c, const GVecGen2i *); + uint32_t maxsz, int64_t c, const GVecGen2i *op); +/* Similarly, expand (env+dofs) =3D op(env+aofs, s). */ void tcg_gen_gvec_2s(uint32_t dofs, uint32_t aofs, uint32_t oprsz, - uint32_t maxsz, TCGv_i64 c, const GVecGen2s *); + uint32_t maxsz, TCGv_i64 c, const GVecGen2s *op); + void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t oprsz, uint32_t maxsz, const GVecGen3 *); void tcg_gen_gvec_3i(uint32_t dofs, uint32_t aofs, uint32_t bofs, diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 0e6b42476e..ec926bdcd7 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -133,9 +133,10 @@ uint32_t simd_desc(uint32_t oprsz, uint32_t maxsz, int= 32_t data) } =20 /* Generate a call to a gvec-style helper with two vector operands. */ -void tcg_gen_gvec_2_ool(uint32_t dofs, uint32_t aofs, - uint32_t oprsz, uint32_t maxsz, int32_t data, - gen_helper_gvec_2 *fn) +static void expand_2_ool(TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + uint32_t oprsz, uint32_t maxsz, + int32_t data, gen_helper_gvec_2 *fn) { TCGv_ptr a0, a1; TCGv_i32 desc =3D tcg_constant_i32(simd_desc(oprsz, maxsz, data)); @@ -143,8 +144,8 @@ void tcg_gen_gvec_2_ool(uint32_t dofs, uint32_t aofs, a0 =3D tcg_temp_ebb_new_ptr(); a1 =3D tcg_temp_ebb_new_ptr(); =20 - tcg_gen_addi_ptr(a0, tcg_env, dofs); - tcg_gen_addi_ptr(a1, tcg_env, aofs); + tcg_gen_addi_ptr(a0, dbase, dofs); + tcg_gen_addi_ptr(a1, abase, aofs); =20 fn(a0, a1, desc); =20 @@ -152,6 +153,13 @@ void tcg_gen_gvec_2_ool(uint32_t dofs, uint32_t aofs, tcg_temp_free_ptr(a1); } =20 +void tcg_gen_gvec_2_ool(uint32_t dofs, uint32_t aofs, + uint32_t oprsz, uint32_t maxsz, int32_t data, + gen_helper_gvec_2 *fn) +{ + expand_2_ool(tcg_env, dofs, tcg_env, aofs, oprsz, maxsz, data, fn); +} + /* Generate a call to a gvec-style helper with two vector operands and one scalar operand. */ void tcg_gen_gvec_2i_ool(uint32_t dofs, uint32_t aofs, TCGv_i64 c, @@ -724,20 +732,21 @@ static void expand_clr(TCGv_ptr dbase, uint32_t dofs,= uint32_t maxsz) } =20 /* Expand OPSZ bytes worth of two-operand operations using i32 elements. = */ -static void expand_2_i32(uint32_t dofs, uint32_t aofs, uint32_t oprsz, - bool load_dest, void (*fni)(TCGv_i32, TCGv_i32)) +static void expand_2_i32(TCGv_ptr dbase, uint32_t dofs, TCGv_ptr abase, + uint32_t aofs, uint32_t oprsz, bool load_dest, + void (*fni)(TCGv_i32, TCGv_i32)) { TCGv_i32 t0 =3D tcg_temp_new_i32(); TCGv_i32 t1 =3D tcg_temp_new_i32(); uint32_t i; =20 for (i =3D 0; i < oprsz; i +=3D 4) { - tcg_gen_ld_i32(t0, tcg_env, aofs + i); + tcg_gen_ld_i32(t0, abase, aofs + i); if (load_dest) { - tcg_gen_ld_i32(t1, tcg_env, dofs + i); + tcg_gen_ld_i32(t1, dbase, dofs + i); } fni(t1, t0); - tcg_gen_st_i32(t1, tcg_env, dofs + i); + tcg_gen_st_i32(t1, dbase, dofs + i); } tcg_temp_free_i32(t0); tcg_temp_free_i32(t1); @@ -887,20 +896,21 @@ static void expand_4i_i32(uint32_t dofs, uint32_t aof= s, uint32_t bofs, } =20 /* Expand OPSZ bytes worth of two-operand operations using i64 elements. = */ -static void expand_2_i64(uint32_t dofs, uint32_t aofs, uint32_t oprsz, - bool load_dest, void (*fni)(TCGv_i64, TCGv_i64)) +static void expand_2_i64(TCGv_ptr dbase, uint32_t dofs, TCGv_ptr abase, + uint32_t aofs, uint32_t oprsz, bool load_dest, + void (*fni)(TCGv_i64, TCGv_i64)) { TCGv_i64 t0 =3D tcg_temp_new_i64(); TCGv_i64 t1 =3D tcg_temp_new_i64(); uint32_t i; =20 for (i =3D 0; i < oprsz; i +=3D 8) { - tcg_gen_ld_i64(t0, tcg_env, aofs + i); + tcg_gen_ld_i64(t0, abase, aofs + i); if (load_dest) { - tcg_gen_ld_i64(t1, tcg_env, dofs + i); + tcg_gen_ld_i64(t1, dbase, dofs + i); } fni(t1, t0); - tcg_gen_st_i64(t1, tcg_env, dofs + i); + tcg_gen_st_i64(t1, dbase, dofs + i); } tcg_temp_free_i64(t0); tcg_temp_free_i64(t1); @@ -1050,7 +1060,8 @@ static void expand_4i_i64(uint32_t dofs, uint32_t aof= s, uint32_t bofs, } =20 /* Expand OPSZ bytes worth of two-operand operations using host vectors. = */ -static void expand_2_vec(unsigned vece, uint32_t dofs, uint32_t aofs, +static void expand_2_vec(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, uint32_t oprsz, uint32_t tysz, TCGType type, bool load_dest, void (*fni)(unsigned, TCGv_vec, TCGv_vec)) @@ -1059,12 +1070,12 @@ static void expand_2_vec(unsigned vece, uint32_t do= fs, uint32_t aofs, TCGv_vec t0 =3D tcg_temp_new_vec(type); TCGv_vec t1 =3D tcg_temp_new_vec(type); =20 - tcg_gen_ld_vec(t0, tcg_env, aofs + i); + tcg_gen_ld_vec(t0, abase, aofs + i); if (load_dest) { - tcg_gen_ld_vec(t1, tcg_env, dofs + i); + tcg_gen_ld_vec(t1, dbase, dofs + i); } fni(vece, t1, t0); - tcg_gen_st_vec(t1, tcg_env, dofs + i); + tcg_gen_st_vec(t1, dbase, dofs + i); } } =20 @@ -1206,8 +1217,9 @@ static void expand_4i_vec(unsigned vece, uint32_t dof= s, uint32_t aofs, } =20 /* Expand a vector two-operand operation. */ -void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, - uint32_t oprsz, uint32_t maxsz, const GVecGen2 *g) +void tcg_gen_gvec_2_var(TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + uint32_t oprsz, uint32_t maxsz, const GVecGen2 *g) { const TCGOpcode *this_list =3D g->opt_opc ? : vecop_list_empty; const TCGOpcode *hold_list =3D tcg_swap_vecop_list(this_list); @@ -1215,7 +1227,7 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); + check_overlap_2(dbase, dofs, abase, aofs, maxsz); =20 type =3D 0; if (g->fniv) { @@ -1228,8 +1240,8 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, * that e.g. size =3D=3D 80 would be expanded with 2x32 + 1x16. */ some =3D QEMU_ALIGN_DOWN(oprsz, 32); - expand_2_vec(g->vece, dofs, aofs, some, 32, TCG_TYPE_V256, - g->load_dest, g->fniv); + expand_2_vec(g->vece, dbase, dofs, abase, aofs, some, 32, + TCG_TYPE_V256, g->load_dest, g->fniv); if (some =3D=3D oprsz) { break; } @@ -1239,22 +1251,25 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, maxsz -=3D some; /* fallthru */ case TCG_TYPE_V128: - expand_2_vec(g->vece, dofs, aofs, oprsz, 16, TCG_TYPE_V128, - g->load_dest, g->fniv); + expand_2_vec(g->vece, dbase, dofs, abase, aofs, oprsz, 16, + TCG_TYPE_V128, g->load_dest, g->fniv); break; case TCG_TYPE_V64: - expand_2_vec(g->vece, dofs, aofs, oprsz, 8, TCG_TYPE_V64, - g->load_dest, g->fniv); + expand_2_vec(g->vece, dbase, dofs, abase, aofs, oprsz, 8, + TCG_TYPE_V64, g->load_dest, g->fniv); break; =20 case 0: if (g->fni8 && check_size_impl(oprsz, 8)) { - expand_2_i64(dofs, aofs, oprsz, g->load_dest, g->fni8); + expand_2_i64(dbase, dofs, abase, aofs, + oprsz, g->load_dest, g->fni8); } else if (g->fni4 && check_size_impl(oprsz, 4)) { - expand_2_i32(dofs, aofs, oprsz, g->load_dest, g->fni4); + expand_2_i32(dbase, dofs, abase, aofs, + oprsz, g->load_dest, g->fni4); } else { assert(g->fno !=3D NULL); - tcg_gen_gvec_2_ool(dofs, aofs, oprsz, maxsz, g->data, g->fno); + expand_2_ool(dbase, dofs, abase, aofs, + oprsz, maxsz, g->data, g->fno); oprsz =3D maxsz; } break; @@ -1265,10 +1280,16 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, tcg_swap_vecop_list(hold_list); =20 if (oprsz < maxsz) { - expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); + expand_clr(dbase, dofs + oprsz, maxsz - oprsz); } } =20 +void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, + uint32_t oprsz, uint32_t maxsz, const GVecGen2 *g) +{ + tcg_gen_gvec_2_var(tcg_env, dofs, tcg_env, aofs, oprsz, maxsz, g); +} + /* Expand a vector operation with two vectors and an immediate. */ void tcg_gen_gvec_2i(uint32_t dofs, uint32_t aofs, uint32_t oprsz, uint32_t maxsz, int64_t c, const GVecGen2i *g) --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728065; cv=none; d=zohomail.com; s=zohoarc; b=Zi5f8Lf/HWreGc6nxdaRq1D1MmK1b23uW/gSjMCO+GQOHHWetak+ppYbpuRSMTe3DCwqxxtU4nn9Y2gurbwfbngEtTSw8ZhxDqx5wgLLPYK611KkPCEIo4C1idK55DeHCzrYaUoSKWTZhOww8c+sAuYSZ9MMr6kjfZhIWKtHMZ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728065; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7eh7a9DeY1ZSbJLViP7gxIdUrcoetx4rJhwuJcaL9wQ=; b=H9nALfO0Cr0ALYItGPTqPBc96uKXD3+JCNLMWP/zMMqw5NvKEBs0YFx5QHMUmgyL39B7K7SJJZltQhy1GOsuA5K2muktIMtciv2td+u/3c/Z95BikD0dIdh7Hnor2QZ7nc1sbZVK5sTqLUMaf9x6TYPTIlNWoGEUD8l+hoRzmeY= 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 1750728065214689.9367814221258; Mon, 23 Jun 2025 18:21:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJb-0000Zf-6o; Mon, 23 Jun 2025 21:19:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJY-0000YE-BD for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:08 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJW-0005ne-9b for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:08 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-748ece799bdso3336533b3a.1 for ; Mon, 23 Jun 2025 18:19:05 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727945; x=1751332745; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7eh7a9DeY1ZSbJLViP7gxIdUrcoetx4rJhwuJcaL9wQ=; b=J4lzuFzGWNMhKXK3D2++gkWn/TaJYVekCS+9Rx7WUFjI+3leqpVB3hH6BE9j6IQD3n mQV1c+Blucr0wqNkkVR73QGVgBFWq967ZEIZcUSFHxLWinI5Zb6/H5b6+sxMFP5riilj 0ONnxEBl70bV8jR4QwI7xb3qNMWhkRfOzmUM7c5WVQSP/D9Oqahiq33lw5GO6zgtdaAx xah5bst8naeiJui1Wq30ebT/EuUyIFfIbLh8kSiUdCD8pRJ7k38P3ZM1iPz/MK0jDVea n3U67HTRU3hfaKLu0ceYd/3nnckUso8p9VZXvf8NfdkW+c/0CuT9IvEcZGgqyPKA4kkQ cC8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727945; x=1751332745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7eh7a9DeY1ZSbJLViP7gxIdUrcoetx4rJhwuJcaL9wQ=; b=MRY3UDzck+Zagab69RnmKe3ZyaoEsTtzuDHLZRsSayyoomcXB/Ca1TLN7zunsUbsRL C9smX0mcQeUP+jPh1U/8xfBExGlnXKcpgvbcDeDMGmynw6yCM8hT5BiggwOrvD/UU3WG Q3tkn4GOaoRQxmOIJBs0lCsbMpvk3UVpVZIzYBtIE3w/3W8Ib5zZHMDu0QeuDx5CjEtA zejymNXkY+n0U06SHGFsgqW87SaA3p8+5YWVYMMsBDShNZgPW+x0GpqGMVmRcG2MwKxY eUngTJ6/1CR98LYMU88DWwc6GIuri7vG39U0SeYYPFhupU5MvN+jp8f2Bsi52QFQmZgg jjbg== X-Gm-Message-State: AOJu0YxQre5L5dT1pRox4wCJIbVmlUyHFVJOFZ2VGYwqUvdgb++rLyuy RQFlQhztwhagmoUQwWS5fZYrfWYzWxHdlpUrobL/TiNRZpkTGzarkk/VWXw9523U45k2DRDRqtB bJWRECq4= X-Gm-Gg: ASbGncv7kXqWBhWl4U4qdT2hlFZMnnFdv9S3v4M3suZeBoPV6XvXod6g3kA7hbmunI0 SoPjE/jUL62FMJXYboi11JdFz2UqatqYXWWlUfPSEEQKII0eUt76+bEbZJMk9KvG1X5an5b1wFM tr/m0mUmchuC0vj6umkf31RaAOI71cV64eFb6glvQMZPaobi5ukRH3fYc0FNomfb5LG1FywxO74 fG7XTFVoyaK+qyvhc5ScFFrh4wsiQaucc4OpdxZn6SxcCC17jgPNCbn4oI4Komhbeu51uQKdKlZ 7B5n/O59Nimktx92bKhKgOkPwhs+z/arDmdrusr4CFPVH5usNu7/ATx9Khqn9hr9vwj9h37S+Lf Kp2JyYyFkLRR6SGOXzNqY X-Google-Smtp-Source: AGHT+IFdMlRSH7QPzbaDkYTWE2JxP3ebEOAX8BLuocBNBAMVLbRW5sVs74JSOzEyKDoDOpLe936JGQ== X-Received: by 2002:a05:6a21:9987:b0:21f:8d4f:9e3b with SMTP id adf61e73a8af0-22026e60126mr22797455637.7.1750727944661; Mon, 23 Jun 2025 18:19:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 06/11] tcg: Split out tcg_gen_gvec_3_var Date: Mon, 23 Jun 2025 18:18:54 -0700 Message-ID: <20250624011859.112010-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 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, OBFU_UNSUB_UL=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728065987116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- include/tcg/tcg-op-gvec-common.h | 33 +++++++++- tcg/tcg-op-gvec.c | 102 +++++++++++++++++++------------ 2 files changed, 95 insertions(+), 40 deletions(-) diff --git a/include/tcg/tcg-op-gvec-common.h b/include/tcg/tcg-op-gvec-com= mon.h index f00af047c4..29bcedb737 100644 --- a/include/tcg/tcg-op-gvec-common.h +++ b/include/tcg/tcg-op-gvec-common.h @@ -241,13 +241,42 @@ void tcg_gen_gvec_2i(uint32_t dofs, uint32_t aofs, ui= nt32_t oprsz, void tcg_gen_gvec_2s(uint32_t dofs, uint32_t aofs, uint32_t oprsz, uint32_t maxsz, TCGv_i64 c, const GVecGen2s *op); =20 +/* + * Expand (dbase+dofs) =3D op(abase+aofs, bbase+bofs), + * length @oprsz, clearing to @maxsz. + */ +void tcg_gen_gvec_3_var(TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, + uint32_t oprsz, uint32_t maxsz, const GVecGen3 *op= ); +/* Similarly, expand (env+dofs) =3D op(env+aofs, env+bofs). */ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, - uint32_t oprsz, uint32_t maxsz, const GVecGen3 *); + uint32_t oprsz, uint32_t maxsz, const GVecGen3 *op); + +/* + * Depending on op->load_dest and op->write_aofs, expand + * (env+dofs) =3D op(env+aofs, env+bofs, c) + * or + * (env+dofs) =3D op(env+dofs, env+aofs, env+bofs, c) + * or + * (env+dofs), (env+aofs) =3D op(env+aofs, env+bofs, c) + * or + * (env+dofs), (env+aofs) =3D op(env+dofs, env+aofs, env+bofs, c) + */ void tcg_gen_gvec_3i(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t oprsz, uint32_t maxsz, int64_t c, - const GVecGen3i *); + const GVecGen3i *op); + +/* + * Depending on op->write_aofs, expand + * (env+dofs) =3D op(env+aofs, env+bofs, env+cofs) + * or + * (env+dofs), (env+aofs) =3D op(env+aofs, env+bofs, env+cofs) + */ void tcg_gen_gvec_4(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t = cofs, uint32_t oprsz, uint32_t maxsz, const GVecGen4 *); + +/* Expand (env+dofs) =3D op(env+aofs, env+bofs, env+cofs, c). */ void tcg_gen_gvec_4i(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t= cofs, uint32_t oprsz, uint32_t maxsz, int64_t c, const GVecGen4i *); diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index ec926bdcd7..862cecf1bf 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -182,9 +182,11 @@ void tcg_gen_gvec_2i_ool(uint32_t dofs, uint32_t aofs,= TCGv_i64 c, } =20 /* Generate a call to a gvec-style helper with three vector operands. */ -void tcg_gen_gvec_3_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs, - uint32_t oprsz, uint32_t maxsz, int32_t data, - gen_helper_gvec_3 *fn) +static void expand_3_ool(TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, + uint32_t oprsz, uint32_t maxsz, + int32_t data, gen_helper_gvec_3 *fn) { TCGv_ptr a0, a1, a2; TCGv_i32 desc =3D tcg_constant_i32(simd_desc(oprsz, maxsz, data)); @@ -193,9 +195,9 @@ void tcg_gen_gvec_3_ool(uint32_t dofs, uint32_t aofs, u= int32_t bofs, a1 =3D tcg_temp_ebb_new_ptr(); a2 =3D tcg_temp_ebb_new_ptr(); =20 - tcg_gen_addi_ptr(a0, tcg_env, dofs); - tcg_gen_addi_ptr(a1, tcg_env, aofs); - tcg_gen_addi_ptr(a2, tcg_env, bofs); + tcg_gen_addi_ptr(a0, dbase, dofs); + tcg_gen_addi_ptr(a1, abase, aofs); + tcg_gen_addi_ptr(a2, bbase, bofs); =20 fn(a0, a1, a2, desc); =20 @@ -204,6 +206,14 @@ void tcg_gen_gvec_3_ool(uint32_t dofs, uint32_t aofs, = uint32_t bofs, tcg_temp_free_ptr(a2); } =20 +void tcg_gen_gvec_3_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs, + uint32_t oprsz, uint32_t maxsz, int32_t data, + gen_helper_gvec_3 *fn) +{ + expand_3_ool(tcg_env, dofs, tcg_env, aofs, tcg_env, bofs, + oprsz, maxsz, data, fn); +} + /* Generate a call to a gvec-style helper with four vector operands. */ void tcg_gen_gvec_4_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t cofs, uint32_t oprsz, uint32_t maxsz, @@ -794,8 +804,10 @@ static void expand_2s_i32(uint32_t dofs, uint32_t aofs= , uint32_t oprsz, } =20 /* Expand OPSZ bytes worth of three-operand operations using i32 elements.= */ -static void expand_3_i32(uint32_t dofs, uint32_t aofs, - uint32_t bofs, uint32_t oprsz, bool load_dest, +static void expand_3_i32(TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, + uint32_t oprsz, bool load_dest, void (*fni)(TCGv_i32, TCGv_i32, TCGv_i32)) { TCGv_i32 t0 =3D tcg_temp_new_i32(); @@ -804,13 +816,13 @@ static void expand_3_i32(uint32_t dofs, uint32_t aofs, uint32_t i; =20 for (i =3D 0; i < oprsz; i +=3D 4) { - tcg_gen_ld_i32(t0, tcg_env, aofs + i); - tcg_gen_ld_i32(t1, tcg_env, bofs + i); + tcg_gen_ld_i32(t0, abase, aofs + i); + tcg_gen_ld_i32(t1, bbase, bofs + i); if (load_dest) { - tcg_gen_ld_i32(t2, tcg_env, dofs + i); + tcg_gen_ld_i32(t2, dbase, dofs + i); } fni(t2, t0, t1); - tcg_gen_st_i32(t2, tcg_env, dofs + i); + tcg_gen_st_i32(t2, dbase, dofs + i); } tcg_temp_free_i32(t2); tcg_temp_free_i32(t1); @@ -958,8 +970,10 @@ static void expand_2s_i64(uint32_t dofs, uint32_t aofs= , uint32_t oprsz, } =20 /* Expand OPSZ bytes worth of three-operand operations using i64 elements.= */ -static void expand_3_i64(uint32_t dofs, uint32_t aofs, - uint32_t bofs, uint32_t oprsz, bool load_dest, +static void expand_3_i64(TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, + uint32_t oprsz, bool load_dest, void (*fni)(TCGv_i64, TCGv_i64, TCGv_i64)) { TCGv_i64 t0 =3D tcg_temp_new_i64(); @@ -968,13 +982,13 @@ static void expand_3_i64(uint32_t dofs, uint32_t aofs, uint32_t i; =20 for (i =3D 0; i < oprsz; i +=3D 8) { - tcg_gen_ld_i64(t0, tcg_env, aofs + i); - tcg_gen_ld_i64(t1, tcg_env, bofs + i); + tcg_gen_ld_i64(t0, abase, aofs + i); + tcg_gen_ld_i64(t1, bbase, bofs + i); if (load_dest) { - tcg_gen_ld_i64(t2, tcg_env, dofs + i); + tcg_gen_ld_i64(t2, dbase, dofs + i); } fni(t2, t0, t1); - tcg_gen_st_i64(t2, tcg_env, dofs + i); + tcg_gen_st_i64(t2, dbase, dofs + i); } tcg_temp_free_i64(t2); tcg_temp_free_i64(t1); @@ -1119,8 +1133,9 @@ static void expand_2s_vec(unsigned vece, uint32_t dof= s, uint32_t aofs, } =20 /* Expand OPSZ bytes worth of three-operand operations using host vectors.= */ -static void expand_3_vec(unsigned vece, uint32_t dofs, uint32_t aofs, - uint32_t bofs, uint32_t oprsz, +static void expand_3_vec(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, uint32_t oprsz, uint32_t tysz, TCGType type, bool load_dest, void (*fni)(unsigned, TCGv_vec, TCGv_vec, TCGv_ve= c)) { @@ -1129,13 +1144,13 @@ static void expand_3_vec(unsigned vece, uint32_t do= fs, uint32_t aofs, TCGv_vec t1 =3D tcg_temp_new_vec(type); TCGv_vec t2 =3D tcg_temp_new_vec(type); =20 - tcg_gen_ld_vec(t0, tcg_env, aofs + i); - tcg_gen_ld_vec(t1, tcg_env, bofs + i); + tcg_gen_ld_vec(t0, abase, aofs + i); + tcg_gen_ld_vec(t1, bbase, bofs + i); if (load_dest) { - tcg_gen_ld_vec(t2, tcg_env, dofs + i); + tcg_gen_ld_vec(t2, dbase, dofs + i); } fni(vece, t2, t0, t1); - tcg_gen_st_vec(t2, tcg_env, dofs + i); + tcg_gen_st_vec(t2, dbase, dofs + i); } } =20 @@ -1437,8 +1452,10 @@ void tcg_gen_gvec_2s(uint32_t dofs, uint32_t aofs, u= int32_t oprsz, } =20 /* Expand a vector three-operand operation. */ -void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, - uint32_t oprsz, uint32_t maxsz, const GVecGen3 *g) +void tcg_gen_gvec_3_var(TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, + uint32_t oprsz, uint32_t maxsz, const GVecGen3 *g) { const TCGOpcode *this_list =3D g->opt_opc ? : vecop_list_empty; const TCGOpcode *hold_list =3D tcg_swap_vecop_list(this_list); @@ -1446,7 +1463,7 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uin= t32_t bofs, uint32_t some; =20 check_size_align(oprsz, maxsz, dofs | aofs | bofs); - check_overlap_3(tcg_env, dofs, tcg_env, aofs, tcg_env, bofs, maxsz); + check_overlap_3(dbase, dofs, abase, aofs, bbase, bofs, maxsz); =20 type =3D 0; if (g->fniv) { @@ -1459,8 +1476,8 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uin= t32_t bofs, * that e.g. size =3D=3D 80 would be expanded with 2x32 + 1x16. */ some =3D QEMU_ALIGN_DOWN(oprsz, 32); - expand_3_vec(g->vece, dofs, aofs, bofs, some, 32, TCG_TYPE_V256, - g->load_dest, g->fniv); + expand_3_vec(g->vece, dbase, dofs, abase, aofs, bbase, bofs, + some, 32, TCG_TYPE_V256, g->load_dest, g->fniv); if (some =3D=3D oprsz) { break; } @@ -1471,23 +1488,25 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, u= int32_t bofs, maxsz -=3D some; /* fallthru */ case TCG_TYPE_V128: - expand_3_vec(g->vece, dofs, aofs, bofs, oprsz, 16, TCG_TYPE_V128, - g->load_dest, g->fniv); + expand_3_vec(g->vece, dbase, dofs, abase, aofs, bbase, bofs, + oprsz, 16, TCG_TYPE_V128, g->load_dest, g->fniv); break; case TCG_TYPE_V64: - expand_3_vec(g->vece, dofs, aofs, bofs, oprsz, 8, TCG_TYPE_V64, - g->load_dest, g->fniv); + expand_3_vec(g->vece, dbase, dofs, abase, aofs, bbase, bofs, + oprsz, 8, TCG_TYPE_V64, g->load_dest, g->fniv); break; =20 case 0: if (g->fni8 && check_size_impl(oprsz, 8)) { - expand_3_i64(dofs, aofs, bofs, oprsz, g->load_dest, g->fni8); + expand_3_i64(dbase, dofs, abase, aofs, bbase, bofs, + oprsz, g->load_dest, g->fni8); } else if (g->fni4 && check_size_impl(oprsz, 4)) { - expand_3_i32(dofs, aofs, bofs, oprsz, g->load_dest, g->fni4); + expand_3_i32(dbase, dofs, abase, aofs, bbase, bofs, + oprsz, g->load_dest, g->fni4); } else { assert(g->fno !=3D NULL); - tcg_gen_gvec_3_ool(dofs, aofs, bofs, oprsz, - maxsz, g->data, g->fno); + expand_3_ool(dbase, dofs, abase, aofs, bbase, bofs, + oprsz, maxsz, g->data, g->fno); oprsz =3D maxsz; } break; @@ -1498,10 +1517,17 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, u= int32_t bofs, tcg_swap_vecop_list(hold_list); =20 if (oprsz < maxsz) { - expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); + expand_clr(dbase, dofs + oprsz, maxsz - oprsz); } } =20 +void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, + uint32_t oprsz, uint32_t maxsz, const GVecGen3 *g) +{ + tcg_gen_gvec_3_var(tcg_env, dofs, tcg_env, aofs, tcg_env, bofs, + oprsz, maxsz, g); +} + /* Expand a vector operation with three vectors and an immediate. */ void tcg_gen_gvec_3i(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t oprsz, uint32_t maxsz, int64_t c, --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728027; cv=none; d=zohomail.com; s=zohoarc; b=RLYDreCDIAX+dGdIg6vil6YwyxU5R8Q74F2EdwCZORyohVl5eEbq6xfyXX2jJUs5MTmMfhxdDVltqSRWQeBf+WyqO2Q31ykgEEJHbDNmKz9qgsi5hTiDyHsYPw4Yg3DaYvJ084OQqnm6pthYLmRii5bOrvt/q5xBn4qp7q3Rzho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728027; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XPRuJthFo3g6aUjTagI9t4QMkLmDirDDkkZ2ir5luhk=; b=MOyyU6vlZevAneY6aazGM5HcTyQqDSxqqE4ugSdZrXob9GL1M9Fo//u/+FjYVx7LG/4XeEdUH1aw/ftdo1Ie2ZC2+5XqLQihLWby8AQ2nttbCPqb5CnQDF+/taVfZNYX7kwm3O6mbOg2Z+nfBlpFJ8F3fqVnGiL4uy+9tBoW/Hc= 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 1750728027867451.20740507525716; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJb-0000Zo-C4; Mon, 23 Jun 2025 21:19:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJZ-0000Yf-9O for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:09 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJW-0005nj-MW for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:09 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-747fc7506d4so3782104b3a.0 for ; Mon, 23 Jun 2025 18:19:06 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727945; x=1751332745; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XPRuJthFo3g6aUjTagI9t4QMkLmDirDDkkZ2ir5luhk=; b=GNXimdkhVk12Cv7FfkdVfWkz2qIH6KQNfuhpWNeMNhlj2ONhX9AN2Rwl5A7gOUDfhQ v4/og85Xy5L8GQOzgMLOFuD+hhQvc1QK1VNqqCpc57pR7YJaxeooecBrzjb9Inv6CU0v icrVFpueNMd4XnPWojiJ0mcSCeUoxcm7VfPC/dxTJnjiEkkbnqlBOTRgUwUydXGg+SEQ /tHFBv2bRRVLqYY8Qqc15e4DtQ1JwtfHcxtvikljSMFiyOdTdvxaJEfSGRQhR2GlnvH1 076/+dVUxPZikq1DRByCSAvThN2ePJglf0+uGIm6TBJ7tOwRZNMHdWTQ4lP/iakSn4fy q1Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727945; x=1751332745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XPRuJthFo3g6aUjTagI9t4QMkLmDirDDkkZ2ir5luhk=; b=KcRt2Tm8O1XwmCU6Wh94ocRO/DFiuIUY4f13QE4DUzAc4h8GPg/br/ZFnZ3hylpDJw mRB0NQTteGjhZtAjfuSxkmdFBV1a1VwEcSWLzE0pkpu4Pcu65vpejqsbG4yAuQdM/hZC v/xrJMQQhRU2RcKWH+LBIk2GAZGZe2A36vAnafqwOJ4pPVMq5JjLhjk/xLysie5FzdBp 6J/07zHV1dDZeSq9e6NXq63mbPchF/pQJFNO+CvknoAJSpN+KmUUPeLwPIHEp7oQtIs1 nP9qtw3DjSNRS61WLSgEC0rU3b7Qgozq3dTIy2VwyJhTsdCciK5KPt5IB8KtUReDmPUF Gqew== X-Gm-Message-State: AOJu0YyKWV4AIfwucsJjdilkEoFz+YlMI/11V/nI0bd2DmH/BP/3h7AU d0Ph4gFfzHINZNI7FuUCSUvRit/w78ev1YNnWi7aaT1gVKKFp7Rr34BxCWzD25kmsJor8p/uK9Z l/pyzOqQ= X-Gm-Gg: ASbGncuVJ1ZYDdNM8zvhDhtCdpuAinn+VA4TmQpXA4GWBw4sQdRWGNM4IzvuMFfSWEL W74T8N+RTFwqowRcPyomaRPywCIy+M5pyCsaThHX62YGa/x1j12oWqyqi4Ju4Cd6CWzDwO2DP6u 3+bB8QTieEJhTlw6IwzQL7Vb7qytZaDZtSHg32/3RIZNcInQU51F3+4GqQ8KNNl3Cv9Cbk26l4i 61/z1KZmHOyJD6gUDZo659mJPxuQ7RMP9mmN+oG4uiR8OvM9nCLbE5GT5qSWsYu9PIBPU33BbX3 01IO3d3XgzPjp6jwIeVjMxgmpLCf/BT60jgtbZlBylAoK+sHYBUV6Lm0tGS4/Y3cCFym0h6Nqwl IR4JvudxhByKkKqvcQJmcAjGv1mKp3sU= X-Google-Smtp-Source: AGHT+IElPNI69gNd+q0TLSGlkW496bIr12321or8cUssNlCNJs/TDHZ95q/dzUHkEdnXWhpXlS+RdA== X-Received: by 2002:a05:6a00:ccb:b0:736:34a2:8a23 with SMTP id d2e1a72fcca58-7490da6cc55mr18947314b3a.15.1750727945320; Mon, 23 Jun 2025 18:19:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 07/11] tcg: Split out tcg_gen_gvec_mov_var Date: Mon, 23 Jun 2025 18:18:55 -0700 Message-ID: <20250624011859.112010-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728029458116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- include/tcg/tcg-op-gvec-common.h | 4 ++++ tcg/tcg-op-gvec.c | 21 +++++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/include/tcg/tcg-op-gvec-common.h b/include/tcg/tcg-op-gvec-com= mon.h index 29bcedb737..b2e797780d 100644 --- a/include/tcg/tcg-op-gvec-common.h +++ b/include/tcg/tcg-op-gvec-common.h @@ -283,6 +283,10 @@ void tcg_gen_gvec_4i(uint32_t dofs, uint32_t aofs, uin= t32_t bofs, uint32_t cofs, =20 /* Expand a specific vector operation. */ =20 +void tcg_gen_gvec_mov_var(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + uint32_t oprsz, uint32_t maxsz); + void tcg_gen_gvec_mov(unsigned vece, uint32_t dofs, uint32_t aofs, uint32_t oprsz, uint32_t maxsz); void tcg_gen_gvec_not(unsigned vece, uint32_t dofs, uint32_t aofs, diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 862cecf1bf..85e1807580 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -1746,8 +1746,9 @@ static void vec_mov2(unsigned vece, TCGv_vec a, TCGv_= vec b) tcg_gen_mov_vec(a, b); } =20 -void tcg_gen_gvec_mov(unsigned vece, uint32_t dofs, uint32_t aofs, - uint32_t oprsz, uint32_t maxsz) +void tcg_gen_gvec_mov_var(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + uint32_t oprsz, uint32_t maxsz) { static const GVecGen2 g =3D { .fni8 =3D tcg_gen_mov_i64, @@ -1755,14 +1756,22 @@ void tcg_gen_gvec_mov(unsigned vece, uint32_t dofs,= uint32_t aofs, .fno =3D gen_helper_gvec_mov, .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, }; - if (dofs !=3D aofs) { - tcg_gen_gvec_2(dofs, aofs, oprsz, maxsz, &g); - } else { + + if (dofs =3D=3D aofs && dbase =3D=3D abase) { check_size_align(oprsz, maxsz, dofs); if (oprsz < maxsz) { - expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); + expand_clr(dbase, dofs + oprsz, maxsz - oprsz); } + return; } + + tcg_gen_gvec_2_var(dbase, dofs, abase, aofs, oprsz, maxsz, &g); +} + +void tcg_gen_gvec_mov(unsigned vece, uint32_t dofs, uint32_t aofs, + uint32_t oprsz, uint32_t maxsz) +{ + tcg_gen_gvec_mov_var(vece, tcg_env, dofs, tcg_env, aofs, oprsz, maxsz); } =20 void tcg_gen_gvec_dup_i32(unsigned vece, uint32_t dofs, uint32_t oprsz, --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728027; cv=none; d=zohomail.com; s=zohoarc; b=aX/pnyrRVaMvwKiWNGWuJaXhtgJ0Lso3NT3Czx0SwTHCeEKMdkIdbhq+qTTdnhUXz2fG2ycpK4qS4AH0gHELWLUThGESBz4JPd7khu3lFNm5y30OXdEdIEwayQgKXFbri9jEu/xw8u5JCOzR6jAeYaMcAvwR4vFz56gbwHyAVW4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728027; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EbDOcywMqq1dh9LZui16nPkQkSH4+rsckkQuLNP7SO4=; b=m37EoYw9lJ30AyxMXXZvtz3io7KXua8h5l8AOCAP4rktyT3TWHFiXli2UhEJx2shQ7E8NykcCiIvLLyp4xns+mTmf06NkYkB87CxmOoEQJbANABiTPQFl0kuPqMT8sw7voht8Y8OObdBKyc+PX895etV7zY0QVVcm6Qi++4BWrg= 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 1750728027940902.2102132969259; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJl-0000cL-Dm; Mon, 23 Jun 2025 21:19:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJj-0000bu-Iu for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:19 -0400 Received: from mail-qv1-xf2a.google.com ([2607:f8b0:4864:20::f2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJh-0005qe-VL for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:19 -0400 Received: by mail-qv1-xf2a.google.com with SMTP id 6a1803df08f44-6face1d58dcso74005646d6.2 for ; Mon, 23 Jun 2025 18:19:17 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727956; x=1751332756; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EbDOcywMqq1dh9LZui16nPkQkSH4+rsckkQuLNP7SO4=; b=rrIxR+ybob+ZsnFUD64cvegIQI8fwtbgw6RAB/nJEKilJ8yTAbsDrjJyh7+sm8wNgX bXCrcZMFsMGQW+jjE5hS7hlVc4Qq8aARCs5unl1xQAk4uUDojV7uHKVkgCkz9MLEfKAq iqdtGHU6D/DTiY/GW8/fLbT8IZqnWRvvS2iN1ZHxPQ1MA/nCCrSp0H5BhBck72aWIiaR ZP8i6Ud7VDIDZnt+OV/0I36ZXfWA4cJV+wtA/kEWUoXgWCEiuo6Ac4i+U2+UW33E/mkL AF8m0zgXo6HIl0HXPLAk6Au7VLY1zKQw3tZO8G2Bwcc5uThRIZORSK8v86l/gopTXjFH qpHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727956; x=1751332756; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EbDOcywMqq1dh9LZui16nPkQkSH4+rsckkQuLNP7SO4=; b=qrrjXA1NPWEoHPSx6LC1q4Z/MobtJ/Ss1x92MOviAHYcTwJiSfN7MkjYT2WmQ7dvvV gJ2zxxcrUFyp7/m5fTSgG+WzjQLSaLhzrJv7ftn0i0cSZ+2CpSaUlr9+Bq/CCw2DGKSw anRDlmDqmjQH0elnGpSyW67fu5EbBbXXUbLv5EJ9u3SbbQqWmccxo+KzJlx7+Gb9O7Ph b5SxKRksI4bkMVeHiKLA14ug0Rmb3dJyJwpmB16+4S8v1VVpI7/ypprUDaAFUEQkq4uv q2oJc1Xx1J4SByxvGFqJoHG+S3S9odFuZJMKsuzfzk4U8y0tstMRXLM0OQNwfc1YtcgE hHGQ== X-Gm-Message-State: AOJu0YyRxlREOtoTUMU1AxUey4nbXxHV8++mIG77NZMvWgfNf1Es5v3f Q6fDq5kxobbkoX6nJXlO2s+2Ld6dhJ7aYDbORQP2C6rmyMGLy5X037jIR3Hdh+bWVLkj8vmjLEP a4hr8eWo= X-Gm-Gg: ASbGncuRiL4yfConCuXCQGU6SNBDamx2606UIB1KPXCM1lYlR+5ua7/Yr8C18C3vFQ9 2mK6P2+DWZa+750PH+f7Phuds2v1H+2/374FEzusPZd8nT28ApZpfY+0p7pIJKes0MMsH15J4O8 /8ibe4XxFM7rnspd2kEbi4JWIxf5IsCD5sdRvsmxvStE9iOrKVnxs96rtwj/kIETVF3TTB+Uv9M EodIoeBm4ey+pGpN4d6cRTXt/gAgserDqBgCEdugEsyK5gEt4SOHP7GQT3x8l/SYOS/JO1PA8jB Yl36gd/OTUifR/Qnzng5hGTC0jzbTssH68096QXZJuO3PVL1FKaT/lqtembXPfol0rAEd1vh2aI ksEGiyK/yV4zPqeo9aJdG X-Google-Smtp-Source: AGHT+IH6wzCm0v/+kLc+3PWPxJENO7hiIJij2uEkPkftn72SWsVhR29sirNlZZKGwgyfe/u82Nxmzg== X-Received: by 2002:a05:6a00:4f8c:b0:732:2484:e0ce with SMTP id d2e1a72fcca58-7490da9cd1amr32982278b3a.17.1750727945872; Mon, 23 Jun 2025 18:19:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 08/11] tcg: Split out tcg_gen_gvec_{add,sub}_var Date: Mon, 23 Jun 2025 18:18:56 -0700 Message-ID: <20250624011859.112010-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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::f2a; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728029609116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- include/tcg/tcg-op-gvec-common.h | 9 +++++++++ tcg/tcg-op-gvec.c | 32 ++++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/include/tcg/tcg-op-gvec-common.h b/include/tcg/tcg-op-gvec-com= mon.h index b2e797780d..c93d8b2356 100644 --- a/include/tcg/tcg-op-gvec-common.h +++ b/include/tcg/tcg-op-gvec-common.h @@ -296,6 +296,15 @@ void tcg_gen_gvec_neg(unsigned vece, uint32_t dofs, ui= nt32_t aofs, void tcg_gen_gvec_abs(unsigned vece, uint32_t dofs, uint32_t aofs, uint32_t oprsz, uint32_t maxsz); =20 +void tcg_gen_gvec_add_var(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, + uint32_t oprsz, uint32_t maxsz); +void tcg_gen_gvec_sub_var(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, + uint32_t oprsz, uint32_t maxsz); + void tcg_gen_gvec_add(unsigned vece, uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t oprsz, uint32_t maxsz); void tcg_gen_gvec_sub(unsigned vece, uint32_t dofs, uint32_t aofs, diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 85e1807580..9714eb902b 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -1999,8 +1999,10 @@ void tcg_gen_vec_add32_i64(TCGv_i64 d, TCGv_i64 a, T= CGv_i64 b) =20 static const TCGOpcode vecop_list_add[] =3D { INDEX_op_add_vec, 0 }; =20 -void tcg_gen_gvec_add(unsigned vece, uint32_t dofs, uint32_t aofs, - uint32_t bofs, uint32_t oprsz, uint32_t maxsz) +void tcg_gen_gvec_add_var(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, + uint32_t oprsz, uint32_t maxsz) { static const GVecGen3 g[4] =3D { { .fni8 =3D tcg_gen_vec_add8_i64, @@ -2027,7 +2029,15 @@ void tcg_gen_gvec_add(unsigned vece, uint32_t dofs, = uint32_t aofs, }; =20 tcg_debug_assert(vece <=3D MO_64); - tcg_gen_gvec_3(dofs, aofs, bofs, oprsz, maxsz, &g[vece]); + tcg_gen_gvec_3_var(dbase, dofs, abase, aofs, bbase, bofs, + oprsz, maxsz, &g[vece]); +} + +void tcg_gen_gvec_add(unsigned vece, uint32_t dofs, uint32_t aofs, + uint32_t bofs, uint32_t oprsz, uint32_t maxsz) +{ + tcg_gen_gvec_add_var(vece, tcg_env, dofs, tcg_env, aofs, tcg_env, bofs, + oprsz, maxsz); } =20 void tcg_gen_gvec_adds(unsigned vece, uint32_t dofs, uint32_t aofs, @@ -2180,8 +2190,10 @@ void tcg_gen_vec_sub32_i64(TCGv_i64 d, TCGv_i64 a, T= CGv_i64 b) tcg_temp_free_i64(t2); } =20 -void tcg_gen_gvec_sub(unsigned vece, uint32_t dofs, uint32_t aofs, - uint32_t bofs, uint32_t oprsz, uint32_t maxsz) +void tcg_gen_gvec_sub_var(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + TCGv_ptr abase, uint32_t aofs, + TCGv_ptr bbase, uint32_t bofs, + uint32_t oprsz, uint32_t maxsz) { static const GVecGen3 g[4] =3D { { .fni8 =3D tcg_gen_vec_sub8_i64, @@ -2208,7 +2220,15 @@ void tcg_gen_gvec_sub(unsigned vece, uint32_t dofs, = uint32_t aofs, }; =20 tcg_debug_assert(vece <=3D MO_64); - tcg_gen_gvec_3(dofs, aofs, bofs, oprsz, maxsz, &g[vece]); + tcg_gen_gvec_3_var(dbase, dofs, abase, aofs, bbase, bofs, + oprsz, maxsz, &g[vece]); +} + +void tcg_gen_gvec_sub(unsigned vece, uint32_t dofs, uint32_t aofs, + uint32_t bofs, uint32_t oprsz, uint32_t maxsz) +{ + tcg_gen_gvec_sub_var(vece, tcg_env, dofs, tcg_env, aofs, tcg_env, bofs, + oprsz, maxsz); } =20 static const TCGOpcode vecop_list_mul[] =3D { INDEX_op_mul_vec, 0 }; --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728028; cv=none; d=zohomail.com; s=zohoarc; b=VeZSGGUEIVUtIbARkId2+gG0eJV91hNl0nAfrpf6j1GnJH0hm4Oumr80EYovLpFHHV1Q0u3XF7I7jwv59lSeuP5evH0O8jqbda9RReRXp+6tDl4Mn6SJ+dPrzv8MA/1X6JyYyZ5rMQrvmMy4L4qq2j/8nc4Wak/G/B/sxpd/Zog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728028; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HkgZSBtedJbrmOYNbCd3Ipd1R538BuXURl0DXnFRDDk=; b=XJnfgXcbSnzvJxTlUr1y7NOG+x88MLrIVAnmUT1+TRiXgskUSI/6GiN5UOi8n7Kmi3IBctlWhzfpb1lu70SI6CE6ATHc72qsILR/xTa/jjJclb7hPhKk8HUXyIDdj06Qjcs7dH0O//HCLoHY/naYP6+bZ56DjeHHUyWAItxOeXM= 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 1750728028134950.3160794331626; Mon, 23 Jun 2025 18:20:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJf-0000ae-1J; Mon, 23 Jun 2025 21:19:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJZ-0000Yy-HQ for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:09 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJX-0005o2-UQ for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:09 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-7494999de5cso829294b3a.3 for ; Mon, 23 Jun 2025 18:19:07 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727946; x=1751332746; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HkgZSBtedJbrmOYNbCd3Ipd1R538BuXURl0DXnFRDDk=; b=SNLYE1Yv85JgCMnW7OTHSddUkcm74AC3y7xKlpSwKMg4wBrDMeUkcMvc0wH7MhtE6M UdjRyW4eHOxdaPexxRK+s6KTWo8E5e4Rrd+hXHQLv7P5tCCXLGh76gVz6P1kl6oBvrYv DJxUpavMEHcEj214gJO5R+uRpdVGbB5ZCUjXitlAiI4698wETRwYcR7VPDsqEpdcjOXo CWqX7Te8SM6q+3RaCYIVhb9iTkVzmdekRF5Gjy+HV+DIgxJhF3k+dyX22eqRtJadjaOB Y5k2MzYI2sX/GGgWaIcnOQm3CUtKV02TsqAKukfGm7uA+gVTG0nM9S+XepAbuKSeWGqO se6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727946; x=1751332746; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HkgZSBtedJbrmOYNbCd3Ipd1R538BuXURl0DXnFRDDk=; b=cpYbpgiYMnh96ActdSCsm6b8vayF4aU9ndGKJ8OshTLIhtbWpe1MQ+QPUZQfRtYFSc YAk9wiZz8qScz0UWxSIL4KMi2MWiI1BX5K20ZVr5JLF+msWLDYX4KZx1GTldoBPufGHs x3ImIXnHTCw1+BkCdSr+yt4fGP6DPd2UNjb4iChkaLSfX6BdvHKKmqPZbo/IfsX+W5Nd oYSnhRvWvRz8Y6Y4iA3q4dRteDkzFUeHec71PSquR7WAM74+au59IgU/A0EMKIVqzUzT cZlx8m5IwrlBzhnfrWn8cqHveAIZCNKY4dx0zGvYfu8PZ7FFYhFHMmneBjv4lvhpbqJo atsw== X-Gm-Message-State: AOJu0Yy5PtuMwPzE0Un3C7ANNOSTQnLQs73vMi5yB55vUaaM2EbRPaoK M7Q/y3A6MsWaei1CVqE7sL3GxjwVGYpge/it3sPKP0Upm70nXXuj7DfpQljr4vj6mhVRSMPtv2n buMuNuHg= X-Gm-Gg: ASbGnctTLMS+kEFBSY66PX/xQermFVd5p/cYQaCh5N3KiH4aVdbYrEjssEnigGvbR9U 3eS3iUyBxRU89DVqsknYvevsivmfrir4RofthBEH9cKQRZ2c0cThzqSWMhmgG1dg3YEz9oMxbjh u/NXvcTxSaENrHnomi1kZLeRoTNz/RLCzJEVRdUh60kZxrzrzSeE+pqX+G8iLynnglO2UueAEwn YZ0RCB4B2gRTj+JoV5pFvJ4LIur7HT9M+XF6RxuTrRs4XcEs39V6a7A709+NIuhljOwkLdREthi st3sATuH7H2JcCK4FAuVL+GBx2cUHni1uMwKrT9Lsi1bfaea8d9Xt0ekez/zrpvlveoyoobPzQC Xn0oy7YxGBavgLKJJySAJjlRLuODX9e0= X-Google-Smtp-Source: AGHT+IFj7Kb5nhNXNY7GQAzm6Htug+bYSR68nlKf++wI33retlEzvI50pSJsRz7r/ZLENposycYGNQ== X-Received: by 2002:aa7:88c9:0:b0:748:2e7b:3308 with SMTP id d2e1a72fcca58-7490d764201mr21336793b3a.6.1750727946532; Mon, 23 Jun 2025 18:19:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 09/11] tcg: Split out tcg_gen_gvec_dup_imm_var Date: Mon, 23 Jun 2025 18:18:57 -0700 Message-ID: <20250624011859.112010-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728029460116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- include/tcg/tcg-op-gvec-common.h | 3 +++ tcg/tcg-op-gvec.c | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/tcg/tcg-op-gvec-common.h b/include/tcg/tcg-op-gvec-com= mon.h index c93d8b2356..ea0c87f4db 100644 --- a/include/tcg/tcg-op-gvec-common.h +++ b/include/tcg/tcg-op-gvec-common.h @@ -386,6 +386,9 @@ void tcg_gen_gvec_dup_i32(unsigned vece, uint32_t dofs,= uint32_t s, void tcg_gen_gvec_dup_i64(unsigned vece, uint32_t dofs, uint32_t s, uint32_t m, TCGv_i64); =20 +void tcg_gen_gvec_dup_imm_var(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + uint32_t oprsz, uint32_t maxsz, uint64_t imm= ); + void tcg_gen_gvec_shli(unsigned vece, uint32_t dofs, uint32_t aofs, int64_t shift, uint32_t oprsz, uint32_t maxsz); void tcg_gen_gvec_shri(unsigned vece, uint32_t dofs, uint32_t aofs, diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 9714eb902b..2d184547ba 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -1897,11 +1897,17 @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t d= ofs, uint32_t aofs, } } =20 +void tcg_gen_gvec_dup_imm_var(unsigned vece, TCGv_ptr dbase, uint32_t dofs, + uint32_t oprsz, uint32_t maxsz, uint64_t x) +{ + check_size_align(oprsz, maxsz, dofs); + do_dup(vece, dbase, dofs, oprsz, maxsz, NULL, NULL, x); +} + void tcg_gen_gvec_dup_imm(unsigned vece, uint32_t dofs, uint32_t oprsz, uint32_t maxsz, uint64_t x) { - check_size_align(oprsz, maxsz, dofs); - do_dup(vece, tcg_env, dofs, oprsz, maxsz, NULL, NULL, x); + tcg_gen_gvec_dup_imm_var(vece, tcg_env, dofs, oprsz, maxsz, x); } =20 void tcg_gen_gvec_not(unsigned vece, uint32_t dofs, uint32_t aofs, --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728048; cv=none; d=zohomail.com; s=zohoarc; b=Y1izFyl/fOcuShoPVRb2bHRmmB6cvSqOfxaKwKIMvx3Qj3HsK/WvvW37aIUb3PwOwK7lfMbk1jUAuBZ6iB2S4fAjlmvxjtf+vf+l1oFAqgx+mtcuMDjlUxmXDF6ZlITbH3oRN46UikTKe1UAQQhkms8G4hPGMfQ0Dcz79AbsBGk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728048; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iw3Inm/qmovJ+SsJA+SUz5rt3h/FMqvN9mRE2hwkWpQ=; b=V9b84Sj9OjneaNzJNLfiPCFH2OZy147eu40p4d9TCbsfAs4X0bqoGJkWHCSIB/wUUed6rvhnbf7WiHcX1alAUhHYhi/3Mclpek0fbQIqu/TbZNiZKoDczAZOir+0aHe9YgkgUmxjVfqelSWzW2DPv2WLQKVgrN05noSstqhV+yg= 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 1750728048518683.3253407386458; Mon, 23 Jun 2025 18:20:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJb-0000Zw-OF; Mon, 23 Jun 2025 21:19:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJa-0000ZW-L2 for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:10 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJY-0005oA-Ky for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:10 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-7481600130eso6024549b3a.3 for ; Mon, 23 Jun 2025 18:19:08 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727947; x=1751332747; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iw3Inm/qmovJ+SsJA+SUz5rt3h/FMqvN9mRE2hwkWpQ=; b=EWXMcFGkcNNaCI31ADo1d5MfnK/tEB0VBylecRVFDOykZk66KDMhpV5R8Bk83yACKt nOm+PRWYxijMAPgRqSs0GeNgj5/eGqkxXvP9QZS0Zs8OAy41DwDMTQpM2zkozJI2ALXw dCNCvpuTJb/UrlSe5ktr5pYtHDvGmfmiJnrwFxEMLdnThCbIjJJ0K0VPr0REBZHLZs/l soAhCt9LyDBwfLDYjEdTIVaH6Xeq8Rk/Yz2r+sAVxQL1l8WPiw1a7TZqJkwx++RT0sg1 L6u65rj9+///ipGN8NPvBrdQLCA0kARfJvcIBHUcBB3Gy4P6RFUwBJLj5/kaGePdrf4j 8WFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727947; x=1751332747; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iw3Inm/qmovJ+SsJA+SUz5rt3h/FMqvN9mRE2hwkWpQ=; b=h25KtFnnbbI5LugUK/a5uIy7fn8sxW5Z2Gv1OnxJkV/o4pIJBIFS/SDn/jTEmIcqBS 7gJOk5aoekt+feOvwl5IdgC0q3PPNWBba6VypFXuuKfqy3Iw7j0nJPBqr0dEdaA+CJJ8 k6fZ2PwDNhDRk7GEzz+B0qIdbpWZ9/EBKgTLctBIsBGPOUiICr+VR5+09mdlI256Qtfw s0xl2be/UEiZKaMoTmuh0MHKXHTXCZgATSz0KhuTSkRl1xLU3ZkvmGszHKwboffVJUs8 3KwrpyW049qPl72DN8LjqmeedfmdQdoJw9MbyRH9ZIJGS2c6Ec9I7sXuxBGkDx2zGxe/ IeIQ== X-Gm-Message-State: AOJu0YyOmwJIeRAT+NRK6aJPf48Hn3CB9/txlrClqiOZa+KdffEoynrK ASwmtdoYRgQsLJY5N9lupL0saXoM06BUNFjJWZyL5SShpw3gDTc8mCyJ5B3yRWean5pZRxDPE1P x8hhMClI= X-Gm-Gg: ASbGncvavR0wfDIKuAVEQRos396482MFMgun8wV06yrFVi2BbbJToklQBsvXU8aR8X+ QosoKUsyHLQWWT3heZZPwzDwm/XM8xkIyCLmk/zUzxMGfl2vsCVvimXvU9LievncSEeRJ+Xaj6M e3GLp49ViQ5+TOtKlfBtgwfISSuLj9GxDp0iJL4KaI3s0Kmr4ezut6DHYTxRH8iTSvqVoEyyhh9 RK0jj/MvMD98XjGY5K/9BaiHxwm/BHFiz9LjI2f9sI1Xw7rLRBmWm8dRKobCgYKeatI5rrlnpQw m1+1ig7RmrEgC+rfMGvd6rDSZXWHAbYmYt3dQkBhGzFdk9OD2baPto/qBuLgRqomkS2Ado8+Y3t kl/mvmb8Hox5s4OhtMrc0 X-Google-Smtp-Source: AGHT+IFU+HaEQafWqUV3Eplay7FIHUvYyV1BcdtXVUMlGnqs5yQ2GYMKc5wf0KYTyHRYnfqkL1pk+g== X-Received: by 2002:a05:6a20:5481:b0:1f5:9024:3254 with SMTP id adf61e73a8af0-22026e13463mr24798394637.6.1750727947131; Mon, 23 Jun 2025 18:19:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Peter Maydell Subject: [PULL 10/11] linux-user/aarch64: Update hwcap bits from 6.14 Date: Mon, 23 Jun 2025 18:18:58 -0700 Message-ID: <20250624011859.112010-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728049951116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/elfload.c | 75 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 82ebf6a212..2add1665c7 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -751,7 +751,23 @@ enum { ARM_HWCAP_A64_SSBS =3D 1 << 28, ARM_HWCAP_A64_SB =3D 1 << 29, ARM_HWCAP_A64_PACA =3D 1 << 30, - ARM_HWCAP_A64_PACG =3D 1UL << 31, + ARM_HWCAP_A64_PACG =3D 1ULL << 31, + ARM_HWCAP_A64_GCS =3D 1ULL << 32, + ARM_HWCAP_A64_CMPBR =3D 1ULL << 33, + ARM_HWCAP_A64_FPRCVT =3D 1ULL << 34, + ARM_HWCAP_A64_F8MM8 =3D 1ULL << 35, + ARM_HWCAP_A64_F8MM4 =3D 1ULL << 36, + ARM_HWCAP_A64_SVE_F16MM =3D 1ULL << 37, + ARM_HWCAP_A64_SVE_ELTPERM =3D 1ULL << 38, + ARM_HWCAP_A64_SVE_AES2 =3D 1ULL << 39, + ARM_HWCAP_A64_SVE_BFSCALE =3D 1ULL << 40, + ARM_HWCAP_A64_SVE2P2 =3D 1ULL << 41, + ARM_HWCAP_A64_SME2P2 =3D 1ULL << 42, + ARM_HWCAP_A64_SME_SBITPERM =3D 1ULL << 43, + ARM_HWCAP_A64_SME_AES =3D 1ULL << 44, + ARM_HWCAP_A64_SME_SFEXPA =3D 1ULL << 45, + ARM_HWCAP_A64_SME_STMOP =3D 1ULL << 46, + ARM_HWCAP_A64_SME_SMOP4 =3D 1ULL << 47, =20 ARM_HWCAP2_A64_DCPODP =3D 1 << 0, ARM_HWCAP2_A64_SVE2 =3D 1 << 1, @@ -798,6 +814,25 @@ enum { ARM_HWCAP2_A64_SME_F16F16 =3D 1ULL << 42, ARM_HWCAP2_A64_MOPS =3D 1ULL << 43, ARM_HWCAP2_A64_HBC =3D 1ULL << 44, + ARM_HWCAP2_A64_SVE_B16B16 =3D 1ULL << 45, + ARM_HWCAP2_A64_LRCPC3 =3D 1ULL << 46, + ARM_HWCAP2_A64_LSE128 =3D 1ULL << 47, + ARM_HWCAP2_A64_FPMR =3D 1ULL << 48, + ARM_HWCAP2_A64_LUT =3D 1ULL << 49, + ARM_HWCAP2_A64_FAMINMAX =3D 1ULL << 50, + ARM_HWCAP2_A64_F8CVT =3D 1ULL << 51, + ARM_HWCAP2_A64_F8FMA =3D 1ULL << 52, + ARM_HWCAP2_A64_F8DP4 =3D 1ULL << 53, + ARM_HWCAP2_A64_F8DP2 =3D 1ULL << 54, + ARM_HWCAP2_A64_F8E4M3 =3D 1ULL << 55, + ARM_HWCAP2_A64_F8E5M2 =3D 1ULL << 56, + ARM_HWCAP2_A64_SME_LUTV2 =3D 1ULL << 57, + ARM_HWCAP2_A64_SME_F8F16 =3D 1ULL << 58, + ARM_HWCAP2_A64_SME_F8F32 =3D 1ULL << 59, + ARM_HWCAP2_A64_SME_SF8FMA =3D 1ULL << 60, + ARM_HWCAP2_A64_SME_SF8DP4 =3D 1ULL << 61, + ARM_HWCAP2_A64_SME_SF8DP2 =3D 1ULL << 62, + ARM_HWCAP2_A64_POE =3D 1ULL << 63, }; =20 #define ELF_HWCAP get_elf_hwcap() @@ -886,7 +921,7 @@ uint64_t get_elf_hwcap2(void) =20 const char *elf_hwcap_str(uint32_t bit) { - static const char *hwcap_str[] =3D { + static const char * const hwcap_str[] =3D { [__builtin_ctz(ARM_HWCAP_A64_FP )] =3D "fp", [__builtin_ctz(ARM_HWCAP_A64_ASIMD )] =3D "asimd", [__builtin_ctz(ARM_HWCAP_A64_EVTSTRM )] =3D "evtstrm", @@ -919,6 +954,22 @@ const char *elf_hwcap_str(uint32_t bit) [__builtin_ctz(ARM_HWCAP_A64_SB )] =3D "sb", [__builtin_ctz(ARM_HWCAP_A64_PACA )] =3D "paca", [__builtin_ctz(ARM_HWCAP_A64_PACG )] =3D "pacg", + [__builtin_ctzll(ARM_HWCAP_A64_GCS )] =3D "gcs", + [__builtin_ctzll(ARM_HWCAP_A64_CMPBR )] =3D "cmpbr", + [__builtin_ctzll(ARM_HWCAP_A64_FPRCVT)] =3D "fprcvt", + [__builtin_ctzll(ARM_HWCAP_A64_F8MM8 )] =3D "f8mm8", + [__builtin_ctzll(ARM_HWCAP_A64_F8MM4 )] =3D "f8mm4", + [__builtin_ctzll(ARM_HWCAP_A64_SVE_F16MM)] =3D "svef16mm", + [__builtin_ctzll(ARM_HWCAP_A64_SVE_ELTPERM)] =3D "sveeltperm", + [__builtin_ctzll(ARM_HWCAP_A64_SVE_AES2)] =3D "sveaes2", + [__builtin_ctzll(ARM_HWCAP_A64_SVE_BFSCALE)] =3D "svebfscale", + [__builtin_ctzll(ARM_HWCAP_A64_SVE2P2)] =3D "sve2p2", + [__builtin_ctzll(ARM_HWCAP_A64_SME2P2)] =3D "sme2p2", + [__builtin_ctzll(ARM_HWCAP_A64_SME_SBITPERM)] =3D "smesbitperm", + [__builtin_ctzll(ARM_HWCAP_A64_SME_AES)] =3D "smeaes", + [__builtin_ctzll(ARM_HWCAP_A64_SME_SFEXPA)] =3D "smesfexpa", + [__builtin_ctzll(ARM_HWCAP_A64_SME_STMOP)] =3D "smestmop", + [__builtin_ctzll(ARM_HWCAP_A64_SME_SMOP4)] =3D "smesmop4", }; =20 return bit < ARRAY_SIZE(hwcap_str) ? hwcap_str[bit] : NULL; @@ -926,7 +977,7 @@ const char *elf_hwcap_str(uint32_t bit) =20 const char *elf_hwcap2_str(uint32_t bit) { - static const char *hwcap_str[] =3D { + static const char * const hwcap_str[] =3D { [__builtin_ctz(ARM_HWCAP2_A64_DCPODP )] =3D "dcpodp", [__builtin_ctz(ARM_HWCAP2_A64_SVE2 )] =3D "sve2", [__builtin_ctz(ARM_HWCAP2_A64_SVEAES )] =3D "sveaes", @@ -972,6 +1023,24 @@ const char *elf_hwcap2_str(uint32_t bit) [__builtin_ctzll(ARM_HWCAP2_A64_SME_F16F16 )] =3D "smef16f16", [__builtin_ctzll(ARM_HWCAP2_A64_MOPS )] =3D "mops", [__builtin_ctzll(ARM_HWCAP2_A64_HBC )] =3D "hbc", + [__builtin_ctzll(ARM_HWCAP2_A64_SVE_B16B16 )] =3D "sveb16b16", + [__builtin_ctzll(ARM_HWCAP2_A64_LRCPC3 )] =3D "lrcpc3", + [__builtin_ctzll(ARM_HWCAP2_A64_LSE128 )] =3D "lse128", + [__builtin_ctzll(ARM_HWCAP2_A64_FPMR )] =3D "fpmr", + [__builtin_ctzll(ARM_HWCAP2_A64_LUT )] =3D "lut", + [__builtin_ctzll(ARM_HWCAP2_A64_FAMINMAX )] =3D "faminmax", + [__builtin_ctzll(ARM_HWCAP2_A64_F8CVT )] =3D "f8cvt", + [__builtin_ctzll(ARM_HWCAP2_A64_F8FMA )] =3D "f8fma", + [__builtin_ctzll(ARM_HWCAP2_A64_F8DP4 )] =3D "f8dp4", + [__builtin_ctzll(ARM_HWCAP2_A64_F8DP2 )] =3D "f8dp2", + [__builtin_ctzll(ARM_HWCAP2_A64_F8E4M3 )] =3D "f8e4m3", + [__builtin_ctzll(ARM_HWCAP2_A64_F8E5M2 )] =3D "f8e5m2", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_LUTV2 )] =3D "smelutv2", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_F8F16 )] =3D "smef8f16", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_F8F32 )] =3D "smef8f32", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_SF8DP4 )] =3D "smesf8dp4", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_SF8DP2 )] =3D "smesf8dp2", + [__builtin_ctzll(ARM_HWCAP2_A64_POE )] =3D "poe", }; =20 return bit < ARRAY_SIZE(hwcap_str) ? hwcap_str[bit] : NULL; --=20 2.43.0 From nobody Sat Nov 15 14:49:50 2025 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=1750728069; cv=none; d=zohomail.com; s=zohoarc; b=j1aDxAB5bz++4xC63YcNkHyMYMeXSzCoxmevchwZQx7HPZz8hiPKQPVSrDtbeS3GB8AsKXOIdzZW4WLdszDLfMLR04c8fqqHMISYgJPKAUlxhUc5b/yeJIE1MBc15BB4Kgu4ZTnVPz4bvzfgRZsGPsH7mHolAwjTGRDzuEZMdxY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750728069; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=S67UPro4B0nfkkspRfqxPQxazBoANRUB0NMG6SLVuGQ=; b=YaAAipDc7mN/BT1bt7g5DdqQkMu8W0Qau452KhyEJLHQ1gZt0Avbq8/iLq83e4a93NnDSXc3NRRm5WZI5oy7LK0O4mX/Y+15wysfWV9KBE25g1Rp5HPeozrbBIUK26V6EIuv3SJhpaSojXq7UL2Arx2gcDBgIttKt6gpm6ithbo= 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 1750728069501777.1328464356545; Mon, 23 Jun 2025 18:21:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uTsJd-0000aS-3o; Mon, 23 Jun 2025 21:19:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uTsJb-0000Zg-2E for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:11 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uTsJZ-0005oQ-5P for qemu-devel@nongnu.org; Mon, 23 Jun 2025 21:19:10 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-748e63d4b05so2865456b3a.2 for ; Mon, 23 Jun 2025 18:19:08 -0700 (PDT) Received: from stoup.. (174-21-67-243.tukw.qwest.net. [174.21.67.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-749b5e08d28sm412080b3a.28.2025.06.23.18.19.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jun 2025 18:19:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1750727948; x=1751332748; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S67UPro4B0nfkkspRfqxPQxazBoANRUB0NMG6SLVuGQ=; b=QPDpfX1FbhXmP9aSRhm1ciHrMvAK1g4vjyvnxZeTfxjTtVVxJdFlzVbHZkJIGLDMc2 55Em3MDTx+O/sO/2sbXWyXwUXwQ9oCSTPjBoiHSrcOLlLMbFuX8cx33QgE801nyQ2Ubw Li9xAZj2UVKTCA7B7LsxvxarxOcum2C+f6j9NU9LUZFZYgGCAF+GGQISgDjkeVZ6uOZQ fwoMkhLBoLBML3Z9bogg6R6TAuxy8OVvxQWASbzlC/1Kd9Ij9qXTUyi0Is2hEthFSnEe DpEUzZYigj2PXfBKBVRHgenNR/+RyznBcfyll2/bK2JEq+8B1ncsD2Sq8KE4k3eIcB9d tHKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750727948; x=1751332748; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S67UPro4B0nfkkspRfqxPQxazBoANRUB0NMG6SLVuGQ=; b=TYSXEZj77FhY/UlKoa9xOgbON69zi1RpGupXMWy0rhx2z9Lj018j1en60m488f8dXx D18T/oBhDW6UZ42QzZt+LCBHYtD4BkcpAtokaULMRPHTxbUEK3V6P5zeWyL0HeFrvDCQ 5PuWGc8Iu735pGIQwAIJZ7H60q7D2wbiTVejmP5LAEYveM4AsrVG7pRvVjchifX3xG7X 4IRw1regDvuyPJMgGJFWtTuvLGI0U0NyRV6WYGGHoRJQZ5lXQG/FkyYiHl1dTZSrm7Hx 2/fWoRgXEPx5RiiXx4XT9ZuIU4rGzt1ywVy5SFUEDlYgLM5ccv+MmB2SGXz3vJn/hi+t pDvw== X-Gm-Message-State: AOJu0YwSaERfYIXV9hmB3mu+dIatB8H11zw0SI1Ym3URsXPP1pzgF4x5 B7IlnvbNXzPhCbbe8yUkJtMQNpCVf7Az7v0scuAS5QxTHkUjVqhAkCZsNyujmzkRSsw4iuwxnjk greoEz2U= X-Gm-Gg: ASbGncsEvq30ofkOe7/729hg7vjx3+DtcPHDkwPdM8jxYLyVts4s+bLrsrzqq48oyzk xMRV36keo8tX35ijZ3Qmdy0aldyJkelJq5dIJu0jeJgKcYWN9s7s/fjGZ/g4iqv4s/i1myupWlo VBjKKaaeW1MDG3jf6f+mAKlIo7pVXEpn+k4tRZRySQ/p+8d7LQWOY9fhVKN+dt5EpP/4+nv8I89 idtLrjUMKsBmHb0mupF1jWLPtAUMwTisuVyO4gAr9zc+m8eZgJnOfriIYYexhh06jkRNN26F86r uhx8vd528zw2EQZRe5zrzsViDrCC6/27P8M0sBKJHdMFdfniFL4c1orySGBWw8x7y6Z8STqWVC2 X7alnpjBV4tFHifrdDumwJwhCRPWB0r4= X-Google-Smtp-Source: AGHT+IHtS89juOAlQwcnBgeZqKXlipsFgYQfCM/rE6p999D0zkGNSwWxu9gr+ThmamkKR7ZMTK01Uw== X-Received: by 2002:a05:6a00:1903:b0:748:f1ba:9b0d with SMTP id d2e1a72fcca58-7490d6fae3bmr20331243b3a.11.1750727947726; Mon, 23 Jun 2025 18:19:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Arusekk Subject: [PULL 11/11] linux-user: fix resource leaks in gen-vdso Date: Mon, 23 Jun 2025 18:18:59 -0700 Message-ID: <20250624011859.112010-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624011859.112010-1-richard.henderson@linaro.org> References: <20250624011859.112010-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1750728070852116600 From: Daniel P. Berrang=C3=A9 There are a number of resource leaks in gen-vdso. In theory they are harmless because this is a short lived process, but when building QEMU with --extra-cflags=3D"-fsanitize=3Daddress" problems ensure. The gen-vdso program is run as part of the build, and that aborts due to the sanitizer identifying memory leaks, leaving QEMU unbuildable. FAILED: libqemu-x86_64-linux-user.a.p/vdso.c.inc /var/home/berrange/src/virt/qemu/build/linux-user/gen-vdso -o libqemu-x86_6= 4-linux-user.a.p/vdso.c.inc ../linux-user/x86_64/vdso.so =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D1696332=3D=3DERROR: LeakSanitizer: detected memory leaks Direct leak of 2968 byte(s) in 1 object(s) allocated from: #0 0x56495873f1f3 (/var/home/berrange/src/virt/qemu/build/linux-user/g= en-vdso+0xa11f3) (BuildId: b69e241ad44719b6f3934f3c71dfc6727e8bdb12) #1 0x564958780b90 (/var/home/berrange/src/virt/qemu/build/linux-user/g= en-vdso+0xe2b90) (BuildId: b69e241ad44719b6f3934f3c71dfc6727e8bdb12) This complaint is about the 'buf' variable, however, the FILE objects are also leaked in some error scenarios, so this fix refactors the cleanup paths to fix all leaks. For completeness it also reports an error if fclose() fails on 'inf'. Signed-off-by: Daniel P. Berrang=C3=A9 Tested-by: Arusekk Signed-off-by: Richard Henderson Message-ID: <20250513150346.1328217-1-berrange@redhat.com> --- linux-user/gen-vdso.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/linux-user/gen-vdso.c b/linux-user/gen-vdso.c index 721f38d5a3..fce9d5cbc3 100644 --- a/linux-user/gen-vdso.c +++ b/linux-user/gen-vdso.c @@ -56,13 +56,14 @@ static unsigned rt_sigreturn_addr; =20 int main(int argc, char **argv) { - FILE *inf, *outf; + FILE *inf =3D NULL, *outf =3D NULL; long total_len; const char *prefix =3D "vdso"; const char *inf_name; const char *outf_name =3D NULL; - unsigned char *buf; + unsigned char *buf =3D NULL; bool need_bswap; + int ret =3D EXIT_FAILURE; =20 while (1) { int opt =3D getopt(argc, argv, "o:p:r:s:"); @@ -129,7 +130,6 @@ int main(int argc, char **argv) fprintf(stderr, "%s: incomplete read\n", inf_name); return EXIT_FAILURE; } - fclose(inf); =20 /* * Identify which elf flavor we're processing. @@ -205,19 +205,24 @@ int main(int argc, char **argv) fprintf(outf, " .rt_sigreturn_ofs =3D 0x%x,\n", rt_sigreturn_addr); fprintf(outf, "};\n"); =20 - /* - * Everything should have gone well. - */ - if (fclose(outf)) { - goto perror_outf; + ret =3D EXIT_SUCCESS; + + cleanup: + free(buf); + + if (outf && fclose(outf) !=3D 0) { + ret =3D EXIT_FAILURE; } - return EXIT_SUCCESS; + if (inf && fclose(inf) !=3D 0) { + ret =3D EXIT_FAILURE; + } + return ret; =20 perror_inf: perror(inf_name); - return EXIT_FAILURE; + goto cleanup; =20 perror_outf: perror(outf_name); - return EXIT_FAILURE; + goto cleanup; } --=20 2.43.0