From patchwork Tue Jun 24 01:18:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899446 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120462wrm; Mon, 23 Jun 2025 18:20:35 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVdAQpHTrkVw451ryBAhn6H7zX8kGm3Q8B9+0ubgxTuRMpUol+gMtz47MJZ2Zy80RkRxCwEgw==@linaro.org X-Google-Smtp-Source: AGHT+IGt7j+/VXXE1YGlkN3856p7N6jed5duhCf+cEMuQZtUOG5oDj0LUZS1KEFlvJfBerrZWy6e X-Received: by 2002:a05:622a:18aa:b0:4a7:18aa:121b with SMTP id d75a77b69052e-4a77a20d363mr241444501cf.20.1750728035518; Mon, 23 Jun 2025 18:20:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728035; cv=none; d=google.com; s=arc-20240605; b=emGKu124uDXhzzppd/OVr0S+KrZG3ELVTDvTynOjhNP3DEAHo+/i82NkIPfar3UTZQ rNtpNJa5hMK2aIEESnLr4MdBbAyENzljZznnH4lSZlW/ydxyZeUFXTiRPkYla2DE+LV7 jz0gMQXhuyNzDp3q/+wnRxduIWJd3ws9673Y6NdvymFyjbZjTsgyuOPDUoxl759rpB57 s2YeeeLSTFuBx6X/DEuOtveUMMXRz1EQ8Zn60o/3EaKB8nX9tOVVAUvLNiKWV3ElpCt3 EisyCouGAuaUa1geQQFQiASxG749I7jRnDb9imtdSejSiIDz9vQarEYGhaKOj4xoWpmK +nDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=iPdTg3mTyrHOh2KwK9/hiLGU0SNJfuYE0WsynkUI5MU=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=A7NqGzcvTUfWkNCx9Z4I4lUGeC6xmb0/IKaAKNOW5BaIAjqFMf3hmhn7UNZdatidMC TjJ76gwkZm07xDep6/KTU16LhwIU4RKAjcKDhmyz1XeSxOq+fcWdg0acEhMjFIfj9MSM bnaWdcA0H52mpCuEm8DKF1dTjt+QKuxVV1HGwOKEpSup5dRADYaS4M4oehnoL9QyXgfW rzi/EbwpQLLEh9tz1wcNDgaPKe42u5C3xWESG4TTI7fI/V/aUKM4Ac9FII9FtUcrfklM 7FXBRFf3w4eMHU3QPaUAs6GVIJMGwxSxtH9lwmXnkiJ8NcS2/sWgoQKCr0io36DO8FZr 1YRA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xlXwoHnK; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4a77a0cea8esi95434091cf.445.2025.06.23.18.20.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:20:35 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xlXwoHnK; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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; } -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 = 0; @@ -496,7 +496,7 @@ static void do_dup_store(TCGType type, uint32_t dofs, uint32_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 += 8; } @@ -508,17 +508,17 @@ static void do_dup_store(TCGType type, uint32_t dofs, uint32_t oprsz, * that e.g. size == 80 would be expanded with 2x32 + 1x16. */ for (; i + 32 <= oprsz; i += 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 <= oprsz; i += 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 += 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; } @@ -1731,7 +1731,7 @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dofs, uint32_t aofs, if (type != 0) { TCGv_vec t_vec = 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 <= MO_32) { TCGv_i32 in = tcg_temp_ebb_new_i32(); switch (vece) { From patchwork Tue Jun 24 01:18:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899440 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120417wrm; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXLt3aMcsGoEGkoUj3/1g8auLxAkoBlnDwb6gj8wNawlVgeYg6nxPabpn9zXpCKetNkfjO9lw==@linaro.org X-Google-Smtp-Source: AGHT+IG4r6Ri8gg5g38fVT4u30QC771N5c0sWbpiYGytG6/7Y14LnUTE2GBOaok6VcO0PjIhaTvU X-Received: by 2002:a05:622a:64b:b0:4a4:3913:c1a5 with SMTP id d75a77b69052e-4a77a207d55mr257570641cf.16.1750728027361; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728027; cv=none; d=google.com; s=arc-20240605; b=B6l3x6s3CTRLIMNsZmKm/e4JbAZ9SHPOlU8wuB2/vk87KnHRPy4bxMqPGJlhwuWQE6 lYfpdmUp0W4Yac0kJrdHc8pWJMWggNlqHaNFP17f9u87LLWJA2BkVqTdACK80z0CaBDB kTfaG3/DZB9x5NncJODyWQwlR75HEuPdT9ZPr6otPelxi4M6riu2vhs/HPPWnRuO9VUu JqvPW++96G/aEx74Km6T6PmL1kg1dvK5vbCHIkjEvqTZMBAJJcUJzG6rQ41ynHrxlpt5 fPFz5IeNeFHeK/DWSX2SSMLyLdhDy9ZcAtCTr272rYhG0S3J5BX1xN2WXUOcg8LrCAK3 sUaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nMQJXl2PRvKJ1Yoqc6SMhgXR/CsZqd9Hm7ziqyjccoM=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=VCDwDqqhioyLx3gBR8kDQDV5yY7fdNxb3trFHqZvwBAmHLR3Jhyn9WTYEI+LmReeKK ZOIHA4fMwyNHhDyZm4lmyL+xLCqwfBn0XxFtKeVfngDL6o5xzJ+9/uSUP++QoW8MLfuK Ba2doBNkpd3jrxl1FSrAlKkzzqLr69fS/i/7Cisk7UysCTSy427UhSril0aqoaK8Ha1i 1TNGVhsPoq89aR7JfO1zFS4pZgE4PjCwEx8IX7Z1WsrfcWgkw2VJocRvyk/kUz/hsblT +CdnCmpn6katlDUwXkK52qx1QnW5tQWECpnuuU29bLsqmctS65w8+ry2JwPgvRXO2g0s EaRQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PGGiJ+uc; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4a77a0d741dsi92615651cf.540.2025.06.23.18.20.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PGGiJ+uc; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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, } } -/* 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; } @@ -618,14 +619,14 @@ static void do_dup(unsigned vece, uint32_t dofs, uint32_t oprsz, /* Implement inline if we picked an implementation size above. */ if (t_32) { for (i = 0; i < oprsz; i += 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 = 0; i < oprsz; i += 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, /* Otherwise implement out of line. */ t_ptr = tcg_temp_ebb_new_ptr(); - tcg_gen_addi_ptr(t_ptr, tcg_env, dofs); + tcg_gen_addi_ptr(t_ptr, dbase, dofs); /* * 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); } /* 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 dofs, uint32_t oprsz, { check_size_align(oprsz, maxsz, dofs); tcg_debug_assert(vece <= MO_32); - do_dup(vece, dofs, oprsz, maxsz, in, NULL, 0); + do_dup(vece, tcg_env, dofs, oprsz, maxsz, in, NULL, 0); } 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 dofs, uint32_t oprsz, { check_size_align(oprsz, maxsz, dofs); tcg_debug_assert(vece <= MO_64); - do_dup(vece, dofs, oprsz, maxsz, NULL, in, 0); + do_dup(vece, tcg_env, dofs, oprsz, maxsz, NULL, in, 0); } 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 dofs, 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 = 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 == 4) { @@ -1833,7 +1834,7 @@ 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, dofs, oprsz, maxsz, NULL, NULL, x); + do_dup(vece, tcg_env, dofs, oprsz, maxsz, NULL, NULL, x); } 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, uint32_t dofs, check_overlap_3(dofs, aofs, bofs, maxsz); if (cond == TCG_COND_NEVER || cond == TCG_COND_ALWAYS) { - do_dup(MO_8, dofs, oprsz, maxsz, + do_dup(MO_8, tcg_env, dofs, oprsz, maxsz, NULL, NULL, -(cond == TCG_COND_ALWAYS)); return; } @@ -3892,7 +3893,7 @@ void tcg_gen_gvec_cmps(TCGCond cond, unsigned vece, uint32_t dofs, check_overlap_2(dofs, aofs, maxsz); if (cond == TCG_COND_NEVER || cond == TCG_COND_ALWAYS) { - do_dup(MO_8, dofs, oprsz, maxsz, + do_dup(MO_8, tcg_env, dofs, oprsz, maxsz, NULL, NULL, -(cond == TCG_COND_ALWAYS)); return; } From patchwork Tue Jun 24 01:18:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899443 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120426wrm; Mon, 23 Jun 2025 18:20:28 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU5TE/F+Gxy81aZu7vUlzVfPS/NyvCPlbwrsSUaQvVK+LjyNw31qSeJ30HbsY4dksPodrbPhw==@linaro.org X-Google-Smtp-Source: AGHT+IGe8S6nJMpZ+Nyyh30L+jfV2Llxd784iVmN4xZkG9twqv3CLIfaVNgigig8ck7tXDGLXTCZ X-Received: by 2002:a05:622a:50c:b0:4a7:6586:8e5 with SMTP id d75a77b69052e-4a77a2709edmr227978521cf.40.1750728027766; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728027; cv=none; d=google.com; s=arc-20240605; b=XNy8QRySr9lkPra737mIqn4LSUx4ub1wGhQYnlIV1TvxPBDSvM6aJUQNWVy4B/bokq RVUrX8U6jqPP4T+Rs2TV2QpqGNpp6I9hObKYwO+PTQt4PbMFV0WcxRKv5QiqrH437Owg Xvz/bSLCphJCM59iifsgwm1lhP6FSQDzjk+Cixe1+FK7nvK4m5JDjeQ0SmPYHW7qyexw dqWkcYE+knLBDfouj0ZjuSKlJSCwZzL04lo62UyWWoZVt6XgCokhzz/02IxMbi0KabKH 0F+ObFHtxm++SnpYhd6u6fbvy+gMHlNZF0zwwbSg4WuL6ZTT1DW5K0O+lfph+NUYK826 jB6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=pmYH1WddXU4bWR5PssEGHGwYJIjgJGXWoY5n/9icTwA=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=GvuZfgEHFdai/cOdGcyBUYrmE6o/XpOuVgdvR1XGtTnELjpw8QSBg9DsK9+F0mgKrk F1hGfRPHLTchWQYlg6V0cC9eqV8ZaK848DSUk1PoyRYQtHCkOka9SYl6TGHNtTYJYrNc kiPkzbR0Piof6qJbBK57Uv2HofjVK3KCjyvvqFhLF8/Num8NAUrvwWI7lhkT36zGYcVR 0c1sklV+/s+17plt8I1rGWU0ajAm24Eh2kHM+Aj5UVb/TyioydpcN3QU3sy+K+212s6F KbxFaTXd5uRvfH3m6SJ7/bACmwkXfsU5xHXsYgpgSkCwdbKNJ97+zZV0L2nbm21O8RRE B4hQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jABvRRjU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4a77a0b2d18si90075031cf.374.2025.06.23.18.20.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jABvRRjU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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, uint32_t lnsz) return q <= MAX_UNROLL; } -static void expand_clr(uint32_t dofs, uint32_t maxsz); +static void expand_clr(TCGv_ptr dbase, uint32_t dofs, uint32_t maxsz); /* 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, } if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(dbase, dofs + oprsz, maxsz - oprsz); } } @@ -704,14 +704,14 @@ static void do_dup(unsigned vece, TCGv_ptr dbase, uint32_t dofs, done: if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(dbase, dofs + oprsz, maxsz - oprsz); } } /* 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); } /* 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); if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } @@ -1325,7 +1325,7 @@ void tcg_gen_gvec_2i(uint32_t dofs, uint32_t aofs, uint32_t oprsz, tcg_swap_vecop_list(hold_list); if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } @@ -1402,7 +1402,7 @@ void tcg_gen_gvec_2s(uint32_t dofs, uint32_t aofs, uint32_t oprsz, } if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } @@ -1468,7 +1468,7 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, tcg_swap_vecop_list(hold_list); if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } @@ -1537,7 +1537,7 @@ void tcg_gen_gvec_3i(uint32_t dofs, uint32_t aofs, uint32_t bofs, tcg_swap_vecop_list(hold_list); if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } @@ -1606,7 +1606,7 @@ void tcg_gen_gvec_4(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t cofs, tcg_swap_vecop_list(hold_list); if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } @@ -1675,7 +1675,7 @@ void tcg_gen_gvec_4i(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t cofs, tcg_swap_vecop_list(hold_list); if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } @@ -1702,7 +1702,7 @@ void tcg_gen_gvec_mov(unsigned vece, uint32_t dofs, uint32_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 dofs, 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 == 5) { /* 256-bit duplicate. */ @@ -1823,7 +1823,7 @@ void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dofs, 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, clear_tail: if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } @@ -3835,7 +3835,7 @@ void tcg_gen_gvec_cmp(TCGCond cond, unsigned vece, uint32_t dofs, tcg_swap_vecop_list(hold_list); if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } @@ -3976,7 +3976,7 @@ void tcg_gen_gvec_cmps(TCGCond cond, unsigned vece, uint32_t dofs, } if (oprsz < maxsz) { - expand_clr(dofs + oprsz, maxsz - oprsz); + expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); } } From patchwork Tue Jun 24 01:18:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899449 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120601wrm; Mon, 23 Jun 2025 18:21:06 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXjK8Cj8RUwOz2ZQCSFGdqqSBcB1YRyAt2k9nTbSorV2CjzFBusJAMJDTRVN69x4L3G3EuOpw==@linaro.org X-Google-Smtp-Source: AGHT+IHD5QEJAq2Ur/ZgwtWAN7lPAfF4GseMdkdQaT5f1J8uvNcUT3hYU4uFyiAXIn4kTMCERvJ3 X-Received: by 2002:a0c:f094:0:20b0:6fd:37ae:8cb4 with SMTP id 6a1803df08f44-6fd37ae8cd0mr23974296d6.9.1750728065902; Mon, 23 Jun 2025 18:21:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728065; cv=none; d=google.com; s=arc-20240605; b=hCzVR1gU+sOMof7aPs5TvP8jV7k7OSrjMQUS3frHZbpvG7D+AkKsBx/5mBGtCo3M3n OTG1V4ZE84bYaFcoitAcCtjcXyz2dLpLN6KIEomiosMY2VUt+u26sxRKKAhOXuyP1puM mFRxisE/VBRskya4fKvx6G3RKD3jFLgt7cXOIwkBCCGLdOB+cMEReLkzZuG4lqa9m5HA jSVrk3PuSi/cWUxKy1KfseFhMnXsJJojgRL3XQyq7nuv9RganGLSRzCiE6jVp0okJ6tA /auCQBXM6gqYD4mnjp2qREtNM1vnSRYWZM8Wd/Ew/W/KdXkz0+cmqUBjJ6JNSnmMN57e Qo0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=yuydYiohJjAYeAfLOI6h5c9kv5DQU5vOeyLn5vjXhmM=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=S0TSGfVFTkFsMmzXGiOruLHpPR4YPcZDhNsQhh2jlzyi+FsK7+GTBn50tT/bNzW/V/ gk4XzpEyxNhyEo+P+bFgQxXnDgzOpNyqdZs4woSF9ukzclQ0b5UGLhto/X3J6G4FSHh5 Oz8WPBeNuw1KXyvWKqA2fYGhJUpW3rwkfezrJ5bwckM89ElWT78DGATbyRN5VbqHtumV +Ly5Daueoceq0TnZc8m+DPBORwC+4BjvAiXQufQMMZ5DjTLoJ6YrtTdEDM3CeQeLzMJv rNYjbt6mDrnYfH81+bIrIqn1UQCjNOatSwabz6SEVXSWCSnOsAnxHHoQJYsDWJYUxaas jXZQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=dscb4V1d; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7d3f99f5e01si891719085a.321.2025.06.23.18.21.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:21:05 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=dscb4V1d; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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 maxsz, uint32_t ofs) tcg_debug_assert((ofs & max_align) == 0); } -/* 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 == a || d + s <= a || a + s <= d); + tcg_debug_assert(dbase != abase || d == a || d + s <= a || a + s <= d); } /* 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); } /* 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); } /* Create a descriptor from components. */ @@ -1206,7 +1215,7 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, uint32_t some; check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); type = 0; if (g->fniv) { @@ -1270,7 +1279,7 @@ void tcg_gen_gvec_2i(uint32_t dofs, uint32_t aofs, uint32_t oprsz, uint32_t some; check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); type = 0; if (g->fniv) { @@ -1336,7 +1345,7 @@ void tcg_gen_gvec_2s(uint32_t dofs, uint32_t aofs, uint32_t oprsz, TCGType type; check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); type = 0; if (g->fniv) { @@ -1416,7 +1425,7 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t some; 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); type = 0; if (g->fniv) { @@ -1483,7 +1492,7 @@ void tcg_gen_gvec_3i(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t some; 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); type = 0; if (g->fniv) { @@ -1551,7 +1560,8 @@ void tcg_gen_gvec_4(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t cofs, uint32_t some; 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); type = 0; if (g->fniv) { @@ -1621,7 +1631,8 @@ void tcg_gen_gvec_4i(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t cofs, uint32_t some; 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); type = 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; check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); /* If the backend has a scalar expansion, great. */ type = choose_vector_type(g->s_list, vece, oprsz, vece == MO_64); @@ -3770,7 +3781,7 @@ void tcg_gen_gvec_cmp(TCGCond cond, unsigned vece, uint32_t dofs, uint32_t some; 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); if (cond == TCG_COND_NEVER || cond == 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, uint32_t dofs, TCGType type; check_size_align(oprsz, maxsz, dofs | aofs); - check_overlap_2(dofs, aofs, maxsz); + check_overlap_2(tcg_env, dofs, tcg_env, aofs, maxsz); if (cond == TCG_COND_NEVER || cond == TCG_COND_ALWAYS) { do_dup(MO_8, tcg_env, dofs, oprsz, maxsz, From patchwork Tue Jun 24 01:18:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899445 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120428wrm; Mon, 23 Jun 2025 18:20:28 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWSyMlScCKvcCUZJX6dvTOEQUs/lnDV7ZI6PNIERqXAV8PucW03gzXzt2sYSvMis+FVk9GmlQ==@linaro.org X-Google-Smtp-Source: AGHT+IEtjwzj9n1KO1Zto32UUpOHpF0+9Q1nGPTbJ0CX7AUJC4vQeu29gjs8Ec7e0nUij1ODuJAh X-Received: by 2002:a05:6214:2e81:b0:6fd:3963:7a7b with SMTP id 6a1803df08f44-6fd39637b31mr14955386d6.1.1750728028004; Mon, 23 Jun 2025 18:20:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728027; cv=none; d=google.com; s=arc-20240605; b=POvKbP9NK7qwtIXDnqfSiUD6b4LL2s7w1fGRuvKhuK2P27/uv8vVzpo1DNFyQLGcti zU77Tj6cZzMwQCPNZwkX5mlf3BBJ4FbYDaZ7zBCM0G6ywAW09AIeG+tsHiAOJAjzewOz 29IVbU5fhr8SLl3Ec3Jzw+P11mF/h06XtppDBO7K+IGOoUKq2YGI1N+wK6v7fGg6Rqe8 19S1NqNgaPtCUUtjkgEaNpn7bAke1bQ0WsRuKyfHLrM8+HVZ7bUySTD9ZuQ99taqafbv Wm11iJx2cztOxQ++HfL/QKVQyCB55RFYxfZ1wyaCLswgqPOoDbl6LEoOGtUOz4FbpaHI UtjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=b3bQlxtzdvRq49LaNxL8i9SqtH1rO/onPFJfQvnOe7Y=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=i2yr/K7MIW1y0GSfw693wo8QQWwyxZ0Ok7yiN8xlzRwIZ2SRaBRRj0vY1EA/xKOirL p5gXZFo0wPtNFKoe3B1my5m9irOg41isyUXKuL4VIlH9CUN9yhjqWU423cXiYzKGXRKZ T8ho0at3GtRIk1VzgyrFit+9T3G1vSRJO7Y1WxltUr4JSdmEEpCc55ztIk4enkRmrUdp MXnIy4lv6uW/WaYizoEpACVk5Fj4qzuKqqAluofMYl5kjgZ7CbEFNQvoa1tWmRlsdWLp 4DKXcQ0s1FcACg6gxC8jc82WrEeZpSzbmrSE9C9/hWDUXmb1YYkkpXXrWJpIuEwoCkD8 q0Hg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=txzcvkl+; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 6a1803df08f44-6fd0c82cfb6si89718356d6.121.2025.06.23.18.20.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=txzcvkl+; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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-common.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; +/* Expand (dbase+dofs) = op(abase+aofs), length @oprsz, clearing to @maxsz. */ +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) = 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) = 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) = 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, int32_t data) } /* 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 = 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 = tcg_temp_ebb_new_ptr(); a1 = tcg_temp_ebb_new_ptr(); - 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); fn(a0, a1, desc); @@ -152,6 +153,13 @@ void tcg_gen_gvec_2_ool(uint32_t dofs, uint32_t aofs, tcg_temp_free_ptr(a1); } +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) } /* 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 = tcg_temp_new_i32(); TCGv_i32 t1 = tcg_temp_new_i32(); uint32_t i; for (i = 0; i < oprsz; i += 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 aofs, uint32_t bofs, } /* 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 = tcg_temp_new_i64(); TCGv_i64 t1 = tcg_temp_new_i64(); uint32_t i; for (i = 0; i < oprsz; i += 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 aofs, uint32_t bofs, } /* 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 dofs, uint32_t aofs, TCGv_vec t0 = tcg_temp_new_vec(type); TCGv_vec t1 = tcg_temp_new_vec(type); - 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); } } @@ -1206,8 +1217,9 @@ static void expand_4i_vec(unsigned vece, uint32_t dofs, uint32_t aofs, } /* 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 = g->opt_opc ? : vecop_list_empty; const TCGOpcode *hold_list = tcg_swap_vecop_list(this_list); @@ -1215,7 +1227,7 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, uint32_t some; 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); type = 0; if (g->fniv) { @@ -1228,8 +1240,8 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, * that e.g. size == 80 would be expanded with 2x32 + 1x16. */ some = 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 == oprsz) { break; } @@ -1239,22 +1251,25 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, maxsz -= 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; 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 != 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 = maxsz; } break; @@ -1265,10 +1280,16 @@ void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs, tcg_swap_vecop_list(hold_list); if (oprsz < maxsz) { - expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); + expand_clr(dbase, dofs + oprsz, maxsz - oprsz); } } +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) From patchwork Tue Jun 24 01:18:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899448 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120593wrm; Mon, 23 Jun 2025 18:21:05 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXhdXp5Wgq9IXlV4QICsUNW419A2Za4hnRzKcHx2Kbhs7dTcmVUvR+e6t9rHqeco556i6gnFA==@linaro.org X-Google-Smtp-Source: AGHT+IFrT1JKsS83h06m/0kCWlT3rfUgc/TJ6fyy6lSeevt0U4ksHO27B6tbcgDqBN02Tw6LDNkZ X-Received: by 2002:ac8:5891:0:b0:4a4:3e89:d5bb with SMTP id d75a77b69052e-4a77a2ea2c8mr248047061cf.49.1750728064850; Mon, 23 Jun 2025 18:21:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728064; cv=none; d=google.com; s=arc-20240605; b=gI4Ge6Nz6gi2VMagKBpfmWI64jX3EXc1k2K0BxBrNPGLsDTg8Fr910sqKO9HeOyJkA lTn5HpwxIYM6JHT9TRjVJBQ/BKVuC+F831OjFnL8CLjc5J2kn2vVm7NW2QCt8/DS6MW2 qQEJiKGty5JS/Tf2Tx4JtsaYyWyaMQZO20MkbwWOnaUjgsTfIj/BTLfJb9sOkVO06QNx RIyQEzc4KYBBUAhyZcRUiXK2EUaMNxQQHqfM23353QYpXUcyyB8CCO/PWmF5UFznDekn 9Hl1s6Jw5t3UUKMfEnZyUVf+RJ5zzqmOksoP9Xup06r3CkiD1dHoMZPWWc9LY8QZOrBD EA1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=7eh7a9DeY1ZSbJLViP7gxIdUrcoetx4rJhwuJcaL9wQ=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=NKWdlNiJtsOtuMb1ZMYu1nA8I7kesZ5Yw8WzU9y8Gqmu7eeQLICYKaRjMlQjiFVsfK 4IZJ2THfPBGA45in7QvPH9r+rtIhIY+t8cCnQcouZTFvTMI+wj85TCerEhgreoWvIyZ6 SXfDxyNas8as3AOGMJLpZfecqnOrVRoCk1fKn3oylKZbi/aODo67X9euqETUjWITDv5K ALNl97WTHzm+BkdSGf00hEYTcsiMxDgfZylMHZ6nEo5JqI2PqSGe7VTe8Dv6+CFgymjd deRa4PP6LXxIB1wK1P0J2Zb55NqeuRLV3YQt/NpXjLfXtNYhurWWPL3bCwE5GlCbkVwQ LLGw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=J4lzuFzG; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4a77a0d5f88si95992901cf.532.2025.06.23.18.21.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:21:04 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=J4lzuFzG; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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-common.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, uint32_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); +/* + * Expand (dbase+dofs) = 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) = 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) = op(env+aofs, env+bofs, c) + * or + * (env+dofs) = op(env+dofs, env+aofs, env+bofs, c) + * or + * (env+dofs), (env+aofs) = op(env+aofs, env+bofs, c) + * or + * (env+dofs), (env+aofs) = 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) = op(env+aofs, env+bofs, env+cofs) + * or + * (env+dofs), (env+aofs) = 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) = 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, } /* 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 = tcg_constant_i32(simd_desc(oprsz, maxsz, data)); @@ -193,9 +195,9 @@ void tcg_gen_gvec_3_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs, a1 = tcg_temp_ebb_new_ptr(); a2 = tcg_temp_ebb_new_ptr(); - 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); fn(a0, a1, a2, desc); @@ -204,6 +206,14 @@ void tcg_gen_gvec_3_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs, tcg_temp_free_ptr(a2); } +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, } /* 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 = tcg_temp_new_i32(); @@ -804,13 +816,13 @@ static void expand_3_i32(uint32_t dofs, uint32_t aofs, uint32_t i; for (i = 0; i < oprsz; i += 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, } /* 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 = tcg_temp_new_i64(); @@ -968,13 +982,13 @@ static void expand_3_i64(uint32_t dofs, uint32_t aofs, uint32_t i; for (i = 0; i < oprsz; i += 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 dofs, uint32_t aofs, } /* 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_vec)) { @@ -1129,13 +1144,13 @@ static void expand_3_vec(unsigned vece, uint32_t dofs, uint32_t aofs, TCGv_vec t1 = tcg_temp_new_vec(type); TCGv_vec t2 = tcg_temp_new_vec(type); - 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); } } @@ -1437,8 +1452,10 @@ void tcg_gen_gvec_2s(uint32_t dofs, uint32_t aofs, uint32_t oprsz, } /* 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 = g->opt_opc ? : vecop_list_empty; const TCGOpcode *hold_list = tcg_swap_vecop_list(this_list); @@ -1446,7 +1463,7 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t some; 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); type = 0; if (g->fniv) { @@ -1459,8 +1476,8 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, * that e.g. size == 80 would be expanded with 2x32 + 1x16. */ some = 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 == oprsz) { break; } @@ -1471,23 +1488,25 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, maxsz -= 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; 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 != 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 = maxsz; } break; @@ -1498,10 +1517,17 @@ void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs, tcg_swap_vecop_list(hold_list); if (oprsz < maxsz) { - expand_clr(tcg_env, dofs + oprsz, maxsz - oprsz); + expand_clr(dbase, dofs + oprsz, maxsz - oprsz); } } +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, From patchwork Tue Jun 24 01:18:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899441 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120424wrm; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWw5v+n6Wte27sliQh0NFNChejPIiiqrCIT7l8aFC9PpDlVFlUpR+b+C90RBZsipxn7vCUVdQ==@linaro.org X-Google-Smtp-Source: AGHT+IE3E3uIiGN3dYdb3baZgsrciLTmX/2dh+iSyOE95yQ8JOMaoqO6GEFHoTCYB7vAx1y0qW8m X-Received: by 2002:a05:6214:2f03:b0:6fa:ba15:e9d with SMTP id 6a1803df08f44-6fd0a46a313mr206201226d6.4.1750728027725; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728027; cv=none; d=google.com; s=arc-20240605; b=ZrS6FjCg//u1PhxBqzVqGw1XcqHFmLidDqVjIpVYUibdDXYcR5AMechiD3K+AEe2DO /hkF3OEe+mbhpi7w8UxdaXokUySmcOFm3dV075LNeJGc0J4dsnhWrhVjrjOi0kFpJEuz ts6axiyrm26M6NlMb6nXV5r3eFfq/ZxZ4oMGs0qyJNShzFLYfuT9Jhowldytr6DISmc+ mUBMPa3xsCQ3IrBSsZj6zFG5q9cq+EtKWSw1Z4k+zCQRuECbsfilZgl6EMKQ2+5rGGsi eii9bTlo/R0twLMMBl/1kYR7pMg7d37mrNxkmgCz7zyqcnrDMsPjB0x5oGjiEr+lH1b9 iTZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=XPRuJthFo3g6aUjTagI9t4QMkLmDirDDkkZ2ir5luhk=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=g9fWBqUlFfINgEsjfoL6GoXwETe4vJqgAtH13eo+r9RjmQ+wd6dK8UBJYBUisyFETA h+ttzDALwbRRIiKb/0kAPFKLlRStfg4rfAGUdZYfzMMH6A7oO0PmNodkLejb42STQQoX mvy2lLJemi7BmE/nQhgsbChqMRcQnM5ZEV94jbfRAHHa65vgTAk8mCHynIaXvnWEFW3i K26UPXQ33+ze+LmpIqUTz8Pdd2DCreVxiWbKGRLQU4lZBbmb+HrSBzCHcXRrRIXrPT3m 9S0os9QWVDEY/cm8E6Hz5+EsWrMVyoQE8zkusSOT8+Q+FzZ+gYSML88JEqV8ZZMpaLbK n6hQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=GNXimdkh; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 6a1803df08f44-6fd09593594si94017686d6.352.2025.06.23.18.20.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=GNXimdkh; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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-common.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, uint32_t bofs, uint32_t cofs, /* Expand a specific vector operation. */ +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); } -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 = { .fni8 = tcg_gen_mov_i64, @@ -1755,14 +1756,22 @@ void tcg_gen_gvec_mov(unsigned vece, uint32_t dofs, uint32_t aofs, .fno = gen_helper_gvec_mov, .prefer_i64 = TCG_TARGET_REG_BITS == 64, }; - if (dofs != aofs) { - tcg_gen_gvec_2(dofs, aofs, oprsz, maxsz, &g); - } else { + + if (dofs == aofs && dbase == 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); } void tcg_gen_gvec_dup_i32(unsigned vece, uint32_t dofs, uint32_t oprsz, From patchwork Tue Jun 24 01:18:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899439 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120421wrm; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUPabDC3MXb71vtXongJAFih6VoTnPpfd37PofcNIFaAi+2SKX7VMYZ+JiQYOjUhROcmBYEQQ==@linaro.org X-Google-Smtp-Source: AGHT+IHDoz0eaB9ecr/yMRiamnwpIHTAQMptr/0JEAoprBGHdtcqe3ytCiXpKzRr2SQyNnRFpZ7k X-Received: by 2002:a05:6214:3215:b0:6e8:ddf6:d11e with SMTP id 6a1803df08f44-6fd0a51c380mr275378276d6.21.1750728027595; Mon, 23 Jun 2025 18:20:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728027; cv=none; d=google.com; s=arc-20240605; b=gToCRuUg926esTvAjpmxhRVT1bRxgqnsaILoFIaZ0TRmXSZICJfJ4DNtKlwhmcRMD9 n/MSGbV9gPd59ESB5gnDFju0u4GapXiOCIgUJHU+uYnyskzCJd0SDDhBN+mjKO5WAqQz 6efmaHaN6JPFfGKZvS8FGNzcNAVPtslpwJ4oW8XVmleTetEW9q/kkEfU2zdz/o0Z1Z2l 8KDi5ecqC61F6jcGBQuqaXWasw+UFNlKv111wvG4SbSOnbB/dNs01dFtG8BWV60GE7DD 3ZsgbL98m6cg1MypixOMrGiHOM4O5MeyA9iV646NxoApej5+2pbbzWs7oYsAKH89vbnV SSrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=EbDOcywMqq1dh9LZui16nPkQkSH4+rsckkQuLNP7SO4=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=HZxwNfRyFW+EfSmV+C5I3aPZ67l/j2KViOpC34aUG5l2/n1Tpg1bE68Xv1kllOhvjn /z70rtc+CdEosXaSeOMKBL6cRGqvKQ/SagTauru4RkgWbsH4wfSDgRhtc3rmCCBb+SZ9 5MZ60ILYtG0YXQuplrV63oL5mqXBXZYRBp32K9n/Pvxr7mda26OLaNTgTTg+3sRcAbqc oz78sqQucUfZ17Bsb2XT8dxi6AOhWoJlJq0OrHnHRyTAalD2m6xFMR+BitypNpaFpkFS NdEV2fG7HqgpTGwYy/tZJ5OD0L8vj5sCzmFiqMv0h9av48kTixY6e6pg52hvV4G7j0lv 3kTQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rrIxR+yb; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 6a1803df08f44-6fd0952d651si97292116d6.229.2025.06.23.18.20.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:20:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rrIxR+yb; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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-common.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, uint32_t aofs, void tcg_gen_gvec_abs(unsigned vece, uint32_t dofs, uint32_t aofs, 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); +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, TCGv_i64 b) static const TCGOpcode vecop_list_add[] = { INDEX_op_add_vec, 0 }; -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] = { { .fni8 = tcg_gen_vec_add8_i64, @@ -2027,7 +2029,15 @@ void tcg_gen_gvec_add(unsigned vece, uint32_t dofs, uint32_t aofs, }; tcg_debug_assert(vece <= 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); } 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, TCGv_i64 b) tcg_temp_free_i64(t2); } -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] = { { .fni8 = tcg_gen_vec_sub8_i64, @@ -2208,7 +2220,15 @@ void tcg_gen_gvec_sub(unsigned vece, uint32_t dofs, uint32_t aofs, }; tcg_debug_assert(vece <= 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); } static const TCGOpcode vecop_list_mul[] = { INDEX_op_mul_vec, 0 }; From patchwork Tue Jun 24 01:18:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899444 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120429wrm; Mon, 23 Jun 2025 18:20:28 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUHCR0YeKSGyCZqO3CZerDGaWjEKkdQ2sTBMHFVXV6/sZzNEjiB3GBT5Ss0n/Dud+dxibxb4Q==@linaro.org X-Google-Smtp-Source: AGHT+IFPqCB7Lxy3atEoux+h3kELueE0jHXl4UTmsO5UQU3PtZh+CqAxN6ZMeit/KLlq6QIvQGkf X-Received: by 2002:a05:620a:29d6:b0:7d3:9025:5db7 with SMTP id af79cd13be357-7d3f98e0122mr2109783785a.20.1750728028079; Mon, 23 Jun 2025 18:20:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728028; cv=none; d=google.com; s=arc-20240605; b=TfsV+YtyqwCVlR3E53t2zg+BFNc3HV+kPrYdzIPTAYbGGaUEXcJ2MD8ml5Ldo3GoJn wP8xyI5TJh7DJH/oFWrSItzU7AOPlBuqQW77yAGM/nM3ly+i3vua/7jkwVZ7/DHvyYHr w+LYSyzLO6gUwuBrPer5hkmoqKgWnCmfPN6xh3UVdZh4lJmyULLqzYawOO8biyhSWUo3 EX650aeo7Ub4HqV5lhhesL1Apfs2bDcjVLO99E/1IeSc9ZU4T1JOb2U5B8KimJ+tFpvP jCcjWapD3NaGLG5mcYY1csQ0bZz4LpOaH2fUwGaI88k6gQJ1QOr402sk0hTxcELhdm5X 2H+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=HkgZSBtedJbrmOYNbCd3Ipd1R538BuXURl0DXnFRDDk=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=WMKQ20t+P/TVL8nhMidySWmx5bNI9PEYIKqkfWpsikbogv72MiImooPIe3IznsmtrX UEqilE1XX31CBWCJlHpBCGFjz7lou5865VMN70HWbSmmgQwJc2bxfJT1uLAB9EnwpgcX FrcdyBmNSXByi9wMDHlnTjQ6Gc7uHcUraycaMDzQ79T0PokGs/xDdh8zaHESi9qYCjqf ft+XtP2O6yaJC4/aRKinPZZfkqAQaaWkJ29ORETiexYm8ztbirxcq/GKgsisKcPDVPqW gwjZUNdnrQQ1C1NBIHAFjS8qGEwznRv9r8VwFbL+qIrhELQEIMP5+6KM7SDLBiF6fwxI HOeQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SNLYE1Yv; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7d3f99fdee5si931551285a.353.2025.06.23.18.20.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:20:28 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=SNLYE1Yv; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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-common.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); +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 dofs, uint32_t aofs, } } +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); } void tcg_gen_gvec_not(unsigned vece, uint32_t dofs, uint32_t aofs, From patchwork Tue Jun 24 01:18:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899447 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120519wrm; Mon, 23 Jun 2025 18:20:48 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXQS5weg+u88EQxCD0Qy6AzGJv9KSy+ND/92vJy5j80vIUHE5mw5JEqX+70wLeRiMXBS0HkeA==@linaro.org X-Google-Smtp-Source: AGHT+IGjxxx1wyGu8dDdilEcHNvN1YiYBfNmGjp5symtAWWEpdchtCOtgRzi/4CFmcWOn0Kbehp2 X-Received: by 2002:ad4:5bee:0:b0:6fa:cd55:3823 with SMTP id 6a1803df08f44-6fd0a54d9ddmr225947656d6.26.1750728047890; Mon, 23 Jun 2025 18:20:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728047; cv=none; d=google.com; s=arc-20240605; b=PbsI2u5ioqLlkAFZ3UaQE4NiflfxBTbPQ4uChURg21LmhVu5qGkgCqRoUncWHxi1H1 S4Zh2Vxlagg2sDS5yMblS8IzlDpA/jdQeF1EomRhFQkI61Y5rdFV1YUVBzyc0hP6fV+i P4s80DT9mC6YHvFkoGJXqlKRbq93mDI2Pl1hM4FEhf92hEjC6c5xsVJ4Nu+mwFsV3Z5x YUHqM8s8Wg8cfo2QFiH+4IkocPXXMek8wT3A+pmvF/VhWNHdjuoIQT78z2bYJKTFrzuE tjdzDQneMyBf+Y/rokWjU/YDDJD07aa0sJcpIU3oqJkjkiCRNZ8c4b8UADgL2azWt1Ou agbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=iw3Inm/qmovJ+SsJA+SUz5rt3h/FMqvN9mRE2hwkWpQ=; fh=tOREyZHlK9Diwyw/7bj5IUyLT4I5EVkj5DE8XDtMiTs=; b=T2vhYIDzDU8bdKCwCJRlrxInwGQKq9QdoU++edgX+3evsbqwQBwP524/uRa981vZCT A3XzUtJlW/dMaztJap5S/kthxb8NrJymtX73ph/2vv6AXmSCUuHTQ0BwjfgDFensQZSq KDy2sTlKeo60GqWWcWRvCarztkqNjua/Gz3gYGtnG3Kk52jaYGMGEa3KN7vmfTNh1lN/ HRJeFMKvxUFrHodjWOk8zwQlMC51ZV+wAiBvLED6Gp8Os4bkSGIMn9ZZSOK5aoAp5KSo alDNxzZ8djVWSAX0Vo3DrfZDM6b2lxMh6cX7QivPdyScqHFks/II3EZIr+MEiVW1A92s 0qzw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=EWXMcFGk; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 6a1803df08f44-6fd095b4543si98609116d6.398.2025.06.23.18.20.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:20:47 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=EWXMcFGk; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) 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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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 = 1 << 28, ARM_HWCAP_A64_SB = 1 << 29, ARM_HWCAP_A64_PACA = 1 << 30, - ARM_HWCAP_A64_PACG = 1UL << 31, + ARM_HWCAP_A64_PACG = 1ULL << 31, + ARM_HWCAP_A64_GCS = 1ULL << 32, + ARM_HWCAP_A64_CMPBR = 1ULL << 33, + ARM_HWCAP_A64_FPRCVT = 1ULL << 34, + ARM_HWCAP_A64_F8MM8 = 1ULL << 35, + ARM_HWCAP_A64_F8MM4 = 1ULL << 36, + ARM_HWCAP_A64_SVE_F16MM = 1ULL << 37, + ARM_HWCAP_A64_SVE_ELTPERM = 1ULL << 38, + ARM_HWCAP_A64_SVE_AES2 = 1ULL << 39, + ARM_HWCAP_A64_SVE_BFSCALE = 1ULL << 40, + ARM_HWCAP_A64_SVE2P2 = 1ULL << 41, + ARM_HWCAP_A64_SME2P2 = 1ULL << 42, + ARM_HWCAP_A64_SME_SBITPERM = 1ULL << 43, + ARM_HWCAP_A64_SME_AES = 1ULL << 44, + ARM_HWCAP_A64_SME_SFEXPA = 1ULL << 45, + ARM_HWCAP_A64_SME_STMOP = 1ULL << 46, + ARM_HWCAP_A64_SME_SMOP4 = 1ULL << 47, ARM_HWCAP2_A64_DCPODP = 1 << 0, ARM_HWCAP2_A64_SVE2 = 1 << 1, @@ -798,6 +814,25 @@ enum { ARM_HWCAP2_A64_SME_F16F16 = 1ULL << 42, ARM_HWCAP2_A64_MOPS = 1ULL << 43, ARM_HWCAP2_A64_HBC = 1ULL << 44, + ARM_HWCAP2_A64_SVE_B16B16 = 1ULL << 45, + ARM_HWCAP2_A64_LRCPC3 = 1ULL << 46, + ARM_HWCAP2_A64_LSE128 = 1ULL << 47, + ARM_HWCAP2_A64_FPMR = 1ULL << 48, + ARM_HWCAP2_A64_LUT = 1ULL << 49, + ARM_HWCAP2_A64_FAMINMAX = 1ULL << 50, + ARM_HWCAP2_A64_F8CVT = 1ULL << 51, + ARM_HWCAP2_A64_F8FMA = 1ULL << 52, + ARM_HWCAP2_A64_F8DP4 = 1ULL << 53, + ARM_HWCAP2_A64_F8DP2 = 1ULL << 54, + ARM_HWCAP2_A64_F8E4M3 = 1ULL << 55, + ARM_HWCAP2_A64_F8E5M2 = 1ULL << 56, + ARM_HWCAP2_A64_SME_LUTV2 = 1ULL << 57, + ARM_HWCAP2_A64_SME_F8F16 = 1ULL << 58, + ARM_HWCAP2_A64_SME_F8F32 = 1ULL << 59, + ARM_HWCAP2_A64_SME_SF8FMA = 1ULL << 60, + ARM_HWCAP2_A64_SME_SF8DP4 = 1ULL << 61, + ARM_HWCAP2_A64_SME_SF8DP2 = 1ULL << 62, + ARM_HWCAP2_A64_POE = 1ULL << 63, }; #define ELF_HWCAP get_elf_hwcap() @@ -886,7 +921,7 @@ uint64_t get_elf_hwcap2(void) const char *elf_hwcap_str(uint32_t bit) { - static const char *hwcap_str[] = { + static const char * const hwcap_str[] = { [__builtin_ctz(ARM_HWCAP_A64_FP )] = "fp", [__builtin_ctz(ARM_HWCAP_A64_ASIMD )] = "asimd", [__builtin_ctz(ARM_HWCAP_A64_EVTSTRM )] = "evtstrm", @@ -919,6 +954,22 @@ const char *elf_hwcap_str(uint32_t bit) [__builtin_ctz(ARM_HWCAP_A64_SB )] = "sb", [__builtin_ctz(ARM_HWCAP_A64_PACA )] = "paca", [__builtin_ctz(ARM_HWCAP_A64_PACG )] = "pacg", + [__builtin_ctzll(ARM_HWCAP_A64_GCS )] = "gcs", + [__builtin_ctzll(ARM_HWCAP_A64_CMPBR )] = "cmpbr", + [__builtin_ctzll(ARM_HWCAP_A64_FPRCVT)] = "fprcvt", + [__builtin_ctzll(ARM_HWCAP_A64_F8MM8 )] = "f8mm8", + [__builtin_ctzll(ARM_HWCAP_A64_F8MM4 )] = "f8mm4", + [__builtin_ctzll(ARM_HWCAP_A64_SVE_F16MM)] = "svef16mm", + [__builtin_ctzll(ARM_HWCAP_A64_SVE_ELTPERM)] = "sveeltperm", + [__builtin_ctzll(ARM_HWCAP_A64_SVE_AES2)] = "sveaes2", + [__builtin_ctzll(ARM_HWCAP_A64_SVE_BFSCALE)] = "svebfscale", + [__builtin_ctzll(ARM_HWCAP_A64_SVE2P2)] = "sve2p2", + [__builtin_ctzll(ARM_HWCAP_A64_SME2P2)] = "sme2p2", + [__builtin_ctzll(ARM_HWCAP_A64_SME_SBITPERM)] = "smesbitperm", + [__builtin_ctzll(ARM_HWCAP_A64_SME_AES)] = "smeaes", + [__builtin_ctzll(ARM_HWCAP_A64_SME_SFEXPA)] = "smesfexpa", + [__builtin_ctzll(ARM_HWCAP_A64_SME_STMOP)] = "smestmop", + [__builtin_ctzll(ARM_HWCAP_A64_SME_SMOP4)] = "smesmop4", }; return bit < ARRAY_SIZE(hwcap_str) ? hwcap_str[bit] : NULL; @@ -926,7 +977,7 @@ const char *elf_hwcap_str(uint32_t bit) const char *elf_hwcap2_str(uint32_t bit) { - static const char *hwcap_str[] = { + static const char * const hwcap_str[] = { [__builtin_ctz(ARM_HWCAP2_A64_DCPODP )] = "dcpodp", [__builtin_ctz(ARM_HWCAP2_A64_SVE2 )] = "sve2", [__builtin_ctz(ARM_HWCAP2_A64_SVEAES )] = "sveaes", @@ -972,6 +1023,24 @@ const char *elf_hwcap2_str(uint32_t bit) [__builtin_ctzll(ARM_HWCAP2_A64_SME_F16F16 )] = "smef16f16", [__builtin_ctzll(ARM_HWCAP2_A64_MOPS )] = "mops", [__builtin_ctzll(ARM_HWCAP2_A64_HBC )] = "hbc", + [__builtin_ctzll(ARM_HWCAP2_A64_SVE_B16B16 )] = "sveb16b16", + [__builtin_ctzll(ARM_HWCAP2_A64_LRCPC3 )] = "lrcpc3", + [__builtin_ctzll(ARM_HWCAP2_A64_LSE128 )] = "lse128", + [__builtin_ctzll(ARM_HWCAP2_A64_FPMR )] = "fpmr", + [__builtin_ctzll(ARM_HWCAP2_A64_LUT )] = "lut", + [__builtin_ctzll(ARM_HWCAP2_A64_FAMINMAX )] = "faminmax", + [__builtin_ctzll(ARM_HWCAP2_A64_F8CVT )] = "f8cvt", + [__builtin_ctzll(ARM_HWCAP2_A64_F8FMA )] = "f8fma", + [__builtin_ctzll(ARM_HWCAP2_A64_F8DP4 )] = "f8dp4", + [__builtin_ctzll(ARM_HWCAP2_A64_F8DP2 )] = "f8dp2", + [__builtin_ctzll(ARM_HWCAP2_A64_F8E4M3 )] = "f8e4m3", + [__builtin_ctzll(ARM_HWCAP2_A64_F8E5M2 )] = "f8e5m2", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_LUTV2 )] = "smelutv2", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_F8F16 )] = "smef8f16", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_F8F32 )] = "smef8f32", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_SF8DP4 )] = "smesf8dp4", + [__builtin_ctzll(ARM_HWCAP2_A64_SME_SF8DP2 )] = "smesf8dp2", + [__builtin_ctzll(ARM_HWCAP2_A64_POE )] = "poe", }; return bit < ARRAY_SIZE(hwcap_str) ? hwcap_str[bit] : NULL; From patchwork Tue Jun 24 01:18:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 899450 Delivered-To: patch@linaro.org Received: by 2002:adf:e506:0:b0:3a6:d909:26ce with SMTP id j6csp1120614wrm; Mon, 23 Jun 2025 18:21:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUzBqju9uKTlTSw1T0f3Vu2Ufiy7IFTJL9CN586BX+4RAkAVuGIzCDdRXPAr1nUqEbcu0XOsg==@linaro.org X-Google-Smtp-Source: AGHT+IGWXcabZKbb/ylhBdCcgs3Yg/ETHBbfUthekYQWgY6U5uk3KLmkg3LqeCsupicLALb0L+e5 X-Received: by 2002:ac8:5ac9:0:b0:476:a03b:96ec with SMTP id d75a77b69052e-4a77a227493mr256918591cf.32.1750728069662; Mon, 23 Jun 2025 18:21:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1750728069; cv=none; d=google.com; s=arc-20240605; b=YAv1YcuoMLGGGiF2vkAnY4aoG/ic6vXLe3MQ2OGoOjKyXJ8ri8DxeXfuSTLRv4RVmv pItO39wSklS3gbhUUMDbskRw2q+K4q8Ew0k18iqPubIgNhbyerDqSkiL3HlvTjJMeTri qvPOuClNJM5dAC2LNM/F75hk0/C9wpa9rFxlW9vscrvkgDQ7UoiMjr0p1FFnmNrJR5oN PpRZQRELA1bb3HJKvbrxpEh/TlpXvm/rVj3MjqcgrTCbuPzy3cWrCUgp38YftFbtt1X5 ZAikZhlnhP3wPo+lxSOLFCs7sQ4hEl2aq8SKitjax3RLqsU6laKxg6BLjVEitr2MKK5T 4Z+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=S67UPro4B0nfkkspRfqxPQxazBoANRUB0NMG6SLVuGQ=; fh=IYxp6ze1Jz9YeNoqXBvsIVyO/0PUTH+adCpJVqhU70U=; b=HDOje6qNXWFjr1oJWGO0cFzxp35LqZmOPsrTsIoUqoLFDXUgobGXbfbexJsFW9ukta fDLRsT+N+Gq66r/P4njDKjng1c4WTW8/8qsGHOgyzg2Pox9SrJZTgAgpVPpkhfvb3WPB VCXhFCHd9kBH5QopvlgVpxo/igxOB6P65XcSSdyqJdy3PUHmV19A1DKhwwb0OiXzxu8o mZT7GMf+kzpnT2NzePZzlbCASkPuQb0oWMnCT9xi+SQMlVHcUXAZXdqaT30b2DsyWquL z2mw+97H8NYYdao89N1HzEIei7knGCtIOVG7kY5GB4ybpMAPSn9s14HrIUOSSvIuzVpc j7tg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=QPDpfX1F; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4a77a0d53a9si94966641cf.492.2025.06.23.18.21.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jun 2025 18:21:09 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=QPDpfX1F; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org 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) 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-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) 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) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P=2E_Berrang=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 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Daniel P. Berrangé 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="-fsanitize=address" 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_64-linux-user.a.p/vdso.c.inc ../linux-user/x86_64/vdso.so ================================================================= ==1696332==ERROR: 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/gen-vdso+0xa11f3) (BuildId: b69e241ad44719b6f3934f3c71dfc6727e8bdb12) #1 0x564958780b90 (/var/home/berrange/src/virt/qemu/build/linux-user/gen-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é 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; int main(int argc, char **argv) { - FILE *inf, *outf; + FILE *inf = NULL, *outf = NULL; long total_len; const char *prefix = "vdso"; const char *inf_name; const char *outf_name = NULL; - unsigned char *buf; + unsigned char *buf = NULL; bool need_bswap; + int ret = EXIT_FAILURE; while (1) { int opt = 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); /* * Identify which elf flavor we're processing. @@ -205,19 +205,24 @@ int main(int argc, char **argv) fprintf(outf, " .rt_sigreturn_ofs = 0x%x,\n", rt_sigreturn_addr); fprintf(outf, "};\n"); - /* - * Everything should have gone well. - */ - if (fclose(outf)) { - goto perror_outf; + ret = EXIT_SUCCESS; + + cleanup: + free(buf); + + if (outf && fclose(outf) != 0) { + ret = EXIT_FAILURE; } - return EXIT_SUCCESS; + if (inf && fclose(inf) != 0) { + ret = EXIT_FAILURE; + } + return ret; perror_inf: perror(inf_name); - return EXIT_FAILURE; + goto cleanup; perror_outf: perror(outf_name); - return EXIT_FAILURE; + goto cleanup; }