From nobody Wed Aug 26 07:27:20 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786475769; cv=none; d=zohomail.com; s=zohoarc; b=Da4CLo/RrAckZqkjjOImgPZzj/bQfs0HYM4D5QcMgqhe1gZvinmyj3wRfkemn/rC67BGQgDQWsVWlvyT5tvm1pQPMazP+vgskQxBgv37tpR/lKJ7IgUqRGmv6FZHsmyFaLH1UeOjKAbXWrfIuH+npzTZF5aAkWxGsccyDJGGI1A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786475769; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FWe3uPbG8QTQeWcNC7hsaTPyUcsTnfL69Da5dCKR/IM=; b=IPU9f+e9+813feexYu0Ot3BZpcb2/xNd87jM4hZGXd+I5Djj4shh/JDzr1JSqhWDo9PEhGShSqChawWIk/TF65p+g642sikM27qOcDnBU7OZquNKvFWwLEJEWWjwuEeiCy5zR2s+egvgibKc9aELmbIIL67IwcxIP0yhmplQ96U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786475769296889.8662195459299; Tue, 11 Aug 2026 12:16:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtrx4-0002H9-E2; Tue, 11 Aug 2026 15:15:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtrwx-0002FP-Ei for qemu-devel@nongnu.org; Tue, 11 Aug 2026 15:15:48 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtrwt-000286-TD for qemu-devel@nongnu.org; Tue, 11 Aug 2026 15:15:47 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-38e07ebd263so200461a91.1 for ; Tue, 11 Aug 2026 12:15:43 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-392f97fc409sm209668a91.1.2026.08.11.12.15.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 12:15:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786475742; x=1787080542; 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:content-type; bh=FWe3uPbG8QTQeWcNC7hsaTPyUcsTnfL69Da5dCKR/IM=; b=iVkcxKblc5kjxWW9eHxhYcw0KeCh3pPpoSL5+Q9T1ytx6sJC7kI3id36bhE/TCKefR WLfLUUSC2m56C79/Sng1UdM8iZ+4zm3V7uOFxFSoHJkMImZorRKMuXXNhyJY2NVR91Wi koI8r7hsQdKsQdXj3X++Xkq+5YNQD9dhnfZ+RMT75yo00A/Srpe56QAuz5u+XbznV57P 4RUWQLGMsNdsZIehbJ7f7y8P8fpmcogBEE/KKP8p/k7f0y/SsSk98CeWuGWRiPEseEwi OvhjrsMRlP13fn3oWAxpu1py0Uy3bOH+s3o2f5/435DQnMW5Wzf/OtSNdc9EdE9P5j3z SDvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786475742; x=1787080542; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=FWe3uPbG8QTQeWcNC7hsaTPyUcsTnfL69Da5dCKR/IM=; b=oSdIDLk95Zfe15s/Q+rHPWp+gF7EbDPId1TSfncz94I/eNYYXIgQIMotpkBCCsPCEg p1mKbfeG+8t2mFAOZLc6G4KOZYTBODLc6I+hbZ5a6ZiRIvRr+gzYWv9LcdIlmBRrss69 uwE6FYR+9EXwa1T+DybSOzoMGk2qnThWGb4wO/M/x7qs3lrJrJvQEJKYj57+crt5UzJD IUwkywaJf9QwU/O1Nt+2M5Qqe/EvtLJutlppE40hE7nkOzsQMgiZ4QM4RF+iA4SJzYd1 DXAO2jlS+pQHn+0jEOmDhzF9nJyaAM/3LhHVL0L73aiB4I5EhlnzRWwPYO0FNXg/F6cF SW8Q== X-Gm-Message-State: AOJu0Yznevx0/AXSBabXX0nBwWDxmMdwsGy+PX6URW9b7VC97kHJrJL0 V49rNgxF0gTIpm2gGQ7vFHA4Vqrv03uxjhkriFP9j1+smpYxPGu1dctIiCAJb5Q6vh/3Zc0aWGm mike6 X-Gm-Gg: AR+sD12M0V7uRHC3PyiGDQuwtnSMpl0OkuVZErZ6Pb8K5QfxuOHnpSDhHhXADW59KaN TgzJSrSFMloItgtFeSsfTa7dT57i4AIkscVY3JmRtTJ7qUngTzgbkI2oWH0rm97q2AM3jAkZJpA WTZT+T/DBB6I1v+8grzS3ImdROqqqBXeMaeaZ1D7FxCLPAPaKXBO7ffUSGg+X9TSTUxBSxehdA0 9pCpHH+y8IOcAP019Iq/eovzTfmsZutUsOsUxicoijOn1Cj+BVPjaDHkeraHvU4jCO8AqY0IwjW xKl7rIZYNd9zi0jB26YEHxcRw7NVe8qRF+SHJtLnJYg2CSwVB8adwkIFbdKLzMzq36L4VU0QYLg u/Gov8ZwI/ksJXTbYGgnI++QKx8KS95Ligd294GH7KP0AhMLAcfxfClhcvgFzbpg3InFY+QsJ/7 TWrZY8rp8Ix3AqFXfUD4yfs2aTTf1y9c3N8MfNEC+/vTa1ItWwbDI3/yZ6nv11WPXDEF1hvM0VR O8ngcujXNabRPA2iTWT0yAKU/DHKKk= X-Received: by 2002:a17:90b:180c:b0:383:f52b:d616 with SMTP id 98e67ed59e1d1-392ec5b6b8amr5463314a91.10.1786475741991; Tue, 11 Aug 2026 12:15:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: yang.yanjun1@sanechips.com.cn, qemu-arm@nongnu.org Subject: [PATCH v2 1/3] tcg: Export tcg_gen_ussub_i{32,64,tl} Date: Tue, 11 Aug 2026 12:15:38 -0700 Message-ID: <20260811191540.79882-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260811191540.79882-1-richard.henderson@linaro.org> References: <20260811191540.79882-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786475772243158500 Content-Type: text/plain; charset="utf-8" Move from tcg-op-gvec.c to tcg-op.c. Use a temporary, to cover the possibility of operand overlap. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 ++ include/tcg/tcg-op.h | 2 ++ tcg/tcg-op-gvec.c | 14 -------------- tcg/tcg-op.c | 20 ++++++++++++++++++++ 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1fe342db0d..c7d1529c4f 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -163,6 +163,7 @@ void tcg_gen_smin_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32= arg2); void tcg_gen_smax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_umin_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_umax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); +void tcg_gen_ussub_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_abs_i32(TCGv_i32, TCGv_i32); =20 /* Replicate a value of size @vece from @in to all the lanes in @out */ @@ -274,6 +275,7 @@ void tcg_gen_smin_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64= arg2); void tcg_gen_smax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_umin_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_umax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); +void tcg_gen_ussub_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_abs_i64(TCGv_i64, TCGv_i64); =20 /* Replicate a value of size @vece from @in to all the lanes in @out */ diff --git a/include/tcg/tcg-op.h b/include/tcg/tcg-op.h index 96a5af1a29..40ce17eed2 100644 --- a/include/tcg/tcg-op.h +++ b/include/tcg/tcg-op.h @@ -149,6 +149,7 @@ typedef TCGv_i64 TCGv; #define tcg_gen_umin_tl tcg_gen_umin_i64 #define tcg_gen_smax_tl tcg_gen_smax_i64 #define tcg_gen_umax_tl tcg_gen_umax_i64 +#define tcg_gen_ussub_tl tcg_gen_ussub_i64 #define tcg_gen_atomic_cmpxchg_tl tcg_gen_atomic_cmpxchg_i64 #define tcg_gen_atomic_xchg_tl tcg_gen_atomic_xchg_i64 #define tcg_gen_atomic_fetch_add_tl tcg_gen_atomic_fetch_add_i64 @@ -268,6 +269,7 @@ typedef TCGv_i64 TCGv; #define tcg_gen_umin_tl tcg_gen_umin_i32 #define tcg_gen_smax_tl tcg_gen_smax_i32 #define tcg_gen_umax_tl tcg_gen_umax_i32 +#define tcg_gen_ussub_tl tcg_gen_ussub_i32 #define tcg_gen_atomic_cmpxchg_tl tcg_gen_atomic_cmpxchg_i32 #define tcg_gen_atomic_xchg_tl tcg_gen_atomic_xchg_i32 #define tcg_gen_atomic_fetch_add_tl tcg_gen_atomic_fetch_add_i32 diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index bc323e2500..27f3807b00 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -2399,20 +2399,6 @@ void tcg_gen_gvec_usadd(unsigned vece, uint32_t dofs= , uint32_t aofs, tcg_gen_gvec_3(dofs, aofs, bofs, oprsz, maxsz, &g[vece]); } =20 -static void tcg_gen_ussub_i32(TCGv_i32 d, TCGv_i32 a, TCGv_i32 b) -{ - TCGv_i32 min =3D tcg_constant_i32(0); - tcg_gen_sub_i32(d, a, b); - tcg_gen_movcond_i32(TCG_COND_LTU, d, a, b, min, d); -} - -static void tcg_gen_ussub_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b) -{ - TCGv_i64 min =3D tcg_constant_i64(0); - tcg_gen_sub_i64(d, a, b); - tcg_gen_movcond_i64(TCG_COND_LTU, d, a, b, min, d); -} - void tcg_gen_gvec_ussub(unsigned vece, uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t oprsz, uint32_t maxsz) { diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index bbcb510c76..4d15d1abbd 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1264,6 +1264,16 @@ void tcg_gen_umax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv= _i32 b) tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, b, a); } =20 +void tcg_gen_ussub_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) +{ + TCGv_i32 t =3D tcg_temp_ebb_new_i32(); + TCGv_i32 z =3D tcg_constant_i32(0); + + tcg_gen_sub_i32(t, a, b); + tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, z, t); + tcg_temp_free_i32(t); +} + void tcg_gen_abs_i32(TCGv_i32 ret, TCGv_i32 a) { TCGv_i32 t =3D tcg_temp_ebb_new_i32(); @@ -2433,6 +2443,16 @@ void tcg_gen_umax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv= _i64 b) tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, b, a); } =20 +void tcg_gen_ussub_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) +{ + TCGv_i64 t =3D tcg_temp_ebb_new_i64(); + TCGv_i64 z =3D tcg_constant_i64(0); + + tcg_gen_sub_i64(t, a, b); + tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, z, t); + tcg_temp_free_i64(t); +} + void tcg_gen_abs_i64(TCGv_i64 ret, TCGv_i64 a) { TCGv_i64 t =3D tcg_temp_ebb_new_i64(); --=20 2.43.0 From nobody Wed Aug 26 07:27:20 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786475794; cv=none; d=zohomail.com; s=zohoarc; b=WTNwOHk8SIMpD+KtW/x/S18Zpa5hyLD32RbMUVmrUUGfQU2ZSsqyeI73ORq/eh2T3KiA7SQAm8iRzIHCY3B5HvD+sn5mdKvWOlDA9Q5swqMOFLSNT2MX4LBJMnxHOwZ9zQtb5WsM9XszIWbu3f8wwm2+IiijxTSMhm32gR2XYSI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786475794; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GRr6PoGrupLvbrBJeRkZc+07SX85ytBRGcRUr5gqRN8=; b=c4qbCY9CWzIraRRk+RS8G9g7U1XALIru5E3SIw230AdBzJh8XkkV1Lt61+3peujByoZ/ltHxkOd7DnBxZBdu34shPJNsHQpI0JUuI6FukEw3g5z+2eqcVwVgHG58N50GjkQIL0bWT0RbIXkh784iaqai68cxWV/vuOQjuA1YB/Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786475794729529.0750350532098; Tue, 11 Aug 2026 12:16:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtrx6-0002Hb-Fy; Tue, 11 Aug 2026 15:15:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtrwy-0002FT-BS for qemu-devel@nongnu.org; Tue, 11 Aug 2026 15:15:48 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtrwv-00028P-BF for qemu-devel@nongnu.org; Tue, 11 Aug 2026 15:15:48 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-3856d6fbcb3so256976a91.2 for ; Tue, 11 Aug 2026 12:15:44 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-392f97fc409sm209668a91.1.2026.08.11.12.15.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 12:15:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786475744; x=1787080544; 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:content-type; bh=GRr6PoGrupLvbrBJeRkZc+07SX85ytBRGcRUr5gqRN8=; b=WH9ld1EEBkTa4kLttHBd4zp5fSI9u5h5IOfBwn0hWc7WcP2mtAiMBe5JdWmKQhAhJN WqbRYjrq3eEoV1ccaYeVy2IKhFp5wKw2pAs4O2omy+c0lYAiLT44T6AvM90XNjF2RlP1 EMnI8m8OuvjCyRtLa2VHUfetQJfiwqyttROxrntvJzaxyRnmqoPMRJ40MAaLbeFn/s9M YP9VZQpWr6OXmdBgMjKOAlOjoYCjFQ1hgRzwcBIJrakc7JudwKHYbYTvSERmPqKSxGI8 UdArEV/mzAE+CMIrJS79pS96y3nhqpuSX/DRHjI9DhjJ+jE9719WvXvR2QXgAPyLp1kE pU/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786475744; x=1787080544; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=GRr6PoGrupLvbrBJeRkZc+07SX85ytBRGcRUr5gqRN8=; b=SBTOnb5ZxpKS9QQxeFl4eEDwgD5o9LEJfLbmjCevhR/eWQGHZ/jkQfTDj8RCy7alee 3y+Wyz7RZPd1/HWP1DUBZsSfAdD66HfxXuDX6Q1TlftM2zZ/vAk+5zPkuRm6GPsWqoGc B57hufj7pxN9wik0nRinxj4V2sr52m/er6AKuK+kXKaHhbd3QbQFRgI29HjNW8fK47zs +5YkKVDYEnLwYO7Zi44Xmj+K684ZozXd2UflXuu+45OQR4lsw6JAX6bfgjRAA/ktWsZu eK2Hlgb1m4nZhHKi+BnAI904YQ3rds2QBZK2PNb7a2g6UkXQOEvhMVaPFIV6KUTiprfx UPhw== X-Gm-Message-State: AOJu0Yxj1tP9zF1sPq3grjmHadnqqqOhrOTTaI/0Gr4SV/C6JJx1Ak0Q 2EQK4my1iwKAYf3iX8tNLtyFAos1Oz18xm0o3j9h2v6nGxfKHEWkM8mNYG8y2C7k9ylneOIKyzB JW7ee X-Gm-Gg: AR+sD12D3jLtvG+ZNmExjRBrbxWHzhbpT0pTNUuw7p9tsnz4wevStKmyasG665vZPQB ae/fTM7qXAurwz7nRXVTbJii3oKXzvlrTHwPHkQ5T7578ndKY0dlwFdH1cCmqe0sFJPg3luR7pI qBDkgvhuHeB15oHSyGNPlyOjWboMV2sjEqhsNyQw+emyI7tjm9p6xRGLTzyMqmBLb59ALp0ZLzV pX/nCBKpx6boyk9ikuFqEuoZuE0u7jsMVVnUboTiwHs6RFGR16gV0CdFM4Mc+NzP8cZXhUtlwlb esGgmx1e5AxChbDYIh0zuu6fpG7xTF42dPFluyKb9E9ULnCiDujJ1geq8pA3jSzrWoRHHKtIe63 R72UR6Ol3vEQzOseI784kEIofPZi3fIu2A8TF0ugoNW5sIYA62WGw/mdJFUWYr6LViE9guzGNLj s3GVxW/OelNxUJm/7EQmOW+zVrwpCUEO1L35NeP2l8lanfjIyNT2BR3GOs50d8WeMy0ugqDO0es 6iZQOxcmq8StloPT2OnZ7LcSeLRr98= X-Received: by 2002:a17:90b:1d44:b0:38e:6dd:a9ad with SMTP id 98e67ed59e1d1-392ec11ef75mr5977312a91.0.1786475743665; Tue, 11 Aug 2026 12:15:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: yang.yanjun1@sanechips.com.cn, qemu-arm@nongnu.org Subject: [PATCH v2 2/3] target/arm: Fix SVE2 WHILEWR/WHILERW zero diff boundary case Date: Tue, 11 Aug 2026 12:15:39 -0700 Message-ID: <20260811191540.79882-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260811191540.79882-1-richard.henderson@linaro.org> References: <20260811191540.79882-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786475795725158500 Content-Type: text/plain; charset="utf-8" The trans_WHILE_ptr function incorrectly handles the case where the address difference divided by ESIZE results in zero. This happens when the address difference is less than ESIZE but greater than zero. Fix by dropping direct comparisons of op0 vs op1, and instead testing the scaled diff vs 0. Merge with the bounding to the maximum vector length via wrapping arithmetic. Reported-by: YanjunYang Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/tcg/translate-sve.c | 38 +++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index fc4cc8c479..0becef16a9 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -3697,7 +3697,7 @@ TRANS_FEAT(WHILE_gt_cnt4, aa64_sme2_or_sve2p1, do_WHI= LE, =20 static bool trans_WHILE_ptr(DisasContext *s, arg_WHILE_ptr *a) { - TCGv_i64 op0, op1, diff, t1, tmax; + TCGv_i64 op0, op1, diff, t1; TCGv_i32 t2; TCGv_ptr ptr; unsigned vsz =3D vec_full_reg_size(s); @@ -3713,7 +3713,6 @@ static bool trans_WHILE_ptr(DisasContext *s, arg_WHIL= E_ptr *a) op0 =3D read_cpu_reg(s, a->rn, 1); op1 =3D read_cpu_reg(s, a->rm, 1); =20 - tmax =3D tcg_constant_i64(vsz >> a->esz); diff =3D tcg_temp_new_i64(); =20 if (a->rw) { @@ -3723,25 +3722,36 @@ static bool trans_WHILE_ptr(DisasContext *s, arg_WH= ILE_ptr *a) tcg_gen_sub_i64(diff, op0, op1); tcg_gen_sub_i64(t1, op1, op0); tcg_gen_movcond_i64(TCG_COND_GEU, diff, op0, op1, diff, t1); - /* Divide, rounding down, by ESIZE. */ - tcg_gen_shri_i64(diff, diff, a->esz); - /* If op1 =3D=3D op0, diff =3D=3D 0, and the condition is always t= rue. */ - tcg_gen_movcond_i64(TCG_COND_EQ, diff, op0, op1, tmax, diff); } else { /* WHILEWR */ - tcg_gen_sub_i64(diff, op1, op0); - /* Divide, rounding down, by ESIZE. */ - tcg_gen_shri_i64(diff, diff, a->esz); - /* If op0 >=3D op1, diff <=3D 0, the condition is always true. */ - tcg_gen_movcond_i64(TCG_COND_GEU, diff, op0, op1, tmax, diff); + /* Saturating subtraction maps diff <=3D 0 to diff =3D=3D 0. */ + tcg_gen_ussub_i64(diff, op1, op0); } =20 - /* Bound to the maximum. */ - tcg_gen_umin_i64(diff, diff, tmax); + /* Divide, rounding down, by ESIZE. */ + tcg_gen_shri_i64(diff, diff, a->esz); =20 - /* Since we're bounded, pass as a 32-bit type. */ + /* + * If diff =3D=3D 0, the condition is always true. Also, bound to max. + * Simplify + * diff =3D diff ? diff : max; + * diff =3D umin(diff, max); + * via + * diff -=3D 1; + * diff =3D umin(diff, max - 1); + * diff +=3D 1; + * via 0 - 1 =3D=3D UINT64_MAX. + */ + tcg_gen_addi_i64(diff, diff, -1); + tcg_gen_umin_i64(diff, diff, tcg_constant_i64((vsz >> a->esz) - 1)); + + /* + * Since we're bounded, pass as a 32-bit type. + * Sink the diff +=3D 1 from above into the 32-bit type. + */ t2 =3D tcg_temp_new_i32(); tcg_gen_extrl_i64_i32(t2, diff); + tcg_gen_addi_i32(t2, t2, 1); =20 desc =3D FIELD_DP32(desc, PREDDESC, OPRSZ, vsz / 8); desc =3D FIELD_DP32(desc, PREDDESC, ESZ, a->esz); --=20 2.43.0 From nobody Wed Aug 26 07:27:20 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786475805; cv=none; d=zohomail.com; s=zohoarc; b=Shx9BbvsB9sxO1kWZTUswjj7ldjH6id9D6ZYRBpJpZwOtYqNEbNkQHpSAjtyIeslcukrJgkhWB4l0blMpCh6x7inzcOPHj8aLtN0ZSH8M/F3MHSHN+uinKE+o4MxlB5axNDdLnvfKGlTufSDjrb3BiQizV9Cz4m9UgO0USFw6WI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786475805; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oGQa5u97Tf6cvRlX6RYNQHfqzZ112KA8RU1f9as2cNQ=; b=AYpy2IqVsL3nDN4VB8giX1kA/ItL10eJR57TkBpo6Lj8HBdmfqlObA50zXz1s29Rfp0sLCXf5CRrXX6yEtwgniwCivSntJyFIKBQ+yOy9Cvp+5S7TQEPWlm52dadzUBbSuPhvVoYHdn/9z9LDn66kcBBVd7oB6IAgIclyQMtchQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786475805189128.98313591929946; Tue, 11 Aug 2026 12:16:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wtrxA-0002IJ-6o; Tue, 11 Aug 2026 15:16:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wtrwz-0002GK-Hk for qemu-devel@nongnu.org; Tue, 11 Aug 2026 15:15:50 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wtrww-00028g-2K for qemu-devel@nongnu.org; Tue, 11 Aug 2026 15:15:49 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2cad8076b01so3303045ad.2 for ; Tue, 11 Aug 2026 12:15:45 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-392f97fc409sm209668a91.1.2026.08.11.12.15.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 12:15:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786475744; x=1787080544; 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:content-type; bh=oGQa5u97Tf6cvRlX6RYNQHfqzZ112KA8RU1f9as2cNQ=; b=BjDgeJKh/xjaAXgMXP7VynTD5L9CZ9JaAArxDaw0+4orPOEaiBNjysTHCAPdxt/dUg MTfcD2F0zf9LBVy4bSy2YL+xDoEJpzUyjMsCP3d47oRzTaoV5Vx7gjgwnQQDs2lF3EJ7 HHwwKUfXi10CGQf7Mm4fAO6kxng7NR0OPD8jR5SUdGFWPIeaiUtmpebJqBvKSXauiAJb B8aNQZoVn9aqUHWzHPR8uCNx/7pcm2E3NPHB8v3euyatzsWelo2w8e+Ea/aXHEO9cbjr MQEfip3Atwq7XA0pC3bJ2VwlLw+8nvmByBwsRBmH9B2egh3VeeL/laRrfoOuVzhTzWc+ ysig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786475744; x=1787080544; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=oGQa5u97Tf6cvRlX6RYNQHfqzZ112KA8RU1f9as2cNQ=; b=qQ1G3PwCOUmiX2KSDo5GYd5HHdUJNh+TdTzfNWS62OwgQRVCyCP1+QsiZ0t7noRZKZ R/PglvIUon/ggfLaSaxNkVBZxmloMn9ygoxtD/ItGtYnHyIuakf0Z/tvshmFEWYcRSYQ EEi0vTBCyh8qn56L/tXsOlec7uneO5xhFYx4H6d7b2//6qx24io4uqxzXEwcwKIjUOCI vFGNKqAfMrm3dCgmgzxeVhbc5v7rNTFW1oztrsyXEmS4+kqrf6LRP2jbFgjIyu17J8wr A8CtnYRX9rTnSzCPQWL77ekk11HjcyAX2lGcr3B0eAyiVVpYk98kTuh8IcH4EMXZkEv7 IWIw== X-Gm-Message-State: AOJu0Yw0TLBw+PKswCBgYMjgp1p5saSrKHRaVAf+lRYqoblGTYOIFq7Z ioqWh6EkcDP7sPNzynlN6s4lLwhPSWE4hpVkRXaivHAheP2nVus4bKsPRF5omoPPFvWq0j3QTXJ K/p0f X-Gm-Gg: AR+sD10AhTrJse3aaF2JqhK7HOlKYBIPyOGbOeyyDvtQmPzrUobxU/84wTRWsn5nkFq IvDbL3WSjPdYnjRsHxAXS8N0jalmoBMO/a1zr/FKoEGciOfSpSY26yGVe+MZAl3uFRIuUULzQVB d2IAGRbw5ClTXNx7rcp69+ADzoAZ9KUV0M1OR85V2CB9ywKmyfoR5PsFbYYff0EbnrX9gmDaeUE 0IJadVA7Xv38scy/NgJYdLNB0/tVk8vJEVKRTd+0/7zDw+eRiIP0ZISY06DhOH3fUzfQISng1Kg BWcpK9j085d7QdahqwpU5HHZGyUhZwz5uxc1DQY+zAhnXDq80HGAtFMrOuljSv5QQs9cTiPeCty 7biulFSl7ZHMEK+K4IN9g4kTvG6dPpcQ4ygfPoqOCoyK64aU/Kppz2NVhVZt+SIQXc6J0mwDoda zRKrsuvzg6dXM5S4r9XYuTpdpavvqqElohnWVRv1Afc7zDgJuQvJjGnU1jfdQhSspCQJTQvjWzM N74LVmTVpJ1qPEsitvp X-Received: by 2002:a17:90b:3c8c:b0:37d:ee77:78ac with SMTP id 98e67ed59e1d1-392f484a46bmr2499163a91.19.1786475744420; Tue, 11 Aug 2026 12:15:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: yang.yanjun1@sanechips.com.cn, qemu-arm@nongnu.org Subject: [PATCH v2 3/3] tests/tcg/aarch64: Add regression test for whilewr/whilerw Date: Tue, 11 Aug 2026 12:15:40 -0700 Message-ID: <20260811191540.79882-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260811191540.79882-1-richard.henderson@linaro.org> References: <20260811191540.79882-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786475806059158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- tests/tcg/aarch64/sve-while-ptr.c | 28 ++++++++++++++++++++++++++++ tests/tcg/aarch64/Makefile.target | 5 +++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 tests/tcg/aarch64/sve-while-ptr.c diff --git a/tests/tcg/aarch64/sve-while-ptr.c b/tests/tcg/aarch64/sve-whil= e-ptr.c new file mode 100644 index 0000000000..7db3b9cc03 --- /dev/null +++ b/tests/tcg/aarch64/sve-while-ptr.c @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* WHILEWR / WHILERW regression test */ + +#include +#include + +int main(int argc, char **argv) +{ + unsigned short p; + int set_vl_ret; + + set_vl_ret =3D prctl(PR_SVE_SET_VL, 16, 0, 0, 0, 0); + assert(set_vl_ret =3D=3D 16); + + p =3D 0xdead; + asm("whilewr p0.s, %0, %1\n\t" + "str p0, [%2]" + : : "r"(8), "r"(11), "r"(&p) : "memory", "p0"); + assert(p =3D=3D 0x1111); + + p =3D 0xdead; + asm("whilerw p0.s, %0, %1\n\t" + "str p0, [%2]" + : : "r"(8), "r"(11), "r"(&p) : "memory", "p0"); + assert(p =3D=3D 0x1111); + + return 0; +} diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile= .target index 32f2689273..6cc81bf854 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -203,8 +203,9 @@ endif endif =20 ifneq ($(CROSS_CC_HAS_SVE2),) -AARCH64_TESTS +=3D test-826 -test-826: CFLAGS +=3D $(CROSS_CC_HAS_SVE2) +SVE2_TESTS =3D test-826 sve-while-ptr +$(SVE2_TESTS): CFLAGS +=3D $(CROSS_CC_HAS_SVE2) +AARCH64_TESTS +=3D $(SVE2_TESTS) endif =20 TESTS +=3D $(AARCH64_TESTS) --=20 2.43.0