From nobody Sat Sep 26 20:52:29 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=1789267160; cv=none; d=zohomail.com; s=zohoarc; b=najVC/b5vGrklGyZ47vSAP8XV3ZmMOtMUCsEUXAKTSlnu+jHOivA12hEyWAITS5j+Blaq2z7Y9GSqjIL/H/p21IXx3qp2q4iVoacXMKi4IX40IkOuuJeXsHe8XK59/Z88Hx+BbbQ/Kl5eV34uVzEDnJJ2AFvozykDexJvM3pUyQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267160; h=Content-Transfer-Encoding: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:Cc; bh=BFdwlpBUb/ld5iaXCqigYzlB5i82jNLi2haiV8Iolgw=; b=M949fUuw1ylXo3bGqdYGceI7JtzAt5mBf4YK4/jusRf3mQ6PZh8SIL9MyphxbMEbH11DIObQaMCSFsd4+tv8D5isoERl1lkrUYeWgE0km2wy+lFmx+HeZwMfCTdbpmAaM/v4D+NetzVmzGD/SJzGm2ZIMQiJAjdik2xyHA0791A= 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 178926716091229.061504720928383; Sat, 12 Sep 2026 19:39:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7J-0008Nv-Mb; Sat, 12 Sep 2026 22:38:55 -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 1x5a7B-0008NP-5g for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:46 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a79-0000wX-KY for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:44 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccb1a990so735031a91.3 for ; Sat, 12 Sep 2026 19:38:43 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267122; x=1789871922; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=BFdwlpBUb/ld5iaXCqigYzlB5i82jNLi2haiV8Iolgw=; b=eU1RafTOSiVZqkF08AsIh6F1oJRaiHWSE/lIIPuy6tgh9G6UKo0o7Y/YMf17wxae+m UQgutZ4SM9vYsqiqGa5Ep+dKgMuyb/xMjkJuHkvy+EW+yJgqf3CUz0WgEldNiL2mQhCw p+DDKLwoznH9lGR02l0htKWhJFEO8cDZ2BpCHsxkhjaIgKx6FItH6R2rqg+IrcEiqQoC H1kXRncNuxY7GNodON8/jP+x7ppJwaOAMxv4EI45bDaPjFJ7bt/1g7JZRkqR3fryTnlz qoMHBTsIhnzOCzgMLq8+v7BvzsDD6DhPxBuqRTcwjFy/HYvqXS72K3njrqFOz8YLQPtB b8Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267122; x=1789871922; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=BFdwlpBUb/ld5iaXCqigYzlB5i82jNLi2haiV8Iolgw=; b=tSWkmJzxeNU6eIuNAxXfL9m3g1ia4P4JpH+K3Q5A+76/tQ0T27eTGms9X/+vQ7FPz4 50zfFe9I6NOmaEDr9LXNh7ZVSuOcbzdap25CMWgrVh9QYBWcLIudrNU/jkganH7w5Trv z9rQHA8xDDE5PZUKTJyFKlMkEvujFTg7+3xiaKbgfObmvsKquvqJPrciEuvBmgJpFAN9 ZFy1Ergb0rl/6n8diJPup2TN3zDNvz3aM+0Q24AUYU4V0q7obk+3qFr9odKm3F5GqBk8 emXu/MQIBhjmD9Iolwrvn6wepCvXWaPBRIH5csg+96S69+Kysl1BypqGn4PX7Kv3r1BI jf5A== X-Gm-Message-State: AFuF++nRd21F/yrIppGzrvMTWeLUTttGsO9CKRLLg+BtjRUa0Yb3ebzY 5eM0ZQ5B6s7h2vb3w2clHDkgXO3LXnzNLt4F59mfaRQDgNHQ3v0HbKYOdlfhWt/RhuUD3IwSvmB N6lmZUi8= X-Gm-Gg: AYBFou0Zn65xAVlUK9nv6qTfKfT3gNLjpQjmPNuJsTPoBhUhisLykL9wumkWkwkApzy LQrrRavicn5+I3z0coa2F0V8eJbWIiGB5BDbC5SxBLDQ00Ay9wIX0Q4h6FzRMvudC7aDTYugiv9 Ne5pG3DB9YqC5lDbPIThYCyKXb+42xlSIMG0/+i9AnUNIV8EwWbP1ip5e6ezGhSTuw8o4Piid9g iWlEZgNHBWN3knEsMCtEetJBpSzWEQPwu0wWAMVWbOiu2AoSEVsuAIXxjwQxutVesZphp++zse3 3nSVjyEJ8imXIEvY9WkkUVi+J4nx5wji52LQXkVyFfpI1IRAiGn/oZP3uxQiv5UdRGdF6S5KEv7 R98ZYCHl2yaiJ90OJenFZx25pSF9vuZRRH+R+G/LElR0xNJoHqexts7vNSeCspLbQcrboRBbqeV 43XFMxlhVM7Dy0Zrs8RIFQr3SKSVGR22JBo+Ja1iuZ5Rs11700AYkJ2eD0MKEkrtgURLepeN6wM 5nO1Fo= X-Received: by 2002:a17:90a:10d6:b0:39d:cbb1:c96f with SMTP id 98e67ed59e1d1-39dcbb1cadbmr3391253a91.18.1789267121930; Sat, 12 Sep 2026 19:38:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 01/86] include/qemu: Define QEMU_ALIAS Date: Sat, 12 Sep 2026 16:37:12 -1000 Message-ID: <20260913023837.741866-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267164539158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/qemu/compiler.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h index 4c49f52eb07..614a0bfd295 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -222,6 +222,13 @@ # define QEMU_UNINITIALIZED #endif =20 +/* + * Alias the current function definition to another. + */ + +#define QEMU_ALIAS(N) \ + __attribute__((alias(stringify(glue(__USER_LABEL_PREFIX__, N))))) + /* * http://clang.llvm.org/docs/ThreadSafetyAnalysis.html * --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267170; cv=none; d=zohomail.com; s=zohoarc; b=aUa6ratHYqhKPj+FyIgco6PJMiwqpEIFFgXeMsTG+IPhItu356qY6+pMMZoi+f08arP/uPWab5bAodazznLx3RRS5GYA3imqj4GmVZ0uB4aQSgBYRydeonZ/RaAkTLOfPPo5dyT2bliLH1NeyWRb7cwoYBtScixFx+dE/f9NMec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267170; h=Content-Transfer-Encoding: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:Cc; bh=47puM7envmbLsBYn4NN2JvYgQw7NFohb4tsZxNlNnyg=; b=VwqlRBgL+NBUjuMCMa7TZxyBzvjyZFrYPsCxXfKwWL1B66TyWzzlX6el8JXJL/YPQzMK9a4UE38xQ6zyiGQHTlQm9r0ek3r8T00bX72Exg4rRPS5TKEDL/RJSdoj9qJppmJXHeqS5NwPxykrN5CDx77Yj4/8LzQq6AQDJ5UOXyI= 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 178926717051113.956519018438826; Sat, 12 Sep 2026 19:39:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7U-0008Pk-Rl; Sat, 12 Sep 2026 22:39:04 -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 1x5a7C-0008Ne-PH for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:48 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7A-0000wm-Uk for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:46 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc4aa0f1766so613607a12.0 for ; Sat, 12 Sep 2026 19:38:44 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267123; x=1789871923; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=47puM7envmbLsBYn4NN2JvYgQw7NFohb4tsZxNlNnyg=; b=nOuMM15nTGmAzHhJkZK2PPFC+vqHGgvqoGYJN0p6JVpk/Jfuynz0kz6l5X25inEPa+ Cf9eBk+nW3E8L64ZU/8yRZneZHTjCWytBvxXMAXvukJg9uET85+ZZltVbMBK5bcOfrKk eYHhuahO9wlKm6gIowiIwJbeEApmzE6nM44o1dvtAwHoZOBo7C85OCb23009VcrapEI4 vy1xO6BQAmyzV+iV13TY7dVTOaotmvFKQQeS2tSFjrbfYKMX29bNVG1GCN2irZTi7/5/ 1kFd90UW+0WBBunvS1oegifjBJqvqhCW+op6E48HiEwUiVCXUaVFcrHe6AAsUi/2X5IM u4rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267123; x=1789871923; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=47puM7envmbLsBYn4NN2JvYgQw7NFohb4tsZxNlNnyg=; b=nv/Bf3ZhBcW9/Ja17B1seGNFLPsV9mORUlpLXKuKtSJ8jRsSzE7+sV5LZkRgJiPNPA j2j7HYTE8837lygaGzNyjhMTXwgvwVtNp9S04THSbfb/l6w++gf9vmgZ3mMvyU1z2d/5 /DpfNfDe25TjdyXGuShq+nKSGS77yuAAzo2WRFxvmhSttcHQDPocMciiTT1VQ1vtxDHB Nj7usctty+c9Q1gK3H2o++iXfNhhKKW6lB+Q26efYo7qFG0kOr5svEUI6ePdG4YS5/UB ae0wGpl6SQwTxk9tHt2C/S5RERqxqreLfBOlwlkp0/4VRL7FFW3tFTOpomffRmybeSvC SWaA== X-Gm-Message-State: AFuF++kWQVKScjq97cOwR8OAVfkzOgP6lx5aEcRLjk7DNYfDxvslzx6P 3vAZ6pFD2q2hzrI1uRQE10qoFKt6bcgujpUngBSSCYWfLjfWsjoZMbOYXwKFAKQqcgN/pIAxAtj wdRmEVY0= X-Gm-Gg: AYBFou2wF2WBy99FPVke0sO5Pv2LPz7QVpvzB//T3S9Syg+WNmUvC2oatqBa9W0HNdO uGiwHJGFc2zSlQ2gykQELWJi6ar6s81p0jN1iYIPTCcVu4r7WHFaczCE16S5iliytIB/C5osB6o lS+aM2pgit9drCtaf/7X9ZRV0rKFeat2f01RkTjM7T3ypbnzNEVZz2msOq5SMHrVsxacPkIb5dL 3vt1oJzngEJC9MKTjLGCzqjQ0mq87bWKWYUDRLq7Z3JDojmbcaAQYWxYUWMpRAVmnLdg8sFm2zE 8DSRCWZ3WFvNj5gUTX8T2VW4MXmZsiPLK5li9haF5H9iD0Rp/6/gpwpomvTM2q6UBwmcmCtMvw9 tXKFowDbmct67iDDrNXaO9By/KhvSEyeN70edxTy8ptADAnH2inSYlwoXw7ozplJWVyKtuOUxPf Ae6wYODr9qgqerRi7JQLSP+wdjRYvE/WefUn0mPASqtaDX+aRC66JlTLhCYaJMlRTHBHIIr2q7r GQKcmZCn4f2rdHX+w== X-Received: by 2002:a05:6a20:c784:b0:3d2:2011:d184 with SMTP id adf61e73a8af0-3db0e40c3e9mr10813711637.14.1789267123045; Sat, 12 Sep 2026 19:38:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 02/86] tcg: Use QEMU_ALIAS to define most tcg_gen_*_ptr Date: Sat, 12 Sep 2026 16:37:13 -1000 Message-ID: <20260913023837.741866-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267172430158500 Content-Type: text/plain; charset="utf-8" Now that we've dropped 32-bit host support, TCGv_ptr is always TCGv_i64. Do not drop the type difference, as that's still helpful conceptually, but define the functions as aliases, exactly sharing code. Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 99 +++++-------------------------------- tcg/tcg-op.c | 18 +++++++ 2 files changed, 31 insertions(+), 86 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 9b321f959c0..1e826b62574 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -497,95 +497,22 @@ void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr base, TCGAr= g offset, TCGType t); =20 /* Host pointer ops */ =20 -#if UINTPTR_MAX =3D=3D UINT32_MAX -# define PTR i32 -# define NAT TCGv_i32 -#else -# define PTR i64 -# define NAT TCGv_i64 -#endif - TCGv_ptr tcg_constant_ptr_int(intptr_t x); #define tcg_constant_ptr(X) tcg_constant_ptr_int((intptr_t)(X)) =20 -static inline void tcg_gen_ld_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o) -{ - glue(tcg_gen_ld_,PTR)((NAT)r, a, o); -} +void tcg_gen_ld_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o); +void tcg_gen_st_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o); =20 -static inline void tcg_gen_st_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o) -{ - glue(tcg_gen_st_, PTR)((NAT)r, a, o); -} - -static inline void tcg_gen_discard_ptr(TCGv_ptr a) -{ - glue(tcg_gen_discard_,PTR)((NAT)a); -} - -static inline void tcg_gen_add_ptr(TCGv_ptr r, TCGv_ptr a, TCGv_ptr b) -{ - glue(tcg_gen_add_,PTR)((NAT)r, (NAT)a, (NAT)b); -} - -static inline void tcg_gen_addi_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t b) -{ - glue(tcg_gen_addi_,PTR)((NAT)r, (NAT)a, b); -} - -static inline void tcg_gen_mov_ptr(TCGv_ptr d, TCGv_ptr s) -{ - glue(tcg_gen_mov_,PTR)((NAT)d, (NAT)s); -} - -static inline void tcg_gen_movi_ptr(TCGv_ptr d, intptr_t s) -{ - glue(tcg_gen_movi_,PTR)((NAT)d, s); -} - -static inline void tcg_gen_brcondi_ptr(TCGCond cond, TCGv_ptr a, - intptr_t b, TCGLabel *label) -{ - glue(tcg_gen_brcondi_,PTR)(cond, (NAT)a, b, label); -} - -static inline void tcg_gen_ext_i32_ptr(TCGv_ptr r, TCGv_i32 a) -{ -#if UINTPTR_MAX =3D=3D UINT32_MAX - tcg_gen_mov_i32((NAT)r, a); -#else - tcg_gen_ext_i32_i64((NAT)r, a); -#endif -} - -static inline void tcg_gen_trunc_i64_ptr(TCGv_ptr r, TCGv_i64 a) -{ -#if UINTPTR_MAX =3D=3D UINT32_MAX - tcg_gen_extrl_i64_i32((NAT)r, a); -#else - tcg_gen_mov_i64((NAT)r, a); -#endif -} - -static inline void tcg_gen_extu_ptr_i64(TCGv_i64 r, TCGv_ptr a) -{ -#if UINTPTR_MAX =3D=3D UINT32_MAX - tcg_gen_extu_i32_i64(r, (NAT)a); -#else - tcg_gen_mov_i64(r, (NAT)a); -#endif -} - -static inline void tcg_gen_trunc_ptr_i32(TCGv_i32 r, TCGv_ptr a) -{ -#if UINTPTR_MAX =3D=3D UINT32_MAX - tcg_gen_mov_i32(r, (NAT)a); -#else - tcg_gen_extrl_i64_i32(r, (NAT)a); -#endif -} - -#undef PTR -#undef NAT +void tcg_gen_discard_ptr(TCGv_ptr a); +void tcg_gen_add_ptr(TCGv_ptr r, TCGv_ptr a, TCGv_ptr b); +void tcg_gen_addi_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t b); +void tcg_gen_mov_ptr(TCGv_ptr d, TCGv_ptr s); +void tcg_gen_movi_ptr(TCGv_ptr d, intptr_t s); +void tcg_gen_brcondi_ptr(TCGCond cond, TCGv_ptr a, + intptr_t b, TCGLabel *label); +void tcg_gen_ext_i32_ptr(TCGv_ptr r, TCGv_i32 a); +void tcg_gen_trunc_i64_ptr(TCGv_ptr r, TCGv_i64 a); +void tcg_gen_extu_ptr_i64(TCGv_i64 r, TCGv_ptr a); +void tcg_gen_trunc_ptr_i32(TCGv_i32 r, TCGv_ptr a); =20 #endif /* TCG_TCG_OP_COMMON_H */ diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 2c88f4f7ca9..b738863ea69 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -2730,3 +2730,21 @@ void tcg_gen_lookup_and_goto_ptr(void) tcg_gen_op1i(INDEX_op_goto_ptr, TCG_TYPE_PTR, tcgv_ptr_arg(ptr)); tcg_temp_free_ptr(ptr); } + +/* + * We only support 64-bit hosts, so TCGv_ptr always resolves to TCGv_i64. + */ + +void tcg_gen_discard_ptr(TCGv_ptr a) QEMU_ALIAS(tcg_gen_discard_i64); +void tcg_gen_add_ptr(TCGv_ptr r, TCGv_ptr a, TCGv_ptr b) QEMU_ALIAS(tcg_ge= n_add_i64); +void tcg_gen_addi_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t b) QEMU_ALIAS(tcg_g= en_addi_i64); +void tcg_gen_mov_ptr(TCGv_ptr d, TCGv_ptr s) QEMU_ALIAS(tcg_gen_mov_i64); +void tcg_gen_movi_ptr(TCGv_ptr d, intptr_t s) QEMU_ALIAS(tcg_gen_movi_i64); +void tcg_gen_brcondi_ptr(TCGCond cond, TCGv_ptr a, intptr_t b, TCGLabel *l= abel) + QEMU_ALIAS(tcg_gen_brcondi_i64); +void tcg_gen_ext_i32_ptr(TCGv_ptr r, TCGv_i32 a) QEMU_ALIAS(tcg_gen_ext_i3= 2_i64); +void tcg_gen_trunc_i64_ptr(TCGv_ptr r, TCGv_i64 a) QEMU_ALIAS(tcg_gen_mov_= i64); +void tcg_gen_extu_ptr_i64(TCGv_i64 r, TCGv_ptr a) QEMU_ALIAS(tcg_gen_mov_i= 64); +void tcg_gen_trunc_ptr_i32(TCGv_i32 r, TCGv_ptr a) QEMU_ALIAS(tcg_gen_extr= l_i64_i32); +void tcg_gen_ld_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o) QEMU_ALIAS(tcg_gen= _ld_i64); +void tcg_gen_st_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o) QEMU_ALIAS(tcg_gen= _st_i64); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267354; cv=none; d=zohomail.com; s=zohoarc; b=ToqyeTmk8Vl4G9aH9Wfg1Up57/BCGiankrQmMdYpH90l43rejBAuRdRpGo12rkljjz14Z24wti4k/Qs1XQCq3iYwbleR9aF2fKlLOSUnfaaOuiIcz+6QcJMJm1367uSSfOrTf3CNlmAPVNLToQXg8rnjJ8Ygy9DDeCnknqKja6k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267354; h=Content-Transfer-Encoding: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:Cc; bh=MVQDaPXv+LKgeCkzDQpUKKRCK0cwdGmgYdDjl9T/qQY=; b=Q2ieNnUc8YV5OZtY2ipyHbh8Dk3w0tJOiSCMwbnnM93w83ksFCr5w4gUhDDZkzaQ6Qxzl4dyqyfrmByDK6slm7vLNRPJYOmFahHCqoXxQKGuss5JDGW2zHXI6Ggv4pRfcpsq/pXiypYGjI2dyg6kTonJO3rxCt520/hU10NMUhc= 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 1789267354375382.15448344173; Sat, 12 Sep 2026 19:42:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7t-0008Vu-0D; Sat, 12 Sep 2026 22:39:30 -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 1x5a7E-0008Np-Av for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:49 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7B-0000wu-O8 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:47 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccafb74fso1046509a91.3 for ; Sat, 12 Sep 2026 19:38:45 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267124; x=1789871924; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=MVQDaPXv+LKgeCkzDQpUKKRCK0cwdGmgYdDjl9T/qQY=; b=SL/uc+zojd8CUUXdc5SQhCHImDqGEqlYgf4/1wMDc2LPd8u1rm+JPIicHNthbDEl2I FkTocKixuZ8FIB0xTKH7ODtIjB4D6om7YZldSJIhj0eTsoyIARPeLQ860BL8Dk76fxxU MBN29xiT2RDNdKgNGOFhEC1hcTEbJ9qlLksnpDWEr8rytavbqz9qsW3SnicYNTVHsm+I PHaqZkxNieI7rGEDDZUm4YYSd/vUIHdySD8yhJn7eTdR4HedHfp4+9x8QyIH4XUwcCsh 0leEZyOeAmDmeEeZetE4lgeu/5Cuqw7c0zLoG+I5GIvKXEmIMQkZUT7gZa77K/YUBR+J BgRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267124; x=1789871924; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=MVQDaPXv+LKgeCkzDQpUKKRCK0cwdGmgYdDjl9T/qQY=; b=Hseyg+r6OLDqHfvUJ0ShIhjKYeG6mYTuDKflRoLCgN4DdeDBNdU9lsqwDPx8Kz7uLt 47NGSb4y8dHom4FREgIw6v9IEFBgmqF+T1EOKPWrAkmrJ/uxuLYFHi3Nt0B8HVc1kJnZ 4+Dg/qrim2GG2L29O1cGmpA+drI3rEPV0JUtO807qQy1HljoJ7TZyzN4zCbQ7kgCYv7v hjsjRe8YhJiZHmzUVe95Fwfr6bvwxSQe/HZN4JfB+pF/uy0zwCVJenemko05KS7U9W3H 6HtXLUWjn7vHQexshoQuNQfRLqfdc/0cxA7IQNlZkeiGpBTFMIUrkYpy5QgV/BBdG3BZ CUPQ== X-Gm-Message-State: AFuF++kPQ1tFBIt1AmzWKt/VHJZHBInLzX827KnU+LIGD3a2/hzn4rwJ BMU7EbwpHPyQD4ExPAZob5au6H3uIS88JjsWPHJjtSBsI5v5IsoRVGUTOV7At3S/ZI8dK7VMEC8 81hkW X-Gm-Gg: AYBFou0OAQo1x6+KWPWusGJPj2PHVmESigVLmmcpRVPGYeiVZO8yGQK10dm80oDq7TK cqmPeXIkWTGZVmiBsgiCZYclMsUbfetYtYMmXytH2WOK+pWjST+LZuVTU+mHKT+3eV4EAIOyxFJ kr1x9bQKW7p5LgKDzmyuBwkIeqLjzHzbjTzvM5Xv8Vx6QCSlppKgosgTx4Ej08XRME+CnsoQdEE x272sj0YGIxbeek4FEK6RuLbPdM6Y7IUD/z8SJVvLg9+J7sCyUEcB+xaQ5OYlVjCMvVKC5hDM9F WKPBG02rtWWImZ7+5uSutA5bbY0DdRcOciUOuEP0wszxw+PgJ8IOvTJiwAN3Ug1/AWyXdgl8K0L Uj3bnYXXW3kRauCUxG22L1aWUQ/NAzmAegJ0GLFp1/5L1f+xRNhHaDxCuJ8wiL/QjnACZe5mCAK TUjhP+Crs0JpGK/q9jQ6dRY6c4S2tUYKKXeXU1GOtYMAq90p3tN7PSZqfRJWP8Xqm2Qyty/H6vK CN4Rw8= X-Received: by 2002:a17:90b:3850:b0:398:9be8:ea69 with SMTP id 98e67ed59e1d1-39d9c36187amr18679006a91.22.1789267124069; Sat, 12 Sep 2026 19:38:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 03/86] tcg: Generic expansion of tcg_gen_mov_* Date: Sat, 12 Sep 2026 16:37:14 -1000 Message-ID: <20260913023837.741866-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267354898158500 Content-Type: text/plain; charset="utf-8" Begin sharing code in the expansion of operations for various TCG types. Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 29 +++++++++++- include/tcg/tcg-op-def.h.inc | 3 ++ tcg/tcg-op.c | 91 ++++++++++++++++++++++++++++++------ 3 files changed, 107 insertions(+), 16 deletions(-) create mode 100644 include/tcg/tcg-op-def.h.inc diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1e826b62574..8a42ff1f456 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -88,6 +88,33 @@ void tcg_gen_lookup_and_goto_ptr(void); void tcg_gen_plugin_cb(unsigned from); void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminfo); =20 +/* + * Construct operations from templates. + */ + +#define DEF2(NAME, T1, T2) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2); + +#define TCGV glue(TCGv,TEXT) +#define TEXT _i32 +#define TINT int32_t + +#include "tcg-op-def.h.inc" + +#undef TEXT +#undef TINT + +#define TEXT _i64 +#define TINT int64_t + +#include "tcg-op-def.h.inc" + +#undef TEXT +#undef TINT +#undef TCGV + +#undef DEF2 + /* 32 bit ops */ =20 void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg); @@ -172,7 +199,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_i32 in); =20 void tcg_gen_discard_i32(TCGv_i32 arg); -void tcg_gen_mov_i32(TCGv_i32 ret, TCGv_i32 arg); =20 void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset); @@ -294,7 +320,6 @@ void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_= i64 arg2); void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 void tcg_gen_discard_i64(TCGv_i64 arg); -void tcg_gen_mov_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc new file mode 100644 index 00000000000..ebfaf0b8188 --- /dev/null +++ b/include/tcg/tcg-op-def.h.inc @@ -0,0 +1,3 @@ +/* SPDX-License-Identifier: MIT */ + +DEF2(mov, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b738863ea69..511b34b143c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -104,6 +104,11 @@ TCGOp * NI tcg_gen_op6(TCGOpcode opc, TCGType type, TC= GArg a1, TCGArg a2, return op; } =20 +static void gen_op_tt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t= 1) +{ + tcg_gen_op2(opc, type, temp_arg(t0), temp_arg(t1)); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -315,6 +320,78 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) tcg_gen_op2(INDEX_op_plugin_mem_cb, 0, tcgv_i64_arg(addr), meminfo); } =20 +/* + * Forward declarations of generic expansions. + */ + +#define DEF2(NAME, T1, T2) \ + static void glue(gen_,NAME)(TCGType, T1, T2); + +#define TCGV TCGTemp * +#define TINT int64_t + +#include "tcg/tcg-op-def.h.inc" + +#undef TINT +#undef TCGV + +#undef DEF2 + +/* + * Templated operations. + */ + +#define DEF2(NAME, T1, T2) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1 a, T2 b) \ + { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b)); } + +#define C_TCGv_i32 tcgv_i32_temp +#define C_TCGv_i64 tcgv_i64_temp +#define C_int32_t +#define C_int64_t + +#define TCGV glue(TCGv,TEXT) +#define TEXT _i32 +#define TINT int32_t +#define TYPE TCG_TYPE_I32 + +#include "tcg/tcg-op-def.h.inc" + +#undef TEXT +#undef TINT +#undef TYPE + +#define TEXT _i64 +#define TINT int64_t +#define TYPE TCG_TYPE_I64 + +#include "tcg/tcg-op-def.h.inc" + +#undef TEXT +#undef TINT +#undef TCGV +#undef TYPE + +#undef C_TCGv_i32 +#undef C_TCGv_i64 +#undef C_int32_t +#undef C_int64_t + +#undef DEF2 + +/* + * Generic expansions for templated operations. + * We have used compiler type checks to ensure all TCGTemp + * are of the proper type. + */ + +static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (src !=3D dst) { + gen_op_tt(INDEX_op_mov, type, dst, src); + } +} + /* 32 bit ops */ =20 void tcg_gen_discard_i32(TCGv_i32 arg) @@ -322,13 +399,6 @@ void tcg_gen_discard_i32(TCGv_i32 arg) tcg_gen_op1_i32(INDEX_op_discard, TCG_TYPE_I32, arg); } =20 -void tcg_gen_mov_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - if (ret !=3D arg) { - tcg_gen_op2_i32(INDEX_op_mov, ret, arg); - } -} - void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg) { tcg_gen_mov_i32(ret, tcg_constant_i32(arg)); @@ -1396,13 +1466,6 @@ void tcg_gen_discard_i64(TCGv_i64 arg) tcg_gen_op1_i64(INDEX_op_discard, TCG_TYPE_I64, arg); } =20 -void tcg_gen_mov_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - if (ret !=3D arg) { - tcg_gen_op2_i64(INDEX_op_mov, ret, arg); - } -} - void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg) { tcg_gen_mov_i64(ret, tcg_constant_i64(arg)); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267188; cv=none; d=zohomail.com; s=zohoarc; b=Rk/nHdEEoftieNVQd8qUwZznIF1Yaehr85NvJnc8hVgWG+CHXPJt7wtxWIieAnCLlJGmwAX5uUIxTmB5lzNjDUu0/1hPK4/1hd/6Ax0kDzXPpoZLT5Xcd8W4OIRZiLT+A5rfBX5ncsRoNDTDHsp2sGJO17ogg6iqBT5/eMNnlJk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267188; h=Content-Transfer-Encoding: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:Cc; bh=uQFQAp0hUoGyPy/HNREU0P752UtsQogAcAehe06GS40=; b=O+99SPGfNc6NJLRQEbk0mCd5K8AQBxmaGBbCDnXrhqI50fwLKzJ+QSTayyDC3Vq1Kp/2F/rHPrGKnhiw/o96xkn1kvmE7OVBXsAGcpLREfQq+YVpN3oxMtI8oW27a4Uek2ZBf4lr7Ecyu+B2ntHkrgL8QaDvSVX/sJ77dAMHloY= 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 1789267188833983.5507825450221; Sat, 12 Sep 2026 19:39:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7P-0008Om-2D; Sat, 12 Sep 2026 22:39: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 1x5a7F-0008Nt-R8 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:51 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7E-0000xH-2m for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:49 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccafb752so1044651a91.0 for ; Sat, 12 Sep 2026 19:38:46 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267125; x=1789871925; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=uQFQAp0hUoGyPy/HNREU0P752UtsQogAcAehe06GS40=; b=assRMdiitFKCZdQP50skiAmxjQQ9oQuF5BbYIMBLrkA4K5yt7zNopqriQMaW8Sqyhm f0r+NbRS7WskKE6Vxv2kbjO1oaw/HZZdAd7/A0eRb3BZjXrXrce/NVJSSfX2Hlk+QbY6 NXzSox3Gc+kSYwONaYayj/QjsvwkOciOf1BzLtJ/JyYA0hRrCDL8H6CMSA8EAhtiGF1U 5wjrbewtaczKPZXe8UP/e17p7uwSzyzfvujYQhCgoEjPp1/QSalHwwAzw0thSYCBxm1U RTWgTGxcqu/nkF4C/o3kuseCCSoTxKeDcsY6dDF3/i87iIRHuPtoHLwjk+yyBPN36Djt Ya3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267125; x=1789871925; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=uQFQAp0hUoGyPy/HNREU0P752UtsQogAcAehe06GS40=; b=O3W2pd2gTdBQuBJjjb/IERk223lowL7GlHvxJ7QG3+7eMU1uEEPCa0AxRWMiFGCrmV 9fiuz65bzQxTxqXNBO8mtOCCrIotiDYCq5V3cBvmN9kMvPZ4LJcysFJCmsbyZVzoCoHB HRNG+k6aBPh4CVPlAJuymUbvTsGcT1Qx533YeAH0eAdcgOSQbh1qLfNHjuLSXIwCGkFv 4ofsEKZhfSb8qhieHeg91OCkzP6xa7H0FjrlXLSbb9RN8Dg6MICsmmLB+6U1S83qk3iU E0kaa3vdVWAI0kpQQ6JP6eQsUSLxMUhvpZzmL7LNzdGxw8ieisIC8CpgSduldhpkUwiV CX9Q== X-Gm-Message-State: AFuF++kAcgg772frqZIdaXAQ4dhvSVyWlmUoqB6qn8M+9+3jPq10oyf9 9P6ce//D1wrGh4CAlGsNcvpL6xSoPSIZQGl3KxxbrA5wUvOjuM1WlAGTlTcT6SDRYSVkug79QUn eD66iYWw= X-Gm-Gg: AYBFou1d1X3WGnam2lZE3GVzVFwwz9EjXOaAkAWn7QEzmTQe1GxjNE8KPEN1mmQT4ov mjuCfYb1E2WqlHwhjddDCMGJi3D3dticAm8/frDED2yMDThD80UCBCUWfSsHLxKRfTKXCHYaRsx JY3cyrPBJALGpRrQxQUJ93lSRsr9YSQY7lPB9x7SsCmFnYxa8PcrfCYWLw6m/5J4E7qeFDj2knz dPm1LBNOy0gwNKA9mpVH58wl0Mfsc/gzfkainuvGTrahH2A3GAfj8qv5mDAnlmmJ99tz/JGnMoM Ul7Tr7XZjd61PQXqMdzPVrbST42mQPJOb+38YC2X8auzRKDDhGJ36BHYxGE5OdFgpeA1v2tb9HM b2OCRdoc2VMcMhSgdVrKbqCDdg6ac8yHiJKRm1UPLu6t5L1A8vycpCGyMW+QbgbXw7fxSo9v9wf vFAsB5B324I2u2OTKjj5WfL/t2PtfnVjMBJCXCCambRudKC53Fn5VapBUjJYI/ZhlWLcat/W9MH oi0+LC7jtj+/zk2Lw== X-Received: by 2002:a17:90b:548f:b0:392:b509:b1a5 with SMTP id 98e67ed59e1d1-39d9c1db3d4mr20009140a91.14.1789267125418; Sat, 12 Sep 2026 19:38:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 04/86] tcg: Generic expansion of tcg_gen_movi_* Date: Sat, 12 Sep 2026 16:37:15 -1000 Message-ID: <20260913023837.741866-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267190338158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 8a42ff1f456..fd603b2de7f 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -117,7 +117,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg); void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2); void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -224,7 +223,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg); void tcg_gen_addi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2); void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index ebfaf0b8188..5de7648ed48 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -1,3 +1,4 @@ /* SPDX-License-Identifier: MIT */ =20 DEF2(mov, TCGV, TCGV) +DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 511b34b143c..82f15205c36 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -392,6 +392,11 @@ static void gen_mov(TCGType type, TCGTemp *dst, TCGTem= p *src) } } =20 +static void gen_movi(TCGType type, TCGTemp *dst, int64_t src) +{ + gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); +} + /* 32 bit ops */ =20 void tcg_gen_discard_i32(TCGv_i32 arg) @@ -399,11 +404,6 @@ void tcg_gen_discard_i32(TCGv_i32 arg) tcg_gen_op1_i32(INDEX_op_discard, TCG_TYPE_I32, arg); } =20 -void tcg_gen_movi_i32(TCGv_i32 ret, int32_t arg) -{ - tcg_gen_mov_i32(ret, tcg_constant_i32(arg)); -} - void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_add, ret, arg1, arg2); @@ -1466,11 +1466,6 @@ void tcg_gen_discard_i64(TCGv_i64 arg) tcg_gen_op1_i64(INDEX_op_discard, TCG_TYPE_I64, arg); } =20 -void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg) -{ - tcg_gen_mov_i64(ret, tcg_constant_i64(arg)); -} - void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_ld8u, ret, arg2, offset); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267204; cv=none; d=zohomail.com; s=zohoarc; b=B79L2U7diDRh2TjS75cyrYsyKCwXp9WCfHru/mrtOmrmjZvg/UfK/aTZEWVPqoaakitd9ERZsUqq1S6dtwzEcRIvgCTuze4pfoeGuYjAhour0WRTSn2OJZ25Ktw98eI5VM4HczWlDuWd1CtTRkxC+Ee0AKEpwRXKFC306jiUq4o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267204; h=Content-Transfer-Encoding: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:Cc; bh=X1afvHDcZIayx+GptUZKRpUaOOUwPjF9JjYvC0M/78Y=; b=lY7wHtyPcXzsJ5ay9jVZcEZJPe0l73aDlfuWZLyhp4laGkR48cF/wErlzUssEDbYFFE3oveCz87/zbSwUgDbZgvfGSUFYMeNpULIxaUVtUiUtsle6eTEyA7JtW9/xqgKoFDn1v7PuEH2hVoiHZdt4sceEB+inOuEl9CM0ilMJL8= 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 178926720457981.1548989794394; Sat, 12 Sep 2026 19:40:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7a-0008RF-Bv; Sat, 12 Sep 2026 22:39:10 -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 1x5a7F-0008Nu-U1 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:51 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7E-0000xZ-3i for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:49 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea50dc3so513216a12.3 for ; Sat, 12 Sep 2026 19:38:47 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267127; x=1789871927; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=X1afvHDcZIayx+GptUZKRpUaOOUwPjF9JjYvC0M/78Y=; b=WlSe66fb+FiyroxM7/FOXtxAQXi3UOurNr6QQCwL1r5NY9BsFv/vSdrVfucjEiDk/K WDsINnXlbpl8gdLHqgLmL10KlOM2efNGs8fZWo0EmuC53Hdbo9l7gQV8aowkHOzq1HGu Z9czEdGt03+brkAreAVyWv9st6G0/g0ndJYsEbg9wkkxYUbi74ZdfKQBupM+L/NHbPD4 ekN1zyXbnRvI6OepIsVECEkG8MbLR/lyrqeOXuVOy6bcQOzc4UgpZ5Gb8hOJGjQOSI4O E0ipUFXMZgluJyqJBdCgbrtMut7c97MogjnQBWGrUwhBKFVhDG/rS7jN3EgsSl6/7K1b x76w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267127; x=1789871927; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=X1afvHDcZIayx+GptUZKRpUaOOUwPjF9JjYvC0M/78Y=; b=UQsU8g+bk97SOjr6zaIiFOKcpbGqVvpUZCi1WAkatEC6Vg4IEgV4LdcWsQG+eWjFqO gwN5KbkNhJUNXlwHMt0wvk52ahEo4PEvebjzdYAMTO21+0PF0mRHqmqSUHFUfF4HvfvN 1KPqIZzMbqg+d05PgkoWhu59O4oCsxUaTLrsajBA6Q0iXiI98yFe5hBH3nan91UqTr6L VqfJNPW6hNXcBsQBySVpUyCyl0VpmRyn4/op8qAPfKzC2AqSoV7K8muE3XRejOGgtOta 0La1P1lwj9xHAzq6vIE+KF9dv+SiXvyoxsdmt2a78ybByx4N4ghi2LGjCEBaC2AVORq7 wVZg== X-Gm-Message-State: AFuF++m48Ce/IYRdy0Gz7Dvs0CwpoMv9d7rf8OIgDqPtq/zuYcXtptHU GImaQ56ORkWhluTOsHvSmLiGP678lLpV0W1sHIeJQESyHBwGQVZ/Z43+VjZFAfh5aSk0GD1E7Xy zXeUlML8= X-Gm-Gg: AYBFou2iDjIEzjHcWotoe9amHOhCKIAX5VjMubKtzudFMYeQ/kHs4nJW+8mvbEW2Rri IwewYJjFfeWluaTIFldCBJh07l869SQmwatK5a1Yb85W/2pfTU+X63De7v5VQ1PBmwuz10Wnt0R PA2aSEtWRv0r0Sfl3BUR1Rb5SSwNT/XBL1Jj3LSHRYohxjLaG7O8XvORJMUv3UXXQQ3Q5jjw801 DdghXpSH2RU40b5whowBETt7UyurSi3oEDIhYMiPlLWd9N88k39ixdb+O/ghnDzYD5+vPk8tVpS wtLsozFTy77ruJEXzVpnl5NRevXFaYxNIUVY5Dq+/uXdPU47j+bviUvZ0w4w17+zji/NWTigp6R jxckkUVtGeQSZeFanvqJsRB8eLYUNZMlk3vN04ilAB3HnC5PZ4Xi/EvZRjI4YuLxCgtAMiwQrkK +k6+ZP36ByvbtD01CAZab6iN9Fs2WEcZkKcQkrvqCdVXhJCDCSTiU3ZpzqanZ281QFmEU/frNRD hKuTds= X-Received: by 2002:a05:6300:220c:b0:3d2:89db:1688 with SMTP id adf61e73a8af0-3db0e0b7955mr10847310637.2.1789267126496; Sat, 12 Sep 2026 19:38:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 05/86] tcg: Generic expansion of tcg_gen_discard_* Date: Sat, 12 Sep 2026 16:37:16 -1000 Message-ID: <20260913023837.741866-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267206414158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 6 +++--- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 33 +++++++++++++-------------------- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index fd603b2de7f..1ef342e6c44 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -92,6 +92,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminf= o); * Construct operations from templates. */ =20 +#define DEF1(NAME, T1) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1); #define DEF2(NAME, T1, T2) \ void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2); =20 @@ -113,6 +115,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef TINT #undef TCGV =20 +#undef DEF1 #undef DEF2 =20 /* 32 bit ops */ @@ -197,8 +200,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); /* Replicate a value of size @vece from @in to all the lanes in @out */ void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_i32 in); =20 -void tcg_gen_discard_i32(TCGv_i32 arg); - void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset= ); @@ -317,7 +318,6 @@ void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 -void tcg_gen_discard_i64(TCGv_i64 arg); void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 5de7648ed48..6ff97260dc6 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -1,4 +1,5 @@ /* SPDX-License-Identifier: MIT */ =20 +DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 82f15205c36..88f06afafab 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -119,16 +119,6 @@ static void gen_op_tt(TCGOpcode opc, TCGType type, TCG= Temp *t0, TCGTemp *t1) # define DNI #endif =20 -static void DNI tcg_gen_op1_i32(TCGOpcode opc, TCGType type, TCGv_i32 a1) -{ - tcg_gen_op1(opc, type, tcgv_i32_arg(a1)); -} - -static void DNI tcg_gen_op1_i64(TCGOpcode opc, TCGType type, TCGv_i64 a1) -{ - tcg_gen_op1(opc, type, tcgv_i64_arg(a1)); -} - static TCGOp * DNI tcg_gen_op1i(TCGOpcode opc, TCGType type, TCGArg a1) { return tcg_gen_op1(opc, type, a1); @@ -324,6 +314,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) * Forward declarations of generic expansions. */ =20 +#define DEF1(NAME, T1) \ + static void glue(gen_,NAME)(TCGType, T1); #define DEF2(NAME, T1, T2) \ static void glue(gen_,NAME)(TCGType, T1, T2); =20 @@ -335,12 +327,17 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo) #undef TINT #undef TCGV =20 +#undef DEF1 #undef DEF2 =20 /* * Templated operations. */ =20 +#define DEF1(NAME, T1) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1 a) \ + { gen_##NAME(TYPE, glue(C_,T1)(a)); } + #define DEF2(NAME, T1, T2) \ void glue(glue(tcg_gen_,NAME),TEXT)(T1 a, T2 b) \ { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b)); } @@ -377,6 +374,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef C_int32_t #undef C_int64_t =20 +#undef DEF1 #undef DEF2 =20 /* @@ -385,6 +383,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) * are of the proper type. */ =20 +static void gen_discard(TCGType type, TCGTemp *src) +{ + tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -399,11 +402,6 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) =20 /* 32 bit ops */ =20 -void tcg_gen_discard_i32(TCGv_i32 arg) -{ - tcg_gen_op1_i32(INDEX_op_discard, TCG_TYPE_I32, arg); -} - void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_add, ret, arg1, arg2); @@ -1461,11 +1459,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tc= g_target_long offset) =20 /* 64-bit ops */ =20 -void tcg_gen_discard_i64(TCGv_i64 arg) -{ - tcg_gen_op1_i64(INDEX_op_discard, TCG_TYPE_I64, arg); -} - void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_ld8u, ret, arg2, offset); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267196; cv=none; d=zohomail.com; s=zohoarc; b=DZnAtfzuDetsG5+OCChGSghN1RS1JiL+mCfHltfAyb78kPsvVToJ4Iy2HFGy/RhE8DC2qLCwddz/4zuwf+1PTMZEf+N12C+IdRXgGe6REYlKnpE/NJ0U7PpsZC03QBEgd8j6unPOvGvgY6r2ICmA12gGXkIGL95jWvOXY7SzbBI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267196; h=Content-Transfer-Encoding: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:Cc; bh=Oc3gZdzZ6V/gKJJcVui/o5p2RYR/bmek+hg7KqMWp18=; b=mmiHpD8/ibW57z/J97MhCrsDMo+9SbK+yQN2eZF1urtxhNssvz1n76OxF5CnZ+uwmSvDb5IDlDGT+CHpZ2e1VcgMiid5g3/r2P1Tlu5zK+X03hyraI8V1nB3urb0wqwfiG1zuub4TQhP4kBrjK0V3vMTjgJRRqAYW5PZ+pDzIaY= 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 17892671964591019.4027703803708; Sat, 12 Sep 2026 19:39:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7a-0008R4-BU; Sat, 12 Sep 2026 22:39:10 -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 1x5a7I-0008OG-27 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:53 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7E-0000xh-SU for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:51 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d747ed1368so7875335ad.1 for ; Sat, 12 Sep 2026 19:38:48 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267127; x=1789871927; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Oc3gZdzZ6V/gKJJcVui/o5p2RYR/bmek+hg7KqMWp18=; b=ssjqtijKMgstJzFPTEMhZ9BRc8WJA/Sdo6rnk4MJavruGBLJ1HNUnsYXLyzrSOT806 XWSZdhNO9OZq4EHLAkJ+YeIztv/HQTq1fSOkn0sh+R1VFIhfVLNHvzERmD0/AwsgIzHo f2N6EB4q4KAGda9ymyebkA+o6fmNPhSuEtDPwUv2LnVDlvkHcMqblwVG4Olu3ICUdYGd oW7QuttswLBdx6uxIfJPrMe4vLHDYYczz7xCopsy3Gr3WD8sx+7Ecrek7eLYT0EUxO+m jVmRXyd85L95Q3dzJGp2nchh8kJofVFetAAadwxWOjAKJnDfErjJ2wGSWwWoaU5GdlE0 W7zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267127; x=1789871927; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Oc3gZdzZ6V/gKJJcVui/o5p2RYR/bmek+hg7KqMWp18=; b=JdT1LjPQ67ewAIcWcFxGgkrspkI0wlHV5Rn+GTJsoNMAr8G0H54vQKpQLfXEJ1GM3n gTMfu6/HNVfyrXf1X1wypsiNbeZFcP6mRY20M6Tfs7CpEBOw52CsiJDdygOCl58p/shr EI5AgcP1VyMioRXr5GiDb0kPu9Qh47o6Cht73z3wYRsgkcf+JG8aE/2mdJtDEIDmDwUu 1dHRLi/agzlkIrrCTN9tyJARtE1wlGWfEQepakOLBL03EUc5gqsw+KQ3/kntpV0JzjX5 3gwujWY/HDdQf94jmOE1NLXwHdx91FPMOu6erly42llCHDDRbTC1MXgmQyobeojJWOia x2Cw== X-Gm-Message-State: AFuF++l6vhYv1GZqwxEtW/Wlyj2i3xIxTqbWC0fgx85tVfjQomq+qEUJ qYahlMBsGFPdocjJdb8odWaSz9MJRX7Lko6QxK9dbmaz6pIBRUY8XzTbed5caimJsr3Fkq4KKRf qaCrH X-Gm-Gg: AYBFou3Zrn21wi48YV8IdXYEQEbG9Mn9AU3L45akCuZLkMm6dFEVKzChgLBBMb39LsB 4hJxlW0MYuTv+us33NOLaUScfOgV/cwtc7JTLQkR38etIdpopy3s92z611yrp4YR3oR1CCQh/K7 g0ZDSw8KHWx/2D768onKeTFhqxAixsDBf0MTdGVywr5neMqURgDLLV1T3qfSxH29RUd9q7MDZdd pD4sCZIV2Y49ZJ8zaH2TjQG5C642pYxSQyDyYyH4W1konVKhxvXC80k9bNP0cI1o4tQym5Gw9iQ VMoDpCbnudkPITuHuO4ky4XWsB78qHuyCi2JN64L/9Dy92Lculz3zTFuXlVM6AJqbQAuMMecuBb 19fcgruN2BOe8OX0H4+mWkbFbTXLn2xr//bZpUVrqU0BHTjlQR7b3qyw8zHX2mB6s2cHeTg7D2P imXL1qhodwA7c3tj1ZRSCDc3KttACU0x+bdscEPR9xbiiv/738Wuev5Q3G4WpePNliHS/uz6K56 n3gR4o= X-Received: by 2002:a17:90b:4990:b0:38f:de97:b06 with SMTP id 98e67ed59e1d1-39dbbe8b896mr9227740a91.5.1789267127450; Sat, 12 Sep 2026 19:38:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 06/86] tcg: Generic expansion of tcg_gen_add_* Date: Sat, 12 Sep 2026 16:37:17 -1000 Message-ID: <20260913023837.741866-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267198477158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 5 +++-- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 29 +++++++++++++++++++---------- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1ef342e6c44..2933db9f869 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -96,6 +96,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminf= o); void glue(glue(tcg_gen_,NAME),TEXT)(T1); #define DEF2(NAME, T1, T2) \ void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2); +#define DEF3(NAME, T1, T2, T3) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3); =20 #define TCGV glue(TCGv,TEXT) #define TEXT _i32 @@ -117,6 +119,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 #undef DEF1 #undef DEF2 +#undef DEF3 =20 /* 32 bit ops */ =20 @@ -210,7 +213,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -315,7 +317,6 @@ void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); =20 -void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 6ff97260dc6..deb3484fc60 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: MIT */ =20 +DEF3(add, TCGV, TCGV, TCGV) DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 88f06afafab..243f56493df 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -109,6 +109,12 @@ static void gen_op_tt(TCGOpcode opc, TCGType type, TCG= Temp *t0, TCGTemp *t1) tcg_gen_op2(opc, type, temp_arg(t0), temp_arg(t1)); } =20 +static TCGOp *gen_op_ttt(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2) +{ + return tcg_gen_op3(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)= ); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -318,6 +324,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) static void glue(gen_,NAME)(TCGType, T1); #define DEF2(NAME, T1, T2) \ static void glue(gen_,NAME)(TCGType, T1, T2); +#define DEF3(NAME, T1, T2, T3) \ + static void glue(gen_,NAME)(TCGType, T1, T2, T3); =20 #define TCGV TCGTemp * #define TINT int64_t @@ -329,6 +337,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) =20 #undef DEF1 #undef DEF2 +#undef DEF3 =20 /* * Templated operations. @@ -342,6 +351,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) void glue(glue(tcg_gen_,NAME),TEXT)(T1 a, T2 b) \ { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b)); } =20 +#define DEF3(NAME, T1, T2, T3) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1 a, T2 b, T3 c) \ + { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b), glue(C_,T3)(c)); } + #define C_TCGv_i32 tcgv_i32_temp #define C_TCGv_i64 tcgv_i64_temp #define C_int32_t @@ -376,6 +389,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) =20 #undef DEF1 #undef DEF2 +#undef DEF3 =20 /* * Generic expansions for templated operations. @@ -383,6 +397,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) * are of the proper type. */ =20 +static void gen_add(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_add, type, dst, src1, src2); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -402,11 +421,6 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) =20 /* 32 bit ops */ =20 -void tcg_gen_add_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_add, ret, arg1, arg2); -} - void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* some cases can be optimized here */ @@ -1514,11 +1528,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_add_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_add, ret, arg1, arg2); -} - void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_sub, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267403; cv=none; d=zohomail.com; s=zohoarc; b=l2CopgfN4L1xdl/YB8PILmj41L5c1bHPHErcadFMAsci8NqA3WaxBNGAPvKAr7wP2LF4FtzsQbBkcw10qXhy0K1h4q+ddvhXnBYwELo5PhZOeL0j1A0jVRJSBuUMhZT7WhCqmvnAIRtQROnN+BqywBfsggJxIupfPN6PlSvFdzU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267403; h=Content-Transfer-Encoding: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:Cc; bh=cpFZGCMDl7PrMntWEpSU/UIfo8AKMlFCL9rwjnk3jK4=; b=XSGx6y60Af2MOmWlIYvhatykP3RcqnUc60SnqaNElJ/nam5B541e27VF9YSQez82KZ8RRRAup7/c/WmPoC0kRHrXR77KwvDD+J9UW9mxDfYaOpRpMdJ+U2IJzJn1lX1k4jxoVi+dch+hheMxSiNeeUwHex/CCck6n5JQZQCEL3g= 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 1789267403780210.8012594644208; Sat, 12 Sep 2026 19:43:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7z-0000Rs-6S; Sat, 12 Sep 2026 22:39:35 -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 1x5a7I-0008OH-84 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:53 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7F-0000xw-QZ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:51 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea50dc1so406547a12.0 for ; Sat, 12 Sep 2026 19:38:49 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267128; x=1789871928; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=cpFZGCMDl7PrMntWEpSU/UIfo8AKMlFCL9rwjnk3jK4=; b=gm1RrAKBlppcAKVb0GQ3pGjFEucV6iGDYq34i5d1e0rO2+nsw/epjas02BMpTKDTcX t0SMzNRg2EZYm5PDvuBda/sFuevM7CSkXYfnJr0ptCs22umsUU3+OtpCDDHlt2Gl2eaE Zj3URn/BpqJ+4fyBsU1pJqbn3+eVmqq8/mOzrexsu6+GzN6Khe2v5rFNNf+sZ0ZOv7Mz vAckv4EaJaJzl3CNDXIv1XeNtdvfVwdvY3zNoCvG8Qs3IMWTWUq714OtweU7xxjCAWss sFRXEdbqTuQIe0YgkP5Dbpv28NqR6QeVMtrRhPLsCXnQsFaFTCrX02HwlS0fmq7uxAja XatA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267128; x=1789871928; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=cpFZGCMDl7PrMntWEpSU/UIfo8AKMlFCL9rwjnk3jK4=; b=CoOzapZOL7cai9iFH24WBuCvDhgmpjFpAB5dswX+84POHFNXbFOKsPnKLGZTdq0Bta 3Axfawvkpn+ngkz9YEqjotcN6PpWDj8hJcW8p2hjH8IZJM6dMiNSVvOI0nIZKnU1QKwj wDQmjediHliyMVM3XvMk8hCXc9y1pVDiKCwZXhUdiq2eXE7rTJ4f+xue77fP6jwB5E9B WEpIX+haU5IvN98deVu6kirG06p60qtJI9iQH+CO+2aJ0sD9KYHlXM7wCRldMfuMxZVp jFZFAmYpwXDX/HR7PqKY4ErssDUAhmgd/Pomo3QlGwyQxRrWm9NzohJUmXk+IoshWCkN XHDg== X-Gm-Message-State: AFuF++ncnvOSf/7kKmmM6G9BN+w3Lv1FHazfKmtWvwJ+5k8mCi1UPtUK oCmJiF/s74RXbVFtofpzFOdp6mjiKbfKM5uEL8EB9UmO9yHbB3OQFP4Ypta7EEV45PyD3qKOnHc BY1IheZM= X-Gm-Gg: AYBFou1vBQeYfX/CneS+DpZdZFHX7F/FnzCWbXwSkQHW+ncw/SvFm3z1JpFnG6urixl ImJAbNgYbHvj/Nj/vaJKikWppUWMfncLv3sNR/WEuHr68fekNQLVm4csQe2xCR8T8ZqXdwlZpJ1 +insD7x1fym7D7GhP61vjDRlBQcPZiPl2jZhE2LYpIU1NbNwOvj3m+E2mtensS6kfsWKh7WY+Df Qc5pPvdby5apfXICginTbExMiFp2Wzj/GNZ4KSVajuzF4Mm0GbTXMyxiBK/KjlcWYXQD72fZHgl ymRolCLQggrgiU+pXRCh42Ne9XDOgYtoBUVzOOG7Q1sFI9nyfqhITW/C+Rwees3SAUqeid0Jtvz N2pa1zNTUTPNGMpmuJlrknN3P3LB7NGQ6khBH4+VjjnTgkbLCSfsVIFbJrsoilUnoB1gc04D1tS OMQhw7D+0POseqk4Xs5sYIr9GTPuIRYFK4iibYEXnX+E7h2xCISwjE+AWtOt8hp4iXavkG1Tgqe vZO5EA= X-Received: by 2002:a05:6a20:12c7:b0:3c3:7a0a:18a6 with SMTP id adf61e73a8af0-3db0e408702mr9267077637.18.1789267128377; Sat, 12 Sep 2026 19:38:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 07/86] tcg: Generic expansion of tcg_gen_addi_* Date: Sat, 12 Sep 2026 16:37:18 -1000 Message-ID: <20260913023837.741866-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267405050158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 29 +++++++++-------------------- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 2933db9f869..62487268a2f 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2); void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -226,7 +225,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_addi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2); void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index deb3484fc60..31982e2dc6e 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: MIT */ =20 DEF3(add, TCGV, TCGV, TCGV) +DEF3(addi, TCGV, TCGV, TINT) DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 243f56493df..548fe84b233 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -402,6 +402,15 @@ static void gen_add(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_add, type, dst, src1, src2); } =20 +static void gen_addi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else { + gen_add(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -421,16 +430,6 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) =20 /* 32 bit ops */ =20 -void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - /* some cases can be optimized here */ - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_add_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_sub, ret, arg1, arg2); @@ -1568,16 +1567,6 @@ void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) tcg_gen_op3_i64(INDEX_op_mul, ret, arg1, arg2); } =20 -void tcg_gen_addi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - /* some cases can be optimized here */ - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_add_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2) { if (arg1 =3D=3D 0) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267209; cv=none; d=zohomail.com; s=zohoarc; b=JJFNGrKfFio+0McnZQk88imufM9dGsx9AydMpgX94jke8aZjnMm+yRjzEULEN+x9FH4rMsByWYdhe5N2GP2sFA37gR8qmMFg6hBaAvtd//6LYhv7KHOKPqpFx+fCdWAqQUix8atkkaLJfZoNC+gzuuM3nixv0CAcVMGcp48tybs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267209; h=Content-Transfer-Encoding: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:Cc; bh=shtfjlfCRmxS4a5SbhP3nQObfBjAyQ7lsSww9ThsUFc=; b=EZdiAVs7Npa3SLtk1Xqj1n6MAKUJ3JgTfg745e/6iBh5ub1DN/V+mPq9AGUuvl3pr3nWPB4TKxRoV+WMzaVZooIMqvQi+3h58tSKTJai28XcHWVzIcvDvH70h6VCIdHKiWL13+OhaZ6q/Hwg40j0lHsfZzzz3vqKd0iT3Ncpkyw= 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 1789267209839837.2586551697606; Sat, 12 Sep 2026 19:40:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a80-0000Xx-46; Sat, 12 Sep 2026 22:39:36 -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 1x5a7J-0008ON-Jq for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:53 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7H-0000yH-Mf for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:53 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-cc147d86bebso2524135a12.0 for ; Sat, 12 Sep 2026 19:38:50 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267129; x=1789871929; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=shtfjlfCRmxS4a5SbhP3nQObfBjAyQ7lsSww9ThsUFc=; b=g64xuVpzUReSKSWBWxVHMU9P0J+Gy/hSRIfPoOpU6KR1y6ptaCSi0QSfjYjL0pWnlw lJGXgHP4dGZEU+6NxzUc8HR+rDZosR4tXGiTgN2jpONwrRF6E/GNfMZ+ewTGFTCt5KuX NUSFsWnUfXc4X/qW6HEKMfsZuZ9JOwj6X/eMl5oyB/OvaSntzccbBFRJsUdInifEFcI0 UkrjUMZbHzp/kd2eAKRtdg/7T29uBN23uUkWD0/1Q2EmyulHetQLWYyrccy162ABieQ6 tmDpEklwTf54xUmKxecbqqLmzg7egtLfNZRwQ3hj542llN0sVM+C9IIPmdck9FkJ3G3u zqQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267129; x=1789871929; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=shtfjlfCRmxS4a5SbhP3nQObfBjAyQ7lsSww9ThsUFc=; b=LBcyR665yB5t9XMM52HpsDlUsGYi+tIIq58meOmc6yu3Rmjj748/6VKkC3fpS61FN+ hdfGNGIx+I1hkQncY2Pf5NA6wVcWG4xCgfy4uLggZiJ2MHBpb9vfDGcFDRUMfETlEtgo wt4619ozr6wbXK5leb00xo/vZJXQeXTNpxvs/kTbZX/OhV6lkA/uulCmDM55l8Gsoz2P 5Pyt7bYQZMzGpQiu2dfwXSh67dJm/cfQZfPX7Kit3hs7AZcK/WWV49I42jqSQkhGdTzf aHKm61ojyfT7Rp6inMOULErpYVLsDa/NxImsiy+puplggSV2YGCJf9kQuiluIIWNncG8 B9WA== X-Gm-Message-State: AFuF++mqzeGmRkK519Vq/a16lKhHox33+GNz2wAibJVlosPipJtLzFcx OY/GQ1Pnq9mfHAOD1wNBnU+G8A4TF904/z+xtWQYtn5DMDB7ncegzG3hbhfunULYm+VaMbccGAa CZV9xMaQ= X-Gm-Gg: AYBFou0vvFmo2Uaxfy7vciYeVq4va+7QURRgcSOSqXzDBzEDGKR00WhR9bmccBwgz73 6em9AHw0Gpgkh0lJtAgU3aDoYmybvXxOElQpp6rbAhQNZpkwY18ezsSfbaKt8frCNAdhSYvpw4o 7h35imVBk/VUvqk44sB1t253NZDt4vZxiAfya2CDblDcghszZJew2UQ11H3DBH2F2p+2HdN3j/3 knpvrosB0heyZZ34ZwIg/bO5oudzZ9tLl1ubcjaCVH3Bb8weRLx4aVwgdLpi1kEHzhwSuW2SeIa 5r5yviwoU+01vbZK1JSlsfT0qZVnT0jO0dG5dVoi/yLOcHbSfyAUFw8L4lJx5ptKdHC3kyZkBo5 aPZJVp5vEDmBhg/jGH2xswuC7Htz0r2gO/u5KC3aBZHfH0CvyDvQERjuFn8X6NFduYFsGlFEyD8 07K3Cj6p/vkzj50qXmbFmhD5S6Bst8eSd2i3QeUJTIaAHGIFulOmGEg51UhjuWZPvv/KOXL83nS VxVxzw15RJ5UYT34g== X-Received: by 2002:a05:6a21:3b44:b0:3db:5b7:e9c2 with SMTP id adf61e73a8af0-3db26cc4b7amr657876637.4.1789267129386; Sat, 12 Sep 2026 19:38:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 08/86] tcg: Generic expansion of tcg_gen_sub_* Date: Sat, 12 Sep 2026 16:37:19 -1000 Message-ID: <20260913023837.741866-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: 1789267210602158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 3 --- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 13 ++++--------- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 62487268a2f..787dc158c02 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -212,7 +212,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -315,8 +314,6 @@ void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); =20 -void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); - void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 31982e2dc6e..aac64105175 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -5,3 +5,4 @@ DEF3(addi, TCGV, TCGV, TINT) DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) +DEF3(sub, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 548fe84b233..3168ac71638 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -428,13 +428,13 @@ static void gen_movi(TCGType type, TCGTemp *dst, int6= 4_t src) gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); } =20 -/* 32 bit ops */ - -void tcg_gen_sub_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) +static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { - tcg_gen_op3_i32(INDEX_op_sub, ret, arg1, arg2); + gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); } =20 +/* 32 bit ops */ + void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2) { if (arg1 =3D=3D 0) { @@ -1527,11 +1527,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_sub, ret, arg1, arg2); -} - void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_and, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267376; cv=none; d=zohomail.com; s=zohoarc; b=iyVB/hia45x0iwFrtMUT/2+BT33YINATrgO2ZxDI8UjHy9rji+tcGZPw8u/E4LiSJIj0NHn8oV0+A2Xbof+FaWwMBw9/ajm/t277Fro3MShRF66xGXsfWOE5zp5DkSLoBgIMTY1+b1keQYj4HHYE/wJUoM6OLoqkdekGujKz9LQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267376; h=Content-Transfer-Encoding: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:Cc; bh=MBA2OMeCqLcGqLC2T4Z3TifKHdtzJ7qoLhKvHMvbtzs=; b=Sxw2zOg3i5cMbNWsZd+lC9uihZpjRbxm9hATRj1VvozvyGljoAziupfwqY4CGs16ojL36xjUGPpqQ845xnsfNfB0iXoH9R2yJiB+ELgYO4WZO7n2TL4v/LBV5Xc5tPxb7sf/S4U8/CvIbPlfhN5ye9VIhhp8r0wklvLexVD5KJY= 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 1789267376860822.1635142230999; Sat, 12 Sep 2026 19:42:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8A-0001M7-Em; Sat, 12 Sep 2026 22:39:47 -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 1x5a7J-0008OO-KN for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:53 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7H-0000yU-RF for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:53 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b9184fa80so936286a91.2 for ; Sat, 12 Sep 2026 19:38:51 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267130; x=1789871930; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=MBA2OMeCqLcGqLC2T4Z3TifKHdtzJ7qoLhKvHMvbtzs=; b=G/k5QoJHHVhNlFtOaaYFdw69zfEeNy/nyVOWs5ff/DSVoXA6CxusDMk4U1gnKDFCRW 21HT2cJAwPK7PGUGgNjqLqXl8uJCM4xna4UYiLkQeJomHMGkRe9QifdIpaggH4ym/Yzy Wc/3DF3JURO0r7Q3ma19tNTPl6RSqErAbjfO2M15m2B5fHkCQAz6jzSW31RMyqRS+M3u EUGNKj3f0t+mMGET3ir5FVk/BdtVPmCfPWzHCvZdnBnzIkLDINYbp/0HPouSD6pa0EtP Jm3SgNTPlzzL8n9bRqdnkcwHVmMnQYJmUykO4zmHSkF6SjkgT7NH52aZwr7Jh/T1QFkQ aCBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267130; x=1789871930; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=MBA2OMeCqLcGqLC2T4Z3TifKHdtzJ7qoLhKvHMvbtzs=; b=WDB2TcawUdMci0weiszyeJpzSbUBN8/4LHwr866UtVkzGM3+FbQAYlXuMKPiRoFxQZ fQaMbXUSCVrSqCdKY5rhhjUqgC8b953/51NrKaGVK8PryUJWRLsxc2Sf5Qm844EtgYyO ZCVGJFg3ApqXj2rLkWY/LrnUP6Vat9JwhISLVXX8Tl/G9Ad7MgeSj876TfqJof6PB7QT llNBUdNGhT5Rj1y4Gi6JxRTcOC5x4YdhkwVdIh96i/5+RfLGQdBV+5eOcSa/dsLXYlQm hqb8ud47Rfeq8sBwJX1ap98V0anqbnFoEJQE80EmrLHHQWzjogtucJfNN8gVcuLSUq0D EPYQ== X-Gm-Message-State: AFuF++n2X7u/7fjX+HVmDtvsBOsZePIsZ0RtignFZamCRXSkduyuOROe YejwNtMoTarXCGEbKPZ9Iz9W6AxoG4ea3HVeeG8Rby28Pqd1MXYlGNndebQUqIjHr25Hlp/aPRx UqLE7R5o= X-Gm-Gg: AYBFou2mdWcnJYqgSQTLf6kWc3K48KowWLS51N0Ywu5lMPRh9ZVyYmYwCdtwGU+eXZL HBL6SdD5qcqgql9ULgDgMabOHoTIC2YPauQfwvt9yQwRu6rGD40R0fcPkrKid0XgNkKz1w9ClV8 Qx1kQnNmjhtsIMMBisL3wpVbq7zG+ADDe38u6VXkt5UPK6f3HAf5ok6qXy4eij4OGIxv0huCbYF /4daVkoqxCv6wbDPFiYJ74qSyaDJRIZ5qGufqe1RkGtyK7URq/95MpXCDf5SJaid9NIqTt0Bkrs DQlWcDjunTjgaNsyG38Jnvv7Z6BOSXm+Q7zgM68AAmH1AI9rIMek1WbNSmISuBtDCQ+QO8vuusV 1Si85BEXpx/73XQ6OOWxJ7Zq/VbZgwSQ8Vr1zUvi4snX2Mc0vlfgIyX7AzZL8dSXq8mHx5odtcS N8IouS9bxlnH8PpFe0tqNvWjt0wEQGhf7qVgHiPiLTn35jWUeXkGoiSRT6Oy2xXifyim8VkIjAL Chq8s8= X-Received: by 2002:a17:90b:380a:b0:36d:9e0b:3801 with SMTP id 98e67ed59e1d1-39d9bd63e1bmr18259130a91.8.1789267130266; Sat, 12 Sep 2026 19:38:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 09/86] tcg: Generic expansion of tcg_gen_subi_* Date: Sat, 12 Sep 2026 16:37:20 -1000 Message-ID: <20260913023837.741866-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267378949158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 787dc158c02..11cf157d3ae 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -124,7 +124,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2); -void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -225,7 +224,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); /* 64 bit ops */ =20 void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2); -void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index aac64105175..122a71d7c4a 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -6,3 +6,4 @@ DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF3(sub, TCGV, TCGV, TCGV) +DEF3(subi, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 3168ac71638..b66738674a0 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -433,6 +433,11 @@ static void gen_sub(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); } =20 +static void gen_subi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + gen_addi(type, dst, src1, -src2); +} + /* 32 bit ops */ =20 void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2) @@ -444,11 +449,6 @@ void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCG= v_i32 arg2) } } =20 -void tcg_gen_subi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_gen_addi_i32(ret, arg1, -arg2); -} - void tcg_gen_neg_i32(TCGv_i32 ret, TCGv_i32 arg) { tcg_gen_op2_i32(INDEX_op_neg, ret, arg); @@ -1571,11 +1571,6 @@ void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, T= CGv_i64 arg2) } } =20 -void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_gen_addi_i64(ret, arg1, -arg2); -} - void tcg_gen_neg_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_op2_i64(INDEX_op_neg, ret, arg); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267236; cv=none; d=zohomail.com; s=zohoarc; b=htBb2T8+lDWp538MPnMsc4mWiNj1L9MKiWwlEBkMuWlzCvn6YvvHE+vkI82oiNB0IPAw8k0G3W8kLDlCBZhw/OVknIgxVIt0NQtOUqY0qaO7nB+iRrtir0HtNenXO3nLBdabWakBxnB+hadk295xpkGLDt80dM2ALyktFGEifKk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267236; h=Content-Transfer-Encoding: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:Cc; bh=dEKgyvvhOe6l9gny/OdrKsgsIYL0yotMQQWTmZEkRN4=; b=BrZ4fAqHIozf0iwwZD2ybLqqrqHtT88+2UwArS7sURQVyTNcfgi2etSO8jEOpWnNJY+q+04WAl9dIC9fixZQH5tvpjYH6Wk4zXM4cXl3oqZXg2R4eFl+ozetXCtkmMvpCTG1+Uo4mCQ7C4XDHYi+7jl/KM4oYHTiCB0ZjwVdSKA= 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 1789267236752921.6983905027337; Sat, 12 Sep 2026 19:40:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7g-0008Sg-1v; Sat, 12 Sep 2026 22:39:17 -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 1x5a7L-0008OP-8V for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:55 -0400 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7I-0000yd-MA for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:54 -0400 Received: by mail-pz2-x0f.google.com with SMTP id 41be03b00d2f7-cc4c08393dfso605756a12.3 for ; Sat, 12 Sep 2026 19:38:52 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267131; x=1789871931; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=dEKgyvvhOe6l9gny/OdrKsgsIYL0yotMQQWTmZEkRN4=; b=V58wTUngqHHJJpzJmOsZTsQellrgWzX877DcQv0/uMObDZ+KW9ZSIx4DY0kxs/egNP ZxCgQU0HBLKy2MC1o4LjIA7TaruF0cJfoLeOuzDvr/aITwnODzP271q3s00Xorvd90oP /jZ9ybnDTZqV+l75+pFnphQyfpUBTff3lY0GoVDa4jWU7/J5GpfEoyF79hUfL8m+BVxI EEVLSzfoPUB5AM3BllXsqfh/SbRBFNW0Z3p226hsUX2yGRaYwyuaVk5G4OyCRi0WK8YS MQgpoCuVmvtD6ml0GoIOhh79Y4ybFDRPhPGOeEk2Epli1EucvXQ5+2HCIvMRangkTYqI 6EKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267131; x=1789871931; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=dEKgyvvhOe6l9gny/OdrKsgsIYL0yotMQQWTmZEkRN4=; b=lT+urjUDMsHgn/p+SzgWSkW9IrquDUZCLu87iPFM24Ge/0DBcKWsH3hEKjA45a5huQ Jd8SQcNaY85bpbQwR5dj4tfvZcXmyN/HhAGz4inr/T540FG+eACPRMrG8BXN98XqQNfC hNTW6OE6kjWcgSLAXD/aNMB/IQAfG/0PKIYg2PulkgCtiLriz2TxSvo9lW/CvGdnJyzo smprprXvH/cluoJZbKUxjl+TkyEKM1UAg4SRIQTuluVKfogDk5c8ONQJ6NxpZ94RPRiA N47GedfhPcKiCIHY5yCcfc4KRTK6enXh1zRUorwXJ4sT4Rgbw8i7DN43iu43m492qDLS 6Zsw== X-Gm-Message-State: AFuF++m7GRFv6VxF/m2suqo0vJfrDCnL+7rRJVgB9get8dShZ3TiCUUt k/zRXMzib56flEg+SGW7VAcfjAuBUFifJ/4BW7/LqYsKcjufJscQaKhnH+nHrDHNKKWu6oEDGSu n7YOiaQc= X-Gm-Gg: AYBFou3A6v7fr/TtLnMudGmkzro4OR8o0tQdewTX91gZwCoovwHKTETzVF/GKkf8gEC sNoIFTDovtBwBygLTpumkn7kmYhffPaMGo7CCe7iXtzCi98AcCm4HhrTeczqQheUlVaGdcG8vJX 236InPWhYofA4FQovyFXj3nXtB5evTmPqDjxw4rgnnuhAW4eKdRBaNy2Ve/F75/oJK/dAzKRqgU 4+sHA6I/rryrHiwTSpU5C+Ih22ler2qPHwuGozKx8WbUaQB6lsAaaLu1JnSb3lCIciXlHqBFfxP pqHBNeasmfhUHqDmdrwEh3TxzY5So3rpc3zPGk9rC7/X+IufYaQ1MQ1UH7u+IB8apq3ngYB5JpN YVemCzpp29cUrQ46wDfBALBRix/sfowgreoDinUqk3aMmGFn/dUOtZo1MoND0b7d6bFgd+YosrK wMRxJTZQv/TT2ABAi4b5Q/vYykwuNb6Yj7LLZ4NBRcB4VYXNs3fpYNhqSnfxEqhxTgBdJQRSfp1 C/GIsI= X-Received: by 2002:a05:6a21:700d:b0:3d2:2afa:d7d with SMTP id adf61e73a8af0-3db0e40edd0mr10270360637.18.1789267131231; Sat, 12 Sep 2026 19:38:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 10/86] tcg: Generic expansion of tcg_gen_neg_* Date: Sat, 12 Sep 2026 16:37:21 -1000 Message-ID: <20260913023837.741866-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0f.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, 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: 1789267238530158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 3 --- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 11cf157d3ae..e47b9ff913e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -218,7 +218,6 @@ void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_= i32 arg2); void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); -void tcg_gen_neg_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ @@ -327,8 +326,6 @@ void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_= i64 arg2); void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); -void tcg_gen_neg_i64(TCGv_i64 ret, TCGv_i64 arg); - =20 /* Size changing operations. */ =20 diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 122a71d7c4a..77b1260a292 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -5,5 +5,6 @@ DEF3(addi, TCGV, TCGV, TINT) DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) +DEF2(neg, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b66738674a0..aea89088a1e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -428,6 +428,11 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); } =20 +static void gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_neg, type, dst, src); +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -449,11 +454,6 @@ void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCG= v_i32 arg2) } } =20 -void tcg_gen_neg_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_op2_i32(INDEX_op_neg, ret, arg); -} - void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_and, ret, arg1, arg2); @@ -1571,11 +1571,6 @@ void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, T= CGv_i64 arg2) } } =20 -void tcg_gen_neg_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_op2_i64(INDEX_op_neg, ret, arg); -} - void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267344; cv=none; d=zohomail.com; s=zohoarc; b=RMlLq0zWQnpXtle09cnWAU9erryIL579F5Z2GneqCCdrW8c0MRak1qweMr86wRob9YaVciHqGBkvonCWIURvI9yaFXKO4wMLr0FCpit8aKuSmWjWqN3rYAMJZO2K6tgAWgsZymcqoqNbZdqxzBoN+zQ4tzUeXrslZxFFTBnU8zo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267344; h=Content-Transfer-Encoding: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:Cc; bh=+8MQSnyMlYG9slzqZhuIISG7vwQW8e7wly87+e/kvFg=; b=RCdAn5eaNRt3nm41ieErIBz9xgnmLH0LDSnViEZhnCx+jcP29VpRNlRKg3KutNmGnQOjbhuOIGjkjwG9mO4D6MbUI6l0FD4PuN80klSP3S+WJnKXsG2785hjIxsnfiLxvoCH6BtxqvF9ebCjCXySG8GEJdIQYM4pDelbwq6o25g= 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 1789267344040430.1064455908843; Sat, 12 Sep 2026 19:42:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7f-0008SG-S7; Sat, 12 Sep 2026 22:39:15 -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 1x5a7N-0008P4-UT for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:58 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7J-0000yz-Lj for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:55 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39b2ad83dc6so1081691a91.0 for ; Sat, 12 Sep 2026 19:38:53 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267132; x=1789871932; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=+8MQSnyMlYG9slzqZhuIISG7vwQW8e7wly87+e/kvFg=; b=xH/Dl79Cyfv0NSckaSIYsutKYQrKN99AqLh/fswbaaU6ddUUttKbFoI2PUl9tjkK24 Ufd9yCBDo1PhQYBA5KgGmtEmEG/MB85N+qo84aN0k+te+zmShTpfDHPPfbgM1WWMBHvF bHfCAKoMwEZS+onAUhj5ZhucMb+upHlpFimohNhkLlHrOTvsFi1SIaJ5y3k7H/I3stIP GHU2V38254oB4NaQjNMqEKZJPXDjIXXDqe2/lQsWLYzlDhs2AmzsLBsCmNq4OtGcpZJ2 aogkG0eKmfbgViGUKZw0BejKSEuuuudkMWRXJ9EhoPRrjTQQm40hFEWIYwNrs2RMG/SD ggYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267132; x=1789871932; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=+8MQSnyMlYG9slzqZhuIISG7vwQW8e7wly87+e/kvFg=; b=juI86f0NB8vifv9KcYrxs76xZEPOLgMa4wdWLLb218XdabIk4ibwykzldGNGM+5Zsy yhrYgvcZkHZDuOIaETObv6d+na6Nl7Av1H4yIkzJrVtWfq5VIN2FAFGIUJ/4rfQ64wdG cHGQFHeW/SvKDkxEHf8Y/L26TMvJgPo753vIYr3Hszl0KsshUnm1CJQOkyImkUAOoLf0 wS9cHdCtYAe3phpvmU1DSNvKnVD55lGFVkKfxmhCSWeCuMopD3r+2IZwOb22uaS3D2e1 cvqF6a7SAcGU7bkrOgTeqg7jbpRmW2sMLr24dtpLsmkRI0OonPEpt1O8cBYZsEgD7V5f vWWQ== X-Gm-Message-State: AFuF++llzauBECxbZQ9nywNkUJN/LCKprjRhfswqZKQaCGfDjHHpWcJe mgIsgi26S+PaLhpTkk6O20Vki5G4FOaxzDIZHvrga1kmpg5jUhZZhZBDBudMnvn0O3ZsvhRrf+w d7rIXRV8= X-Gm-Gg: AYBFou0x3jcYB/dcRB06EhZeGmCZREdUPX7uczhMTWYR4B6FMh4RkjL6+gJzPkdVU/h fKXoYWFbgiRmi1JFd9MIvFGn6kDEdhMG8zMzTJvA5tbIPwMtRQyvg3ptjq+cu4Z+uaHAcdgEp+C RllM4Ki5rg+TkNMSr/IxVuHoInZMfFGoMx5q/CM0PMTh8dmStyfhUW4yGY9e8cDhalGYhOy3OAN xOQKhLVWYkuSv8Sky6KPb9ZjfggWk0/VSwjNKKc6+tN2vXUmIqEoWjRi7iA/AVOzFzU24C71hoe bI9ExwbgrujfZduQl4e80F9rjG3tD9Pd7fxo4FJVjbLDpF2SF7T/op3EqJ2TZwGi8X9VhTqN4li ASprSutyCCPiikUSijapQc7u75yOGAY4zwhLqfc1kgVf7b4bFpziMphHrW43psXXfTsY2MMWqQs CSyt5MyioVfme9p8VLeKeZ0aRO1qjaG+PJHgHWlghz63xmVKY3TmCkiIiJb8Ouc1LlYssxRPw1b Qi6wO0= X-Received: by 2002:a17:90b:3147:b0:398:ab03:95b2 with SMTP id 98e67ed59e1d1-39d9bee5d69mr19539872a91.10.1789267132150; Sat, 12 Sep 2026 19:38:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 11/86] tcg: Generic expansion of tcg_gen_subfi_* Date: Sat, 12 Sep 2026 16:37:22 -1000 Message-ID: <20260913023837.741866-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267345171158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 21 ++++++--------------- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index e47b9ff913e..4fb6f5f6e14 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -222,7 +221,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 77b1260a292..9084171d6fc 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -8,3 +8,4 @@ DEF2(movi, TCGV, TINT) DEF2(neg, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) +DEF3(subfi, TCGV, TINT, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index aea89088a1e..6ebf7fff4fa 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -443,17 +443,17 @@ static void gen_subi(TCGType type, TCGTemp *dst, TCGT= emp *src1, int64_t src2) gen_addi(type, dst, src1, -src2); } =20 -/* 32 bit ops */ - -void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2) +static void gen_subfi(TCGType type, TCGTemp *dst, int64_t src1, TCGTemp *s= rc2) { - if (arg1 =3D=3D 0) { - tcg_gen_neg_i32(ret, arg2); + if (src1 =3D=3D 0) { + gen_neg(type, dst, src2); } else { - tcg_gen_sub_i32(ret, tcg_constant_i32(arg1), arg2); + gen_sub(type, dst, tcg_constant_internal(type, src1), src2); } } =20 +/* 32 bit ops */ + void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { tcg_gen_op3_i32(INDEX_op_and, ret, arg1, arg2); @@ -1562,15 +1562,6 @@ void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) tcg_gen_op3_i64(INDEX_op_mul, ret, arg1, arg2); } =20 -void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, TCGv_i64 arg2) -{ - if (arg1 =3D=3D 0) { - tcg_gen_neg_i64(ret, arg2); - } else { - tcg_gen_sub_i64(ret, tcg_constant_i64(arg1), arg2); - } -} - void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267395; cv=none; d=zohomail.com; s=zohoarc; b=H073dgco1zVNh+Q7pL79ubq87ODhd0oY7n3onoNp/EA5WipSiBZd6YHl2JW0ydrfTnb86IVRc89a+vc/hE/R/gj+sffvEVCA5RxESNdc95XUy0CCJmBjtv9C/HI1GXdpylZhERjIsExWVmuC/ECzsJE7Xmw5nAuPgArLpf+2zw0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267395; h=Content-Transfer-Encoding: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:Cc; bh=/yeASfmDE5OqtjonSINVeRNEHZOcZQzTelCdl0b+qv8=; b=KD8f8sq5J6akwM6UN9XqzwKgV8KKCPkcUVcD9uoZhfck3Qhc3OgrbTXwiWG89JEyT/N0wKM4eIlSkUVRqAq5ajJjgSXkpAa3yS2yN2V+By+v8ze6Kj2lWQtxaUMzm4IgIrnTkuPwtbnTJ/U5LT8jJsIv+yPbe9GU6xmNo2i1xJU= 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 1789267395286213.9782293646374; Sat, 12 Sep 2026 19:43:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7z-0000UU-PU; Sat, 12 Sep 2026 22:39:35 -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 1x5a7N-0008P3-U7 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:58 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7L-0000zN-0F for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:38:57 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-38e42560ebcso2146531a91.1 for ; Sat, 12 Sep 2026 19:38:54 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267133; x=1789871933; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=/yeASfmDE5OqtjonSINVeRNEHZOcZQzTelCdl0b+qv8=; b=LsRUPrJVft/ot1ka4ZdwWfpdIHtIYHNQ2X1An6al3GNhCd+Qe9vWrmxoWO8DiQqBaR pISA+oZkk0xJMTW5gtNh7egUaxl8h/rKwektOMhv4NDhCGrWFFc6TBfQGy+fOMayj53f FoUeXKEBU6qUHaStHlmxZ7QcipQ8R9cLYImbDYoFKNf5UfZnZtepWxThj0mNNRXqX1M/ rbgQStsXbN70Zf3MKexrgdQT3qzSVnWPltyTIPCt890RaV628ka/eW8IcKg/VnrvDJTJ 811HDCfUIcoMylhFLB7iEdsDj9gcWm+w6NLZdj8tppH62JLvK4ekUn+C5UV6fDB08l69 8uUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267133; x=1789871933; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=/yeASfmDE5OqtjonSINVeRNEHZOcZQzTelCdl0b+qv8=; b=GeIlMWurFMzYG9qyUFgt8jagwfmmj6KsMGM/s1LucVYE9irQrQEAHYIFlmn/kj89gq FvQ5bmp++Px4l4WEoJNQz9ghW+z8XUT2XmaBBi3fNgwP7AMh2kzLYlolB4vUtYdkyDPJ XAakNUkiypVe5B08W2bLxgMm0rhgdV/eMcDMNorhfaTYZTi+M6GJTToEOrphmoI70RQC 2lW1a1dz03tJrF15RPV6RxApdkROKSzAMnacKkb0xwR9cCTS/FGE/rJA5rxaSeRQVGQX 7Y0F5LKslCn+qKQ6hZlc6qkmQroweuHWz4ItoqxguXTnH6nxvp90Fz5SdLZTGIX546ml GItw== X-Gm-Message-State: AFuF++kz/s5T0ahmKWn9IWqRWBQwFIFTqmyyU1etlB+YsyPDRiC8QTru EM+MEjiM6Rfn0fQ9dqVUDm3lC23R58LQnw/93HycoM507khpqfZVaLRkx4EOT8gYr/KCIyK9hbk VfjP0gpg= X-Gm-Gg: AYBFou3/0+g+O9ZoPQO3AWSflU/n97DF8tJA7mtZCAbPKEwjQFQ5VWpSFkfgo6AMRDv 9BKti7yoREdHw35hMNaoIZRfKzieX5jQrzLNWZxP79WHgWPdPPhba2fW6G1kHG0Jl4BZ9Haavyf UZ1BzzZQZIycNMJhYaNMD/Dw2coZofE8onUVJn55CGn9n3A0yGmwtpKecptreAslqqRZf1cEvRj MX4WJ0+hatcxHsQcA+bb7wD41oWASLBDJUoKLalWbgVq2ynpEat2Q47v8hYj3SZu54BI6BSK/aO G28+W+dpGtzb5t0Rw9ETqqVHCJbtHd9xv/OHJwcwQKeaNgG37KECNQcqRxnYUQOMPlCEjhRrOww AT94yeVrbU2MV15luYolsdSuZ3pmPeY81CTDeGkIMoNqSlh6+RkmtVXHwycSV0UGpUzQ0RIA57r Rxq3OkpErxUX4VQS/K4WIuWzWfg8LoIIAaj+vq6ofC2gyXdvVHG6l0kLnI6crL61g2A7wWLd6ZG u/Mhso= X-Received: by 2002:a17:90b:35d2:b0:396:41d1:cbc7 with SMTP id 98e67ed59e1d1-39d9bc0dca0mr19423241a91.3.1789267133380; Sat, 12 Sep 2026 19:38:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 12/86] tcg: Generic expansion of tcg_gen_and_* Date: Sat, 12 Sep 2026 16:37:23 -1000 Message-ID: <20260913023837.741866-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.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: 1789267397017158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 4fb6f5f6e14..74a917f984b 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -210,7 +210,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -317,7 +316,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 9084171d6fc..a2ae864ac17 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -2,6 +2,7 @@ =20 DEF3(add, TCGV, TCGV, TCGV) DEF3(addi, TCGV, TCGV, TINT) +DEF3(and, TCGV, TCGV, TCGV) DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 6ebf7fff4fa..6e1b1c04fdd 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -411,6 +411,11 @@ static void gen_addi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_and(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_and, type, dst, src1, src2); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -454,11 +459,6 @@ static void gen_subfi(TCGType type, TCGTemp *dst, int6= 4_t src1, TCGTemp *src2) =20 /* 32 bit ops */ =20 -void tcg_gen_and_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_and, ret, arg1, arg2); -} - void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1527,11 +1527,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_and, ret, arg1, arg2); -} - void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_or, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267348; cv=none; d=zohomail.com; s=zohoarc; b=NZFyFmOGCaaZJh6MydEh9Rkj3LmSwayX1zAc1E2aaIC0b5HYwYjZeGBRrwFICtfT7h389AJ7a8g+NVpUMyIhDcM0yDBlOwXlpfLbVywXPRBrlugIffnsaTgUPWS+WyMEWEWV8Z74jfvRFfcs3jzN7cTnqyrolRmDQVK35u1O+Vo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267348; h=Content-Transfer-Encoding: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:Cc; bh=REvMROJaNuwKArWxHSrIlduaGoJ8M2pKQ7U3wRkbv04=; b=QPhats0udOwH22gi30g9/Va+hJQwXJ2A8z6J4jz32UG5Ykvr20fUqmRzji9aCy9HBISeZ2jqG1S32Dm3gCTtsrjtJSC/pG6nO++KJ/WQTI/TUSjuUheLn008m+lWxoaNJCvZ40JY8zRr7XtXED5YTAlSg1LHroX3UWEUDrL6mEA= 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 1789267348027195.04762156614333; Sat, 12 Sep 2026 19:42:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a81-0000md-Kt; Sat, 12 Sep 2026 22:39:37 -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 1x5a7R-0008PW-9Z for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:02 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7N-0000zn-MZ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:00 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-398e9698a70so2293740a91.0 for ; Sat, 12 Sep 2026 19:38:56 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267135; x=1789871935; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=REvMROJaNuwKArWxHSrIlduaGoJ8M2pKQ7U3wRkbv04=; b=ka6d2Q1ZeYe7IRgQVL4Dmn3OHdC5QEILjw3J+IcLKok21RLFfochmQs+lu/Xj7Qpjt wfRQZhQyqfEr6wa9xbV01JOaNoSWYVTSEHMpsnDoB4EOxYzZgxfYLFp5BB5y6OM1J7G8 V5Ibk6zMy9nGRgbPxW3hc7XL8kcXFUinRiNh8Sl/n5sBER8U0iVQWfBMYG90AYD5hCdp nXC+876GbSyhh3TBvE/8T17jnu9xx0yZJm1T5m6Ao4mH8lmvuQBSjBbplPPgzaFHgU00 3ej1IT3FvcIJR/aVL4HRO/5A1lqOA93BQR53SdHXEN1W0axY54Gz8qmlMe9ps3VFDAsf TqQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267135; x=1789871935; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=REvMROJaNuwKArWxHSrIlduaGoJ8M2pKQ7U3wRkbv04=; b=OIV0Lt6J0nPnhZXkim3dGuDPlpFFJTy+0QWG3OJzvu0TKIMnKoNeabe7nosPfvBTZi +Yj6Z1vcZXJRlUVe1j4zdnK5ohSx8pkBnaM8PbQTsqAVkHKEMn9arLSm8C/VkImLt+/C s/Iivp/bf+VMs0d9qymeJOQ0+qYTvOkUHBS+l0OlMUm8ib042QCg2llZ7eawc/6D6u61 R5kHA+F19pq538msebZIuf7rtB42cRkFD4iHsweff1A/svY9K8OOxlnz/Ne/TKX5hkqM CKYxssklEKZCGNWWOWtqoXFGY//b5scu/qUEYnhQCCmogU/EXlfhz4XnhQ1fNCthY4gf x89g== X-Gm-Message-State: AFuF++nBGITVp5iYB7YnR+G+N8tZOSyPWEzg1MfLIMv1fLhj+UsfV0lj pc2nhlJEH2OLE+RSGxX1+ghHesMbgGZqA+OdOTyQulG6iN081Vyk8DKbC9sVD13UDKu7En7CN1I Yb2ESAAI= X-Gm-Gg: AYBFou2VJc2xqIHJOOvALecdIcInIogB3+kH0SBlG43cFDLqOjwn0h63K1Pz3ydt9vT MhuEZCjA8EEHcPRGoZNVivJjsJiT2vQI9Rtn0vMSmXQb4QsfcRF219MigEw/SWqa3/XxjYLGu2L fufvwqI2wWK/cby9dYQhI5m4FD9IcolRJAyrGP3YfbIdID/07cHb+b/d8dR4p+AyGXblWr4enCY ps562QuXRUxIDUzaahPx8G+l5YJG+wRLK49qk1aVqNBijP4Ip0ST7sq47TUAF6Z4NwXasxWOs4Z DzEipb4Q3ebe9dMNqZfaqB3ve9AOHOdusn5tL9WlVJTyidI1ILzyNEsCXRRggkVhAgBI8lezVFV na2sxtO9GInR47B+QfxJZD5yPQd+2kowWMlbS61V9u1Kc2hFjVjk7U0dLOZJrNWObD5rIfg7MVb XOvZPlosPAGpQ+vDusBQYUJAuw0lUEAJG7/ychA8+BwWjQEjqHnGni9YS/86ZiYlFoGz5HLOKKb MO4a31boW22RkELZg== X-Received: by 2002:a17:90b:582b:b0:398:c0ad:711c with SMTP id 98e67ed59e1d1-39d9c1d1f85mr19661805a91.15.1789267135017; Sat, 12 Sep 2026 19:38:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 13/86] tcg: Generic expansion of tcg_gen_or_* Date: Sat, 12 Sep 2026 16:37:24 -1000 Message-ID: <20260913023837.741866-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.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: 1789267348878158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 74a917f984b..1159bfa5233 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -210,7 +210,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -316,7 +315,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index a2ae864ac17..513505e35fa 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -7,6 +7,7 @@ DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF2(neg, TCGV, TCGV) +DEF3(or, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 6e1b1c04fdd..34b3f9ba96b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -438,6 +438,11 @@ static void gen_neg(TCGType type, TCGTemp *dst, TCGTem= p *src) gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +static void gen_or(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src= 2) +{ + gen_op_ttt(INDEX_op_or, type, dst, src1, src2); +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -489,11 +494,6 @@ void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int= 32_t arg2) tcg_gen_and_i32(ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_or_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_or, ret, arg1, arg2); -} - void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1527,11 +1527,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_or, ret, arg1, arg2); -} - void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_xor, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267208; cv=none; d=zohomail.com; s=zohoarc; b=PavxGdQO6JOsnMOmsJ9Zpn5Zh0KznCGn+LfZ0grBDd5oq/nv2vB5ki0LzhhlskMrtjOGGIZd11rDdFC8guPZHonN+UBRE/hI0oNJYurBEPVDRxqc6t/cCxoNw80NWJqHTbstFPJTkYNLqTMWTwSA73NctbgP2Ai4GphpSCq9AjM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267208; h=Content-Transfer-Encoding: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:Cc; bh=CGkv0c1Uf/8ln+4Wm7XG63afCWqfyTE9LG36Dynvf+A=; b=UzV4Jj+ZmkP4Kya90OWR/BgiKN/6WZvKJR7zytbkiKuD9PaDyVcsP0GoeKYd/jqodrW6Help9MuJEIk1yPGc40wIUG/RZXSPkFlxpnzGTc8OS0tAOUMUVgwdTc6JL5oxpz+jKCn4llYGOOtDHYui3w1I143pismTMmJTtxfwzFE= 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 1789267208449948.9629625954626; Sat, 12 Sep 2026 19:40:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7y-0000Ju-P6; Sat, 12 Sep 2026 22:39:34 -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 1x5a7V-0008QD-0x for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:05 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7O-0000zz-Vh for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:02 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccc09d65so968238a91.3 for ; Sat, 12 Sep 2026 19:38:57 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267136; x=1789871936; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=CGkv0c1Uf/8ln+4Wm7XG63afCWqfyTE9LG36Dynvf+A=; b=r+tehH+urZJpK3hHqiIEe1lE8G/W4gfvP1AZrNQAV9XbVXuHVp7xV+mDCBCmmD4/sM ULpPm/VLYiDaf7MTYfAqgyygLq38hy0Va/j9GuaE27ite5xmdWK0JKJaSHXSG2jatdsu F9VmXzhKPqEu/FMItlnjCqOLr5Zo1H0POeCU3Ls2RGXZMibrmT/PCcwbpEb8Pi+0kla6 xc/lyDjAsKSNsqsnV/qO64ICiUfwZbcnZYl4+i1Ez1xJFgTu/ca68HCT/E2zDY+pNdwP 2lhMPhkG4twrgLM9rCTfL0BUf6r5TDy2k3pwOu3tZsVEpG/aKvRDWIeWzDB/qc9+MK63 mfBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267136; x=1789871936; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=CGkv0c1Uf/8ln+4Wm7XG63afCWqfyTE9LG36Dynvf+A=; b=cb2zAoiA4nQMs7JNNs8m03jYHeMoIvTYyR2VOCE+Xz0SNt1Xpz8k1bXlvAIY4+1RYp 9eQSn5w2lExO87liY5hiKb0OtTbXHO06HSfP7fmpYJ7yxkzeo2q/qN9LjDM20taPM72N KYqYdRgt39A8q+3DX0JlLQaH9Pj89Zl7NotwKKV75bC4UgtEAfismMx3j97zH5chE8kg oRciWYp42RmIQY3M1xiunipqE29Wt11vtINXnar0eprmSUmiYjOAMeK84KmKXOE4cOvs GApVkbb0u+qaf1FGDFiqrnMzHDOGaxHcrbTY5Qmu+dXfaXLwAjgmnZt2avtU0MaesWQs aP6g== X-Gm-Message-State: AFuF++koPtU+0RABM5SYysQv2oDUw7e6WpM7KJY4cG91G5txzpzwtL9e rniBm/StPpTplMFWuIh/uxfu3WGf0PmbapMWwoaz/2RXDWhpGIBcuLfhiPAlsgc22TsDQ1kF3P7 XShkpELo= X-Gm-Gg: AYBFou1J47kqG9vvSByhZQC0B6V+7pu9jOD1xpdVU1SQt9DLLASqbtfEpH9BYhiuco7 5nvgHZ4NueXQpkPo1vOt8uIQbXlNivLVcGS4eIw9SciGHU+G9phwSAAS2DYqSOTMeyCTg5IFdtr PXZ+DXDTyQg4bS+9ifdrVZswVWbNsYdqwDZOV5jUtzXsh5sL/qnmiw51gp4CSmdxg33EewGjAke oTS3gzylj3bg8G9iLj1Nx4X2NNcUoemP9Apm62RiQTj4ibSoV/UzCuXUIRa8QjnNblOxUNNlwWw DKyWFiifKQdfbbVjBtXp9n4uPdR9D3qXnntPq08NXKV1KYUFr7pKKP/PkxzT+RJQbtwYK6P6+kz zpa5Jqzhwxk/c7Xt1k1ylZ9M3H0HP+MmmAryGOOAcWowtkG2S76M1iEDNpHRAc5tEBM7DUwNYH4 Kg+a0OnSYJ30chrmUAXwrklBowHq24IpZ2TEOKAdUyT3+/ayLqxupAiZ+OxJqpC1eF7blogkvRK TH5lqY= X-Received: by 2002:a17:90b:3844:b0:398:e969:87ef with SMTP id 98e67ed59e1d1-39d9c3f8c2dmr19400411a91.24.1789267136277; Sat, 12 Sep 2026 19:38:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 14/86] tcg: Generic expansion of tcg_gen_xor_* Date: Sat, 12 Sep 2026 16:37:25 -1000 Message-ID: <20260913023837.741866-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267210599158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1159bfa5233..765a7ba013e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -210,7 +210,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -315,7 +314,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 513505e35fa..47d3e6f6990 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -11,3 +11,4 @@ DEF3(or, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) +DEF3(xor, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 34b3f9ba96b..1c9943cb082 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -462,6 +462,11 @@ static void gen_subfi(TCGType type, TCGTemp *dst, int6= 4_t src1, TCGTemp *src2) } } =20 +static void gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); +} + /* 32 bit ops */ =20 void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) @@ -506,11 +511,6 @@ void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int3= 2_t arg2) } } =20 -void tcg_gen_xor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_xor, ret, arg1, arg2); -} - void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1527,11 +1527,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_xor, ret, arg1, arg2); -} - void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_shl, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267500; cv=none; d=zohomail.com; s=zohoarc; b=ShZ7JCEBA26a4tXrrw/Dpop8fCC96Mh+pOC4MqTfguhVjo13T14xmNxSlvxazlVg1uldiwQDz43afIEss0KTUSCY0OFtqCVyxlr9udf7QeI0SdMh8fxsfenjxAVEDBueYOCiutSJiK638//14yrW7fl2hGNdsKMTPscLHbnimQM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267500; h=Content-Transfer-Encoding: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:Cc; bh=5X7gY49NdidyziT4ycIpXRVmcSu5BPraTHlPdcpKfxw=; b=hGZbYZMYknY54hcIsvKGlkqIX3RKziZMHK6GaFo70RALA1YRgYjdRstXCr3SabWmY57f/fPAlNWH7iUAK78vZ073WUkWWwS/od8y8ubRw1pasy2gGBU1eWRPxXbttpON/2QTV8d158IGz3b+C3v2DRwb5OHzMvP7jD+KWZ/2h1g= 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 1789267500975742.3520901466424; Sat, 12 Sep 2026 19:45:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7p-0008Uz-Ga; Sat, 12 Sep 2026 22:39:27 -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 1x5a7V-0008QC-14 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:05 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7O-00010P-Vv for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:02 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccd66bb5so732612a91.0 for ; Sat, 12 Sep 2026 19:38:58 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267137; x=1789871937; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=5X7gY49NdidyziT4ycIpXRVmcSu5BPraTHlPdcpKfxw=; b=lP08nyKYMlNLp3c2h1Tu217Q904Eky4mFZvadwhNtEPc8QPHP867mFbDR0ECYNMImz suLBOa4Lw0/qxjIaO9l5u5HXiXGGQnCkptw+Zpw7gtgi5AKrtDSptjz9It+odn2ETbQY vONG1/u2Y3DANqlORNgd4S0WTXmv76UYjxY+IOF0hNh4ka0ws4LKMgR5yfze2MLsPaJ8 94HrFDmagrZWtIUEzFW3SD8qVmjOkVAx+b94GCTGZoa4bRwNvS0yWOF5rr1NJM+viIXR pU5zJsBIrFqBTplakcazARFL0fTQgfq9e0Oe3Avwjs9Z9hGI00qhmZGZOhFDBUFR5koe yTtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267137; x=1789871937; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=5X7gY49NdidyziT4ycIpXRVmcSu5BPraTHlPdcpKfxw=; b=b6gA0VoI54QrPhzA6TpTTpG4lsyYoUdkrld/fhcN/CXUhc16w1D17hi1Wi/5p7/sb+ aDo1QtQ88IVWPNbeEXlY1WQjt8UZNxc+MOGNRq588j6hTjUaTsKIsY9xk19o3VTT90V7 Yx25GoSDhMIgu0E51S02GR8WkGyDIazScm7xjosYMxmkqBlo2sPxlDY6JoinLn4e/9Zw VTpPQL3tEG3FXygzQXOzbj2MXxcTfNHsj8x3cjhBHRbd1Nf3EnTSHQ4v75uqAv3U5Z8Z WElnvD94vpj0R3YvYJtsu4d4EWF+M6jtJ445k4u4GK5CxQTpvQYB/GRUNzQs5ORQtULo DxRg== X-Gm-Message-State: AFuF++mTMRUnNSh5FGvHg8ZGvljUyjHwk0cZ2iucW/chMxWslrbBK4Fn seILkWeVJlXmlZiWlXveKAx7j3vYEMBfVXBjWTA00pAbgrQDaHOa506i7DBznwhUVLi/kIO+wCb MZM10uLE= X-Gm-Gg: AYBFou3/Yu6CsytLSugT474qryc8c8lShBmSM+eABnorE1IE5VTdTKtHBGoxJjGJq/b 7wGsmvHexaxpYZLGchj1L5CJH4CGbY06KZXu5dY2oD9y8iO6isWg15PT5xc5F1hHEO9KpYuXTaL AuZJPDeo0NJj0pePWD/MXQ2BGec/E9capJApH8J5MZTaQvDi4eUHBgtS6pCfo5VQOzU/qfoNwhW 5HoBWT5akzsn6IclwAFtzDbpaCsGjGbQJODm01YMv/2OW/lN2767FcVQf3yBUf28NwEMA+TmZfG b0fey2gPiyxnFF8Um9WUZPkKMTmnB3nNlFaq9umR5iBl/sKTJOswwug9eFvbU+wbnXrKTDJHrvT mvs2o8mGAA6aPUbi6ipBxpXkM2JhtvfRvFUF0QlZIccL3cvNbRdv3wUoH0PvRa8AbxNPb5ysLYg wYDhJ8bIaeTNL2K5dKe9/g3e3uSrTFY9Q53jQ9+u58kAZXmILG7mDz8E+d6+6Kk9AXqsWxRtKif T+m7onMq7aXb63ehw== X-Received: by 2002:a17:90b:1c02:b0:38f:5801:dc0e with SMTP id 98e67ed59e1d1-39dbc6a016emr9114463a91.15.1789267137327; Sat, 12 Sep 2026 19:38:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 15/86] tcg: Generic expansion of tcg_gen_shl_* Date: Sat, 12 Sep 2026 16:37:26 -1000 Message-ID: <20260913023837.741866-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267501594158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 765a7ba013e..99c182aa5a4 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -210,7 +210,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -314,7 +313,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 47d3e6f6990..15cbb6c341a 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -8,6 +8,7 @@ DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF2(neg, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) +DEF3(shl, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 1c9943cb082..1223ba31e3f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -443,6 +443,11 @@ static void gen_or(TCGType type, TCGTemp *dst, TCGTemp= *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_or, type, dst, src1, src2); } =20 +static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -534,11 +539,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_shl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_shl, ret, arg1, arg2); -} - void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1527,11 +1527,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_shl, ret, arg1, arg2); -} - void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_shr, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267425; cv=none; d=zohomail.com; s=zohoarc; b=nGXOvsWaCRruYuOp/s7+wmEj2qRm0ewl/w3jDPRMXhoghByEtfIHc0XEtnNylldcb0u0wsfy6X0kggwedvT+ng/SkIQn/oSCH88cGB8034R2UYQ0/T/jQ3LYtYh5VYT/nbXWNMo6YlV/dTOgYk5RTz2HEEF5TDYs+1rzFvqr+Ls= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267425; h=Content-Transfer-Encoding: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:Cc; bh=rKPPOoGq83JxUWWA3GF5Nl06jpolEV87xjpvIIodUoc=; b=GGCSQLTwIEP3SEFFABW6XLZ+9/ysD74J7FGPElGCPMfAI9LkDGSA+dcUu7p8ZYtELMp5lmfCZ6V9H8RVAnar5Fk+fWCVrKybMRFEEvY715ELgMu9i8yO8XvvzVqhJb5RM85Y/DTM1netnbTI4i9tOP2NjR5JYGIriZKDdQqP1cg= 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 1789267425485966.2088062592846; Sat, 12 Sep 2026 19:43:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a83-0000um-BB; Sat, 12 Sep 2026 22:39:39 -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 1x5a7W-0008R6-T0 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:10 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7Q-00010Y-RK for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:05 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccafb752so1044724a91.0 for ; Sat, 12 Sep 2026 19:38:59 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267138; x=1789871938; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=rKPPOoGq83JxUWWA3GF5Nl06jpolEV87xjpvIIodUoc=; b=ekDYKc11DOwP3CTidC4FiYeoGC/4IG6ngjz4A6odKnxrQ2CBvZP/TEQPH5pVu818y7 VfwBpyeg5epKv7yJFGw2iMHm5KgKLn776CIEgGQTEFVGch2KD+51Yiy1FPj4EUZFpDWq PV58czlmocS+O5dHnfQ22lVGpTLbs+VcNB/ZWDtG5E7oaXty6oyJgTZzj9CfzJJB7HHR zL47mTqkMmqbiOVHXmQ5BuDU4Hg1Z43i1/nYUEsPaqYYRLAicVdm9ngK4T4FghDXxN1O CYFw05JBRXG8k5vA505IbtRcPvt3PvjDuEznh/XFp2d+6dw8H10rHF4+X42iIwz+b1zi xK9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267138; x=1789871938; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=rKPPOoGq83JxUWWA3GF5Nl06jpolEV87xjpvIIodUoc=; b=gbcMLUklcpIg4XkmGw0pwxxoaf9l0M/u9x/WURtArbEksh3VCUTGGC2Ocb97Arud+w cJWziCpY4jh4u0rfIWgSbpQhyef2G+ymt2klq/93eoxIsuOy64zxUUZmlM/rPWLAV34q PPkFHONFTF+eIKlAo1ZLXGQJb46zRcQ9/s+Vy/CR0/5Qnp7h1TzJbXKVXwMb/AQA+WoT sbQu3nX/7QR69qQjHWZ8a7lDVUGRCV09wZrNBYUbRx0tnxIsQyHPjZUcT2aJb0cVhPPS qELmwHobET/llnbo04iHnwLzM4i/gyhvtJJ2KtVbq30F2KkCMg5vix7PadMNG+YEbsmR swqw== X-Gm-Message-State: AFuF++non6ayFKPtDsQ77pVILU0PtDg5W68oV5eeoafJqAViR4lxVOfs BEN2Q2qrgeXHsjk0cKcjpt4qloH/yCgfSlUwS/WvGc00G1JPW1drBzWKTiX1SwEGKel1deqWmr1 dbgLa X-Gm-Gg: AYBFou09prLi6zQjwubhENaeDgp5HrmnjThOQTL5JLaQOYcrbhP5mBnVD8wyuu5tnJF dSICzoWD8DhkRHVsxyuP/cpaSSWdsh0UfjaoHWW/ZbKHvMyI5x1mmuhdbSfWwn9pCA2zYdxd2qn mZr1lheLXeIys+P7X9OwpH/j1Egyh9Xygk+Q8IJ7b7IX2XS7l7Vv9RjCWnE6yO4WxtvhGnED0Wy nt7mgdMBouS5zo6jFG9sYaK1hoVmQtWdwWYU2xrRVIxVnEuxqC7jn8L9s1dTlPPgRy+693RRrEi Tm/4W3BnJkNL378pupN75jwvzWpYvh0UtwkGY/ZvjSN4SuLm+84hRJ5L6Wo9GxnhqBbvmiHru/4 iC/+eSyzjOB+WUoxz8Mxz0ujuYQSvpcoja2crdu/PsvZCjXXKvmurMw34YrlzkT4VekrFhlx9BV 7YEF8OeBF9ca5MCGCPxSe0/AlT6FD3mlW3gpkMtdU6WNSCpuXahshl1vQDq8CJbLYVwYLMCi2MF RiAS54= X-Received: by 2002:a17:90b:560e:b0:398:a2ed:7b5c with SMTP id 98e67ed59e1d1-39d9c3a1fc2mr20639039a91.24.1789267138271; Sat, 12 Sep 2026 19:38:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 16/86] tcg: Generic expansion of tcg_gen_shr_* Date: Sat, 12 Sep 2026 16:37:27 -1000 Message-ID: <20260913023837.741866-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267427137158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 99c182aa5a4..1120cd45e66 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -210,7 +210,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -313,7 +312,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 15cbb6c341a..3f928d4cb8f 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -9,6 +9,7 @@ DEF2(movi, TCGV, TINT) DEF2(neg, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(shl, TCGV, TCGV, TCGV) +DEF3(shr, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 1223ba31e3f..8bf3d40971d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -448,6 +448,11 @@ static void gen_shl(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); } =20 +static void gen_shr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_shr, type, dst, src1, src2); +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -549,11 +554,6 @@ void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int= 32_t arg2) } } =20 -void tcg_gen_shr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_shr, ret, arg1, arg2); -} - void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1527,11 +1527,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_shr, ret, arg1, arg2); -} - void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_sar, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267379; cv=none; d=zohomail.com; s=zohoarc; b=DUr9LeMqqekovE3JSWxp9e19obLoUdhD4HnSkhuYjoLO0ep6uQ6ARW5bgLdgUSgJvA244GpbwaK64b1rR+bKpreMVvhgcwGTHar6NVzAmNhkKrxDs5mbj+AUO7im7jCUPLTNWSsqImyJ+iD9QSegBW2YjU/Byq8BMWTXZ7s4LTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267379; h=Content-Transfer-Encoding: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:Cc; bh=oKTjxaQ/P0ftw4XRaZqtG4OPU5tOi/1he0v8iSZ88tA=; b=Yk0Ees5dmh7M6Ox/F2wpM6iBArl7LeDtn6k5X09tEb3cKldtDIOY34t+fEqkQDpiP44F64rH66JgF4WiArdc3lMfOcmApJWlrXQhI/RuXrQuimfIyn9mGMGauslV/DSr+Ho7Bdre0QzVxPB0NS7SbcUr9TWgphtjkjLKAHmngVc= 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 1789267379380938.0776510562681; Sat, 12 Sep 2026 19:42:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a83-0000uJ-9k; Sat, 12 Sep 2026 22:39:39 -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 1x5a7W-0008R5-Sm for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:10 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7T-00010s-43 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:06 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-38dfe7eb825so1974796a91.0 for ; Sat, 12 Sep 2026 19:39:00 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:38:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267140; x=1789871940; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=oKTjxaQ/P0ftw4XRaZqtG4OPU5tOi/1he0v8iSZ88tA=; b=WAVKrPEIoUkvJ4LIfH4ia1ZVjZ53miUl3SI0wzfm9BhPWmo6mZ4PT2e01H+4PpoCyR yOgKsrT5t88vMeZgGNc1VP82VRthqgBNTCGxcodVIAHSUW8a7BOZPvtEQBPhst4qHU/C zqGhpiBUa7DlRoSnTt9Ps6oV2UZyF+GEtz/1bDnQvfOcbl3i/qQeAJ5BjK3K7D4FSLR6 gkz6OKfvaFvhpRvjqAqu78grP3D4FBpgxv106wb1+vwxnYdm4VRC2Xc3GcL9ye8W4rd+ whyREI0F4Z0PCVomJ4j6SuNUjh5ooIdCxHUjyAeT2fhA/ui3vE0S2zUPmTQZQ24MQCOU 74GQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267140; x=1789871940; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=oKTjxaQ/P0ftw4XRaZqtG4OPU5tOi/1he0v8iSZ88tA=; b=omuINWORpurDhl2QZxWVZniqQgCzeuW7wIUSNsVtMtFtL++66zUyDoeF55cN8m+AJc Pj1tVRZRoOmB/dG/+iHuRghm2IrX6wCpTTOu0hpVgQD5xUd7855bi5FOQTUdyiPxsCR4 6neeVR4+KX1lX0ke/osJRXKEVKYcffLSUIw6WkAB2vJJvB40kBr2PbmHmjwuZxooYBXG GcXuDRu6lZd/vIqIvJLkzAH+kfbd4IJIt/CWurnd5wZLEXXvCgcm9svDPwpKfPx7h1hS vm1r7G7b80CZA0vjkPk3YkWXtsJ5FHVD45AkYePqllUxg0B/3jz6hzd+qjrG6pTj2eR3 5MGw== X-Gm-Message-State: AFuF++le1uKJn5dVGj/G4YmUuTuBlFNpnq/lqt8bS/sNjIsJx8sl1tqE p7sHIQZZR/RKn0juqeRjIHx/E77cd4dq4PXayAj5IKohz/47igH/gxpcYYLrKZt2pxJSzOzvlHo /gjuielg= X-Gm-Gg: AYBFou059GG41oWviF9824rBU12vl82bsvXdHGWq4fI7mwXzWrFFCEgmmO8cHIWkZce Y9vMbf0nAKQEStm53nHD8mW3pGV/KCr7R0lyH98pr/Mr4Zlat5ACeXBSoFJb1ADfZ1nAEFBkhk8 HdXfLZkHI+nobIkzY5N+du+iMTtSOguHyTUGuWBmCRZrzRftL4pYYcTUPJd0wKm6PzmXnPj85fN As4WnYgFjSZKSJdf9VYmo99o18O73R9cPxn4dXP5IlM5WczJToe95nAyBywvpuEK413pzUFNjKQ h5EvbcFv1unzh3ruqHJ/w6mHCzlf8i2/NcptSnaDC2/qEHDIsN4ytZ+lhVarb9OSyN4zdovNs/1 9QeM5tbSOYGlrqTjW3b01PJhXHJ4GJBcoOV2na9JUsVmG3i5G1haV4O8/q3lAqqtmOPR80xgDu6 Kp82i9kGZI9oUDpSnuFJoaGpT/SwE/tLOr/UmN3YqoKo0cISikbT8uzJ2fvmYFDLx1NIrMcbekc aCmKV4= X-Received: by 2002:a17:90b:4b83:b0:396:b98b:a3c2 with SMTP id 98e67ed59e1d1-39d9bd67a22mr19147034a91.8.1789267139447; Sat, 12 Sep 2026 19:38:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 17/86] tcg: Generic expansion of tcg_gen_sar_* Date: Sat, 12 Sep 2026 16:37:28 -1000 Message-ID: <20260913023837.741866-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.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: 1789267380985158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1120cd45e66..69d02396a5a 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -210,7 +210,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 @@ -312,7 +311,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 /* Size changing operations. */ diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 3f928d4cb8f..247d35bdc14 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -8,6 +8,7 @@ DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF2(neg, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) +DEF3(sar, TCGV, TCGV, TCGV) DEF3(shl, TCGV, TCGV, TCGV) DEF3(shr, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 8bf3d40971d..91e7f488738 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -443,6 +443,11 @@ static void gen_or(TCGType type, TCGTemp *dst, TCGTemp= *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_or, type, dst, src1, src2); } =20 +static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -564,11 +569,6 @@ void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int= 32_t arg2) } } =20 -void tcg_gen_sar_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_sar, ret, arg1, arg2); -} - void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1527,11 +1527,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_sar, ret, arg1, arg2); -} - void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { tcg_gen_op3_i64(INDEX_op_mul, ret, arg1, arg2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267288; cv=none; d=zohomail.com; s=zohoarc; b=Us0fV0WhUF50z7t7ojgkkJNZvoKyXR8O0HbBj+cX6Rv1eufZSPOy263F4biNTZNplZVhGiFNNPaEaB1RrF5jn0bATMH9DNDVMu2bv6mInjV1pnrEl4xGyabwQarPlRCEcOjC8N7umjcw/sjUc6rn0Znaznh3m/oAF3cD/aA24nw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267288; h=Content-Transfer-Encoding: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:Cc; bh=i/kSemgbjuQLa/y/pedR7giUqFTZ1PVVkH59W6qBodo=; b=YLgL9YqJvWSd3BFryl19wgzSgpgUrra30/5X5hct/nI2lvfkWlmJyzUyiITwKNdf0iHACWV/bjEXhiEQzLWpCOSGU/MhwiaxW2MbkhxYVGYgzSDeTKkI15othbpRNKFrI/Jclr2N1wgUOp4c5EiQTWxk6iw2l7NWWmUKodxOjNs= 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 1789267288797527.3426796587017; Sat, 12 Sep 2026 19:41:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8C-0001Qm-2f; Sat, 12 Sep 2026 22:39:48 -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 1x5a7a-0008RV-Gh for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:12 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7U-000119-Nu for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:07 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccb65437so509269a91.3 for ; Sat, 12 Sep 2026 19:39:01 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.38.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267141; x=1789871941; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=i/kSemgbjuQLa/y/pedR7giUqFTZ1PVVkH59W6qBodo=; b=NJsXCrggAARK3TXs+bYP98ZBBicePJqsqFLDxtENv4AQZeg9C7ebgYxeay01AAo5ui W8mRz7U+JDFB6C+UmSL7yy0tBwOrRRZAIxxfwY4GgVpwLrgBK7cXgiSBgjoqMYgEEC52 +RtbFc29HT/BOTVPIcUGlpewYl2cZJ7et45GaunIzCu7kzd6gV9/1XN6X5kqfHTohzyE 5oVfLrKeFeEYznBj1TwlsSvI56NyYR7RQU0XmV3piSvlwCp13TcH0jglf/196AZYK+/y cd586t3mSYk2+K9QDMMnI/ajADtuFGS4CwsjbHVFVINlPDjXS4b9sqGQnA+V38sGTgD9 1U4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267141; x=1789871941; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=i/kSemgbjuQLa/y/pedR7giUqFTZ1PVVkH59W6qBodo=; b=AcGISLwzEskA5fDRUj5yVdEE11tBexgFhVwEiwgLQPNI8GL5Z/S0Kma7FJMhouEzrT QQmfWhyUsm8WVyxv3302N2klH6UBl7MW46PvQFiilpLdFR0C75DIzfwaTMLEqMRTvwmF SfVwUa0pOlTEhOU+EVrQgBMSKXC63KRVFYF28852OsuMdAiYLQFFvK6828LZWtpEo1YL WwcXGjtBGFAfAQBMdzcIkKXx4K00SppgrYdJzVTznSXkS979F18ste4w3fqteBDhdObm LibL9vo/zhNILNI44jWi761WlLBn35SLjRtkV/yhtVCuI0sw6R9yBAUmDSwAlsV2OEUc 0Nxw== X-Gm-Message-State: AFuF++mG289OEE0gMpUXoink3TF2lB8dkPziomNSgwK5rnlwXY+b5iJ8 Zt89H2DTqatMVPXKSezcjZ8AOiUbDr9ndlog/7H2cUFjyruophUYuQ/klTDp4zAzhtvjQcAmtsy zB+HvfwU= X-Gm-Gg: AYBFou33wfSJUzOs6zo9lRtGPck2N2ViZxrHiDYzhtK9Jx2mzieubv5FeS6Ffyf/fyZ 027zJ5XWLs4ub1llpoMU7gne7WUCk+FfXy4LRXPKVHmgWJ8Ll8oOaN7pgJIJXIWrB8voDjPR0u1 57QEKaf5PbzrdtBHnHcJgmJlWJzl4QtV24W22ari4JNddH/Fi59AmDKW4uNvQuwQ+RVNrtiVgn1 KIPn5NOLSKDQRwucrmmZzPp9Pzwq7Rog4Wkdbw6yOyMc2w85y2CxQaRVrlDAONrlbmiXlTbzoLn DQiCpdg+6O+a06hkfck5BeevGAhdobxtcSsMRXnY3+BvPv4CcIL5J6URQZ4sfsauN2L5zvALQ+j lVwlWOp4Cj5fGdoMp5qMgJQweIZe8aRsg+vjnHlOoLOgMxIeGflOlCrhSkJVJgL/t5Y6VIEbnCW afdIWg0g0J48AiDUule7M9ICBrCLq+v5+cQLvVdq9hoZEGv6PjmvGY0QGpCg1TEh1LS7fa+t8Yi 19MDrI= X-Received: by 2002:a17:90b:4fcf:b0:398:e96a:8999 with SMTP id 98e67ed59e1d1-39dbc697718mr9688936a91.16.1789267140635; Sat, 12 Sep 2026 19:39:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 18/86] tcg: Generic expansion of tcg_gen_mul_* Date: Sat, 12 Sep 2026 16:37:29 -1000 Message-ID: <20260913023837.741866-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267290783158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 69d02396a5a..36f99dcad1c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -210,7 +210,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ @@ -311,7 +310,6 @@ void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg= _target_long offset); void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset); void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); -void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); =20 /* Size changing operations. */ =20 diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 247d35bdc14..b318ddd74e2 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -6,6 +6,7 @@ DEF3(and, TCGV, TCGV, TCGV) DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) +DEF3(mul, TCGV, TCGV, TCGV) DEF2(neg, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 91e7f488738..50b43da4006 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -433,6 +433,11 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); } =20 +static void gen_mul(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + gen_op_ttt(INDEX_op_mul, type, dst, src1, src2); +} + static void gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_neg, type, dst, src); @@ -635,11 +640,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_mul_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - tcg_gen_op3_i32(INDEX_op_mul, ret, arg1, arg2); -} - void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { if (arg2 =3D=3D 0) { @@ -1527,11 +1527,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - tcg_gen_op3_i64(INDEX_op_mul, ret, arg1, arg2); -} - void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267204; cv=none; d=zohomail.com; s=zohoarc; b=H8G40giB7o4Icc+cE4j/nlw3m4oIVUNo+9YpFfZR0aP0EeqB6a2ThXpV3Zx3VDZsM65bNqDhHAt+GsVj8Za6LH6fgR5IhiJ9UwL/q+ytckkldcp0pDWpO6EsVzkPNUmo4WVhRquiO+CHdO4BnVuFbAFL8x5z48LnepLw2hkOSjQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267204; h=Content-Transfer-Encoding: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:Cc; bh=IJjgBIXA9zcbQsVxJYYjfywSsSgw7dqOssFTKL2XGgE=; b=KNIG0bBPwnfPAvXMLPEkJQ+BkQHDxFiPVydLbINs3AJiq1rRYeZUEtDvGQDmXsshlnPHat44MKO2IG5qZjLcQwfEp7tpo4cvgP9bHceF554E5+QZIfnfyHhXtxoSGaoWRHf5oq+bdH9rYqTCTQzXgmOYP7MfrdvO1VTtxe9JdDo= 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 178926720464392.48291934526651; Sat, 12 Sep 2026 19:40:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a85-00015l-Uy; Sat, 12 Sep 2026 22:39:42 -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 1x5a7a-0008RY-IF for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:12 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7U-00011O-Ou for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:07 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-cc4be0e5351so1563721a12.0 for ; Sat, 12 Sep 2026 19:39:03 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267142; x=1789871942; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=IJjgBIXA9zcbQsVxJYYjfywSsSgw7dqOssFTKL2XGgE=; b=L+VEoVb6KDlBJkO2KLnH2xvGwvE/9VTfoizOWzG5VclYHO4B1oxtefl0h/uJplGDG/ AKBSbcoW5C3YG3xuF5PSjLnFnChRTcRlvO7REkSzCcUGaoqUZjaDD5VyBPgYAyREtnvJ 57Xgmli7y672oYoScl1J5sDM3UAN+8Y/9pgvQ5owIBva+RbmuBLQnx0e+Atr5GsIJtUR FJ0bhSPQXOu1kg2pxcxF9w4Ttmo9Fx6K0sMBTll+F8SgYspfOmwTht99guu6df/eHhAW /Cir2a65z9Er8ewoPTIFogyS7wP8g4oUVYbjT02yxpCcPwpJdCWQv107pLp48QBoHygL mbqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267142; x=1789871942; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=IJjgBIXA9zcbQsVxJYYjfywSsSgw7dqOssFTKL2XGgE=; b=i7HdKLWQ1BJsUzfX0tempDjJkUdZ6unlWRFIqxTin5U98uvQXnaLYN5MuWoxEaeXTn wMOfRi6gaZaYwMvsHl2OoAPeeY8qAQs6GIET7iSYG7dHtrXckKleCGp2sW6ewKHLP6hC X15IqM3Us60GQWUPXwFJSn7McZy6CnCsTmka3FiARNQGAqRNk6qDnFAOk5T2fPTRhw3S 1pODAMHlQh93cYQFM7cflK2lr+muLAGl63uhRVg5GN7UPog3eeqOKOywuBzS1l3uLCsh MkQ40wskR5o7eGFr31Az4fZAlzYUAQxU6sbCjOvqqU3iDHSBnHOLRPFbLG6oD45dXN3F +/dw== X-Gm-Message-State: AFuF++n0lzcTWnVCXXSYlkmsgxVO5PauGh5ZZg4+oGCVQsuPq2Wnl30v bc8RYNgFDX9uHBPyih5NWXKvjLZi05Qv/4wUj3vhzAOnuRFoGKyBlDE+iVtKgHP3bXFbJGk32jP IFnMJVCA= X-Gm-Gg: AYBFou12JcRpp+BqOqn2bFx58jQ1q+UtwQqT9jJgm74D3DUk4wFFHrT1N/x+7C4rw1Q Dw14zS8RMIjoJtnNoCCvU0/Xp6GcN+P+RKEkXkqDA8t51VBNNDsk+NILt7EOa1WoeUvVaoeGuYm fEBPsaLvl1v/P+HAayFrsi8ex6Kn/27HPdfORYcoFMM+kRLmsHsis5g/tLU7iIY2zMEuIWqU+8N FTv48d/yyfL8StsNmVHENnlu1Kx3MfYIoPzoJuCALD6tml0AVqjLJkbC7itfwwKiPS6DtD4koS8 dJZfklHilODcTukWluaA80kDI+Y706RmxPE9nRUe7bHv/d0dqwDd2A8YG/f5FYzQUIQANDPjbBB nEN9djt30uk5RvUFsuSGsriUwAYqoC/NaYzQwr3lPRWdvtA0CcYA3vHiH6MIwFg4u51hyX2df4m 3sbgiaTDM99+dSNx/eXENAXY+OzVArDV5xOUr+V+RsYMtVDsRm7yZ7QaxwpZTwpg6fD/ECcUIVs 2UyBoISFRKpl+zeXA== X-Received: by 2002:a05:6a21:3117:b0:3d3:adbf:777c with SMTP id adf61e73a8af0-3daed3e55aemr21556484637.24.1789267141731; Sat, 12 Sep 2026 19:39:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 19/86] tcg: Generic expansion of tcg_gen_shli_* Date: Sat, 12 Sep 2026 16:37:30 -1000 Message-ID: <20260913023837.741866-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::531; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x531.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: 1789267206427158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 36f99dcad1c..103a7896312 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -126,7 +126,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -217,7 +216,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index b318ddd74e2..b98e5bd80e9 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -11,6 +11,7 @@ DEF2(neg, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) DEF3(shl, TCGV, TCGV, TCGV) +DEF3(shli, TCGV, TCGV, TINT) DEF3(shr, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 50b43da4006..f856c641a79 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -458,6 +458,16 @@ static void gen_shl(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); } =20 +static void gen_shli(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + tcg_debug_assert(src2 >=3D 0 && src2 < tcg_type_size(type) * 8); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else { + gen_shl(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_shr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shr, type, dst, src1, src2); @@ -554,16 +564,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_shli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_shl_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1583,16 +1583,6 @@ void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, i= nt64_t arg2) } } =20 -void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_shl_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267360; cv=none; d=zohomail.com; s=zohoarc; b=Nbn0hEMS3ZNH30Al6M00V++k1Nbo38l9LcKylEX1/J4WKSUpsdsAYPMAMe8Wwn6SvAgn6usIiLHRzQoAUe7UsWo6XBwFwDbNPmVl5HefF3gjB5hw/9rCvCKzXISfAaAIzFYCyso+2PcQBbI/V51SAOmp7XM4EOhxsWNxvJS5vDg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267360; h=Content-Transfer-Encoding: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:Cc; bh=QdxiHEOh5/gGnd0GJIo+DGVmqzUzt8j3H0xVuakp+lk=; b=CyEVH79nOcyiYvI8U/jzl+fBbFXQNOyK+uo4rmCIOtdDg2utXXFBiE7Copz+plUrVBgyZ0KPO3AyytuqBD16OMDxMYST+AFwFQNpCOm6I2rebn5ttp130h/ygt11fHX7XEEeM/W6OJeVsmMpPmOnoebGZjHS55JD6WrnjQ+tVh4= 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 1789267360191772.1888474171942; Sat, 12 Sep 2026 19:42:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a80-0000aA-9I; Sat, 12 Sep 2026 22:39:36 -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 1x5a7a-0008RW-HM for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:12 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7U-00011X-Pb for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:09 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39b350c6920so633350a91.1 for ; Sat, 12 Sep 2026 19:39:03 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267143; x=1789871943; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=QdxiHEOh5/gGnd0GJIo+DGVmqzUzt8j3H0xVuakp+lk=; b=hBFN55Bs8PZ6BUh4t+MhKedRR8gFEDj/MLV6lZf4C0qr2rdEn+wxyTsBRgpBu4ltkl ePzuUMbqPsfsK8UTKKyTLeXMu51Z69W3ie2lpS9I9xE3jeywP7V7HpEm0R5FkAh5DYkQ mseCs/Wkhkf7JXCI+9Z/mCONGggBE+amvaf3gwSa4Q7e84Aeylwoe/lyj8dfVK3aV4ya 3muihjlJIEcKHmzi8ujXxMlvBHeggPfNGZLqP/7TgZnj61NuNbz55luZOyB5ghYCryOh c1M+E7vehpVzNL7IzBcjf62TmCozmWHcNb+bXwRcFaUYTZG8T2mE+oC1QWDR5QwB4V4s DNRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267143; x=1789871943; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=QdxiHEOh5/gGnd0GJIo+DGVmqzUzt8j3H0xVuakp+lk=; b=px1MRluBoHFmktsugyUgKmZ3cC4ahYOJXuM84wg7gMVM133vudqC9AhFX7rsPTBelF IkcT3mXmarwtMeT6iufMjl+DK9Z4sAMMpfyYGmBQdAqi/mPZB6QgN6noSQPaUn60J3nA M+meWXyTz6OvkjlG5FpqyIWMZQmCaVH4Fuie6uTzJZ8h/k+rIw7ulrkoeaYJfws94cC7 mVwNgBVaP3hZQJZgu9+i/ieB/o44T30Zfrwhu0O2MwrjvaK4NUG9zfn6hhV8p3yBizJv ivWFm8HdJ2bvjHjGU5EaHAPkB0q6kGf7OoiL+iE0sIqxeCMB91TXKCQh5cZ6xzT/48+H 76Bg== X-Gm-Message-State: AFuF++kd82c7WW5sOHYOpk+6SzdZcJxZtHqV56kJayIqnL7t+96hHtji ZzsATccE4vFCRv6FVsXCSTNCmQMYywp7ZSvMPbS2B7n/bFwJfnXZJ/w8h4ZHbFrsNarLe66Vy5B 6ba1dS48= X-Gm-Gg: AYBFou3GZLy3Qh2GZU47n/x4nM8HhMKpZj5HGdq6Xt7aR0PPNcdm8RFd1CXTgkZs3oW dFZ6ZsmmftAqfHc8ESYgdjfdgP+UsXMnoeOQiBytUTkzOsTfjS7CobniWuxLGBqT4VTbjaz21CZ SLTKakKhJaxa32SkZsmGfA8j5FpsisHEQicJR4Ajr2Zd1kNEv2EtwKHJ8UQYDT6f0Dsw8I1Xfm2 /lct9F2T6nIaZNLkNB5wMnU7Jj4F9LHJ4Ix60rlBMXO3N7QWku+iWMdDaipZxpCciNTNLE3cBvy poP62h7JI1snTnHo5cG3qe5XtcHbEVHlJxXr7mRGwMN5MY4NcEy15F+aHesa6tJ81ZvETBPpUYT oKOsH+fmNfduA71skUK90PoPRz5bTZ0gmbQbdrEVD6ZsDQsNy/khpz30OjVgSglDyLaapgBidq2 sJAO1/4jgCYqV0ZA39RfDh942O6UpfbLkGdMKY/UT3V2wDtw4J/Tzn4DB+XDdlILEthC317h8Ry sTL0oWOcoB8BgaJ1Q== X-Received: by 2002:a17:90b:2251:b0:398:c3c9:d0ae with SMTP id 98e67ed59e1d1-39dbbc6ea1amr8666087a91.0.1789267142662; Sat, 12 Sep 2026 19:39:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 20/86] tcg: Generic expansion of tcg_gen_shri_* Date: Sat, 12 Sep 2026 16:37:31 -1000 Message-ID: <20260913023837.741866-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267360886158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 103a7896312..2500707614f 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -126,7 +126,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -216,7 +215,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index b98e5bd80e9..b95e51a07dc 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -13,6 +13,7 @@ DEF3(sar, TCGV, TCGV, TCGV) DEF3(shl, TCGV, TCGV, TCGV) DEF3(shli, TCGV, TCGV, TINT) DEF3(shr, TCGV, TCGV, TCGV) +DEF3(shri, TCGV, TCGV, TINT) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index f856c641a79..9ac9547f6cd 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -473,6 +473,16 @@ static void gen_shr(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_shr, type, dst, src1, src2); } =20 +static void gen_shri(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + tcg_debug_assert(src2 >=3D 0 && src2 < tcg_type_size(type) * 8); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else { + gen_shr(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -564,16 +574,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_shri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_shr_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1583,16 +1583,6 @@ void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, i= nt64_t arg2) } } =20 -void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_shr_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267199; cv=none; d=zohomail.com; s=zohoarc; b=UkNzBC8YGbgHhDrtkYaknZv3E/ye57Wg9gzY7svPBGbvfydo00HaFOeLBuHkE7o3f6hjX2GQlZsTDtIY8HUg/PWu5gmtTuVKbNIC+CXm8Rdz9gq7jwiUK5pSPgLlR0PmrLe/8jxC75mnBKnp6ipJb7iXAnKn97Dj8u2hbeApgzU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267199; h=Content-Transfer-Encoding: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:Cc; bh=uCX/uEuCi9KjVvfcNpaznESNEjLu5077D4mYylq59Nc=; b=G9qjRyhHAg96X7CA9Nag401A45z/aezXg8B1X+Ak2OHeyL9+tDs6kQpnJvagLh1UDeOZhKJWfkcYeuQ6/8B9jVAOJZlkQScbEMgEMiDsbNdP8xKUzwZ3MteJNzzZJVo1owIRl+qeiZOPOoYQKydw/LFv4Mg/4Kv2Q17dASMLBYE= 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 1789267198999821.2160542344727; Sat, 12 Sep 2026 19:39:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a7w-0000IA-RC; Sat, 12 Sep 2026 22:39:34 -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 1x5a7a-0008RZ-It for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:12 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7W-00011i-KP for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:09 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39b350c6920so633354a91.1 for ; Sat, 12 Sep 2026 19:39:04 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267144; x=1789871944; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=uCX/uEuCi9KjVvfcNpaznESNEjLu5077D4mYylq59Nc=; b=FeRdPwg2YFUwbNzqrcENjj6TFk9zx7L6KfpwXm9D3ZEuHWx5hxpTS846irA6fgCEeq lcl20W/cMXdsZGMzOLQYI6sB+fJXHP9akHcThO/qIl+6Fg14HGyI+xxLT3HL0hi/2dpm +NBiB8a6PAXK1Kw63RVGkCM2s+SVAZNlqa8dQhUJGRKN/I1cBJmFV7fU0pKBHBnUdYuV stC6hzqmVkZlppW64+ZhH19S0drr9qUe+bOMSFNuyXElU4c2LWXQPshgqWg7Umr5UEbP kSAyBfGFtTqBNv3GtwyVe3PdwyIAialX/96HOGfDALaAR7Ys+X41QacdkSQRIVJZBPIi 5A2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267144; x=1789871944; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=uCX/uEuCi9KjVvfcNpaznESNEjLu5077D4mYylq59Nc=; b=bl/8sGE0QGI1n/uZ4LByiPC3rmaplYxpZqbGGN21tZKIdnCXl1uaQSi75Jo9yEnH8F GuXr4FRBMoayjH/2IGOOh3/vTaJU5woCcdpsXHk38HF3Ip3Q4tw4kCa25QXroW2Tk0w7 UJzmV3uoPjo4tXmwmlVKwdsNN4d73ZPh6fehYMNaO8h2djh1ISiyZUZLuzafSf5TgFj+ gCpGv37cETe/MEVviYgS7dhTaNaGCQk0QjmKpFbLdgH0dkGpQbRELESiEinbpxsGUW/8 YWdpwkCnt7l3eRMV6KIJZouwTaU1Vwgd37/TOD22BrRfSvbyYIN1gGXT8lmusPXUfZHH lcWQ== X-Gm-Message-State: AFuF++nmdXoAcsxqhVb6O7BuuPaZdbWy7vsOq0RqubqTHjPkksvhoenX RNelNJTCrBWmqk5iPfJ30RBN5KQ3AwD4V7sFvTm6CfIuziciRrQCdVrXGoIhRziGcHhUMtXlMiA jO9Ar0Dc= X-Gm-Gg: AYBFou3Dmr7BL/HFnzl/ePuCzqlRsBhQcZiQU3wHx3ZfPTNDvAd4uiIlozoEYifocNu PiLwlOKjiTPDZ07T/8HHHrmaxMNPbWSNpH6VTUe9JLjAe6Qf20GkNjP2bleSgzs0yNOylPXnAHc AfNVMx0teRQYcFI28EyspSJy9wETy99eH1HyYC4vh6mjxWgdrXlSa5HkLGNAAEq06ZAu7HegzTf cA8fJvR+Z/ruNIbU3DHeS+IE/BZSWUXuFKORQ1N9vnd8/U5wJqD6m/RPtAuhGYnyP8OaSOMESzD oCJbKDrvU+Dp1VB2sXhz2da3WqbCJgGXo0E220V868UeIl6A8QMecrhKW8zXF37l8nfjQRAckBU gqc6ztunuf97Y/H48U1DIK/5TvboVBFzWi0W2lbIbLjtGkpobZMb25worm1GboJS+Fz9drZ4SXl 8LHVta07+g6UDjBb+16Wmfjot62tcZbhD9uLlFF2KEvCEXbM7wf7a1q0i3zqNITuUvDGIIEsDU9 8rp5jA= X-Received: by 2002:a17:90b:1c90:b0:398:d6f4:c61a with SMTP id 98e67ed59e1d1-39dbc6c4eb6mr9190852a91.17.1789267143584; Sat, 12 Sep 2026 19:39:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 21/86] tcg: Generic expansion of tcg_gen_sari_* Date: Sat, 12 Sep 2026 16:37:32 -1000 Message-ID: <20260913023837.741866-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267200384158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 2500707614f..99f4109d865 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -126,7 +126,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -215,7 +214,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index b95e51a07dc..bfd2cd4b9c8 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -10,6 +10,7 @@ DEF3(mul, TCGV, TCGV, TCGV) DEF2(neg, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) +DEF3(sari, TCGV, TCGV, TINT) DEF3(shl, TCGV, TCGV, TCGV) DEF3(shli, TCGV, TCGV, TINT) DEF3(shr, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 9ac9547f6cd..34b2ecb2c49 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -453,6 +453,16 @@ static void gen_sar(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); } =20 +static void gen_sari(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + tcg_debug_assert(src2 >=3D 0 && src2 < tcg_type_size(type) * 8); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else { + gen_sar(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -574,16 +584,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_sar_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1, TCGv_i32 arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { @@ -1583,16 +1583,6 @@ void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, i= nt64_t arg2) } } =20 -void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_sar_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267344; cv=none; d=zohomail.com; s=zohoarc; b=EnGsQ6PReHPhBGQWUfktF4RV2l1/72DokK/kuF+/QZIL901OutZ8KHFUrnTRwVn0zJVO3/Cvpxzf95aqH/Q6YSrDk+UDQY2s33NkXJW8DjR2ZL61N8B7c5lcKbJ2+if3cYF7fB54Osb4F6nEEVqBMUjln9PEa9BK5qImDCAZicA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267344; h=Content-Transfer-Encoding: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:Cc; bh=2DcMgzQawZeN0X/jS3dPuO+FK3dlC+j6rlZepXNXuvE=; b=YteuQm/0TbnJ+iq6ZShFsMESfVYVXDnPimg+xHuAXy10bMRwuHJw3+Vw8AYVmzomEgfYAO5wRym7pllBDHiEHCucxehk97bPmNSz6E3709p40Pc1wAnuhusHYP0IWciceKcUs4eGyVj1ZAbObnuS6QEZT2wBIOjB2YKAkoJmmC4= 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 178926734452350.29234925340677; Sat, 12 Sep 2026 19:42:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a86-00017u-Oy; Sat, 12 Sep 2026 22:39:43 -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 1x5a7a-0008RX-IE for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:12 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7W-00012B-Kj for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:10 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-398e9698a70so2293779a91.0 for ; Sat, 12 Sep 2026 19:39:05 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267145; x=1789871945; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=2DcMgzQawZeN0X/jS3dPuO+FK3dlC+j6rlZepXNXuvE=; b=FcFZY+2B1vhXXY8rtc/fRF2ngEWnRQHZlaFImuOlWUh9nQaSN+p9354aDiIgQy7rlH EqBmqYV48LHnDHkfut6oBzQ7pGDKcgtrBLjdCbbNBzrbAndMcuUm5aJ/pyVanr7IH7aa YGTWKz65RGAWRr2548HqYhV0nRnPdAk15BDDUDgJfIf6Ox1Y9vRFz0MJjI6fWiO2+dd4 6grkhSdBDDQ5bv8B6Z4sfyuAhZt5AQF51bT5kh3kTYA3jr6H2kes8jlKO5IKz46/0xS5 dNVTPOnGR0jMcWJSIt3F2Ci+T55O+XdFGXLnCCSHQbVse8XwKc159Ipr+lvcZqfmkiKD qOUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267145; x=1789871945; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=2DcMgzQawZeN0X/jS3dPuO+FK3dlC+j6rlZepXNXuvE=; b=npO8kkk3vRQg5AC5aHxaby0DWeLuwCxOGSltmpkG4DhjCaV67IJVTW48433S0617Oi I/slDz6cfmS/95eMxy2sZT9oFRDAOJDyfE5Fo15cLLK8y1PsxRC9x3QayBQCQgKoHvn1 1/ibKxy7ozGb0pzvPHr7SwWs1SccUwrreM/zI/CqfqvA7dwuKy6hNY/PazNF0p4SHU8z 7uHR7MKLXowx7b+tbefcmOsRYy1cLp5C1c5h8wM/jeJc8+OARuSBJtZzqkOotlQ0zuFw Bi/+Y4OpOA1SRkGNyFtNTvqSXTvwSaQ5epB+qwjvH/sMf+RRUEQpGCZiwKJFIawFYSx7 6Wew== X-Gm-Message-State: AFuF++k5TN87zKZCSTBocAKApcG6f3vCu+Ibo4hsN5X0XKkD88V4i7sg vK8Hdo4Y/w1rvAMDHzv4lKV8i7JppDaJPOMjrCTKA7TbmGho+oJ+IbOrK7wCvi9YzKx4qE2gnT0 qUKlA X-Gm-Gg: AYBFou1RMzSfYrzSYxBWJCWSP4s5aiXS4BELg69jZU5DKYk8qUKjEYEmMXsp22Jlrm4 fzB60/hBLEyhVymGeGUUZOBuT+KcP3puZUzm/UR4uru4Vw/ful6srJNTBqal3uamm87ImLIvd+D G/FLAmHwxyEvDVrnZ9gjmU6H03fMDAxTfkmHo6VT4Zrp7VDmf7Vps7VyKcQCru3V38KqXXDz8By O8a2DXPEhFKllSQe+wI5R/NUQhVQa1jU4afx74oc7cwZmw4Jrn2TVBCKcYtmZbMDyQzu1dBB4cE 2jA4AP8XO/Q3Bd3KwOFltLv6OcHmdonrjuhdnJY8WwRVYvoQT0WniGWdm8tMsuBGnvS5Ql8SP+3 WVb8MiYf6ckcWY+ZSj5Rc4UGbcDjz3blYbrxEPlRUvwT+eJnQ8LC8BaHt2dgWbKDrcMX5FypOQO Ogh/ooD+fIz9pNgkHmjBCUPGq0G2BxFr8j3CvQ6sdcMo2hm5LWO6dKsN7Xj5pAywDG51Hb+z9T3 nCjtbY= X-Received: by 2002:a17:90a:c2cf:b0:398:9bd1:3210 with SMTP id 98e67ed59e1d1-39d9c21d78cmr21167160a91.17.1789267144688; Sat, 12 Sep 2026 19:39:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 22/86] tcg: Generic expansion of tcg_gen_andi_* Date: Sat, 12 Sep 2026 16:37:33 -1000 Message-ID: <20260913023837.741866-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.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: 1789267345229158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 90 ++++++++++++------------------------ 3 files changed, 31 insertions(+), 62 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 99f4109d865..a932e975f27 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -211,7 +210,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index bfd2cd4b9c8..67056e9f730 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -3,6 +3,7 @@ DEF3(add, TCGV, TCGV, TCGV) DEF3(addi, TCGV, TCGV, TINT) DEF3(and, TCGV, TCGV, TCGV) +DEF3(andi, TCGV, TCGV, TINT) DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 34b2ecb2c49..dd1ef7f8c24 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -115,6 +115,12 @@ static TCGOp *gen_op_ttt(TCGOpcode opc, TCGType type, return tcg_gen_op3(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)= ); } =20 +static TCGOp *gen_op_ttii(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGArg a2, TCGArg a3) +{ + return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), a2, a3); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -416,6 +422,30 @@ static void gen_and(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_and, type, dst, src1, src2); } =20 +static void gen_andi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + if (src2 =3D=3D 0) { + gen_movi(type, dst, 0); + } else if (src2 =3D=3D -1) { + gen_mov(type, dst, src1); + } else { + /* + * Canonicalize on extract, if valid. This aids x86 with its + * 2 operand MOVZBL and 2 operand AND, selecting the TCGOpcode + * which does not require matching operands. Other backends can + * trivially expand the extract to AND during code generation. + */ + if (is_power_of_2(src2 + 1)) { + unsigned len =3D cto64(src2); + if (TCG_TARGET_extract_valid(type, 0, len)) { + gen_op_ttii(INDEX_op_extract, type, dst, src1, 0, len); + return; + } + } + gen_and(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -519,36 +549,6 @@ static void gen_xor(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) =20 /* 32 bit ops */ =20 -void tcg_gen_andi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - /* Some cases can be optimized here. */ - switch (arg2) { - case 0: - tcg_gen_movi_i32(ret, 0); - return; - case -1: - tcg_gen_mov_i32(ret, arg1); - return; - default: - /* - * Canonicalize on extract, if valid. This aids x86 with its - * 2 operand MOVZBL and 2 operand AND, selecting the TCGOpcode - * which does not require matching operands. Other backends can - * trivially expand the extract to AND during code generation. - */ - if (!(arg2 & (arg2 + 1))) { - unsigned len =3D ctz32(~arg2); - if (TCG_TARGET_extract_valid(TCG_TYPE_I32, 0, len)) { - tcg_gen_extract_i32(ret, arg1, 0, len); - return; - } - } - break; - } - - tcg_gen_and_i32(ret, arg1, tcg_constant_i32(arg2)); -} - void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1527,36 +1527,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - /* Some cases can be optimized here. */ - switch (arg2) { - case 0: - tcg_gen_movi_i64(ret, 0); - return; - case -1: - tcg_gen_mov_i64(ret, arg1); - return; - default: - /* - * Canonicalize on extract, if valid. This aids x86 with its - * 2 operand MOVZBL and 2 operand AND, selecting the TCGOpcode - * which does not require matching operands. Other backends can - * trivially expand the extract to AND during code generation. - */ - if (!(arg2 & (arg2 + 1))) { - unsigned len =3D ctz64(~arg2); - if (TCG_TARGET_extract_valid(TCG_TYPE_I64, 0, len)) { - tcg_gen_extract_i64(ret, arg1, 0, len); - return; - } - } - break; - } - - tcg_gen_and_i64(ret, arg1, tcg_constant_i64(arg2)); -} - void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267354; cv=none; d=zohomail.com; s=zohoarc; b=HoMw1vrt3PU6zbZ2YbJh5JRzCzbeKxQLO1AVdWfgF2TZf/0MivEY2LBHen8VBavX/3DyhULPn1MSugQd+p9z0/VjBsVd+UBMPM6hfcFy7JFJjdvm0AXlYpjh2MlD/LroO2tEmgOStUmJDchRHZGO4KOB8RHMYOnp8ntSIFJeFe0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267354; h=Content-Transfer-Encoding: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:Cc; bh=12QbC3VW2aFSdfZKQgrWK7xgj1+wC0aEsdf6BOFl6/s=; b=Z+4nvYhP90c8Ia81q71YEuLq9XBrOYUui4zoWrfbvM1pWz2u6wOv7C9aPeXC0FUmOkYGwCOBa7lHoAI4oRvUWptkI1SdywrZz8qjx+AvR/t9K1GEcqXj1z6nREJ8SZ2aJQ0xLYAvv4zhtX+lTpCN7v+/YdhY339RK7a40lZIzy0= 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 1789267354313112.21819580380156; Sat, 12 Sep 2026 19:42:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8E-0001ZM-Ly; Sat, 12 Sep 2026 22:39:51 -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 1x5a7c-0008Rr-Cp for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:13 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7Y-00012Z-Jv for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:11 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-395cf2535acso2183871a91.1 for ; Sat, 12 Sep 2026 19:39:07 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267146; x=1789871946; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=12QbC3VW2aFSdfZKQgrWK7xgj1+wC0aEsdf6BOFl6/s=; b=Km5vKF0gr6SNnQSjc0VRxMvYKOeayWVLbEFUoQFQtE7ldiMxgZ35glQLJu7dv2jHmJ +R4sOyq0b6Kiuf83O9gD9LoIKo7hc2IQa7bCCHvfy+uX5WjGAOygrLBddPXuzFuq9OAc DsY9HBJ8b6fOQbgxTak79dM28bRfdGjdMAKn5amLqrIsxIgT6Gktn5NZfKZxUk84KVW8 3btmA+fPWS1tu8L1qOuq0dW/1QUsDQF8kbuowJaUGRRWX8RlYnkcXB9d2ZROZ8WYmnqM vQExd8K/ARQl0/VD074cVqQsXgGfdu0gFFcGI677a1WYaTxUuY8ljgEyG6Str1vh87JN TLIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267146; x=1789871946; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=12QbC3VW2aFSdfZKQgrWK7xgj1+wC0aEsdf6BOFl6/s=; b=KNi0ecwUsCt3AXr4tUT7vN5RmJvRoq/u2+5HnS1X4JPsfeCNydp+6i5/1AGVj+lE9W C0Bny0F2AWc5XpAiarTU/DKlcIOzxXuMElk7qRONwolI+JQL9Q/fFlqTIEwa9PAO+CKF TLYc+QVzqIbuUuLL+JFip/atYB8kC6JaLAU9WPsl0AUWOX1P3qhhe0kcGKZZRlbvkkb4 25qKQp1NJ0qiX/A9SA4AaXT5JIhvz0x2RreyEBpraUv/4mWSsNNt0Qb8psUi/jwH4kgz kY9YpYFmqEG0R4e2BsHmjT9RiAPIOMYFXYikaAz2FF0SYgI0TUwXEqgy4Ay9gxyLcvIJ 3YNw== X-Gm-Message-State: AFuF++m/g/sr60xWYsUEkk6Y4CGQSV8sHtPmJXY9boTD0zSGK7DdlETt Y0BMA+OdcIWHCGd5AWXbA+TmFXK3VYk8BNiqA0XQw2CKYQkyWTMogKZ/uhcTGiA3qEXGVHaQt4v HSThzBok= X-Gm-Gg: AYBFou0jcgVW7mVZj1GiaDWf2QOxZHisKsJmzaXpNM5bGeM4gHVxgiiCrmgGJlcyAOT 5wF72iWwc9am/LXPhG2I3oggu1Q78h/jwd2HF2mrL6OvM2M+eyCTMbH0jIuVtqYi3ujJCLREh0g hE1ZRcVIMzKBSFX4ExJcBt8oGTllJNJqG9c0sdr3o3PFuV4WInrk53aYBa7p1dVLVrr/zio3mUL NwHzScHYnU1149MCfXedevy3x76qcDmOf04vmGE15WB3oDSbEyOSSTF0KNGZoTlgpoOrZBGh0yJ 0ejctYwbPZQkObsjJchkfsDW046KpcsVoV1AYCf9D1jIKkmMbN7P6ms5rzVetxuT93dvN1aH/hk ICQuWj2M8A2Bx7nuupyUUrMj4ii0k5TobWzNx1lwXGWoHZaN1vEdKcRw8Gi1x05fBsqqdkk4m7U e+e5OQpVTv1EOH+T3m8ZNEZAqrZoH7BhVLToXjiZXuXaFn7lX/OdL/+vbvqXzX96z4NAQHqf+0d t5qNDk= X-Received: by 2002:a17:90b:4ac7:b0:398:9beb:a2b4 with SMTP id 98e67ed59e1d1-39dd56bea5cmr876475a91.22.1789267146015; Sat, 12 Sep 2026 19:39:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 23/86] tcg: Generic expansion of tcg_gen_ori_* Date: Sat, 12 Sep 2026 16:37:34 -1000 Message-ID: <20260913023837.741866-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.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: 1789267354946158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 35 +++++++++++------------------------ 3 files changed, 12 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index a932e975f27..cee21891451 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -210,7 +209,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 67056e9f730..2c3604cc7ed 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -10,6 +10,7 @@ DEF2(movi, TCGV, TINT) DEF3(mul, TCGV, TCGV, TCGV) DEF2(neg, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) +DEF3(ori, TCGV, TCGV, TINT) DEF3(sar, TCGV, TCGV, TCGV) DEF3(sari, TCGV, TCGV, TINT) DEF3(shl, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index dd1ef7f8c24..b2bd2f51e1a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -478,6 +478,17 @@ static void gen_or(TCGType type, TCGTemp *dst, TCGTemp= *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_or, type, dst, src1, src2); } =20 +static void gen_ori(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src= 2) +{ + if (src2 =3D=3D -1) { + gen_movi(type, dst, -1); + } else if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else { + gen_or(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -549,18 +560,6 @@ static void gen_xor(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) =20 /* 32 bit ops */ =20 -void tcg_gen_ori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - /* Some cases can be optimized here. */ - if (arg2 =3D=3D -1) { - tcg_gen_movi_i32(ret, -1); - } else if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else { - tcg_gen_or_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { /* Some cases can be optimized here. */ @@ -1527,18 +1526,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - /* Some cases can be optimized here. */ - if (arg2 =3D=3D -1) { - tcg_gen_movi_i64(ret, -1); - } else if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else { - tcg_gen_or_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { /* Some cases can be optimized here. */ --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267422; cv=none; d=zohomail.com; s=zohoarc; b=chr/MxzK7VZqiyR2X20WOhb8qlR6TTRxv8hB6WrM2GDfPseHPyy9sYrfu4kwVKx4AcOlPdfOMrHvJKhURJHd1QOu+EqVfzGU2lycuGKNmvPlU4H753+0WlmqlkspGkMHFt55xjfpxMLPD3Q470xW5usAb4nsF8PPCXK9iaNd1ec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267422; h=Content-Transfer-Encoding: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:Cc; bh=BZvUUSdPOwlXPFtmsxk5REpukmqyCDmE1WQT2kDCsqU=; b=Ua298quJolfVZl8zfpd8OFYAgG5V6rau1LJeEaOGacxg5WcfthCTJ5m1CqLExm4VskUv+qTVllCRUanYSEGM5BOsQqQ0h4XqECg8EhRTLyntvsqYcqFQjCwpuEG9IpipecnX4iSthRBQY+0KjpDeBrDsy+eaa1gpxjvfpBb5NAk= 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 1789267421988532.5348746471893; Sat, 12 Sep 2026 19:43:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8D-0001Wm-1a; Sat, 12 Sep 2026 22:39:49 -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 1x5a7e-0008SI-6v for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:15 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7a-00012q-8p for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:13 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccda24afso681105a91.3 for ; Sat, 12 Sep 2026 19:39:08 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267147; x=1789871947; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=BZvUUSdPOwlXPFtmsxk5REpukmqyCDmE1WQT2kDCsqU=; b=W4O9OMe2AyrNDfpy5vZOumpX+mu2FICr68e2VyaN16hcxYU2rEu3YkHm/6cz1CCISY KRXr34b+uaVwBjM1VBQdwqEUcb86086ljMba1u6JMX9kXhP6O/zidpRMG2rRXzId7es1 xRqiX8h2F2iCWtoaIGN5JxDodtBP9/ATvsfMgEr5lB0OpeEECvATx64wPyQOVZuYtKXp rVR+MajcxeUdh9i/npe+diPHZJ/jHN7A7LqA2Oer6tVc+UfnE+ZWTEIcVTPwbAz5ZzU3 c6x1qFQTFf1svQVluQjMJs5t2DQTt7Pp9D/0HBD3Sd2mf/THHLp37t/nfRtN9kdwogj8 H2wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267147; x=1789871947; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=BZvUUSdPOwlXPFtmsxk5REpukmqyCDmE1WQT2kDCsqU=; b=TOSQamarFhs8PlBwWPfXNL8j/5wfFt0MSO6y2PXzDj+PZZe0Gb+mFhXIxa2fKgmJ2u mI4Bxl1rJzYa8acK59m/kb6JGppepXDaC+rGEMaQTU3tEU+jbLLsxh6bOPZixpWlK4Hs +ufoLF8IP9Iarpl/pJgv8ZVLMhwqGW3DaCIRuyuUOW8fMZvS8NglIkktiSxVSTBRaf19 KWEWhH+VlVACnlj9OGr5BzrbCC70YWsl2p4iG3PX7f9A+h3wLa9+IC0pbhEbR3eVLSRX 6pYnbPkboMzwIP2G+v7zxA59o2UM4rqWNp9VLlYa4us09XRPg9LKqNwFineg7alGC7Dr hk8Q== X-Gm-Message-State: AFuF++l/Uv8SKaZ98gmJSab6GH47FJ9qIkTtOYXLORWOv3zIhBm/v8uU GBTiniN1ESNU7zYVAJ2ueXR5TCIeMG3NejurJIgOvlZpkx2MWEGlgrMYMPsWcUNLMWNgvmzjdVU VILHN X-Gm-Gg: AYBFou36qm0IKcp6cMgJoONibl3sF5oGsnU4RngRqYRYlPItUiMoB4cz0nAemzr2j4w 99YoK5ZzjF9mMhlfVyuzNzwSGXOraDaWt2Q/7FedlpyUjL819yx4M1phOSv8Wxzz54enA9nVgDr 61L6e4FP9J+0yIZHadzeLLQDkUF7015T5Vpnm9/NZyoibcizR9vR1ki1mBnNKdyTsAshF8ida4e 12VQRcyTY/W/jZn1rHcDgbB/Tg0oSR8uW4qgC/aFA4dCZA3GerLB1oSB1bV1dWydR0wg14TCXFZ ib0PG7C1b81VygmK6CTu/YtSlT4Vjc9Gq3NMHj2iXOZDWNki8wq2EtOmqnXknzCfmgLqUtcvfoi 0wq77p8GfsvTpnsak9fwHsCSm/3nF70aOd1BjfIMoooscofkQAuHdHXlEsmw+PMgVI0djv7RCSm MmyW09kKDN8+FMSsS7y2A39U0nfQYloPYQ/ZwB8al8e8Z/xVcVuE6JKxGquN0O+pvoJmJ3Jh1Tm /7pQOQ= X-Received: by 2002:a17:90b:4fc5:b0:399:149a:3f27 with SMTP id 98e67ed59e1d1-39d9bd71246mr20316092a91.9.1789267147057; Sat, 12 Sep 2026 19:39:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 24/86] tcg: Generic expansion of tcg_gen_xori_* Date: Sat, 12 Sep 2026 16:37:35 -1000 Message-ID: <20260913023837.741866-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267423257158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 34 +++++++++------------------------- 3 files changed, 10 insertions(+), 27 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index cee21891451..80e6f77c379 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -209,7 +208,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 2c3604cc7ed..b620a314480 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -21,3 +21,4 @@ DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) DEF3(xor, TCGV, TCGV, TCGV) +DEF3(xori, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b2bd2f51e1a..0e6c21e9077 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -558,22 +558,20 @@ static void gen_xor(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); } =20 -/* 32 bit ops */ - -void tcg_gen_xori_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) +static void gen_xori(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) { - /* Some cases can be optimized here. */ - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else if (arg2 =3D=3D -1 && - tcg_op_supported(INDEX_op_not, TCG_TYPE_I32, 0)) { - /* Don't recurse with tcg_gen_not_i32. */ - tcg_gen_op2_i32(INDEX_op_not, ret, arg1); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else if (src2 =3D=3D -1 && tcg_op_supported(INDEX_op_not, type, 0)) { + /* Do not recurse with gen_not. */ + gen_op_tt(INDEX_op_not, type, dst, src1); } else { - tcg_gen_xor_i32(ret, arg1, tcg_constant_i32(arg2)); + gen_xor(type, dst, src1, tcg_constant_internal(type, src2)); } } =20 +/* 32 bit ops */ + void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) { if (tcg_op_supported(INDEX_op_not, TCG_TYPE_I32, 0)) { @@ -1526,20 +1524,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - /* Some cases can be optimized here. */ - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else if (arg2 =3D=3D -1 && - tcg_op_supported(INDEX_op_not, TCG_TYPE_I64, 0)) { - /* Don't recurse with tcg_gen_not_i64. */ - tcg_gen_op2_i64(INDEX_op_not, ret, arg1); - } else { - tcg_gen_xor_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267616; cv=none; d=zohomail.com; s=zohoarc; b=fe5WuB6peSY+TJsducMOUIE2XXCbsBncw8RrO4VzZMAQrUha+uCFq5bNjChvGLASVICsdYsSV3DZHyl+rmQdCO9b2hqEsiDcAS6ecZZ43fS0XsicKnXXK6BERmCr90Zq7l5WrDKCrVpy4s8GI03N/LNz8Ju5gJztJhjBLwE+Z/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267616; h=Content-Transfer-Encoding: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:Cc; bh=Fiv8LIsEDD7zH42ivHIskY/SCOol07tiL2KK7VCAhhw=; b=kIdR+BBKFhHbuIl8m7UbVIy6GlCUvTIvXnHvlYOUzBN03m1B+lRPssYLfmrG3/Kgev3K7952xFg9J8oziTLjJi4T7rIAiGfoZT4QcbB4NMwVpHrilK40QbFh9XXy2ArKPC9Yo1Vg2GvlhFzafyY7uCHG39P2EjXVKVpPzPMdQGY= 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 1789267616031157.73612481291548; Sat, 12 Sep 2026 19:46:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a87-0001BM-R4; Sat, 12 Sep 2026 22:39:44 -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 1x5a7e-0008SH-5p for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:15 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7a-000134-9f for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:13 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4bfd1so755230a12.0 for ; Sat, 12 Sep 2026 19:39:09 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267148; x=1789871948; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Fiv8LIsEDD7zH42ivHIskY/SCOol07tiL2KK7VCAhhw=; b=ODsudtBJ1Y1O+O3hVwRbVQlxHSYnRjDC70RaqxpOEfzxEoEOxGCYk4AbWJbCKxGSc4 TUu656WHCNPDne7J2fxV3snGSt7tf8RDXGyL5P028BkTEGRqYZN9oyYSxfwpkeegV5Ek q1hrN2Tj7RR0TO04rGUj2a1UB5QI8tvzY7iSHoVm9pjrwOTzcj1FhmONTNVKBIE2gjrZ tuRg4rdUmuFm7ONanjBNHjRmgh80RAYDhe5YUEiWg5EIeSy0WCfuHeTAy33IoJUJUpHB O2K+q8br+HSfmxLDt02a2ymUsdBHjMqjU5/h6yHQ1YiOJL465sAPD/ztIjNhT98tiIy9 RTCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267148; x=1789871948; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Fiv8LIsEDD7zH42ivHIskY/SCOol07tiL2KK7VCAhhw=; b=VP6xh7EcMQiiG3SInnzHp2TE3bYYOz9E7++mbhnnquOYDPm7mEPxXRJUryxjAqJrDk CF8Oz/rRJ38XtxLuGtxOJTxhabzvuK8FX7Y6yVXra9zCf4Iiya5TltjPAsTWEwa523Ei 0CdkCynuI4EUY7WAN74B++SGQxS75ZFUeRANKQ/phHIB5X6Al12EIelZNPvcZv41nWHe WynnOpXX7L5sT/zF2/uvTTa9sicxu/OB66kHJde0RV5xx7qLqJnaMs56qCD9kmRNsA2T j853FlDVxfr5gZfL2JtVZswJbX8Ho/b3nSKbz3qwjwRrOPp1qiiQxp6cgoNuGqoWeQhk fINg== X-Gm-Message-State: AFuF++kNbxNXnNxTYUEBNsF+GyGJoGi/Ptux1eqUcOifK1S1U2JR02RG MOhH9cmUICZaedcH7SCSYh+sfm4jHZtXRdK3wLSRgpU+4JvhRp8vYojAfWfZsmxhdTzQqcBIld4 NeVEYTUE= X-Gm-Gg: AYBFou2gP6hVARj1lSUoYgfl6jXx/z3LXT38gaptMPb1B3XPmC9ozG4PKdmNZpjhFRc gFc5lGdxI/+TMFWoWYLo0/d0RuHOHHeDkFGGgnCcUZ+XNgCJtz8y3iVVaI3ZRGCQapXPkJwt3RW q7zoFEdIrynQyxwRnr6FWA/YNfGfyO0gM7JLLcZaBmpcf3WioVM2YFMe5QwbaQnUvD2q5sYSSwU /IxulNMeDQ28/ix6bAopGqjUAkLH7FAxlvEkzJv3v+9yFrNOGjCXfaipS6RTOFOEuDDb3msfYiY rMUwRKXcOqEzPkpGdi4XHrKsN19fP+zJLZbnexyfo/euS4ElybSJaTVrSFWdfSbkxDC+H88+PHp /2wHKDgABETsSq0JKrc+rQKHhvbCe3cKjckzTGyMCWb24UYnVDrapPixwhL6Lnda5qCqbce7OtV xKInQB5/trYsgHysEfKS0edOXZZa2bcGpj7h5Q+zzMxZJ4dfpyeaN5dpjX7xRPVhrb7Hxe3obng aZ8HKcL X-Received: by 2002:a17:90b:586f:b0:398:9be6:f999 with SMTP id 98e67ed59e1d1-39d9c386bacmr20610772a91.24.1789267148015; Sat, 12 Sep 2026 19:39:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 25/86] tcg: Generic expansion of tcg_gen_muli_* Date: Sat, 12 Sep 2026 16:37:36 -1000 Message-ID: <20260913023837.741866-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267617774158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 33 +++++++++++---------------------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 80e6f77c379..fe3519305ef 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -208,7 +207,6 @@ void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* 64 bit ops */ =20 -void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index b620a314480..8e97c1b37d8 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -8,6 +8,7 @@ DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF3(mul, TCGV, TCGV, TCGV) +DEF3(muli, TCGV, TCGV, TINT) DEF2(neg, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(ori, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 0e6c21e9077..352b73148ea 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -468,6 +468,17 @@ static void gen_mul(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) gen_op_ttt(INDEX_op_mul, type, dst, src1, src2); } =20 +static void gen_muli(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + if (src2 =3D=3D 0) { + gen_movi(type, dst, 0); + } else if (is_power_of_2(src2)) { + gen_shli(type, dst, src1, ctz64(src2)); + } else { + gen_mul(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + static void gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_neg, type, dst, src); @@ -637,17 +648,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - if (arg2 =3D=3D 0) { - tcg_gen_movi_i32(ret, 0); - } else if (is_power_of_2(arg2)) { - tcg_gen_shli_i32(ret, arg1, ctz32(arg2)); - } else { - tcg_gen_mul_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I32, 0)) { @@ -1576,17 +1576,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_muli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - if (arg2 =3D=3D 0) { - tcg_gen_movi_i64(ret, 0); - } else if (is_power_of_2(arg2)) { - tcg_gen_shli_i64(ret, arg1, ctz64(arg2)); - } else { - tcg_gen_mul_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267224; cv=none; d=zohomail.com; s=zohoarc; b=aZT71H7TZIULa3KagnV50PCATZuFpyV8VDxuGL2KQ1CwI3pAmuGmg6TODxAm2AJwp9PcGf0onu5Sse/qLOQW7x3KHuD1pInfvdB2QVNjowgu9f+PUqTdGIaZPkIw34dqJek6csKku7h4Om9USlOZWZhCZaXfkkB0Op6/gcg31mc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267224; h=Content-Transfer-Encoding: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:Cc; bh=jFX01ENVdcsSqsv5TxqyE3fYuH4S4Ov7GwQYoUBAIh4=; b=DFdCHH1s1EQeGN908JbsrBb3CFQ74Fu7/EGMGAKLiUdp+3aUR6+wei1+RAzadrZaNvYV+Eg+wXWgRwwWlQ2h2lAF/em6NO8L0IaT/va9fv6fC1x3rf1ErYAVwNaf1qlWjMqaXIP97O3Vf1HawiLmjQS0bYT6uDNu9dAGuJmk4dA= 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 1789267224892151.74922370436605; Sat, 12 Sep 2026 19:40:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a85-000111-1V; Sat, 12 Sep 2026 22:39:41 -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 1x5a7j-0008UV-P7 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:21 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7c-00013K-49 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:15 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4ae2cso1153460a12.0 for ; Sat, 12 Sep 2026 19:39:10 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267150; x=1789871950; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=jFX01ENVdcsSqsv5TxqyE3fYuH4S4Ov7GwQYoUBAIh4=; b=d4T9IM5dg9aB1XMDH0AX2HE9TbTLhyRKEBpLk2HRV+66yoGSyMf+rAwE9moWB0nJWQ hTqhimr80PAPsm3eMek9k7FxFFCMINsKuIbsnwqOkG+NctPCiR0aRtLF8/yyDwy2O+md cbZ4gEaZiZctSgX66P2mQNe9dyW4wUpAGnk9zUc0QRNS9kL6V3dypTh3lqPY4wUrgfzq tBV8o4XOOvv+UBPipBbiZ9kSU//Vu6Z0/bRWlq7f23qICVRB6fYiM3eBcBymCkwsIfmM 34q3GL3sH7QsBLfC9H5IofjlYVzn3uyLGTb73HLnzVhuSsymDeN1fXYnFzxDa814488B 2+2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267150; x=1789871950; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=jFX01ENVdcsSqsv5TxqyE3fYuH4S4Ov7GwQYoUBAIh4=; b=Up8OvHDVNHjvhGS606F8NUEQY4Ne4wlFMr0yi2L6X9UlcK7ArD6Lmu2Q7eaSmjZHi8 JKejlGpQwpLmiSzuJHe9XGo+y9rOYK8zvMmeKWl40U3Ptnte2G0HgZEEVV6kMnUSyiaQ cRMQcsbAQbMGjU6SdmxdNBHixxQE1BME8951qQ/odsaH/tu6qjSkpHfvjagg0pdEAjzf SGG92ftSZuMCQjJpKBdK2tm4YFoygKziO23PRxCj8RUPAhsuM2qK5uxJnhCd3OPJFLBT ZML7mKrKR0q2j08EUND+m7XXHl4Ul5l7anQUxgEyh9mYQMXr0Rn6AMiNsf0vL/tbX3PF YGvg== X-Gm-Message-State: AFuF++moKTkQq/kfFw7hEu2CuCuO03xYOiHsmsuKnaiPjrcz3+ivZ7y1 DIYYq0sJydb1rrfqRyMORkd0youih2f3D4+lrQsXz/exCkVRvh5NQECVRFJBnHk8OnVBtndhUP8 TdKAxN2s= X-Gm-Gg: AYBFou1fLM6M94xeNOJ4kYWs90e1+i3UCdoynbMhXLGb4OtIdkMvThlFBFlduDu3HvF /SZZDdbxq/Yg3rLZV3Eqo7seY4OrRnt6Mp/MzRt2GweyWmO5Jv9S4/G6vaAxkL6yJyyKkybRyYu IQFsoabSTs3najRLs6k5IvypeblsDt7zsaKwpJB0PO3SSxPpTmDbKzSGyG8QWqhrp+018b7l731 8xVHv6En+zEY8ZtjBrJe37NBj9CaOKew4xhk8fwcNJM1BGMYQk4QRAfF+pepq6yuvxeys2xQzTf qf0iXnEWkOZnS1PTNXM99ZGRmr/mKjD8SviXzvvQaYUCMs+B1fW6AB5Z/mxZmZourqhqUXbGS1N GobGsBTVmVXBYo9nBszatnQaNsORM1QLUcgHQ50afm9DWvNnaFhv0/qsjIO4ep50axKdPumyXxq WzbaI2WTMFeCt8U0+hsq5VtKwtn389koc7qTxz251E/y+baoCPUDK40yTUpHPTVrDFK3Tq/Ljtb JtjFroDsohAAn+fhA== X-Received: by 2002:a05:6a20:a128:b0:3cd:67e9:8565 with SMTP id adf61e73a8af0-3daed19f362mr20957305637.9.1789267149535; Sat, 12 Sep 2026 19:39:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 26/86] tcg: Generic expansion of tcg_gen_not_* Date: Sat, 12 Sep 2026 16:37:37 -1000 Message-ID: <20260913023837.741866-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267226496158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 3 --- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 28 ++++++++++------------------ 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index fe3519305ef..f01d30f18ab 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -203,8 +203,6 @@ void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_= target_long offset); void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 -void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg); - /* 64 bit ops */ =20 void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); @@ -258,7 +256,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, = TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); -void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 8e97c1b37d8..20007c90680 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -10,6 +10,7 @@ DEF2(movi, TCGV, TINT) DEF3(mul, TCGV, TCGV, TCGV) DEF3(muli, TCGV, TCGV, TINT) DEF2(neg, TCGV, TCGV) +DEF2(not, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(ori, TCGV, TCGV, TINT) DEF3(sar, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 352b73148ea..826553e4476 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -484,6 +484,16 @@ static void gen_neg(TCGType type, TCGTemp *dst, TCGTem= p *src) gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +static void gen_not(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (tcg_op_supported(INDEX_op_not, type, 0)) { + gen_op_tt(INDEX_op_not, type, dst, src); + } else { + /* Do not recurse with gen_xori. */ + gen_xor(type, dst, src, tcg_constant_internal(type, -1)); + } +} + static void gen_or(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src= 2) { gen_op_ttt(INDEX_op_or, type, dst, src1, src2); @@ -583,15 +593,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - if (tcg_op_supported(INDEX_op_not, TCG_TYPE_I32, 0)) { - tcg_gen_op2_i32(INDEX_op_not, ret, arg); - } else { - tcg_gen_xori_i32(ret, arg, -1); - } -} - void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1, TCGv_i32 arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { @@ -1843,15 +1844,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - if (tcg_op_supported(INDEX_op_not, TCG_TYPE_I64, 0)) { - tcg_gen_op2_i64(INDEX_op_not, ret, arg); - } else { - tcg_gen_xori_i64(ret, arg, -1); - } -} - void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_andc, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267367; cv=none; d=zohomail.com; s=zohoarc; b=QrQewqXlmO6PBPQ/WSBBU4wXgFFrID8t89o6XErYCAVtpOLgtRDpRus90e0HfjEo//hJTC9D4syuPs/0wFhwzVycTEjkjlqYv9GFvtLWlSe9LSCo01b1Y2WiYD+4NPxCi7q4ZID086+dPZKEtD1ruc1tR4xjJ7llbQjhUemxlTI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267367; h=Content-Transfer-Encoding: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:Cc; bh=fLrXh8qOCOhD917kRkmsTzh2FVXg7K478+PLNmyHpZs=; b=EdmbaJ4NaaYFfudTkHDgyo3BSBE56Z0XOjsNVsIQYZHia1/HjUal3XP9l/KYF35XYL9x906cjxcNQMBRPv7HS8/DrRtlZyLoCZlZBKbdIH7OvxvCLgzjNJVGPGFqy85+8k5fA2refcGzn6sa8VIGnQR0YX9t71Aao4/8nAZMhCo= 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 1789267367775448.4387172625719; Sat, 12 Sep 2026 19:42:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a82-0000qY-P6; Sat, 12 Sep 2026 22:39:38 -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 1x5a7j-0008UW-Pg for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:21 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7d-00013u-Qq for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:15 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39b9184fa80so936347a91.2 for ; Sat, 12 Sep 2026 19:39:11 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267151; x=1789871951; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=fLrXh8qOCOhD917kRkmsTzh2FVXg7K478+PLNmyHpZs=; b=qRfslSkD12o2r/Q5fzZ4T9MMB6J7rUmR904X8AL64XbY7Wyk0sctDKeRSn7OMMyehP lF/I/SWa21Mtzcgguy6pwnucwkXKdaz8UMtICwRE28x5o7XW6Ac525UL/sxwXHsiJHXB prX0VZsVRKNMPSE3m3LOi5aH4D67lwK6jesbixm/MR80VqUuFPaTRaP/d13ROerSfEjJ wSElgQdq/A6UJo2L8jnWmRqBtAXPJTCX1j05MabZN0XrGQXNzU5h4JtSOtZtp811aV/L cmZJCkR5QNKyHcfH2nLzS8ASXgzeKzRAZng8lerCAJ6MwtUjwolVcLEfX01Pac2uz+qQ Uc1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267151; x=1789871951; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=fLrXh8qOCOhD917kRkmsTzh2FVXg7K478+PLNmyHpZs=; b=h+incF9Hp7V2myNMpiGaJ0uQrLMtnO7p70FRVu20RKPizjzzCNMNGJMX38KXZJXeVM Rjeh+mzou288vZ7L+TiSHdFlYA/GtKZfC/iZ3BUJe+xM1LvrKgZ5jTihcC0rLuqL9WHo +GSnT3peOUx9fKfUHDFjuMZmiA4BDggZjWF8q4WQltbMU7FR4Aqe5JwyUpPTL6Ja2+OA 2xCeMVEghQGWPa56CqEXrLSswxrtXiQten9U9GjqJvYR5RaKXQVaAyK3LgjIscg4v9UE 0aszM4LryYBgx5ZW4Dt+M4ncswq5fHjLHfinQPyKmfUvDyAkVH/pOap3UVhieRzXUxwO 0Y2Q== X-Gm-Message-State: AFuF++k08ZWU5ZSTad6KdKe32sQQRAnt2o5qXcaM2NSLIHqA2NFhYozk dENXuKZfEVfus7kj52Uo4IcTnXYEBkYA2ltBVR4pQJwp4s25VfllUZhr33YgSha0v4losUNLe+J tRz8/ X-Gm-Gg: AYBFou2hvqMPZvwZyjr82Ivl5uM4V9mxZt+MU4asaDY63htPmVOH35w6oPvgdJ7yDkP 6pdW5V6oca5juHtoZY1rWfb71mfdUwA2jG+0/I6JokJMnXKXmByWp8Xvprw45fHHaN1PP2r/qdX E/bp/Clgv2k4/sE5PC3sNW26aT2b7AAn6ZbMLja1ddeCGz7mSJbvmDvGL2OG6x0Bfs8ZG1WnyrA 0PF9jXzOttFDpu3sLLkVsg76nCwo3SqiIO+t0CNALTuMvf2wKuiqd27Xx8D2+AvgnHNfiXS6/ZK jc8kUhRs/lzcrcNdd+tNx9Z0iZpYpnjmB8XGbkmV232qatv17cpSkL9jHmUxsOyy58vrSpTTued NgiEZf46sRTPxV+QAwj1uycPqDB8gGuxmXTvWGcSzrTtrWwzOc9XuoBPOkwvAIlcK9viFCGvuvg SGl10qloHbpe+LrqsXBYKY2aD+NAhHMO4kb7AauphDAzJcpRlVct8t4RIW3ZPSW3nnTbtRF63Tx p1hnwDFYV8q25uzNg== X-Received: by 2002:a17:90b:4ad2:b0:398:9be6:f996 with SMTP id 98e67ed59e1d1-39d9c34a241mr18379508a91.21.1789267150909; Sat, 12 Sep 2026 19:39:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 27/86] tcg: Drop division helpers Date: Sat, 12 Sep 2026 16:37:38 -1000 Message-ID: <20260913023837.741866-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267368912158500 Content-Type: text/plain; charset="utf-8" All current tcg hosts support division, so the helpers are no longer used. Signed-off-by: Richard Henderson --- accel/tcg/tcg-runtime.h | 10 ---------- accel/tcg/tcg-runtime.c | 44 ----------------------------------------- tcg/tcg-op.c | 16 +++++++-------- 3 files changed, 8 insertions(+), 62 deletions(-) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index 0b832176b33..003c963bc7d 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -1,13 +1,3 @@ -DEF_HELPER_FLAGS_2(div_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) -DEF_HELPER_FLAGS_2(rem_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) -DEF_HELPER_FLAGS_2(divu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) -DEF_HELPER_FLAGS_2(remu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) - -DEF_HELPER_FLAGS_2(div_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(rem_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(divu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_2(remu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) - DEF_HELPER_FLAGS_2(mulsh_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) DEF_HELPER_FLAGS_2(muluh_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) =20 diff --git a/accel/tcg/tcg-runtime.c b/accel/tcg/tcg-runtime.c index 7c0aab98a80..77c4024148f 100644 --- a/accel/tcg/tcg-runtime.c +++ b/accel/tcg/tcg-runtime.c @@ -32,50 +32,6 @@ #include "exec/helper-info.c.inc" #undef HELPER_H =20 -/* 32-bit helpers */ - -int32_t HELPER(div_i32)(int32_t arg1, int32_t arg2) -{ - return arg1 / arg2; -} - -int32_t HELPER(rem_i32)(int32_t arg1, int32_t arg2) -{ - return arg1 % arg2; -} - -uint32_t HELPER(divu_i32)(uint32_t arg1, uint32_t arg2) -{ - return arg1 / arg2; -} - -uint32_t HELPER(remu_i32)(uint32_t arg1, uint32_t arg2) -{ - return arg1 % arg2; -} - -/* 64-bit helpers */ - -int64_t HELPER(div_i64)(int64_t arg1, int64_t arg2) -{ - return arg1 / arg2; -} - -int64_t HELPER(rem_i64)(int64_t arg1, int64_t arg2) -{ - return arg1 % arg2; -} - -uint64_t HELPER(divu_i64)(uint64_t arg1, uint64_t arg2) -{ - return arg1 / arg2; -} - -uint64_t HELPER(remu_i64)(uint64_t arg1, uint64_t arg2) -{ - return arg1 % arg2; -} - uint64_t HELPER(muluh_i64)(uint64_t arg1, uint64_t arg2) { uint64_t l, h; diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 826553e4476..0cc1274543b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -659,7 +659,7 @@ void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_= i32 arg2) tcg_gen_op5_i32(INDEX_op_divs2, ret, t0, arg1, t0, arg2); tcg_temp_free_i32(t0); } else { - gen_helper_div_i32(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -679,7 +679,7 @@ void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_= i32 arg2) tcg_gen_op5_i32(INDEX_op_divs2, t0, ret, arg1, t0, arg2); tcg_temp_free_i32(t0); } else { - gen_helper_rem_i32(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -693,7 +693,7 @@ void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv= _i32 arg2) tcg_gen_op5_i32(INDEX_op_divu2, ret, t0, arg1, zero, arg2); tcg_temp_free_i32(t0); } else { - gen_helper_divu_i32(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -713,7 +713,7 @@ void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv= _i32 arg2) tcg_gen_op5_i32(INDEX_op_divu2, t0, ret, arg1, zero, arg2); tcg_temp_free_i32(t0); } else { - gen_helper_remu_i32(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -1587,7 +1587,7 @@ void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCG= v_i64 arg2) tcg_gen_op5_i64(INDEX_op_divs2, ret, t0, arg1, t0, arg2); tcg_temp_free_i64(t0); } else { - gen_helper_div_i64(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -1607,7 +1607,7 @@ void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCG= v_i64 arg2) tcg_gen_op5_i64(INDEX_op_divs2, t0, ret, arg1, t0, arg2); tcg_temp_free_i64(t0); } else { - gen_helper_rem_i64(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -1621,7 +1621,7 @@ void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) tcg_gen_op5_i64(INDEX_op_divu2, ret, t0, arg1, zero, arg2); tcg_temp_free_i64(t0); } else { - gen_helper_divu_i64(ret, arg1, arg2); + g_assert_not_reached(); } } =20 @@ -1641,7 +1641,7 @@ void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) tcg_gen_op5_i64(INDEX_op_divu2, t0, ret, arg1, zero, arg2); tcg_temp_free_i64(t0); } else { - gen_helper_remu_i64(ret, arg1, arg2); + g_assert_not_reached(); } } =20 --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267229; cv=none; d=zohomail.com; s=zohoarc; b=OuayLWcj4NTeHvAOD1kkpwSEWIYAxz3Ef506pRUE16QiWrxZlu0shPRb+PwcBBAqQQHY8SEiPrJ8spEDmTFS8TYwsULgq2+GM2AeBEOWNjhIIZ3MfSrzVlecuerwwJUf+NAoKWZj/UEYOJHSnC88LjPb/2yijSu8w1M/c4eXRqc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267229; h=Content-Transfer-Encoding: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:Cc; bh=yDGfwANPGeWP8+pcedkwOVaGUXT9kuovRQB2nw2DqHk=; b=aHLJ1Kv62FSoZ3olfrIT3tdblEdVWAb8QybSIR1kVpncSw7dUvDPDdUfLf+POys/ox5aHvMw/IZT35rUAPgckHIkE49z9tsKY3QJ+ADJ3BdqSuXXWC+/pfdKHrIi/6+MMrxNeZ1sJ4EeU66ZqrpZC9EMC2EIOMt8Tjs2aftzw5k= 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 1789267229392212.5034312088187; Sat, 12 Sep 2026 19:40:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8F-0001d2-Hw; Sat, 12 Sep 2026 22:39:51 -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 1x5a7j-0008UX-Pf for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:21 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7d-00014C-Uo for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:18 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4ae2cso1153469a12.0 for ; Sat, 12 Sep 2026 19:39:13 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267152; x=1789871952; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=yDGfwANPGeWP8+pcedkwOVaGUXT9kuovRQB2nw2DqHk=; b=eULzNN2dO9byyDG/zE/tXYvaMBj8N8HaZw7tK0wkw60W0xuHOtc4NmB4o9E7PHJDvP dOtFrDqC1V9DbMx+PxXgqxi4Mk3YKZym2XUcUAl+OcbQ0qXx2O5e0RfAgq6sOtiOqorK wQ544e11haJr+DH7Wvyj05AUpzv3pwmDUPaTWhn8WyMvs5DQTfPSxDNSfABpd2CspPeJ N/CnYDeVRBqLOB/meV60i+MSAvcxdhqi9lXAi6tWLRCKcAz9b7wybeJsm/1nPZjaBk/T jVH/7Nla0bsT8t0yfyC/tOCQd5KNtEBtSzl21rDdu+F0w3pbKjyWsdG/LiiGKgXK7lkl oWFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267152; x=1789871952; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=yDGfwANPGeWP8+pcedkwOVaGUXT9kuovRQB2nw2DqHk=; b=qFGo/v4iZhaGseux2SidUbuEyA8e9jX/z43lkBL6uLh4lwigMNzsNYNQCE11BqPL6G o2D4IxDzbILEfkUBqjH487gWfg1h9htX74tvqt5fOk/GHkyyWJhDmC9jmejNyFuctPwT lg/Q3UWpqKL/geokiVtc64upbGQmISszWzjZADIfrf6QxbWuFRmfD3VJOd/RvQo8+0S0 VkL5MNUo9b80znXaayc2CP40iu89zP0JgcOY725IwlKXG1ESrVpiHNob7X0xHWobbM2X Hhes+JujECXbLkGAuZ/4VO77Jw+3JFq7TMJghbpibKeyjSEuLrgosX1pCPrkVQMll9Cf 74lg== X-Gm-Message-State: AFuF++kplKrzFeO+7b5ZRmjRPKL6ObeLDfiSmKK9oZF9RatRoqyhlNRp XRQ23j21SZrPX6tlEBh48NqCd2ll5LvdSsoe/qqFqevOyaIMExQaXA/PZS7QR3idb6EtY/o5HPp 7lrhApFw= X-Gm-Gg: AYBFou2SGMIEneIwNtl1R87g8gCWtLyBzqGdgy8gfzHfWYs4L1H9TrEB/Y8bhqHF8Ez xLVqPBiBKuyRKDLdMgH5FN7aqQ1hXZVvEXO+44nyYduaY4r4PXAY+/6xY43xmQcmSuzNjQI4Je4 jsD1EyzGkfMFzPzsBSQMeIqohgwrIsLBVZgj9VoEYBldfa6rHs6sJGrWqFK0+AGi9/AIeYKMQyl vD43lbiHDIFxOs1mSDGJtvdCGNN98U8yrOW9bXyE0t/TIn4uX4/LVfHVr0nKlSvotEzat6dmYDr F+jDQw8nZDGd1shmDCzge3ashWzWXDUJIkubW0JGMUnE7MfmYtV8Pn62CGeKrm+HAJN+XAEANf1 YOZhkVPfxCCUbeKCLIPkDV7gcylzM9n6Hw0bORgsIRqXCjtkg2EEkxAbrZ5Nliaa8n/G+6TJAOm J85ltZkU3CVP6xJxURSiwI6Y/RGxUgpG0PL8HxadivzDJMVE/UC+eyJcgXXfh3Pgx2DivWUX6JA siqAY8= X-Received: by 2002:a05:6a20:6a1c:b0:3cc:faf3:331a with SMTP id adf61e73a8af0-3daed1a0776mr19140012637.10.1789267152186; Sat, 12 Sep 2026 19:39:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 28/86] tcg: Generic expansion of tcg_gen_div_* Date: Sat, 12 Sep 2026 16:37:39 -1000 Message-ID: <20260913023837.741866-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267230476158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 52 +++++++++++++++++------------------- 3 files changed, 25 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index f01d30f18ab..7ab4cbac632 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -205,7 +204,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 20007c90680..473d472823c 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -5,6 +5,7 @@ DEF3(addi, TCGV, TCGV, TINT) DEF3(and, TCGV, TCGV, TCGV) DEF3(andi, TCGV, TCGV, TINT) DEF1(discard, TCGV) +DEF3(div, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF3(mul, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 0cc1274543b..b71c76de375 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -121,6 +121,14 @@ static TCGOp *gen_op_ttii(TCGOpcode opc, TCGType type, return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), a2, a3); } =20 +static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, + TCGTemp *t3, TCGTemp *t4) +{ + return tcg_gen_op5(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), + temp_arg(t3), temp_arg(t4)); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -451,6 +459,22 @@ static void gen_discard(TCGType type, TCGTemp *src) tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); } =20 +static void gen_div(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_divs, type, 0)) { + gen_op_ttt(INDEX_op_divs, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_divs2, type, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + int width =3D tcg_type_size(type) * 8; + + gen_sari(type, tmp, src1, width - 1); + gen_op_ttttt(INDEX_op_divs2, type, dst, tmp, src1, tmp, src2); + tcg_temp_free_internal(tmp); + } else { + g_assert_not_reached(); + } +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -649,20 +673,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_div_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_divs, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divs2, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_sari_i32(t0, arg1, 31); - tcg_gen_op5_i32(INDEX_op_divs2, ret, t0, arg1, t0, arg2); - tcg_temp_free_i32(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_rems, TCG_TYPE_I32, 0)) { @@ -1577,20 +1587,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_div_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_divs, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divs2, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_sari_i64(t0, arg1, 63); - tcg_gen_op5_i64(INDEX_op_divs2, ret, t0, arg1, t0, arg2); - tcg_temp_free_i64(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_rems, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267578; cv=none; d=zohomail.com; s=zohoarc; b=XvN8wTU/3qLJG/zmn48pjqeaPaYndnrPzpzRWU6qez4YUK5pdj7kSFc/reymIQTv5FZyV4s/SI1hJFqd7axv+jyWQOHNiF0h05HUrPI7GTzh8u6cgFn4xIasllKLwQCMOn6np0yKOIeAfvszC8Oz1mvBgjVe8YOa19KSiHVTOvo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267578; h=Content-Transfer-Encoding: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:Cc; bh=FT5i7omdgeqTtEKejEMXy1b/3oPoi7YPkLLjuk15T3o=; b=dWOMZm0qGyIi7nMXJg9ihu+bjSBzob2T+cQmDANMSC2oiRPWykVNyxCY+tWOZ2K+zMvY2VxbzPDcpTufyhOT2yqbPAKVAkhYuSJyfqWRv6OQHW8IL03sF3zy9Cihj9UDDIgNAh7GfOVnWveFhAsApzXy5IjTF/nwECRriZ/Ja2o= 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 1789267578075801.3640976328924; Sat, 12 Sep 2026 19:46:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a87-00019i-Km; Sat, 12 Sep 2026 22:39:43 -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 1x5a7l-0008Uf-M1 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:23 -0400 Received: from mail-pz2-x29.google.com ([2607:f8b0:4864:3b::29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7f-00014Q-Ta for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:20 -0400 Received: by mail-pz2-x29.google.com with SMTP id 41be03b00d2f7-cc4bdf8acd6so727152a12.1 for ; Sat, 12 Sep 2026 19:39:14 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267153; x=1789871953; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=FT5i7omdgeqTtEKejEMXy1b/3oPoi7YPkLLjuk15T3o=; b=UioZJQ9R7h/dms/x0W8pf1AriLhPfIQIgKJQg3uVJ1JJN9KA7YwnYDZwCga05WQGfu TsGJkgvQCgiRNjt4/2dFOjy8U9UPw2enobysQMPoStjyqo9gkOl5huAJxpLBZ+twm3Sg IbWWbuucn6V9QXcMbhxIRS7COCNLoznsfMKf9XmvKfZ06yUWhpvVd4In5WyHlocvqQlp c/awWx+Nsamuwj6ueD9vHKWVKZBWcqfQBbO4aGxOSuiTUKjPrQdZPmWEgqFwqeq8QBzU +fzUvb6wDjcFgCTVm3yIByRWwwP2w7OWnEgg3tQBJU6f0ALo5o5jCEABnWR9YLM2rtLw WeSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267153; x=1789871953; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=FT5i7omdgeqTtEKejEMXy1b/3oPoi7YPkLLjuk15T3o=; b=QrJ31bRsR5P5qTVotURefIwptV5EJyATzCUa3xoNqGzbxxm2tWORmznoQ8oZ5wcmQI IU5Z92pcG0AoysO9vpl7QtbRF4HaX/+AJRX2YTFZ3ee+uLyLrqF4eIpBVHs8mr9K0Vfk pj858VM9G0VpDIzi/MfMgAdK3+Hb5BJYqBZ9sbKOxG13kkowj7nZvG92XjQVYl7XtbsU +OF5ZLZGeFKmzkaE8PGL5Z4WjkSPrQ9M4QYjNnSfctM/AD4D86zqFQNHzaGhLKBNXp8Q mfeQxBq8P3GVSF2UpZ6viChwzyC081+IYSoONErv/t0yCPVoZaT9qg4ACmY/HJo9ZWrf FHXQ== X-Gm-Message-State: AFuF++mztrh7oScrScTStdEkaPvTJPcW3J9q4w9yBrZx7W93uBkH+QKf HkcEHd9gDg/TmGfIcJEDF71mBGl7CNde6nk/0w6TC17ccoVIf+DEA3vZubZNGfoO3UlbMHjWG0p CYjO5 X-Gm-Gg: AYBFou2V6eYp+UAnFX6FhTbzVkKW3qoPmXA3oR4m9+8k0+IWOTsLco6rO0oC+c6iRD+ ORuXOgU/CIcUKpnj+XqcAO2NwxluYRvKQpveIJnuHnQfEdl2vO+yaB6dd6CDek7MjUSHXdCcGIu PjeFxY+qfVrdnF/2zq+QqM38xmPOI4Gn9tcIK/yYSYjVsxu2ySW/HCbJHzNxsWTeBvHACtY3yhu Aqel1cIy90usT4kJ8Qql3utFge0LXBQzzoNDs2hUn2+l6rD4h3puHoUHPGO3S0/AaDxackbPqQj 75158c0GHRMO79gZtoXAd3o6KnnZrrZgsip0gBzpQN8DYYYTCjDdymzeZtbYxbrsMBNDtESliOG Gg8vYlM4K/uak7LGoppWPR1kIjcFE91/lp9UxsumXVWR+/i5Jtfu4QYY40sUbvWLPnu8K7nV/jj 0O6eyN6dHkdduu7kk/y18du152N/R8nsqHMxmd+NALVxOQsiWDalYwWFP/4Lc3vW5j+Lr64V2M1 tsrjwMXn96bR0S8tA== X-Received: by 2002:a17:90b:390f:b0:38e:bbf1:de3f with SMTP id 98e67ed59e1d1-39d9c0b7047mr19238031a91.12.1789267153165; Sat, 12 Sep 2026 19:39:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 29/86] tcg: Generic expansion of tcg_gen_rem_* Date: Sat, 12 Sep 2026 16:37:40 -1000 Message-ID: <20260913023837.741866-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::29; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x29.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, 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: 1789267579695158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 62 +++++++++++++----------------------- 3 files changed, 23 insertions(+), 42 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 7ab4cbac632..c1f9b3fd37c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -204,7 +203,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 473d472823c..67261d12741 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -14,6 +14,7 @@ DEF2(neg, TCGV, TCGV) DEF2(not, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(ori, TCGV, TCGV, TINT) +DEF3(rem, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) DEF3(sari, TCGV, TCGV, TINT) DEF3(shl, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b71c76de375..9f5ccecdde0 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -534,6 +534,28 @@ static void gen_ori(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) } } =20 +static void gen_rem(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_rems, type, 0)) { + gen_op_ttt(INDEX_op_rems, type, dst, src1, src2); + } else { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_divs, type, 0)) { + gen_op_ttt(INDEX_op_divs, type, tmp, src1, src2); + gen_mul(type, tmp, tmp, src2); + gen_sub(type, dst, src1, tmp); + } else if (tcg_op_supported(INDEX_op_divs2, type, 0)) { + int width =3D tcg_type_size(type) * 8; + gen_sari(type, tmp, src1, width - 1); + gen_op_ttttt(INDEX_op_divs2, type, tmp, dst, src1, tmp, src2); + } else { + g_assert_not_reached(); + } + tcg_temp_free_internal(tmp); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -673,26 +695,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_rem_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_rems, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rems, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_divs, t0, arg1, arg2); - tcg_gen_mul_i32(t0, t0, arg2); - tcg_gen_sub_i32(ret, arg1, t0); - tcg_temp_free_i32(t0); - } else if (tcg_op_supported(INDEX_op_divs2, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_sari_i32(t0, arg1, 31); - tcg_gen_op5_i32(INDEX_op_divs2, t0, ret, arg1, t0, arg2); - tcg_temp_free_i32(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I32, 0)) { @@ -1587,26 +1589,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_rem_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_rems, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rems, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divs, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_op3_i64(INDEX_op_divs, t0, arg1, arg2); - tcg_gen_mul_i64(t0, t0, arg2); - tcg_gen_sub_i64(ret, arg1, t0); - tcg_temp_free_i64(t0); - } else if (tcg_op_supported(INDEX_op_divs2, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_sari_i64(t0, arg1, 63); - tcg_gen_op5_i64(INDEX_op_divs2, t0, ret, arg1, t0, arg2); - tcg_temp_free_i64(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267239; cv=none; d=zohomail.com; s=zohoarc; b=FJ8/EMVjO4NQ4XH/zV7aif2gb64LZyq5Kn7V4dAkTWGGD8a1p9WLTi9FTPASlD7GZQ1QNHK5Rn8sbwowxhzE+VyI/pMkk+mUS31RbaIBKVuVi0/V16m+fUzpxKiqft5XuNw4O4mlc8ewhhQNvwTxiOyHBZtvgTIX5MXgNGxi/yU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267239; h=Content-Transfer-Encoding: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:Cc; bh=PfWbCQHog8E2UxB+RqyjqW5zkkakdFPPRBjp2Hu8Z58=; b=QqYqyw4+LsArm1mcoRq9+kEAuuGs7ORjDSE0QFZ2j3UcJnCKE0IjMUsIMyOIssRoKbMd8Xt8JtARyrAz0kK9NwmnnFmGlioJU7CkW0iWbsV5FN68i4Gc9rZynPaWZ0T1Im3bhSjO0XmYjPy0GzY5/fNlYAHZHgx6/egeGFyAYE4= 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 1789267239410468.10841957806815; Sat, 12 Sep 2026 19:40:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a89-0001I4-Cz; Sat, 12 Sep 2026 22:39:45 -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 1x5a7l-0008Ue-L0 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:23 -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 1x5a7h-00014q-Js for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:20 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-869ac301739so1772887b3a.1 for ; Sat, 12 Sep 2026 19:39:15 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267154; x=1789871954; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=PfWbCQHog8E2UxB+RqyjqW5zkkakdFPPRBjp2Hu8Z58=; b=qE/pa0cYKoBbuPMK77eK4Y25lI9KiBUXnhKaveqW76UArZU/IGuMD4y3uTxpzPbpuj 8f1wLHVR6gXfxVX1KSyEwsFBTS3hmBTxYbJYWuLWUB6JwlJ+avz/HG5KtwuuMWlmrvfO u3bhEi/8bLoBgUa/UMvrH47xY0nQWoWHH4w1nqegIcejOFtchI2vdDVVd2A3fQ96fgQu 2sBrQV/XYHo9F72rpDQt30sfrw7vlGGS37WWp1lVezRcwDMHhjvOSr7qZup0/CdTaq0T wAxiAu5o/kkxzgX/I12wNAB9LQAysztc/q/xCcCS7Oi/zoR0KXvn447Jughg/cCYF6l+ 42Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267154; x=1789871954; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=PfWbCQHog8E2UxB+RqyjqW5zkkakdFPPRBjp2Hu8Z58=; b=mWXo2+nvuBz4DD1czATljZxCNMGNBJPXWbV0dpCGo01sMlU2LEkGszgZJvgim1bbNN J0KUSVLXT1pg2YYgmIOPtDGXE/d2ZVLfTvRAVpjhcauQ5yLXw2yr/umqZZ+wFIBFP9+3 AlYoty1jRyHhnJhMlhUdK+dA3tnbfaUF3VT8XDl9nkTMATP4Z9KELOkXD9FeXGNIH6Fi Rc3AdDtywUl9ged7S9DMPRwL3cebO3UW9jc364WKZy01k4bvsWmyhpgggV64jI3OyK1o gjKZNgGfJ5CrnDkmCMmoD5zx9YcetJcbEpAXEmP7liXVlT0MfKE68xs8cMdM1gvWjKiG GHgw== X-Gm-Message-State: AFuF++mv2U/q/Wfq0hdPNyD7+WL144CjtzvKZMQ3LA3bkp2nVgA18Ieu 9LdgvvCV+QlrqrishQ60jr8Y7nylBpp96KsNX8ueoXH67XISt1Vtd9KIturxjEC/QgnQSs8SZUB MAj4o6A0= X-Gm-Gg: AYBFou0ZbyEceiKAILqHRnx8AhB6ilGbxIShMGguue9oDRI8zOv5r5yMrpOFkAB8fZ2 gV6binOuzEZJ28FeuCtKWmsFpmipwf1RvbhX5LM+fzBRs3oNTvzEtQUl7T6BZ/5rvgWugwN2vRB Id/tObPHKDH8HmpGfkNYxc7VmAGCEno7RS9aWd98IsWOxIDWZP4jwXK6bFbHjNJjshz47PE5AEJ cEnY3xaeNk9TVDEmX9TkH/JqLaoaB4OUfcuJfhQAyX5msk+/kmtERk3kx8OA2IPROhBJ+TKfOZG x888gB4ZReHGqJMPfGQ9RRXjTfDYNpJ7pq0cnec3GlGCizZnz855GO7ZTSvWgV638zcp+XHmnyw ZkgT96uNmZxqgbLZe51QgjAUE5CSkd+tSCFEnKGsCNRIo1ZhNu1TrA5+EzPlq2wJG3MQMasd13s FQ/IuWOf50EHMMn7883M/dy6Q2/a+RHUjUjwfMLVR4rf6zlH5y7WHnKSMnyO0Hpoc9YgR6RBCod XZvbGg= X-Received: by 2002:a05:6a21:3293:b0:3d0:c5c0:d9b3 with SMTP id adf61e73a8af0-3daed3438b8mr20578198637.18.1789267154491; Sat, 12 Sep 2026 19:39:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 30/86] tcg: Generic expansion of tcg_gen_divu_* Date: Sat, 12 Sep 2026 16:37:41 -1000 Message-ID: <20260913023837.741866-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::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: 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: 1789267240549158502 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 43 +++++++++++++----------------------- 3 files changed, 16 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c1f9b3fd37c..c2cff4419aa 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -203,7 +202,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 67261d12741..e67f11176d8 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -6,6 +6,7 @@ DEF3(and, TCGV, TCGV, TCGV) DEF3(andi, TCGV, TCGV, TINT) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) +DEF3(divu, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF3(mul, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 9f5ccecdde0..8e7f92d5251 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -475,6 +475,21 @@ static void gen_div(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_divu(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_divu, type, 0)) { + gen_op_ttt(INDEX_op_divu, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_divu2, type, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *zero =3D tcg_constant_internal(type, 0); + + gen_op_ttttt(INDEX_op_divu2, type, dst, tmp, src1, zero, src2); + tcg_temp_free_internal(tmp); + } else { + g_assert_not_reached(); + } +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -695,20 +710,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_divu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_divu, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divu2, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 zero =3D tcg_constant_i32(0); - tcg_gen_op5_i32(INDEX_op_divu2, ret, t0, arg1, zero, arg2); - tcg_temp_free_i32(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_remu, TCG_TYPE_I32, 0)) { @@ -1589,20 +1590,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_divu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_divu, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divu2, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 zero =3D tcg_constant_i64(0); - tcg_gen_op5_i64(INDEX_op_divu2, ret, t0, arg1, zero, arg2); - tcg_temp_free_i64(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_remu, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267215; cv=none; d=zohomail.com; s=zohoarc; b=LO6qpnR7tMaYHpzLbVHC8puedF2lsM3PSHGJT4HQPZdz+aG/gr5Hk1VjDnRVK/HlMEQXPhjpwT3J0AiQvS2EVRk5OhML0Q/bQ35q3uDIRl5sBVKtR3bukYIGIVhln7Mg+r0mVb51kTpdPbs8Sj1/VQfL8xfu1L8iJ9yICbQ2/9k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267215; h=Content-Transfer-Encoding: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:Cc; bh=8kwqgM0BLxs8oIZVolw+c1jT3pCCVpXDnyKJRxNOapk=; b=iRrsq52mQMfqAsqbjUxL3FbGnVSXp7WpWFAxeVWMOKV5hoZOnaBi8fMyQjjmzpG6DY+0nOEproZgZnZpjud7d0HtSVfnrC/oY2BZcTROwp+crwzE/hgNHeWlOKvBLjInHM9elyd38/9UtYUwu8JbH20ILrf62QmxD8pCq9E869E= 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 1789267215733402.5458418917001; Sat, 12 Sep 2026 19:40:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a88-0001CK-Q2; Sat, 12 Sep 2026 22:39:44 -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 1x5a7n-0008Ul-G0 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:25 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7j-000153-HH for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:22 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-cc4d03f95dfso1181497a12.2 for ; Sat, 12 Sep 2026 19:39:16 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267156; x=1789871956; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=8kwqgM0BLxs8oIZVolw+c1jT3pCCVpXDnyKJRxNOapk=; b=hUpuyPQAvlG8X4JRZBMwub3AX1o1O9yD2X6gsJ202IAubKcWYfdglbzBqX5Xgnu3OP 3hFfY3IoSnNF3M1dCxeurdpvDFrc4qxY5pclyAXxV/gx0Uml6+yzCWjUUjDEt4ge5j6G c+6W1kLmwzY5Gy0XlAzzgKcinf7CjGWfYC5Z+zzx0HrgFRtncpO4ubsZFpduHJQuZN0p hDK/LK45SxCsEu41v0ndscJlb0ksLxvzGSBay9uExLNmoEEdMmJw5ec2zD3ugfL4kcrc QkJ5xycap16xO/qYljOIWbjxRHEBMCDwyqExtfx1vaQweVlk3MBMamNErY24ymIa1SE5 EDgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267156; x=1789871956; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=8kwqgM0BLxs8oIZVolw+c1jT3pCCVpXDnyKJRxNOapk=; b=Fn3i/ZgKBGDRKzh47LXytqG/jUfu8FdStgPaocCzlnZ7lmpqWdKUHBILNG4U9wjVuK xvhnTt1g4f0roOxba66ipnX2FzsKlSR+Xll53a9JMqi/91xe1fBgZztwzqLkwx3Svd/c wnwu2c3N6yy24ZlGcf/AtHIYlz8BXw7+TKdAv6kl8TC6to27rPVYrXh/GQIaYruUOHLo Wu46fkBsMAKD5hH8fT7sjOHb8hmgGUcT6muR1BWjp8SvSyzYDUWZBKdvNZ3i683Tmk7f t1c/AaYTCCkBkVLfrr/h54ZNsPbpe0UH3MDFaHbYO986FviSSHYRKfHqJI4LSNJ0G+n3 xmYw== X-Gm-Message-State: AFuF++nxBUaapS57BCCAFmIn8PDiBkUdK4zX7frLDKnQ6HKP4l/ogHlt Auez2r4jsuaHj2dhcinj8wjyY1bT7n/PfIHCy6psK1AV0l+A93qKWmddt7N9y1hfyjNsuIlNiES B71+pdN8= X-Gm-Gg: AYBFou3Goh365bIoEgrUUofasykx3owjRf0vK0xfAKs4sCtpkFUMtNb+bFlp2y9zo/U 8tl9g/anrxfo/cS3unEJR3l1eWb/Xr2ugC8pO8Vy40q1ULQJCdp4uUb34vRhRazis4HVGox9hZF sFaYMT151x9f95nBXWzHxVhWUy/Ic60sc4fSrzJFFoQwe11UT5U8OG0NoQLFBuc8xgcdWhSyYIP Xj4b71dAnxDLHanh6gW962cUSf/12DT5Wu+CggWfI2lzDj84nlQ6KW2I0KlVqwyBtUw+f6c35mv AEZ/Tq1m6DTjHJyGDWQY2qWktDCSbbbTb1LgBO6injAJZqn7HOCt6qPqe1xkmwSlGivi2EO2nR+ Sy8gXTElM9aE0YXezAnEUWQ8AUlCdNCJlJU55RL3bgnFGMOswue1s79t24swgvMDihjZLxc5i4k oaMX2R4paB/R/fYp+wkvZNiG9bMSUwJigsLxrWqikVUkjTxQpyDVlauYc4T6PCpfNy8ccVOeiac oVUEPQS X-Received: by 2002:a05:6a20:1611:b0:3d7:eb3e:1c58 with SMTP id adf61e73a8af0-3daed1c1684mr22441905637.8.1789267155914; Sat, 12 Sep 2026 19:39:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 31/86] tcg: Generic expansion of tcg_gen_remu_* Date: Sat, 12 Sep 2026 16:37:42 -1000 Message-ID: <20260913023837.741866-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: 1789267216425158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 75 ++++++++++-------------------------- 3 files changed, 22 insertions(+), 56 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c2cff4419aa..4bcc8890af3 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -202,7 +201,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index e67f11176d8..cffbb4d08a8 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -16,6 +16,7 @@ DEF2(not, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(ori, TCGV, TCGV, TINT) DEF3(rem, TCGV, TCGV, TCGV) +DEF3(remu, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) DEF3(sari, TCGV, TCGV, TINT) DEF3(shl, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 8e7f92d5251..89b62d1d526 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -236,20 +236,6 @@ static TCGOp * DNI tcg_gen_op4ii_i64(TCGOpcode opc, TC= Gv_i64 a1, TCGv_i64 a2, tcgv_i64_arg(a1), tcgv_i64_arg(a2), a3, a4); } =20 -static void DNI tcg_gen_op5_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGv_i32 a4, TCGv_i32 a5) -{ - tcg_gen_op5(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), tcgv_i32_arg(a4), tcgv_i32_arg(a5)); -} - -static void DNI tcg_gen_op5_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGv_i64 a4, TCGv_i64 a5) -{ - tcg_gen_op5(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), tcgv_i64_arg(a4), tcgv_i64_arg(a5)); -} - static void DNI tcg_gen_op5ii_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, TCGv_i32 a3, TCGArg a4, TCGArg a5) { @@ -571,6 +557,27 @@ static void gen_rem(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_remu(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_remu, type, 0)) { + gen_op_ttt(INDEX_op_remu, type, dst, src1, src2); + } else { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_divu, type, 0)) { + gen_op_ttt(INDEX_op_divu, type, tmp, src1, src2); + gen_mul(type, tmp, tmp, src2); + gen_sub(type, dst, src1, tmp); + } else if (tcg_op_supported(INDEX_op_divu2, type, 0)) { + TCGTemp *zero =3D tcg_constant_internal(type, 0); + gen_op_ttttt(INDEX_op_divu2, type, tmp, dst, src1, zero, src2); + } else { + g_assert_not_reached(); + } + tcg_temp_free_internal(tmp); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -710,26 +717,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_remu_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_remu, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_remu, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_divu, t0, arg1, arg2); - tcg_gen_mul_i32(t0, t0, arg2); - tcg_gen_sub_i32(ret, arg1, t0); - tcg_temp_free_i32(t0); - } else if (tcg_op_supported(INDEX_op_divu2, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 zero =3D tcg_constant_i32(0); - tcg_gen_op5_i32(INDEX_op_divu2, t0, ret, arg1, zero, arg2); - tcg_temp_free_i32(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_andc, TCG_TYPE_I32, 0)) { @@ -1590,26 +1577,6 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, } } =20 -void tcg_gen_remu_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_remu, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_remu, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_divu, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_op3_i64(INDEX_op_divu, t0, arg1, arg2); - tcg_gen_mul_i64(t0, t0, arg2); - tcg_gen_sub_i64(ret, arg1, t0); - tcg_temp_free_i64(t0); - } else if (tcg_op_supported(INDEX_op_divu2, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 zero =3D tcg_constant_i64(0); - tcg_gen_op5_i64(INDEX_op_divu2, t0, ret, arg1, zero, arg2); - tcg_temp_free_i64(t0); - } else { - g_assert_not_reached(); - } -} - void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 8); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267319; cv=none; d=zohomail.com; s=zohoarc; b=dOYJsJo5aXFHeMtEGB3F5ZnGbFFWRMDi+JC8p6wZTYSHoHjO4I+wD4NB3uevbMDBVKVAk4X2FUYVcq9Sx/UhV9446UQa3Ddr9W5C1fuIguCRYC4SvxtNrUXZbHrbfBhzLaDYsuY+oVKW3PvjomjNQRe6gAbiPRBgIqzOBJRYgXg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267319; h=Content-Transfer-Encoding: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:Cc; bh=I2qS1YyYzgCfFKOBNCr+1JaKHJbMER1oOjl4ZZxBJHs=; b=ZE9aE9gM1VGv23dKtpsSaRFO2fhMRft4m1Lgx4/QvP5mtG+N6k8JjgpFYvlv0i4S9noLCl0CHU+uBr5ULAfOOSuJbg1z9qq+ppQHhVWryQy050ikzlCgE9va9vZta1hnS1Tb/kmn1EozyL7rfKQU71xlVUkr2vNUSZNdQ5+OXqU= 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 1789267319205839.3644910995399; Sat, 12 Sep 2026 19:41:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8H-0001jY-D5; Sat, 12 Sep 2026 22:39:53 -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 1x5a7p-0008VY-DU for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:25 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7j-00015E-IO for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:23 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccafb752so1044829a91.0 for ; Sat, 12 Sep 2026 19:39:18 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267157; x=1789871957; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=I2qS1YyYzgCfFKOBNCr+1JaKHJbMER1oOjl4ZZxBJHs=; b=fU/Vl2AYOv+GgsszStA2SWdW5KZ3duMoOXVYAsfEI91lzu4atlo5eaeQLPc7DSmY1i ASolrlvIzH7lSEBTgsknv0ceBFBMcu4tHuhPIMm7yui6PDS4HSVIAPEYsrzw8rZDGyY3 OuvpOfFu6Q7wJckp6GU9qNth1pe6gT4nFbox35DlLHs+TPC4Nyh8SJbmLUqT13yY5k8P /6jp4swNpW6lf8V2UgATMttmEC+5W7wPYQ6EP3zX8GVzbVeVwLZi0fZlrffVK4xdRZzH Wfziwyy3ZGiI+TejWMVm5Lmj0kuGveDsWj9/WgMN+84p9R5oRftcj/GciJ9Yzt7kGmHs KHGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267157; x=1789871957; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=I2qS1YyYzgCfFKOBNCr+1JaKHJbMER1oOjl4ZZxBJHs=; b=Rvmk3Aj6tM87FQBj+mqo5JNtBsL/MP8FZrtAoWpVKsVJQstMBllrKTEr9Z5aBKDVn/ JKtzZ4MfDKthcVVS3MulzVESCwsHxkTojY5Us4heXdPC4wC+Q8LbnAgKkFhfB/n+f8JC Wm5aRkHa7+0FOrRDpyfv0no02UUr/nrTWOlfbEKitFphuboxgDwYcUSnLFOzdqXGmJZQ B5I0kJg8tCmaTGYKMVmzuR9R1Sl3dKBnrWUT9R8YzI/61e2+PxKqBCepJNbQrluzW8t2 2A18KalYzMQdZE0VOTjFMYUa/duOtEcf6iDxcZBmBMx1n8/npOH+48ymGvRs+xocVrKV FIxg== X-Gm-Message-State: AFuF++njFZnYaL1kEIooBzqe/bRxHTQwoav53+cCAH4kYEp7zOfcECbf NpmTPhWC4vlF3EJNPh42sgrz5X+Hz2YgfYiUhTkvKqZrFHpbLSJ2hPx9VSmcUt18fZvYMYqS7yF YwoQX4cQ= X-Gm-Gg: AYBFou2YJnjkrIAXJCmiMKgFptcNuIU15CTo6jhMlHxF+Tn/qsqIfDL3iMb9sJR2Fx5 Agal24E2pTM9f/dGtWrTF8+CMxtnvYTJRcdt0YWbFMVJeU68XQr6vuTtgzuJGheUPTZ7g8jLpzA F7GYz1Qx3rl7n7bg1TqhYAfdj0nSyPJ3gLsz0lqj0ntUYA7+vhgnzOYKF2ZPuZMSrMBpqU8zR1F wWZ6wfkWcV19hvRIDe+PiKLRsJVCac45WTiQ2xoTs6JGv3Rw42c6cGMBbSNMNKi4i85UhxgQvtY MmrsrljrU4NYWTl3xQtFudVMxx9csTccRirtlcClrYV4qga5xZFjNspLP+4ACyJ8yqo+Kvk6ynq S5w7ee/9gmupQWcysVMXqUjNM0HgQRJ9YA659xyJ6xjxv6NJHiZZeKoI5NYddhtMs6GzRWI2VTI ZZCs8jtj5yk7ZmP1MguodVCPJu2U7EBSFVBRaoiz+RTGeMo6W0HjMzjC7VSunbrc14nMQfjZkSj uQp81jqE2yVbGHCqA== X-Received: by 2002:a17:90b:580e:b0:396:40e6:f631 with SMTP id 98e67ed59e1d1-39d9bbe47a7mr21378263a91.3.1789267156897; Sat, 12 Sep 2026 19:39:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 32/86] tcg: Generic expansion of tcg_gen_andc_* Date: Sat, 12 Sep 2026 16:37:43 -1000 Message-ID: <20260913023837.741866-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267320749158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 37 +++++++++++++----------------------- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 4bcc8890af3..ebbdec6cab5 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -201,7 +200,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index cffbb4d08a8..b05a1782513 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -4,6 +4,7 @@ DEF3(add, TCGV, TCGV, TCGV) DEF3(addi, TCGV, TCGV, TINT) DEF3(and, TCGV, TCGV, TCGV) DEF3(andi, TCGV, TCGV, TINT) +DEF3(andc, TCGV, TCGV, TCGV) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 89b62d1d526..361c9207b64 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -440,6 +440,19 @@ static void gen_andi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_andc(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_andc, type, 0)) { + gen_op_ttt(INDEX_op_andc, type, dst, src1, src2); + } else { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_not(type, tmp, src2); + gen_and(type, dst, src1, tmp); + tcg_temp_free_internal(tmp); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -717,18 +730,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_andc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_andc, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_andc, ret, arg1, arg2); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_not_i32(t0, arg2); - tcg_gen_and_i32(ret, arg1, t0); - tcg_temp_free_i32(t0); - } -} - void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_eqv, TCG_TYPE_I32, 0)) { @@ -1776,18 +1777,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_andc, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_andc, ret, arg1, arg2); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_not_i64(t0, arg2); - tcg_gen_and_i64(ret, arg1, t0); - tcg_temp_free_i64(t0); - } -} - void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_eqv, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267259; cv=none; d=zohomail.com; s=zohoarc; b=i3rdwK8Vo+cURBJflGDzNz1VkxWMcrP6VkS2gs/UM7Q+uV47EP0wYHf+q88cJj/R14eJcBopnNViV+Vy6Gp5qop98VKXD8SDEWTulPff2JuUR0Cplb5CSyyAL8LGeLExHN8GHhrcqxh5BrZBGvemhsytVfU38EZMTKVW9tlh10Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267259; h=Content-Transfer-Encoding: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:Cc; bh=aTXyLvGnS3jiJsULE7TDFdSYO6gE2G/0/EZQDQjoMRQ=; b=ZeUM1JqlokR+kKFKfBdcIIvuIrzED/CJNXej/QOvLw0DCZVdqyIQqM9RPJUGKbgs5jQ3lN0YMzqCkVVynin0TjV9QWXwPu8kTVz1tj2LvPlMHPBIdjF/h2K957KWyaanclE+zE+w01qWG3If0P5wpDf7hfnPByxKqxUMXt8aLD8= 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 178926725968299.49223463917508; Sat, 12 Sep 2026 19:40:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a89-0001J3-IJ; Sat, 12 Sep 2026 22:39:45 -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 1x5a7n-0008Um-GH for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:25 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7j-00015N-Ij for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:22 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-3990fe066ebso1791807a91.1 for ; Sat, 12 Sep 2026 19:39:19 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267158; x=1789871958; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=aTXyLvGnS3jiJsULE7TDFdSYO6gE2G/0/EZQDQjoMRQ=; b=T0cHkS6VrhzJQVA3rBGSAwRg1vtWrFlwcZqvD6fdVzPp4KROuZkTygwzLRtaomMUvh +3hFuhuBJcIB9QQjRF2azTijUl6RvsGMLYBiuUymk1iMQIXxv9O3lCmMoaLDbPmftTIG FlWzIiXXz9TVZ4O/GkCujhPyLu/d5Q7GMJp044VgfFxpKIjw1JiCStgSBOGtviV/uNjB Cni1RSZJJobUo5CfvX3AhWv7VAvZPfYmuiTjSu+8VRMj9OEhjC7CD7n98+0Xf5SKZxuJ /IxAzpcNGZeRZIvwRMxqIJTCzZuDoeczeUEXh4SXVc/r4EnJuhZ/tYuWDO27kxyysh53 0fNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267158; x=1789871958; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=aTXyLvGnS3jiJsULE7TDFdSYO6gE2G/0/EZQDQjoMRQ=; b=lq+BiP1jZygMHh6EjVUEfSkuk6VjER6oCnnWiYrCz63beSV2eiKyUH8PqMB46w9rYG ctFtuepJMBDtcRM4UWFbkB5F7pCXBbLYaO/aQ3vmj6fN2sMC4kkCkiYodQ163MDSCQJ+ FbcpRdrC3Xn8PBgu1uNOXbO4no0ckfx1AqmkZq4f0olMkSSSg4coey0KBykvFUpA2fr+ 7knyFPFYZpDrfF7JLbT6xeEUsyIw26kytXRairDB2rBi8NLnV30rpG98jm3iI5RwRuUl AbyKjt2rAQHX8wcGeUuhjTyJsD69w5hINnL68NvlV+m7s6nkHVN63hbSlXUT7MAs6Ovn Sq3w== X-Gm-Message-State: AFuF++mrj1bd/tT/DoGATb9USbVArISph2K3ZOUR5PxOFPgmZzmA05MD Il7ppVIrAnap4nzQw78sid/WZV0PahwVlxViBQc9ZrFFGONZ+zT4rEsezLtL0uzfynn8yr/iuyh BtVyuPo8= X-Gm-Gg: AYBFou2IexlVfaOPrF0uluLZf/eH4B3JsfyMGAxEShfQgNbuhVpPEElyes7G8hAh788 SaHyNyzU3VpUDbSA5bLMsOipNaCX7Fw6XNTA5DkeJui4AYYjtv/Xs46ydK0PJvF3oAQJ8p845k4 q0gN0S01JGo7xmtsD5PrJuCnZXfwfuQI7C/qslvI/4wKVEYL1dqklyyVldw6P32uBHF2i5CVF1F eYCDCjAKnIRUgRFmqhN64j93mC6P4VKcLK+IWabWUs8rrBQ8Y+RqF6XqGDDYFt3rPMErhQFc1UM kK//sYA+LEPHQsp7lSjlLdZJ3HQz8Gcon5vYeS2TAc/ZGytcBFXFnpOuDoxICsjwNHL+bSzy1tt cXJeg+hkh4o4dTxeATdrsDBRKBDyccVKPnQh+KD0lXFDi7FW0l6/nU8AJ4hqFQ8MfzgDBgAKETW AnXiY/Nzph/3a0aPHNXKpUveYtxUd27rlcePpDSMulenRuwlVkdYPE6NgxkzCsTBCz2VrXAEg7z qo/Z2U= X-Received: by 2002:a17:90b:5605:b0:398:b17b:3bd2 with SMTP id 98e67ed59e1d1-39d9bbc9177mr18464019a91.4.1789267157996; Sat, 12 Sep 2026 19:39:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 33/86] tcg: Generic expansion of tcg_gen_eqv_* Date: Sat, 12 Sep 2026 16:37:44 -1000 Message-ID: <20260913023837.741866-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.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: 1789267260779158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index ebbdec6cab5..c71eff07f77 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -200,7 +199,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index b05a1782513..c1b99a280ac 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -8,6 +8,7 @@ DEF3(andc, TCGV, TCGV, TCGV) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) +DEF3(eqv, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF3(mul, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 361c9207b64..b06d6f1455b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -489,6 +489,16 @@ static void gen_divu(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_eqv(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_eqv, type, 0)) { + gen_op_ttt(INDEX_op_eqv, type, dst, src1, src2); + } else { + gen_xor(type, dst, src1, src2); + gen_not(type, dst, dst); + } +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -730,16 +740,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_eqv, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_eqv, ret, arg1, arg2); - } else { - tcg_gen_xor_i32(ret, arg1, arg2); - tcg_gen_not_i32(ret, ret); - } -} - void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_nand, TCG_TYPE_I32, 0)) { @@ -1777,16 +1777,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_eqv, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_eqv, ret, arg1, arg2); - } else { - tcg_gen_xor_i64(ret, arg1, arg2); - tcg_gen_not_i64(ret, ret); - } -} - void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_nand, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267278; cv=none; d=zohomail.com; s=zohoarc; b=HG1zmdAudGPZ9v4JWQuzv/zJVKMb5RwgTvkN1KQovNIlN+e1BNsu0Ta9b0PY3g0NAezRQMcltUPjrT1Kc3nI1QryS6RZQRulNUt8DqlctiJ3Tcvdn0OsCPLlyt2jYE07m8v3d6w3Lu9VaNmAfLygj+2H1Rwo2wmsusOyM5eUwAc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267278; h=Content-Transfer-Encoding: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:Cc; bh=haxqP9S2xV2D/fL0cuYt4FDZpyartSHm0IfAR3HWzeA=; b=FfShw+6nHp7ISBprtkamJjL8LWXZwXybYzlpysct4XXvvkZeRe0qtiohyzJKXLO0uxeYL7EZyjLNqaUfvnp6+D7vaeVn0y2A1RtXFagQCF49mSy5IHjFCDLofbDBhwCbIc9yhjJMTwXXk9z+S2GhbJ88tcc+YfswVH5cbzyUOkc= 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 1789267278967627.471140902542; Sat, 12 Sep 2026 19:41:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8C-0001Qy-2p; Sat, 12 Sep 2026 22:39:48 -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 1x5a7p-0008Va-DS for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:25 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7l-00015s-Dn for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:23 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d747ed1368so7877075ad.1 for ; Sat, 12 Sep 2026 19:39:20 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267159; x=1789871959; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=haxqP9S2xV2D/fL0cuYt4FDZpyartSHm0IfAR3HWzeA=; b=dpbnVsiVR0O068MwvwiDjuL3/cJMBfAjWbId9Xzrijv2gXR3CTdOHnKZNjGNNotDXx KChx+CfJXYm2IJ44PMH94Ve6jBN09upeOe6/K7jVu+wlzQD1RW+IWZpZ3GL+3Ts36uPk GFfsSxVh7p+so9Aw18wPxiO3PdjjozL5ZJTuy0irPaZdo7AFRVFVGECzpYJ2aPPuLOYy sBdzZFsl3Zz9vbXAVY197X57xjXA0HHrsPgFTFygNXREhhnd7x+EzrbNHdhemrsOHCct iomAMdj7OKhGeIC7FgwH0d8ZDQnbbWmUOG1vdv0M36EJa2QgR1KCDT0NfX3jw3IHBrmm 3ldQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267159; x=1789871959; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=haxqP9S2xV2D/fL0cuYt4FDZpyartSHm0IfAR3HWzeA=; b=BFmsJ8j5QTadYVNVDyskYOWG6/vRBTRj3unnV99jC8gvx4o6WZWLjo5+gqrivWa1HK 6SwQLMNS81IRQwFvKjiUdPPGiGQOSkJzK6UO7KYA54qFfQMTZESYwTWishxZ6cEcDviq qzGXbxSw6tKOXD6FJ1Q8MPZE9jsC/O+OyVhlb6xzR0ICxeB/Z/uysAFIpkwt+myPB4MC 14d9jZxjQNC8xxzc1GvIVBwnTAb6vt9bp4At3puYrG/1ONiMBEcGj/qJmlAM8AyKaFhW u/QtuVvwzSbsmJmUwDKVeesyw46RjKlVuBYi4O3RnfH8X5hGaIF1sHFXLnBAH/ca/C98 oCXA== X-Gm-Message-State: AFuF++nOkwUlYpXg/AExfplZoksgXGAJSdkPtFdTzDXhdOQgHkJJNXE3 OX74PgnR0LUw6UCOVnLrP+Vi439/af3VrBWGrbQiyjFAk7AXoeKe4HON8ThnF2o4IwbmY9YMuhm Z/+PVfhY= X-Gm-Gg: AYBFou2rWS9GrmDsglvVun3PpGAhCCAFjsjph6P4nzB8NqiqIVblgOiwYmBfndnziyD usQFjr3f9ECury8l8TB90F3nvQH2ffIc0D52TAHjAtdJCGqj4QOqOK7+6QugUQiJ7V1zBz9MUzd Wm3IQ1dAP1E2C4s6jQ3/22iE6G96ZGmeEr6Ys848ZvhC1b++acjY13aGNGv65keUOP53rARBlkq fOWWkcnVJ11Jjdff4L9rIH/LYJZML9qx6f05IjVUSMPArf+D3D2TA1zOA+7HnY4dEHlEeDxntc3 ECre2MSifmC6qsw0TxMBz1mhfcyH1djK9B05QIfd/BRkQ6u2GrequGgszXtyIuse6FmgGwKa1tn 3NvVaQ8YPECHDVshOlKO50wsk4KyySCYcxS9d3lR8Xf+epjvSqbuWr38EE5j+X2I3OXoSalaI+U Ng2V8jXQMmu2vYelXjNSLr666sfG8k6jKOfZCOMPE2+flc43JrTQGestOMqzIBdV64KcSjznXYo MIWdBA= X-Received: by 2002:a05:6a20:72a4:b0:3da:1e7b:ea27 with SMTP id adf61e73a8af0-3db0e485bb5mr9936244637.21.1789267159267; Sat, 12 Sep 2026 19:39:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 34/86] tcg: Generic expansion of tcg_gen_nand_* Date: Sat, 12 Sep 2026 16:37:45 -1000 Message-ID: <20260913023837.741866-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267280626158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c71eff07f77..621839a3b82 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -199,7 +198,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index c1b99a280ac..80d174a6cb1 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -13,6 +13,7 @@ DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF3(mul, TCGV, TCGV, TCGV) DEF3(muli, TCGV, TCGV, TINT) +DEF3(nand, TCGV, TCGV, TCGV) DEF2(neg, TCGV, TCGV) DEF2(not, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b06d6f1455b..89362b597f4 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -527,6 +527,16 @@ static void gen_muli(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_nand(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_nand, type, 0)) { + gen_op_ttt(INDEX_op_nand, type, dst, src1, src2); + } else { + gen_and(type, dst, src1, src2); + gen_not(type, dst, dst); + } +} + static void gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_neg, type, dst, src); @@ -740,16 +750,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_nand, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_nand, ret, arg1, arg2); - } else { - tcg_gen_and_i32(ret, arg1, arg2); - tcg_gen_not_i32(ret, ret); - } -} - void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_nor, TCG_TYPE_I32, 0)) { @@ -1777,16 +1777,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_nand, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_nand, ret, arg1, arg2); - } else { - tcg_gen_and_i64(ret, arg1, arg2); - tcg_gen_not_i64(ret, ret); - } -} - void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_nor, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267302; cv=none; d=zohomail.com; s=zohoarc; b=PXuB+zQpjjOWGiS3OknbN9t4CLgRO0apyFVAL15mKWqbtebLY2KNctgnQGhjFho75GGfvPSblP/TYZRXZvbXkSk4S2LTX2psZdM17NF+pxpDeIX5WDeLl95WLEVam48xTszuYVMMriBZQTfSia6H9OacPRIfBGGusZEcg0uLHvY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267302; h=Content-Transfer-Encoding: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:Cc; bh=xjzB9PJkcDa7CTx8nFMeDFXL2nGn5ZwABCBQku8dSik=; b=ggR2weujMWqwE4thelN06NomgVK5mu2rIR/JSW2sL+/NMQHdJ5n3MijeRHWfwaFr0ezCcuMUUMR2OQL5fySTkjge742fz947pd1sr36OF4NjVsuSFv6Xk+Q4vMbjhV8pUYniokxMPhK/n3KRsZzBQrpfosksOzQPTMWnYnqS9Gs= 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 1789267301898654.5816316335128; Sat, 12 Sep 2026 19:41:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8I-0001oy-Ti; Sat, 12 Sep 2026 22:39:54 -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 1x5a7p-0008Vb-Dr for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:25 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7l-000163-MG for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:24 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccb1a990so735228a91.3 for ; Sat, 12 Sep 2026 19:39:21 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267160; x=1789871960; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=xjzB9PJkcDa7CTx8nFMeDFXL2nGn5ZwABCBQku8dSik=; b=ZKARLIFnSknbDTI6cYi7zdJceXk9KJNnpk1M7LirZX6w5fDqdNjsmH5Zx2MFSksaM3 AqLl9B/GRdCwcXXoUjgqRhGcdSKG4Ht0Swy4dcOokj6g5bhuulrfyYY6PK1PSYp6lodQ ob3Mq9qZKwCHEezCTsBYfUhpAYF0pMMGfdGZ+5Io0+fcpJBZqxq/aRcsf54PtbwwfjtC F0UTfikncfC9F37PCW42d0jJUfIGa6rSAOfnwZTm9C0ybrZuCP8LKuDe1/IJLdOuKAkP p+BqQOaVA0Xm+aV1Ezu4/gkMYL+OLMGHFfQn4RMjt0ws09M2AdCKLp1u97j4kfnRosrN ifZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267160; x=1789871960; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=xjzB9PJkcDa7CTx8nFMeDFXL2nGn5ZwABCBQku8dSik=; b=FOklm/kib+XiblIo3MnH5uckMcW1R5KysK44A4Gs6dtZB2havZlsbBe9V4sgf0zNz+ 2iSnsmUaDT6+3e/9AhNDrjdMTffoUJlzyBOTPq0attNVqq7Qpq8I7Mif/XcpJId592xB OWovcHBr37KmcRRtoGVEiU223DgFvq56t4ido3/i/BZ54t05W3u7fu+6OHy4tHq0/0tu vghrTKc+zNQrWGnT4nBQIDetrL/OC3iheY/i06LEB/LTVPm82klf7KuOj8n5Iy+ZVj2y XueZWRu8ffB3Nv2PiuFFMBbKFw3KKYMfgvnYNj5Bv9dgdwsKj4MFrWgY7O3jo5J1nGc6 rElA== X-Gm-Message-State: AFuF++m1LQM6nRHAbSJM6d4woTOPqUSfOjaE5iWfZzZNHH/4sOX+ducw aHJtJAj2XZBbkyQxw9APYr9odetahYKkoPFj/34J6NlRQ6aX/348VULJOswVPDMj15C2gUOqyop 8Q6Qp X-Gm-Gg: AYBFou2kQACaThVEknvDSdzPgKhCvHmS2/v0jocF8yMQw59BnCCDDLNGhOHl8JuuxFD /pQaq7L8jKspV+f7z9+D13tAzRBFNVx9rTglFSOGUWzrCZGQu/BXTjUp+xFQUKld0yV8E37M3pJ N0mQ4D7lLu0g/UORo93XEbwh5ImE6hW8FOhNvEyUc9IY2ziQyPT4WnwoKVjo3+CXHzIfMPzoJxU CqZTe5BEPtamaLuG72DBfCL9MsnAiJaGzzFyz34eYUIUEeBz+V2p1wBVZi+KkXkvDE7m5p7x7mT 8vmTVr4/QHg6CYhP8Z0hVNN0aLYUZdA/z6yzj0iPljHj6p7rB63gzop4qTcBpCeBIMtkKOqHF11 a6GwPcWvtgqwzAe+H+TrOrRhn9GXtAfM8AT3YJwWxRFAYWQJ63NEAS3zNYmhZ97rgum3NLE1XC8 s8obyz9aSNdVTe18AQfQqhk1mHeBnYOkCMg/t/2RTSFRNI0fLDHSr+OkfSvb2o3iepYi5R/SGKR TVifmg= X-Received: by 2002:a17:90b:2c90:b0:36b:bec8:94c5 with SMTP id 98e67ed59e1d1-39dbc1d2546mr9550520a91.10.1789267160229; Sat, 12 Sep 2026 19:39:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 35/86] tcg: Generic expansion of tcg_gen_nor_* Date: Sat, 12 Sep 2026 16:37:46 -1000 Message-ID: <20260913023837.741866-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267304745158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 621839a3b82..471fce20998 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -198,7 +197,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 80d174a6cb1..62dc85ff6a6 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -15,6 +15,7 @@ DEF3(mul, TCGV, TCGV, TCGV) DEF3(muli, TCGV, TCGV, TINT) DEF3(nand, TCGV, TCGV, TCGV) DEF2(neg, TCGV, TCGV) +DEF3(nor, TCGV, TCGV, TCGV) DEF2(not, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(ori, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 89362b597f4..928ae524d49 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -542,6 +542,16 @@ static void gen_neg(TCGType type, TCGTemp *dst, TCGTem= p *src) gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +static void gen_nor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_nor, type, 0)) { + gen_op_ttt(INDEX_op_nor, type, dst, src1, src2); + } else { + gen_or(type, dst, src1, src2); + gen_not(type, dst, dst); + } +} + static void gen_not(TCGType type, TCGTemp *dst, TCGTemp *src) { if (tcg_op_supported(INDEX_op_not, type, 0)) { @@ -750,16 +760,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_nor, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_nor, ret, arg1, arg2); - } else { - tcg_gen_or_i32(ret, arg1, arg2); - tcg_gen_not_i32(ret, ret); - } -} - void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_orc, TCG_TYPE_I32, 0)) { @@ -1777,16 +1777,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_nor, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_nor, ret, arg1, arg2); - } else { - tcg_gen_or_i64(ret, arg1, arg2); - tcg_gen_not_i64(ret, ret); - } -} - void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_orc, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267398; cv=none; d=zohomail.com; s=zohoarc; b=jm/9F3TQk+xl3A8nmYhr42rPOiwp2bvBRjOcI9Dgs6R4s4mOOzacUOQqnhT/T5ylhy4LeClarJZu/75w0K9sQ9I44B79j8beEN8UecpTBNW3JUHQ4QhTkWt6mShqMvcWMwpgkeL6zFlDIZmcYgqUj+KDav8ns7Z3DeaeE3nSdiU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267398; h=Content-Transfer-Encoding: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:Cc; bh=n0ThWuTmkmvVNKbGAYUArcwtR2A+zAz5iQWCAX9uiUY=; b=KdOry5rK7S2Ek1jdg3pWA+ZnJgLSZKXp+kxwQ9rLnIRTX8x4fFtDncie13NRjxg5VtbQNQw9jBwWBMxlWqzsLL1gNZtSW7y3YxYkJsHdCa44wP0ziu5Own6eB5ujYKhTygnJg8P+Zgpj/YbJTUvhDd5mcNIyT3X2X+/nV7SznmE= 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 1789267398004694.7003170331012; Sat, 12 Sep 2026 19:43:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8K-0001yC-L8; Sat, 12 Sep 2026 22:39:57 -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 1x5a7p-0008VZ-DW for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:25 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7n-00016P-8o for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:24 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-38a0c7e841fso3299490a91.2 for ; Sat, 12 Sep 2026 19:39:22 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267161; x=1789871961; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=n0ThWuTmkmvVNKbGAYUArcwtR2A+zAz5iQWCAX9uiUY=; b=pQB9d3p91kgK3iRA00xeSTpH3b4WxXRGI01ENHMQ4YXIdcd7A1QYi2h46b9mNjjHAf 6SW90McgSQ34HvVvpzrVD7bNOYO4gC6JGk61b8gU3cgLP4yrZc2g6+fh2z2GVgCfc2jP hLqihBibYSyKBuG2YDXi2M3gD/hWWY9ZW0DyhoThw6Er3DatUbZLekWbo8QnrXHZjLZq h2pvv+wiD8zzEri6Mqq4rnG1qxzkfCdhmJX39Veetut3FPinSPK91Zx/k/NWnycbnnhg D65Zwbgc7sdmLYY5qoS2RaLH98IGDlNpV/AKUUKh2FrXA4ut28zPYODaQVwuXQkwBBCZ +fWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267161; x=1789871961; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=n0ThWuTmkmvVNKbGAYUArcwtR2A+zAz5iQWCAX9uiUY=; b=PFwGRh3Ve4yPwBVE4/U2X0OP3qnB51SATLpEmNnFRAyR74gIu6N4Gd1lCc0PTyeOcW JL/6bledEhoYNdZoIZk86+K94FY73KhAODKuzjr2PJkz9Mm1NaOvvF1YoH7hxBKbDph9 GfhO6HCrxC3uHdVB84ah6Zcp03Gq4CBSdlQlDUu+OGDVp7S6JUmGR2SVTDm1x/V0SSNi biWfB3jIkmQQhqpC09mx77DorBDUrwmFxq62iRlW+0ONkOpSQ+mdEQfQba5zyRwQihcZ 6EbyIEgJ91C5f1utr8b0xlh0L3odsUyPyEiN1YcXqLKQQ8jZtq+SEXMlPM0y/W07BeSJ 6syQ== X-Gm-Message-State: AFuF++mGmiGnAH8ueSNep2Rkwpm/c3eM3ZWz2PPkqclEnX+lNsmfVuxf h83Yngvhw1Zk/vaykxi/qe/scSsCiSvnen1J8oT3lUFXuqHMAjZJmyUVZ5ggZ1hRAcL4tsa0up/ mBFEqppI= X-Gm-Gg: AYBFou1NZ3Y8fgXn1ltTXYL2q8+Q1stKDN6a2qkcwTwsJK7Eg56FfQQFN8lEtsbQWq7 Jp79hO15TwpZmth2Xg6hf8L4EMNj/C3rbSQrtxfphOlwvPRzQ2qoKE3QmegysLHdtgM4eJeBuHS 1605axLZzogazfXjrR8WMb2Fpq5IgerQ0618ekXqivhBwH511L5cfqzHX59PDlep0emg2IEShX3 5EWqkV2Zj1v54IofX7lnHQo9zzX8n9gt/K2+y02DVp1cWd9f/PfkiwqDAxuT+HKLeqUZ8k7nWun 7eh0i9b2eMheI9NnG6n3NibZ2m65kQbWHWljlt4eytIYR7ZpRfjxbOB7Z1jXeUL6DW+crVlNcZn 1IhzNcrsqTP03RXqf6pa4xU3d4MaXC6AK24NentTsjM3RhUWo3IPdH623uME7L1ZKp52dbRmHWD 5fX4fjKcpxVK7CkS0QyCzumj329QYcO+JITyzXg5Bd3P+ju6cFS5FCNUpbCvctX0zzc3NpLOIV6 XtQroE= X-Received: by 2002:a17:90b:4b81:b0:38e:49c0:75a7 with SMTP id 98e67ed59e1d1-39d9bc6a1b8mr18658537a91.8.1789267161194; Sat, 12 Sep 2026 19:39:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 36/86] tcg: Generic expansion of tcg_gen_orc_* Date: Sat, 12 Sep 2026 16:37:47 -1000 Message-ID: <20260913023837.741866-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.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: 1789267399115158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 37 +++++++++++++----------------------- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 471fce20998..974681a29a1 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -123,7 +123,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); @@ -197,7 +196,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 62dc85ff6a6..e17caafd890 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -19,6 +19,7 @@ DEF3(nor, TCGV, TCGV, TCGV) DEF2(not, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(ori, TCGV, TCGV, TINT) +DEF3(orc, TCGV, TCGV, TCGV) DEF3(rem, TCGV, TCGV, TCGV) DEF3(remu, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 928ae524d49..1bbe6992e34 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -578,6 +578,19 @@ static void gen_ori(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) } } =20 +static void gen_orc(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_orc, type, 0)) { + gen_op_ttt(INDEX_op_orc, type, dst, src1, src2); + } else { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_not(type, tmp, src2); + gen_or(type, dst, src1, tmp); + tcg_temp_free_internal(tmp); + } +} + static void gen_rem(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { if (tcg_op_supported(INDEX_op_rems, type, 0)) { @@ -760,18 +773,6 @@ void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 re= t, tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); } =20 -void tcg_gen_orc_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_orc, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_orc, ret, arg1, arg2); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_not_i32(t0, arg2); - tcg_gen_or_i32(ret, arg1, t0); - tcg_temp_free_i32(t0); - } -} - void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I32, 0)) { @@ -1777,18 +1778,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_orc, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_orc, ret, arg1, arg2); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_not_i64(t0, arg2); - tcg_gen_or_i64(ret, arg1, t0); - tcg_temp_free_i64(t0); - } -} - void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267364; cv=none; d=zohomail.com; s=zohoarc; b=BbB+P6fbSpw64J0fMwLo5EYPbzXtf0pUxPfou6vUug3a3P726xp7j+DXlEDB4+5jx6gvjy1iJMSDQAppSmxAttrej6aIP3f0eZ73s1gs1beVAtsmiFYDHo6g26SzpeCsHowun+wqtSKJ3f9+UnHJ1mW724jwVwGpk881OtV/B/w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267364; h=Content-Transfer-Encoding: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:Cc; bh=IupEUQ+T+DRiQeEVTjdJGpYAkuAwPpNxHoHAHetG1BY=; b=HNcbPaNX21jtL0wTsD03M3/eoFqUXb2iczA2KLO6TT/XRQn7er5ROSUI26yDJJBs9Baz5S3BF0mgDibueXp8v821RETDBUH51M6mOwGfSOCXmqEzKazzu3H6j1BLzSfGBzO+IXVja211CijPcYd01PdzrLdUrmokWZldl/Ungf4= 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 1789267364027675.4950062130936; Sat, 12 Sep 2026 19:42:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8E-0001ZP-Kq; Sat, 12 Sep 2026 22:39:50 -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 1x5a7t-0000B6-59 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:30 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7p-00016f-54 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:28 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-cc4c02ddd62so1638290a12.0 for ; Sat, 12 Sep 2026 19:39:23 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267162; x=1789871962; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=IupEUQ+T+DRiQeEVTjdJGpYAkuAwPpNxHoHAHetG1BY=; b=BE86HL56lVxIBq0D7WZXPhp2I/SyYhk6EBrnUGRi+X6t92C09Qx5FaT8h4c8cnATgK Bf57vma1W1iEteRFuJiZWsPNmhR88YyGZFkCt6a4q+TcUNzxzRWRX9QPLSI3RFhO80Hs tuZ+/YdR61ZONCPzmbWRa1sVnhZDJ5i5lMJGeSaXCZbHP6D6WpHKsG/g0WmFMjyvxOIZ E6WaMYMompHPgcFr8fPtbueAgDSP0BUQQn2vEyyuV2AO2WKe5Q+BMgfDP3ibQtCTrY21 JfiYKzUKzQh8z6cUzHMTfW4J+dneoBggp8sCx4drdaxp6fiWHtHQIYVJA9gsFY/y5Gca K1RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267162; x=1789871962; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=IupEUQ+T+DRiQeEVTjdJGpYAkuAwPpNxHoHAHetG1BY=; b=VG2BTBnlrnI6bBioFkeeA6jU7UebsosJkYSYFXlcz80VdpPKkVmZer11CHb76k6AEo IgmCt7COpiE0dzh3LwJ59BtZvLXgjByzchnWyKlxWQFY6E3aHro6s3N9apmNp8XapdAN qI4vAbchuqhLRDUS6/NnyCmGtB9qOapNH0fAjnSF4CMohUwuXRdLyQSyUE6DdpHXI/Fv YC2MlcCZx7f5/cocNGbn6Km3EynC7VdJYmGMH8JdnKLGyY6mmGAzGIP8I1prxqY33pBm GiZvJHd7gPDEVmZSS+gDGoesiMArrhK0VCrtcJEZYYowx6yo41kzg1wRZlOFpqQo4eU9 /4fA== X-Gm-Message-State: AFuF++kYNc2RstTDFIrQtrcFu68yJ3gIXaxcQqJbHmOIqmiS+6wyG/qh vo227l1X93NcDWP9GRFAtTVqcCiti8BT4jzFqAe9vvbp6NfuTITilj1aeEeSOt2fKF59hdFcGdZ XbIaafMU= X-Gm-Gg: AYBFou2nYTl6j166NvgDdQ1rwae0LRgjOfV75zz4d6dY9DemphHhzMWtr/SWn0wO94z L7oZJCnGOW9gsgcpUfJFr0MdChZWEWLzeq7M2wQ/4JYVss42t0F7TrrwVyJRXStlBy1Dh4kdRgP 6rwBBoR/rnCgvmVD24vr0CeQ2hQM4HBKoNN8Ih7hadvpGxm/m+kEguPeIU58pnodm08LJrmdcsR oLijYYi2VtsddEpLGmIZwF1qJv9EcYqfQCtq9Zu3V2Oxx9ddyhVNH+J8SsF5VY3cHhZ7Qvl41L4 VBY2b6rBUzQW3YuqWleLX3vXUkdYeqnVIwi0pR7rTQ0C1M5Dm0HByyEGyqhbumJp/+Fqn4o32rP 4ojZMgZQzkXg+6mC30K44QiwbBI/SVuaLNLn7FDW1xL+JO4LJrJnymkZth0H47c60juMK/0iwov urqPth4LztxgyhpdWyQ1CMqy5fhc/Nan7Zksg7Mn63VepQZbAf7BU+8+lCSa2LCGupTh0t+U+Ov RGWlRA= X-Received: by 2002:a17:90b:3ecc:b0:39b:4877:ae90 with SMTP id 98e67ed59e1d1-39d9c352654mr18067819a91.22.1789267162066; Sat, 12 Sep 2026 19:39:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 37/86] tcg: Generic expansion of tcg_gen_brcond_* Date: Sat, 12 Sep 2026 16:37:48 -1000 Message-ID: <20260913023837.741866-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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: 1789267365059158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 5 ++-- include/tcg/tcg.h | 1 + include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 46 +++++++++++++++++++----------------- 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 974681a29a1..2817089b62c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -98,6 +98,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminf= o); void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2); #define DEF3(NAME, T1, T2, T3) \ void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3); +#define DEF4(NAME, T1, T2, T3, T4) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4); =20 #define TCGV glue(TCGv,TEXT) #define TEXT _i32 @@ -120,6 +122,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF1 #undef DEF2 #undef DEF3 +#undef DEF4 =20 /* 32 bit ops */ =20 @@ -143,7 +146,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1, TCGv_i32 arg2, TCGLab= el *); void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1, int32_t arg2, TCGLab= el *); void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -216,7 +218,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2, TCGLab= el *); void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLab= el *); void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 7669dc1c2db..de1a81d8e45 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -97,6 +97,7 @@ struct TCGLabelUse { }; =20 typedef struct TCGLabel TCGLabel; +typedef struct TCGLabel *TCGLabelPtr; struct TCGLabel { bool present; bool has_value; diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index e17caafd890..d2bbf9ba017 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -5,6 +5,7 @@ DEF3(addi, TCGV, TCGV, TINT) DEF3(and, TCGV, TCGV, TCGV) DEF3(andi, TCGV, TCGV, TINT) DEF3(andc, TCGV, TCGV, TCGV) +DEF4(brcond, TCGCond, TCGV, TCGV, TCGLabelPtr) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 1bbe6992e34..70e2443f562 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -326,6 +326,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) static void glue(gen_,NAME)(TCGType, T1, T2); #define DEF3(NAME, T1, T2, T3) \ static void glue(gen_,NAME)(TCGType, T1, T2, T3); +#define DEF4(NAME, T1, T2, T3, T4) \ + static void glue(gen_,NAME)(TCGType, T1, T2, T3, T4); =20 #define TCGV TCGTemp * #define TINT int64_t @@ -338,6 +340,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF1 #undef DEF2 #undef DEF3 +#undef DEF4 =20 /* * Templated operations. @@ -355,10 +358,17 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo) void glue(glue(tcg_gen_,NAME),TEXT)(T1 a, T2 b, T3 c) \ { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b), glue(C_,T3)(c)); } =20 +#define DEF4(NAME, T1, T2, T3, T4) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1 a, T2 b, T3 c, T4 d) \ + { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b), \ + glue(C_,T3)(c), glue(C_,T4)(d)); } + #define C_TCGv_i32 tcgv_i32_temp #define C_TCGv_i64 tcgv_i64_temp #define C_int32_t #define C_int64_t +#define C_TCGCond +#define C_TCGLabelPtr =20 #define TCGV glue(TCGv,TEXT) #define TEXT _i32 @@ -386,6 +396,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef C_TCGv_i64 #undef C_int32_t #undef C_int64_t +#undef C_TCGCond +#undef C_TCGLabelPtr =20 #undef DEF1 #undef DEF2 @@ -453,6 +465,18 @@ static void gen_andc(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_brcond(TCGType type, TCGCond cond, TCGTemp *src1, + TCGTemp *src2, TCGLabel *l) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + tcg_gen_br(l); + } else if (cond !=3D TCG_COND_NEVER) { + TCGOp *op =3D gen_op_ttii(INDEX_op_brcond, type, + src1, src2, cond, label_arg(l)); + add_as_label_use(l, op); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -717,17 +741,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1, TCGv_i32 arg2, TCGLab= el *l) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_br(l); - } else if (cond !=3D TCG_COND_NEVER) { - TCGOp *op =3D tcg_gen_op4ii_i32(INDEX_op_brcond, - arg1, arg2, cond, label_arg(l)); - add_as_label_use(l, op); - } -} - void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1, int32_t arg2, TCGLab= el *l) { if (cond =3D=3D TCG_COND_ALWAYS) { @@ -1527,17 +1540,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1, TCGv_i64 arg2, TCGLab= el *l) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_br(l); - } else if (cond !=3D TCG_COND_NEVER) { - TCGOp *op =3D tcg_gen_op4ii_i64(INDEX_op_brcond, arg1, arg2, cond, - label_arg(l)); - add_as_label_use(l, op); - } -} - void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLab= el *l) { tcg_gen_brcond_i64(cond, arg1, tcg_constant_i64(arg2), l); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267299; cv=none; d=zohomail.com; s=zohoarc; b=GU3wuc4sJ2Q6JYSJd7N/qoBZQsfY1z99HMCQXqQ2c7kf/AiTh5bLSkEnMmop/dKTIxIBzO+W2Jel+oAZ5VsMfBYRCcuWkMr/Wmmc5xFDlsc6eWNH432a/Coa20/nMvEdS69WOmS20vJOu9I2rtcZoMtQ9r7/r5AvjyndC0/9I4I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267299; h=Content-Transfer-Encoding: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:Cc; bh=cWYVLRU/fhFxnZHKLR/te0Zhy6vPraVqY3BQNvFc01E=; b=hEqURzDd586SYJMy5u/a6hicVqbYeRidZJBTmRiitvsyWThb9gxdl8y+ehsm8vJ31UBRPYE4ICyYuvS7cFS/HuYbxvIZpDNScsio8/NhubT7PLeqhPHT3/nBT0BRuDv4S2iSJ/MXYAKh2KP6zoM8L5DGZZlDGVWGCA5S23YMTQw= 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 1789267299277531.7956819407739; Sat, 12 Sep 2026 19:41:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a84-0000zJ-Tk; Sat, 12 Sep 2026 22:39:40 -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 1x5a7t-0000BH-5o for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:30 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7p-00016x-5M for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:28 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-cc4be0e5351so1563780a12.0 for ; Sat, 12 Sep 2026 19:39:24 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267163; x=1789871963; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=cWYVLRU/fhFxnZHKLR/te0Zhy6vPraVqY3BQNvFc01E=; b=Fte4JTpuMT3/bSpgDK0vVvJ/NGKZqFvEtuHhpRr/1CAWN9tix850OXnwSnJg3xFR0Q hptxoOw9M75IwirPUSL+jams1QgDTmKt5a666wewCyMIgAmlstPRRRRNhp2zmQ2oEnME f/G6mDegVeT96v465HvU4oesd+z/RIKTXADQHSGAJi+ELfXHDkmnYMfR85zhMlnMfDWR HXFFaBMn0jEf2xCfRfNUYUu/jqS3cBDwzAI2Oq6ljAJnw+16AO9VoTYfaZJifCnovf/Z 8GiTbpaducvD5FG31ZkGP1Zsjkig37+opi+6f+bIC3Dg5ontZwxfTxu9QPIFaMeg6L0G O5Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267163; x=1789871963; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=cWYVLRU/fhFxnZHKLR/te0Zhy6vPraVqY3BQNvFc01E=; b=g5zwOLKGNBkcFnWN73orHLbmY8Jutsxq+H/qvBoNNRgBdRx94r7v0rbrp4Eljhi5xM h4Mzj+khZz7lYDCH5q6BjTEBMzS+G63YKbt/feHACKIGSxp1OO0kiPB7kHtif/PCA9Fe aVu/uiBLmk14hTu9y7ekmbKNh4bH8qTT6ExWOhWx4drXvIHhQf5E+2J9l3ykMwXcT8cT aeU2ZX0ocwd5NmjOMxYr7ZohxM+3BD0B4JgVuUSa7en3fcICJhZWKlyliFSyl5TPeO1x VvE56LTZ+BBNEDCWUx9EwPGXhII0jgnFtAdk0TX5/1ZFRaUPcwQl9K2DM6djYxUbYBO9 sV+A== X-Gm-Message-State: AFuF++liPNDJt04HET08Zeohfi8tib52/LhDZmxbzelccvBz9Fg/hm60 EZ5b4GqYGVoDhycpgAMUJLpjsp0e3SUC3ifDAgYvTQb45ib6Q0vVrxTrgamwFc0++IVza8iWucN 9Ez+ZEqs= X-Gm-Gg: AYBFou1sKoDrDQgY4gYol65ce6RDIe+rFPQMRSiAtgirkpK7YlIV8IGwqcCCUJ1Is9R RzK4S3By6bB1SN+/sCqH5pRiDOH9zM4xXkXJ/4oDCQm0M7njCUQOE43T78A3W29gQ3cjNcm2LpO NwNGfkQoAedggc4WKvkXrF+D9yRKqUTPR8eyzS/FBX0I34coTGUOruwTDOhcyGTq+qv8xFcNJc3 vADhpe3xWXF4mafLwxx3/JMCZfzqXChpjg613LfyJ8foeHlxbU8mI5EQk2LAsBTvnDG2p7Qrf8i wc3+1CKwSbpnf6Xa3oBhNjxCq9YevxehMgVrYsKyClxDDwoGOFiFOIYRE67fImy1tZ5FbijW6xr Mt5+8O80R87ULHg583kAWUQAcuuwvl3GcYXUGo15KGV+psw7ZVzdcdwJ5mhFB3AgtzD2qK6+LsZ fCDMu6PQaX9xFVZVexGRQvy1zXwvr+sbYeU/euDZWNboC7DG01iq2YdGFeWq8dssh3FaQSjIB9f /G0FqmR X-Received: by 2002:a17:90a:710:b0:39d:c3bb:98e7 with SMTP id 98e67ed59e1d1-39dc3bba118mr4821955a91.6.1789267163073; Sat, 12 Sep 2026 19:39:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 38/86] tcg: Generic expansion of tcg_gen_brcondi_* Date: Sat, 12 Sep 2026 16:37:49 -1000 Message-ID: <20260913023837.741866-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: 1789267300774158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 20 ++++++-------------- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 2817089b62c..68bcb297b33 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,7 +146,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1, int32_t arg2, TCGLab= el *); void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, @@ -218,7 +217,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLab= el *); void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index d2bbf9ba017..63e87c8313b 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -6,6 +6,7 @@ DEF3(and, TCGV, TCGV, TCGV) DEF3(andi, TCGV, TCGV, TINT) DEF3(andc, TCGV, TCGV, TCGV) DEF4(brcond, TCGCond, TCGV, TCGV, TCGLabelPtr) +DEF4(brcondi, TCGCond, TCGV, TINT, TCGLabelPtr) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 70e2443f562..2bb5427f668 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -477,6 +477,12 @@ static void gen_brcond(TCGType type, TCGCond cond, TCG= Temp *src1, } } =20 +static void gen_brcondi(TCGType type, TCGCond cond, TCGTemp *src1, + int64_t src2, TCGLabel *l) +{ + gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -741,15 +747,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1, int32_t arg2, TCGLab= el *l) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_br(l); - } else if (cond !=3D TCG_COND_NEVER) { - tcg_gen_brcond_i32(cond, arg1, tcg_constant_i32(arg2), l); - } -} - void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { @@ -1540,11 +1537,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLab= el *l) -{ - tcg_gen_brcond_i64(cond, arg1, tcg_constant_i64(arg2), l); -} - void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267362; cv=none; d=zohomail.com; s=zohoarc; b=Bx9JcJ30BsJIMG3+/GnebuBrJxuve+/itLxbR9aK+ZKm47Q4jOfq5TsGRx7/PH219t1GCkbK0s6+1f5DijHxx/kIYnLBSxN5JtfFti0COzzeS9OQ1Rwn+h2i4UXU6k71S3vQeSmxrfQ1p1I4xEDENRuNyWwfQCaxC1oR/k7tdFU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267362; h=Content-Transfer-Encoding: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:Cc; bh=hLB7zLv8IjtaBaWsoO6VA0SYXO4V1y46Wy/uN86veqU=; b=Q6BXc4AmfY6n47WyQ/lvJGucbQxl3a/vTeTGXiaj/CgPB92dpnttNvDcttvmdaWzfYPiJmoYpHCbYvwtMB0oIE00YIaCRo4MJReQHRPVrxaR+vCwGvfUISA/dvrG/w8fEAL/ZnceIGZmDNdbXlfE8Vb0Wh5fpsbDlVvX0+pJ8Hw= 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 1789267362699913.7577502720544; Sat, 12 Sep 2026 19:42:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5a8N-0002Aa-9L; Sat, 12 Sep 2026 22:39:59 -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 1x5a7v-0000H4-0G for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:32 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5a7q-000179-5T for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:39:29 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39dacf053eeso462873a91.2 for ; Sat, 12 Sep 2026 19:39:25 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365b8ead8sm16174535c88.10.2026.09.12.19.39.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:39:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267164; x=1789871964; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=hLB7zLv8IjtaBaWsoO6VA0SYXO4V1y46Wy/uN86veqU=; b=hWX82xKmrpLLyfucBBvrm3IocEa8+ysdyoGKID5AJ52WLf3LcZqD44mHsWZEqIDGge AVhQ4+sZpKO0Imge37edBZJwE90kBO0Xxc6dN45A2Z3ardVgRKC34N4efzcG6FFV7xBH 3spGb12lLdCFX2OJY5CS8dDZFsUpDmIFEmrhcFXBW7US9zaIoFAcQzlK65Fn9oVlCxUn 4Jm5xiQ86IkwoLX3WNZTUe29+yxZfVdywNpnySf6t5hCRf5+KFQtKXmVQ53TUXWfP8Ts NWS14HMkRvY6sBJdyP68o0SMCOasdMBbM44gtCQ62bbRmsmPX2OWMeP7dDRmZzw/efEL 89kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267164; x=1789871964; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=hLB7zLv8IjtaBaWsoO6VA0SYXO4V1y46Wy/uN86veqU=; b=TBRleEPXuv9QkBMpve/b/MsMOKFJlOrW7qJea1azLA4lGqpm7Vg+9nmnqenkSrFrbh w3Ssg5WQ08gIIrM3Rru0dutX4QE3mYQ096ySlsdiXd9eI2DLlpxICUL5obUXItnvqQ/9 Wq3rf9DxunSC/GMjNys5laDePu6CWASlhgFsTEwalwsjlajhU/7VF2ls+6cXQDVelgHi QU9G5RXPIgBrPCpYhsMyPdZ4dgWRR3F6NIMkEMc7TkOUpbu/PwL1x3kEFcwKsGNcmoDi gu2OF6PGlL7ATv2fJ7pvWuG+5TFx1PmycPkNauF4TQpQGHfAIb/x/Cda7sE5L2I2xLVZ /YNA== X-Gm-Message-State: AFuF++lce6fbVt36534lh5Frz3hYRJoLdFoRwHJy/3xkyfQZNMA7x3gr sTlrQRI3DQbqv1dwLCbZmT42HyQa0UhlQHDm8Sa/cXoJAzEoPL55dtnJkQVuIHyD0bOc8MPtROL EJNN/ X-Gm-Gg: AYBFou1gWud34jvCtOrZ7Gh/Xdz2OAp4fZzpBpjxohxFs5/SLkVN2hN89quXHmKuCEo hRHn3qBe/LNHEEUENXhB903OtFAlllwNecj/Yup/iB5hFtzPexCwXX11AiK6Q0FWF7icE41J6Tt azr4qMohAjxYtdgnWqsQyLBcmoAh2SM+ghzClIzQ0omxtSm/ixcUs2J11Gns7tqE0mMD1VqlimZ IM0Zjx7EIf8prWDVCZ+BN3hUpGAw26YVwChKRkbG7MBpMPlrkUY7w/KtomtZn6cZOLJBMp6+CJ8 wWSZw982t8Z3FRMf8u/rnq1IsUR06UZiZivMzhYnvG4bicH8TbARf6MoD9mbu4b8I3Mn41Tp2E5 tbl6hW2eJ7vr4pDJ0NGOGEkHgCg4G3iAvb0ANDRpfmSAoUNH4QJaLAB9wTGeSei1P3pAunlPBNu /J+u2vB/VrGo4uqioUAmjry5zlQH0RiiWQ+Nbi7ok8d2m+93WA6SwL6Xq5SpVjM7cDPchSgbfjO K0vzNc= X-Received: by 2002:a17:90b:53cf:b0:380:540:d499 with SMTP id 98e67ed59e1d1-39dbbeb3c67mr9049949a91.6.1789267164000; Sat, 12 Sep 2026 19:39:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 39/86] tcg: Generic expansion of tcg_gen_setcond_* Date: Sat, 12 Sep 2026 16:37:50 -1000 Message-ID: <20260913023837.741866-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267362932158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 ---- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 42 ++++++++++++++++-------------------- 3 files changed, 19 insertions(+), 28 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 68bcb297b33..4e8f1473c4f 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,8 +146,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, @@ -217,8 +215,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 63e87c8313b..6ce86d2005a 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -26,6 +26,7 @@ DEF3(rem, TCGV, TCGV, TCGV) DEF3(remu, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) DEF3(sari, TCGV, TCGV, TINT) +DEF4(setcond, TCGCond, TCGV, TCGV, TCGV) DEF3(shl, TCGV, TCGV, TCGV) DEF3(shli, TCGV, TCGV, TINT) DEF3(shr, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 2bb5427f668..f79722a2b84 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -121,6 +121,12 @@ static TCGOp *gen_op_ttii(TCGOpcode opc, TCGType type, return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), a2, a3); } =20 +static TCGOp *gen_op_ttti(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGArg a3) +{ + return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)= , a3); +} + static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) @@ -679,6 +685,18 @@ static void gen_sari(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_setcond(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, TCGTemp *src2) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + gen_movi(type, dst, 1); + } else if (cond =3D=3D TCG_COND_NEVER) { + gen_movi(type, dst, 0); + } else { + gen_op_ttti(INDEX_op_setcond, type, dst, src1, src2, cond); + } +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -747,18 +765,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_movi_i32(ret, 1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_movi_i32(ret, 0); - } else { - tcg_gen_op4i_i32(INDEX_op_setcond, ret, arg1, arg2, cond); - } -} - void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { @@ -1537,18 +1543,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_movi_i64(ret, 1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_movi_i64(ret, 0); - } else { - tcg_gen_op4i_i64(INDEX_op_setcond, ret, arg1, arg2, cond); - } -} - void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267547; cv=none; d=zohomail.com; s=zohoarc; b=QBPopF3s6tU3ZAmwnuxAYIW3IC5wwn5k0Wx0XDG/IyjD3bGDrMxltEsBfcI2s2QxemOwxlR+wpU5UiXbRP/0/KEBEsKxlXqY95gVYPsbcHpYxjtKkPPBpSjS8dNt1QbNKg1JylwuxSfgmpSBBDtXpG8IVAApO4V2oM2HUqmPQ2Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267547; h=Content-Transfer-Encoding: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:Cc; bh=v4G7k6VxQaiebUg68MK4mlzKYrCCUG9V4y/9KGqgglQ=; b=iGdAbmUT5dAIdl0WtwfdOEdnZI31gZqCM+SknrKt507A2xLET4GaehRH9oV8uXNYw6FQHaZ5X4DBTtFrR5Pb2MOQMzNoeYwZVRKwCkKLLVrJxtVzTingO5u7Dz6qREaeCJekzmMtrKW/58axs6GiOauOH+Me8Q26ZeJXdxm2x34= 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 1789267547712505.2174563321704; Sat, 12 Sep 2026 19:45:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aAu-0001e8-Od; Sat, 12 Sep 2026 22:42:36 -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 1x5aAs-0001M1-4N for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:34 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAm-0001qo-AR for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:33 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea48edcso555961a12.2 for ; Sat, 12 Sep 2026 19:42:27 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267346; x=1789872146; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=v4G7k6VxQaiebUg68MK4mlzKYrCCUG9V4y/9KGqgglQ=; b=aG/2iycYpO0y7iNm1/nzwjklo7lo/4QjIkxC3mg3XlXYn5YqSW0Q6RUeeTvinASjW1 AbRX8U4iTPjoSi1in5heMHzmyQhmnzfbRcGJEy7INKThaLYIcREw2bTprLGbTIAxTrvf C7T02vEf9cUmlOsgSTr90OfLUGYpUoJPqBkCKAe/B3Gp+Ja3cHxB7sODVKKxaDvBKTQC iZOytJIPsmpcS3VEGscqPAQ/nm9h0A2NhATg2vYejLRmy4OguXg2Wrd2KBiVf26jvj6L g38lgzGf71gJIWtCbsm3vtHqFh9RjLCfxade4KBsFgg36bYvWs4qQerMyvE/Mjtq6OVA idLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267346; x=1789872146; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=v4G7k6VxQaiebUg68MK4mlzKYrCCUG9V4y/9KGqgglQ=; b=GfksbrHGTvx398/YwHvmvqaB9F60hoctGYgW91n3ld8q7p/+9/OANj0UgcjfU4GfAt T8k9zOhWbMKKWB/iRbLI2zVzwWdXmjaiL2MLaiVMwfygKtlmXD0vVSMk1pDzYo9d71zo vtl9MZuqcVxWgFR7abwilsQ632QYizyeo0qB/tp/0adwjk0GPVWcaNtCzM77jb7/e+fn qg9Aq4BhRups11Nhx1pCq3ZYkZ2Vo7m1JAF7e3EaZnWN/ERx0kebLvlmaE3eNTWE7kWH vekSXqpJNV4mQ1GL8TFRkF8TDhzdUgCA1/3spa8kt2QHTWYmUdX7++KWBJLhvNk6urJQ l2Cg== X-Gm-Message-State: AFuF++lolJG455rU3vP0RSky9lOySdN8AkwNYh2rSM3DTjZs4dEl9Q5b 1einoxAD3WTv0GWJ6clHIwTouIIdyaYJQqRdPUYFEnkwmBAQrf84adCXWRHEzzYgvOaklqZUMME P76j0Pro= X-Gm-Gg: AYBFou1wBnXf6Cwlm0OIHh7y0O1dJBR1xkbRDj2BFn8FGBGPWRVm2q1g06n6Uy0RezD B/GeYcQmBB6Nv5Uvvg1Ei0Xdzba4pdjjANzrgD1x+WAWPckdB9kJoNwrqqci0FxFVlR8KRVsbf1 Yo78Zl6c9yObvPK2R66bhhOtKOK3/XrJ0AzMmXtGe+o4SgxkT9YtYXnnneWq1ZDK5ucnOVvvD9X rI2mf1fLQm0xCeu/CEjKhRR4SyM04PV85NivLuMu4OtqFLFeYuFpzcNumnLFHLJ7//J5XGK+9JP xvV21WPsntMmiRonBr9wxu9Sle83osDmP44YUW/j7kWFCNwlzrgNDgHjgE6d7F0SQnZzTsGAr+J DocC8zEBROrP6MFA4bZ6ivn2fXO3GQ6OHNkCRSTw5gUn3RAQO7BMBWOB1BfaO8p3lFC0umOImiB hGVQ8zIOvS8MhMpAX7HlNTYxkO6aNJKkLC+2rLCNArQ5LbhQ1RbrwL5XI73CiSUR6Y2BWBNMFOY 3SLMWOi1Qv73HN0qQ== X-Received: by 2002:a05:6a20:4392:b0:3d3:b02a:7252 with SMTP id adf61e73a8af0-3db0e499f64mr9513163637.28.1789267346343; Sat, 12 Sep 2026 19:42:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 40/86] tcg: Generic expansion of tcg_gen_setcondi_* Date: Sat, 12 Sep 2026 16:37:51 -1000 Message-ID: <20260913023837.741866-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267549556158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 ---- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 18 ++++++------------ 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 4e8f1473c4f..1727cd719b4 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,8 +146,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, int32_t arg2); void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, @@ -215,8 +213,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, int64_t arg2); void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 6ce86d2005a..42e0fde523a 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -27,6 +27,7 @@ DEF3(remu, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) DEF3(sari, TCGV, TCGV, TINT) DEF4(setcond, TCGCond, TCGV, TCGV, TCGV) +DEF4(setcondi, TCGCond, TCGV, TCGV, TINT) DEF3(shl, TCGV, TCGV, TCGV) DEF3(shli, TCGV, TCGV, TINT) DEF3(shr, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index f79722a2b84..6e1dd23e972 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -697,6 +697,12 @@ static void gen_setcond(TCGType type, TCGCond cond, TC= GTemp *dst, } } =20 +static void gen_setcondi(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, int64_t src2) +{ + gen_setcond(type, cond, dst, src1, tcg_constant_internal(type, src2)); +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -765,12 +771,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, int32_t arg2) -{ - tcg_gen_setcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); -} - void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { @@ -1543,12 +1543,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, int64_t arg2) -{ - tcg_gen_setcond_i64(cond, ret, arg1, tcg_constant_i64(arg2)); -} - void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267372; cv=none; d=zohomail.com; s=zohoarc; b=aPhd/uhZuAx+w1XNdCx/AvEtm4J0J/3mjkHMsTQdi14bxvHZfQ6+w21c1YLQuc2MIp9C5HsTEebOiB4zbTLVfh5tQ7wYYetSybEukPod/mEo4pQBKJt+xJiSE3RGDJ6DBnX+KzW0buPBNCiRtGl6xc1cEmO+h4o6jsVcPi0q8EM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267372; h=Content-Transfer-Encoding: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:Cc; bh=zzoTp46Ub+pDVgzx9szqneFACPjrZOdcO/8/caYbuOM=; b=Ctb2U2WJo/QWwsbdOJ2ZaUvXVd0gaXHL4MjuPA86o8UHrMWGto1Bvik0iUcep/Pz4d60z+k/zcfwbTrN2a2sR9a8Pt+prN/Dfyc+uinVfuoCMzaMdCsCzEtC1rdY5fJIOULE9PiyDWxJD1wNmoeVhop4Dm7UtNSS0WdJ4bSNjS8= 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 1789267372222916.2390630895845; Sat, 12 Sep 2026 19:42:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aAs-0001PJ-RK; Sat, 12 Sep 2026 22:42:34 -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 1x5aAq-0001CE-9A for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:32 -0400 Received: from mail-pz2-x16.google.com ([2607:f8b0:4864:3b::16]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAm-0001qz-OR for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:30 -0400 Received: by mail-pz2-x16.google.com with SMTP id 41be03b00d2f7-cc4bdf8abaaso1145196a12.2 for ; Sat, 12 Sep 2026 19:42:28 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267347; x=1789872147; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=zzoTp46Ub+pDVgzx9szqneFACPjrZOdcO/8/caYbuOM=; b=EEWNo7b0Gtd8QWh42kAIbrGLz9BccRmdrd0mq4DolYo1CrbBDeBxv7F+DKyJGU+HWt 9cXkuATFn5mLxyJZNgS0rnSIMPvvfelQZJDNA5DI3JOOOBni4kb0KUlfepLBFcb1o6DD 05/ANoH37M30gwfYJT8M1RliZHSUlABT722MdMZskQ2BD/yqsAGa7ClMW3NyTbKDAB6J NZxljunXWvjxac3OdbIYz+xYuHidFoDrwf4Bm4iD38v1RKsLE8XRPfdUFuGYV7IeC+ty M0rTbZyev1ye1BUbvPcesqZbBhsutBZ+fnbZJX/O4p9iIImKV6tLroKkXu2DSrb9A1Lk teFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267347; x=1789872147; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=zzoTp46Ub+pDVgzx9szqneFACPjrZOdcO/8/caYbuOM=; b=GEkae/1GtuZ+DIOb45SEjLhEBPNIu+Z5TGuYmgdeAe4F9DPGSk/M47k+YPN+tzMfPv LidlhE566qW7tE4ZcjDFu66kRErp3B7NsMOjoF/cLwqmHp32AHTvu7zNODUGJmOet/82 wvWwaSKZYaCOpIra9VP5wgauH1hG+TL5i8kPxIaGYjI1IDhYc6hTFxjB8bp/543BNrSg VsYF8khFTlG8atApEjQUkmu8bn5XET7aglJBMSZL0vK0we2n7oN9uAXsKcrSmc7UIEAB VKgkefIc5jnJ+MXITNyDJxesZ293+PUJ5XDQtS1irf1RHEANBOkpjRXAlLwRlObflvNz oEfA== X-Gm-Message-State: AFuF++lMbKoPWWgXeyxCdse6EVEjAplqn7lm9ZGZInBnWK40icw/GFyX ugExtOq7UrxLaW06K1SSnr5tEmK0xqWvOjmMlmKB1xAy68FWjs2t5iLr3SzvmeR+i0ixu39Htux 4UlNxnrE= X-Gm-Gg: AYBFou0ueQ30VFUXRLFOCCgowVgrIrxjclFQc/BnEEX64pVbCS1AetmS9Z5RpH2irz2 yNcMhSrOVB/wWXSlnxl0v6V2nCQ5lDW6uaExzEJjFHuAcQSs8+yY30NGlpJipeXaHak/7TtwsUK Ez37gG/gCW8yK+Hxthtr9cLlyC28IwtMkk7GYN256anhXRmPaNh/3XWvk6a4vHv14ZDKr9fKO4M BRXNCFoc5l2oFHue45fpjPuECaurVcDKNilWJPJVYClISbUYryAMpdNFKokV34KU910dGC40PLq WFog+j2hJPklQeF9+GYt5HNj0YFq7ZhisNnPd47cPSgVWxwNXzPXRoWMU+CAMQlacB4pjHDm+zE LeygT3cH8IvpcdVQn329V1hskvlmFTvoqFLyD4Jk6zEVMwx8hIjEHpeCC9VqbWgVY8TMRZjDBaF JkJF+UI1X+012GTreoVskSnIpdoJ+YszqQFpxqu+Z+ip/ycwnxS+Wx6bcKC36VCfW5DanI7yO2p 2Kmc58= X-Received: by 2002:a05:6a20:258e:b0:3cc:2552:ddd7 with SMTP id adf61e73a8af0-3daed0fffb2mr22989917637.5.1789267347281; Sat, 12 Sep 2026 19:42:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 41/86] tcg: Generic expansion of tcg_gen_negsetcond_* Date: Sat, 12 Sep 2026 16:37:52 -1000 Message-ID: <20260913023837.741866-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::16; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x16.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, 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: 1789267373123158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 ---- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 36 ++++++++++++------------------------ 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1727cd719b4..42fa516550e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,8 +146,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1, @@ -213,8 +211,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 42e0fde523a..8bbbf39f13a 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -17,6 +17,7 @@ DEF3(mul, TCGV, TCGV, TCGV) DEF3(muli, TCGV, TCGV, TINT) DEF3(nand, TCGV, TCGV, TCGV) DEF2(neg, TCGV, TCGV) +DEF4(negsetcond, TCGCond, TCGV, TCGV, TCGV) DEF3(nor, TCGV, TCGV, TCGV) DEF2(not, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 6e1dd23e972..681e78f93a3 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -578,6 +578,18 @@ static void gen_neg(TCGType type, TCGTemp *dst, TCGTem= p *src) gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +static void gen_negsetcond(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, TCGTemp *src2) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + gen_movi(type, dst, -1); + } else if (cond =3D=3D TCG_COND_NEVER) { + gen_movi(type, dst, 0); + } else { + gen_op_ttti(INDEX_op_negsetcond, type, dst, src1, src2, cond); + } +} + static void gen_nor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { if (tcg_op_supported(INDEX_op_nor, type, 0)) { @@ -771,18 +783,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_movi_i32(ret, -1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_movi_i32(ret, 0); - } else { - tcg_gen_op4i_i32(INDEX_op_negsetcond, ret, arg1, arg2, cond); - } -} - void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { @@ -1549,18 +1549,6 @@ void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 = ret, tcg_gen_negsetcond_i64(cond, ret, arg1, tcg_constant_i64(arg2)); } =20 -void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_movi_i64(ret, -1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_movi_i64(ret, 0); - } else { - tcg_gen_op4i_i64(INDEX_op_negsetcond, ret, arg1, arg2, cond); - } -} - void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 8); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267361; cv=none; d=zohomail.com; s=zohoarc; b=Gkema04RMEvx/+vVYWVcp++f+FPPlwot05PqmhrhD+SVabwLHY29vwuTfs5Y8Htf3jpGx42Bsz3EqJE9XxbjQR6i8yxPdQc/NFA1A6dI8+xxb/B9R61WaH6D3aCFJuBC4S1LUbe5mNjRv3UQGm1QTrvXu8DIUMMf9yMe20UDZGM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267361; h=Content-Transfer-Encoding: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:Cc; bh=vH++rYFpP5AU7CTVrDXJy/WyJH39xervxkMUik3yuUg=; b=RpNo7driWo1d3uyaUAEvOm3c913b1YP3aCQ7WKIcM/opNHC+84SG4PttMkIDqtPhYsdncyvNYHHhPLqkGDIvztI0n4DnDaYNc6/mmk9Nt0VqU/Y2Vf9DHxmpFJ5/6vWdmugFkFutXJv+MWWCmV81RYcWQagb23W0Jhq//6rJmEs= 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 1789267361691417.9264347680938; Sat, 12 Sep 2026 19:42:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aAs-0001OI-Nz; Sat, 12 Sep 2026 22:42:34 -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 1x5aAq-0001CD-8c for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:32 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAn-0001r3-P8 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:31 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2d715f4a587so30663105ad.2 for ; Sat, 12 Sep 2026 19:42:29 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267348; x=1789872148; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=vH++rYFpP5AU7CTVrDXJy/WyJH39xervxkMUik3yuUg=; b=Ruxzz4i0+h4rQRr+7I+k1YKMHb36U+ySUSWkjQln68N1wCK+6jVy3DBP7rGhvbvBB6 Iq5Y7Ndnf0Jg3sTzuuqulTxf+tglBeljFYOQdsp7FBT5CsiCLPKxDbcKNHR5d/o3CfhP gZMJTB7sP4XxyYxNIH4x9N/HsYd4VRLKnwL/aFE4cAz+d180ZQbFaBI4zp0JiociMDyn yTAhvY8gyBfJ9c8YcdXZk/cDjgJT96EnTZf9Ct18weMSC6+N+0f9WACR7ZQAsfsjJKFW TP+2AyG6hgm3XjiBrAH2QCHd7MXJf9LB6rG7KN1pwGR9LZ7+oOFD10hImaso6ZlanezU Py5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267348; x=1789872148; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=vH++rYFpP5AU7CTVrDXJy/WyJH39xervxkMUik3yuUg=; b=iYUzyXsaYZtCn03hJw9FjBTpEp7/9SqCC9WnBbn6OD6cFxC3I/znkWad4r2+a2NS3s cCeuAZ7tumGghiAUN35AFj0yT8AbtewBcMlSx2CfxIW5ZFU4pcHspOMIGpDkpiLpbZnK 2SW6AVk07+x8Bi7c6WpvcwhP+ojI/IVA+pz3Qn6ubbtUQLs9b0ja4zmdfhvmHEQhsj3f ggby2K1OsdHeKBMBwQjBX5LD161noumX65twgBFSrVx0bknKxRlvKlmQeUpr2MClI4Kq 3QhBRpB/Vj9b1/3IVkg0u9kmw73AJW5Y9Npk7mUK1sR3mnJcyxRpFBeEqContG56ut34 ErVQ== X-Gm-Message-State: AFuF++lmv9aeFZOEvLzO9KM868EE1MGcBNd0DK3iJXl2E3XGsdu02mLl zDkEvlNoI5q0YoOjuhORytX8/mTOtYMpi40adaMPqR+wdBjyZ4cDg4kB/HGnx4MiacNC5TkKtOM TzsioUyI= X-Gm-Gg: AYBFou31QUDZEhcbX/wDy/CV4obP8wF+Yf9UOFV3fOp9PKWLYnBHEp8T5DR0ilSvClq 8hbAsqXXgdxK6c3KcI5feQ+nobwlA0ov4bVfbUr59SS9D3bvWfYRpqXZC9xjfVogJYtde4HSrBt kekMZvvDvHLNFXleZTopLSdElmPSVAtxvXKaxvLDhpV8lIowEOYDEbp6fxnWJ/j5oDvD0z0BNo7 A2Wa/v3HW6CZCEMHc4uJprJDYotD+V/LRDL399rp79poDKQ5Of47jn4gi1PZK7DOkRHJqQfFfFc hcQir5UQobMZnx5GipgWjBl4MQOAAI8NlL7dkpKSW4dqDMMfKUlm/QxpUBqfQHWLevpH2M0Rx/g F2mzUJTeOkRA/N2TBI3QQropGyE1TG9Sa96OBzLHJrGXlypLargnLzQLRAWmWqdfdaoKV79GcPa NKjPHAmZvtRYer8HhrnLYbq60r18aq/5rtg8LmgrslNh8shuuB6kkJCeZ5IzSw3YsDLT2vYbqWQ CW9zSw= X-Received: by 2002:a05:6a21:a96:b0:3d3:afeb:880 with SMTP id adf61e73a8af0-3daed895710mr19844266637.28.1789267348217; Sat, 12 Sep 2026 19:42:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 42/86] tcg: Generic expansion of tcg_gen_negsetcondi_* Date: Sat, 12 Sep 2026 16:37:53 -1000 Message-ID: <20260913023837.741866-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.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: 1789267363004158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 ---- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 18 ++++++------------ 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 42fa516550e..ba208c0bca3 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,8 +146,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, int32_t arg2); void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1, TCGv_i32 c2, TCGv_i32 v1, TCGv_i32 v2); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -211,8 +209,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, int64_t arg2); void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1, TCGv_i64 c2, TCGv_i64 v1, TCGv_i64 v2); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 8bbbf39f13a..a620c8ad69a 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -18,6 +18,7 @@ DEF3(muli, TCGV, TCGV, TINT) DEF3(nand, TCGV, TCGV, TCGV) DEF2(neg, TCGV, TCGV) DEF4(negsetcond, TCGCond, TCGV, TCGV, TCGV) +DEF4(negsetcondi, TCGCond, TCGV, TCGV, TINT) DEF3(nor, TCGV, TCGV, TCGV) DEF2(not, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 681e78f93a3..331a43b28d4 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -590,6 +590,12 @@ static void gen_negsetcond(TCGType type, TCGCond cond,= TCGTemp *dst, } } =20 +static void gen_negsetcondi(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, int64_t src2) +{ + gen_negsetcond(type, cond, dst, src1, tcg_constant_internal(type, src2= )); +} + static void gen_nor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { if (tcg_op_supported(INDEX_op_nor, type, 0)) { @@ -783,12 +789,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret, - TCGv_i32 arg1, int32_t arg2) -{ - tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2)); -} - void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I32, 0)) { @@ -1543,12 +1543,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, - TCGv_i64 arg1, int64_t arg2) -{ - tcg_gen_negsetcond_i64(cond, ret, arg1, tcg_constant_i64(arg2)); -} - void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 8); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267384; cv=none; d=zohomail.com; s=zohoarc; b=MMY+n58Gh3sb173dBP0SD9ywJ917fuWlp365M4GfZKYflQ6lqgiRiFwVZTdhmjrq+lemg/UCKE87DsY2np33J92EP3TmYNzbfxUTIyRyNUsoO5NdBvowkSHL4K9DWQrTvePY5QzQNtG3il51LqpIMg3BRvtKQ18alhYeZ5Zv+U0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267384; h=Content-Transfer-Encoding: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:Cc; bh=iXObdSEPqARrP/88DAw1zGP3ccyZ4n9fM/OunRZGCok=; b=bwROixHksdgDAN+V/Qp0GhZ4SyVvrog45Z8/POt1fh8u6E3/00hmnel17c+0IvHPbJRczRA/fb7ViHeuJ5tJNaaB6yRsnkPBJI/M3ML9tBrsOd1w0luDGKhQinIL97eS2C9uU3MQdOzJrS3/Pdyu6aVKnl428SFyaLZvuUub80I= 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 1789267384169458.4081779490273; Sat, 12 Sep 2026 19:43:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aAw-0001hX-2V; Sat, 12 Sep 2026 22:42:38 -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 1x5aAt-0001U9-F0 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:35 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAq-0001rB-0n for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:35 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d8fb334ddcso11412555ad.0 for ; Sat, 12 Sep 2026 19:42:30 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267349; x=1789872149; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=iXObdSEPqARrP/88DAw1zGP3ccyZ4n9fM/OunRZGCok=; b=ssLo+oZyV2d0OZEc9+BAK1pT+ynpDMs2zS+LvW6LUELH8wTBuq2k235KrANEwHD2Dm h3GYO25fXIN/qgGX2Mtk9ouRD00tYy6ZVDAO0KP5EfMpcWxRwjFCJLiDTLiorFsEZbPC mECHFeOcwW4hd4gvhL8TZ1sShoZq6I1sY+n+fCcRSjABLlD5JJHbnwzgij3qTAsxS6NP EesWvgLMDaCELFTCmP/i9+MEXpQBbmXBCTCaeAyvL7bwzR5O3OlOSpdgYMG4yy+PuQ56 E6fVOUIlkWIQ7lPfAdpsfLA7H0MiJxPhgrxGkgdeKQooNU7dnRKA1IabbRaxOqc9ctPf gd3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267349; x=1789872149; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=iXObdSEPqARrP/88DAw1zGP3ccyZ4n9fM/OunRZGCok=; b=rW6hWCNohBXqgFb/7pLrB3VvuGnjuAXS2tO+l3UKynLExskZZTA/0ohlNAzdac30rh hLEesAPOptUKq27GJLJWvoC8QfqR1D060sKJMr8y3ste2h6aGv5jltzzshewe/A0fxl5 xKcqVLXDDokZBg7skL1/1ZqMVHSKm1IHInM7bLoG/WwPM4Uwu7o/AnN2+uZHvBiWCIUO xvUbRLaERK7zPPllYMPH10zeVBQyd11S0y8Bj1/lknxlwIcY2o6yolkncwkjvislSCtu PpcknnT7WayRbd3JFpD++9QwgKCvT1lLBCfKTGPlqt8wNuATyRt4wgC3QKPx+Yp4cWPZ FFjA== X-Gm-Message-State: AFuF++lPN51RIFqZ9tiNyuQsJm2SjQ5bflA256aY67zhBCmdewcVCKwe LzWMgP/HlrWv61VtistiVca3wUiJaoqh0nZ46xxAbuzXuX/iWxuXU29DQ3mfmjla/pMmwEAm8k1 V4m4m0F0= X-Gm-Gg: AYBFou1707qeLYL73pqWfG9r28/UN51uc/pYJHVmpkM4dAa1DWqanirWCzNj99l3y2X WoRZVgvYOHToFXomosOs7pPkQg8lHIna9tF9aV/YkDry6mbRckTnoejg5aqHg0gr+dPL8LxwYKy 48GW5mXjjClKqkbOWrUdfQB5U3Mgp81QztJhk59BWydlje9Cf305KtS+DJIxX8Ttnkd2kDbf160 /i7url8q2QyPO9RQVcROfh0CG8tAgTKq43ZAGaX07pyaGloJTP46xIv2L02rZ7csxSaPTZsKJal e3mswyv6/a38bNL/LpuOCB/cvaHtj+FJDX96c6CDBtfETOeq42qtlUijR9g23UL/wVkW8ban2oT flRIUUyfheBfDVMkh92VFQ0lVFx776cLUfO5CyszPIbbUmYOmesRfmvk0hMFsY8dHp8vCzcRP+y R6287B/S52ttEOpFzgd73FAat4uSRuJZxus9eIAm9OLN5PJHId8xe9mO7YMW7QI0Ya3pREHYpJA S1rh3i2ItckZzzGpA== X-Received: by 2002:a17:902:c94c:b0:2dd:1b11:e688 with SMTP id d9443c01a7336-2dd2a470855mr186697625ad.22.1789267349065; Sat, 12 Sep 2026 19:42:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 43/86] tcg: Generic expansion of tcg_gen_movcond_* Date: Sat, 12 Sep 2026 16:37:54 -1000 Message-ID: <20260913023837.741866-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267384991158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 7 ++-- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 70 ++++++++++++++++-------------------- 3 files changed, 34 insertions(+), 44 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index ba208c0bca3..b674d4c3c65 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -100,6 +100,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4); +#define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4, T5, T6); =20 #define TCGV glue(TCGv,TEXT) #define TEXT _i32 @@ -123,6 +125,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF2 #undef DEF3 #undef DEF4 +#undef DEF6 =20 /* 32 bit ops */ =20 @@ -146,8 +149,6 @@ void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); -void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1, - TCGv_i32 c2, TCGv_i32 v1, TCGv_i32 v2); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -209,8 +210,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); -void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1, - TCGv_i64 c2, TCGv_i64 v1, TCGv_i64 v2); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index a620c8ad69a..26583254111 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -13,6 +13,7 @@ DEF3(divu, TCGV, TCGV, TCGV) DEF3(eqv, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) +DEF6(movcond, TCGCond, TCGV, TCGV, TCGV, TCGV, TCGV) DEF3(mul, TCGV, TCGV, TCGV) DEF3(muli, TCGV, TCGV, TINT) DEF3(nand, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 331a43b28d4..7f05dcf2c68 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -135,6 +135,14 @@ static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, temp_arg(t3), temp_arg(t4)); } =20 +static TCGOp *gen_op_ttttti(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, + TCGTemp *t3, TCGTemp *t4, TCGArg a5) +{ + return tcg_gen_op6(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), + temp_arg(t3), temp_arg(t4), a5); +} + /* * With CONFIG_DEBUG_TCG, tcgv_*_tmp via tcgv_*_arg, is an out-of-line * assertion check. Force tail calls to avoid too much code expansion. @@ -256,22 +264,6 @@ static void DNI tcg_gen_op5ii_i64(TCGOpcode opc, TCGv_= i64 a1, TCGv_i64 a2, tcgv_i64_arg(a3), a4, a5); } =20 -static void DNI tcg_gen_op6i_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGv_i32 a4, - TCGv_i32 a5, TCGArg a6) -{ - tcg_gen_op6(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), tcgv_i32_arg(a4), tcgv_i32_arg(a5), a6); -} - -static void DNI tcg_gen_op6i_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGv_i64 a4, - TCGv_i64 a5, TCGArg a6) -{ - tcg_gen_op6(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), tcgv_i64_arg(a4), tcgv_i64_arg(a5), a6); -} - /* Generic ops. */ =20 void gen_set_label(TCGLabel *l) @@ -334,6 +326,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) static void glue(gen_,NAME)(TCGType, T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ static void glue(gen_,NAME)(TCGType, T1, T2, T3, T4); +#define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ + static void glue(gen_,NAME)(TCGType, T1, T2, T3, T4, T5, T6); =20 #define TCGV TCGTemp * #define TINT int64_t @@ -347,6 +341,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF2 #undef DEF3 #undef DEF4 +#undef DEF6 =20 /* * Templated operations. @@ -369,6 +364,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b), \ glue(C_,T3)(c), glue(C_,T4)(d)); } =20 +#define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1 a, T2 b, T3 c, T4 d, T5 e, T6 f= ) \ + { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b), glue(C_,T3)(c), \ + glue(C_,T4)(d), glue(C_,T5)(e), glue(C_,T6)(f)); } + #define C_TCGv_i32 tcgv_i32_temp #define C_TCGv_i64 tcgv_i64_temp #define C_int32_t @@ -408,6 +408,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF1 #undef DEF2 #undef DEF3 +#undef DEF4 +#undef DEF6 =20 /* * Generic expansions for templated operations. @@ -547,6 +549,18 @@ static void gen_movi(TCGType type, TCGTemp *dst, int64= _t src) gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src)); } =20 +static void gen_movcond(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *c1, TCGTemp *c2, TCGTemp *v1, TCGTemp *v2) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + gen_mov(type, dst, v1); + } else if (cond =3D=3D TCG_COND_NEVER) { + gen_mov(type, dst, v2); + } else { + gen_op_ttttti(INDEX_op_movcond, type, dst, c1, c2, v1, v2, cond); + } +} + static void gen_mul(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_mul, type, dst, src1, src2); @@ -1098,18 +1112,6 @@ void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al,= TCGv_i32 ah, } } =20 -void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1, - TCGv_i32 c2, TCGv_i32 v1, TCGv_i32 v2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_mov_i32(ret, v1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_mov_i32(ret, v2); - } else { - tcg_gen_op6i_i32(INDEX_op_movcond, ret, c1, c2, v1, v2, cond); - } -} - void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) { @@ -2023,18 +2025,6 @@ void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al,= TCGv_i64 ah, } } =20 -void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1, - TCGv_i64 c2, TCGv_i64 v1, TCGv_i64 v2) -{ - if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_mov_i64(ret, v1); - } else if (cond =3D=3D TCG_COND_NEVER) { - tcg_gen_mov_i64(ret, v2); - } else { - tcg_gen_op6i_i64(INDEX_op_movcond, ret, c1, c2, v1, v2, cond); - } -} - void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267555; cv=none; d=zohomail.com; s=zohoarc; b=HyafKOeTQwk661PZ0Np7nI9HGrgUhzLwAKLM+yvz7co94dFN6wOL3g3JGm3zDqs9TdTamQiOjw3Ov+MwcfZqTh0md3/RTUNzuoILHmwGstsc+bnP+6zA9HtxiSWmLSx6NdwKrJCoCj/eRQ6X26nKSuOTPx2GVxrNS+5CXoFl3a4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267555; h=Content-Transfer-Encoding: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:Cc; bh=kVRWaBnFThAilxvxUokXcalYhtA8KLymwGNHL4/p+bE=; b=ZUps9JTn9UBSPkmNB+bHqNjctezNlIRZqhJmkVv6ESD9tbuYJPGhEbs4LNwXDbdj2xTFp51Qdx83Wm8aCfMoUt2kZEN/zWkRG6WBYEd/ywC0j9CJ3fdH+nAceNs4UXKbTP4ecBPisCWOJ72SBKiuTZ8CgI+e+/Q+IAcC1nQD8sE= 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 1789267555209842.5150225120916; Sat, 12 Sep 2026 19:45:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aAu-0001YK-0M; Sat, 12 Sep 2026 22:42:36 -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 1x5aAr-0001Ke-N7 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:33 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAq-0001rJ-0z for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:33 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d91c22d27dso3724235ad.1 for ; Sat, 12 Sep 2026 19:42:31 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267350; x=1789872150; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=kVRWaBnFThAilxvxUokXcalYhtA8KLymwGNHL4/p+bE=; b=CVbDIAU1lBDTGwV+7twMkpqq4hJhDJD7MlkTd61MP2eY368NrTfMq24QNr7CIitqT3 EqZcbQW+iDlxdSj4xq2zc/okDfWHRB3f/aGCQWMg4HJhouO4dzf5/Q7yleZDE/aXhLgp 7G3wr44hAQHT222faTzKe/71mDGRsjWnOEkHUGUFhaE8sidH/Te0tcJT1tt+ugxzTYHg SyDAZ2UZYFAT9MR6ZjmiBZ9M/rtHau4KHLasVYJaotnj2nnxTQwMrZovQQx7TXd1i+4D DqBT7q2J8nE2hKtFM6Kdh8KQIq/gRzADhLC9SSLVBHJSQmVChbCgzmxfK4KNkeCN+0bE S84w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267350; x=1789872150; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=kVRWaBnFThAilxvxUokXcalYhtA8KLymwGNHL4/p+bE=; b=p84RJnC59J0tETV6On1yHPTnyXZb8PoD/rj0UnJqytHVJHM/1QDwIc/E+x9hNrFS3c 5Ds/dftaWMs4VayRQFck4ScDpQZ0ZW50BsC7lnYYTAlK/TOLwUHH1WVj949USuZn8qc1 IQigkOy+/1ctL4x2MX2qqpznyAjyFRhJm9mUmlBIY56RQ3T3KOYArEK0+UMbQkaCeZ8t U4NfrUvTviMbFyy//UFS9m7/KSzGqWHkKGvTtjkGEru4rGzJk1AONIF+oWPKR/18BmOL WnKYBU0K8rlk0LSzcZzwFWLJh1ptfaOfZDa7qpZaeffGKrcyiDc8NMBECYz1s4HtfFfO UB4A== X-Gm-Message-State: AFuF++kvN96lYK/geziKKCJ+DYcId6VLoOc7YBCJEeZWvkXZadvRRcwu qEkLnUANnTm4C/xMQxQe7LjtmBY3YWty/ER6E8JPNb/ZjcxwlStifrjAPmnMxII2I5nxlYNscqe vDS1jORU= X-Gm-Gg: AYBFou0nwyp30ly3zo35OkcpjsXDRpOtkRkpKN3x78Z8YqEGB4/HofHz+mQKQMKApap BliICx/bPfZ3rrFMRyX/XtFawGUshnFYUGtbMPDacwLtHXI7xjXbTnS91/f+VRaOYTfIBhcHPyy f+wcmuG+Y7BtlgOaPsw+QOjm6pc/58fUzmT+K3FlWM7Y5OZcY55Fdjbll1zSUEFe21OW8w4F5WV 0bMHPOQj/bNZ0IynSpJhvTfS+alQ3TcrbcqJBcXl8c7txb0dihv3dvAqdRwmq4YDeQFrRkuvmJ+ +hRJC5l5h0TVOeXSkg7caJupLpzxoUjyrrCgw+kVgSfOn6dOM4rEN0stSnZhinGACLyp+FyCoXm Yq+2D3orf8E5HTT6OdbfGvgXVULwQ9xFFhu4HfYPhOHTzPNrLHOvBV7RBS+HMzsmKlyt6E3qOiQ CfwyIFo4zRqzP4YAQBd5jqStHP5bwEXULKKJtGe8rYHcm3dgwYJAx74T08FgWmAF36tCe+xAdiz M8b3Xt5 X-Received: by 2002:a17:902:d60f:b0:2d8:d4dd:24c0 with SMTP id d9443c01a7336-2dd4bdb245bmr86786335ad.21.1789267350033; Sat, 12 Sep 2026 19:42:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 44/86] tcg: Split out gen_extrl_i64_i32 Date: Sat, 12 Sep 2026 16:37:55 -1000 Message-ID: <20260913023837.741866-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267555568158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 7f05dcf2c68..8a5e0287411 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -411,6 +411,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF4 #undef DEF6 =20 +static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); + /* * Generic expansions for templated operations. * We have used compiler type checks to ensure all TCGTemp @@ -537,6 +539,11 @@ static void gen_eqv(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src); +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -2273,8 +2280,7 @@ void tcg_gen_abs_i64(TCGv_i64 ret, TCGv_i64 a) =20 void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) { - tcg_gen_op2(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, - tcgv_i32_arg(ret), tcgv_i64_arg(arg)); + gen_extrl_i64_i32(tcgv_i32_temp(ret), tcgv_i64_temp(arg)); } =20 void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267373; cv=none; d=zohomail.com; s=zohoarc; b=l4rOgDV3eKT3N3+ye2y/rYAIO51NlppPdbtvOAooHmHaAmp3WcXnUBH8/Qn/xGM9NIgPhn2pI5DEiB91IuH/zH+FBTuv1B8VMEUs2pDilLS8FXYNViXFT5uqsqRSilnsude+YVp/ohLn8Fszny9IWNMYN91ZnZu/sRPrR6nTe44= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267373; h=Content-Transfer-Encoding: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:Cc; bh=ZOARFRdGEH3TnPRiwqzH1IlHy5ZE131PKy1PZInpYgs=; b=SDuOnNOKjXOc1p9TsiS6IUab/L9lf7T8BrzLLM3WL/kY12yCQaELLblzicfrz/VZf1t8PEziKHfXxaZCOhLvm6O+ylRdfrsHTJlPafsoH+xFzxpJ/0003sBDfD6jJ9DT0Tf/sKOqQF24j2sRSepFe0v+VCj1AeBOdiTmjvw9OcY= 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 178926737311859.876659566294165; Sat, 12 Sep 2026 19:42:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aAw-0001ki-MT; Sat, 12 Sep 2026 22:42:38 -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 1x5aAt-0001ST-7t for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:35 -0400 Received: from mail-pz2-x15.google.com ([2607:f8b0:4864:3b::15]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAq-0001rO-Iw for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:34 -0400 Received: by mail-pz2-x15.google.com with SMTP id 41be03b00d2f7-cc4c3304784so1018015a12.3 for ; Sat, 12 Sep 2026 19:42:32 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267351; x=1789872151; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=ZOARFRdGEH3TnPRiwqzH1IlHy5ZE131PKy1PZInpYgs=; b=T4yORxb2GHZ9Sqeh5+pHxkIElVZGAaEvumXdFR3yfzZDoUUks+OZqa2uEle5ElqHX6 0xNcbihK13R45QPZP+LerD1/pGwgjGFgJnbU5M4BE73QCydoZ3L94lIikKjM0Tx7WGTG njtnQojVEvkmGyddFD3D1Tvcg7R0eSMvrhdSmtPVQ8HnK242pqITfNmwj9smJCnqiBYf v4OaVw715p227AlVp0Wk8xnwglTuDu7byVfEpQ21WWPr8y1JmblgzaRNweZZiVIuKsjh llpvl6ZoPGK/KnUrSvS9t+QxbpQ+MjLVaNWu4CV2Kf6qs0fx322h1EmFQqxCjdrUdxe9 AbfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267351; x=1789872151; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=ZOARFRdGEH3TnPRiwqzH1IlHy5ZE131PKy1PZInpYgs=; b=VLGrg2ooLfUw3ZlOfK78/f2FisF2tXzoLQnC4avDWyL9xJ6Kja7IS7SxVGiCaEX5k7 ACn6UieLxAFAZR24J0O5Y5EjNhhc73VGEaVBdty/mrlePrmYlb80TI4HMCEx45eDT3cT TO/6mgjPpGFbHPDDru1RJJpwICcg824yEkYU66ygHUcRcoPkB7a0htIgK7eFpQsPzeSy aoa5PIFFV/757Gdtn/+BxiphCaPKkBCoCSYbZqRmErFHJY4tpw5cZ6uoUC1L1OxiaM7y 7zJ8bXAw3PURkIcWXyvrbxaIHSR/8HceaqBLIRh4Bq/mRXcpfrHSs2YGQx903F+CW/3/ rBWw== X-Gm-Message-State: AFuF++l81gWlIoe6gYEPXWzVS4CbKJ4U1PjowX9+4RB9fnErQkitU3p/ I79KuV4jIe8PWo76+pUb3xEzDbz4W5lMICqUp+Cu8BwJrEBwglkN83XxYfahaZSAFQKWTVSvCmk Vc+nKmi8= X-Gm-Gg: AYBFou0K9iWrT4I0Jv0h5FoV2XIXdSDtNR7Cr4VQoFy7OtEi5tUEO/upbV2LqzcIWEF 8tnqOj+3GYIDqw4TFSdKY26V/li0hVVVfL6R3ydkyL0WmqQxiG3MEXH9eBMOiH0lb/kjIZhHxgn XwfFekqarIrIPQiQ/2sPujsdeN3ll6Kq+aNYRkoZOfQQcggKQwvfw6ZNXjLVOO4Jfhcj1O/Gq6n X8+arxYZxWzgyMnOYo+L6fQQ4kwV021Ff5JAWB0ezGdk9cqsdTtzDOR0litXerUh5FPG/aDXsQS 5GzS9B7F5zzQp5wKmlOw9s95KV2A7egxs7Y1VEqRxU7xebtIWAo0fTBGmFP6lqZ6dg2iQcYoewJ UTWNGqbi20cD1Ndmz3LqZl9yU/ax/5PMXgRquiE8wusrCdFZQ9OY36ecTGRwp/3wYPx0MOLaLbq Th3rag8B32ac8mER6Yrfae1QJbCcUUJO9Mt3H8zisb7exDR7QfN4lkmfAtjcl4wt/krhLW7/l1A qKyNzg= X-Received: by 2002:a17:90b:3810:b0:398:9be8:ea68 with SMTP id 98e67ed59e1d1-39d9c35dddemr20147552a91.21.1789267350916; Sat, 12 Sep 2026 19:42:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 45/86] tcg: Split out gen_extu_i32_i64 Date: Sat, 12 Sep 2026 16:37:56 -1000 Message-ID: <20260913023837.741866-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::15; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x15.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, 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: 1789267375016158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 8a5e0287411..1b297652661 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -412,6 +412,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF6 =20 static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); +static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src); =20 /* * Generic expansions for templated operations. @@ -544,6 +545,11 @@ static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *s= rc) gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src); } =20 +static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_extu_i32_i64, TCG_TYPE_I64, dst, src); +} + static void gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -2291,8 +2297,7 @@ void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg) =20 void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) { - tcg_gen_op2(INDEX_op_extu_i32_i64, TCG_TYPE_I64, - tcgv_i64_arg(ret), tcgv_i32_arg(arg)); + gen_extu_i32_i64(tcgv_i64_temp(ret), tcgv_i32_temp(arg)); } =20 void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267514; cv=none; d=zohomail.com; s=zohoarc; b=eWnkhuyv23Q7CSL01j/Eo0AGOEozwB3GT3LIUQb57zt5MqK7oLlxAkzR6M5i13g5n5WuaUZGFM7i23DKHiguSPU1gzpZWSZbBuS5Mibasgkr+shiBA7LeYNcwNoXBbHrVPx65gyC0ef5lFl9HenGganIjDkIDcCb7bflFb/mvN0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267514; h=Content-Transfer-Encoding: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:Cc; bh=EOAHEGKetRzJkEKBWy0hUUF53K6lRXkpf5AW6HX3/i4=; b=mRLo9quwd9tUWJenzNcJPFXM7KPLKBQJ13gPpUmjZmCVUZ9MztDUn3vj0f72z/AH0O1F4x1WKwzq2+q7U5cK1Tt9VxNE3w1D4qknSdG36Qo74WMlJc3aSOD3u4HXPGJSrcuPUxmccYXmRoQ+Sw4xAmyLicZqCy65A5XrhoyX1uo= 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 1789267514001163.37523624353935; Sat, 12 Sep 2026 19:45:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB0-0002Cu-Fi; Sat, 12 Sep 2026 22:42:42 -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 1x5aAu-0001fj-Qy for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:37 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAr-0001rp-Hv for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:36 -0400 Received: by mail-pz2-x10.google.com with SMTP id d2e1a72fcca58-85469d249c6so1155953b3a.1 for ; Sat, 12 Sep 2026 19:42:33 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267352; x=1789872152; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=EOAHEGKetRzJkEKBWy0hUUF53K6lRXkpf5AW6HX3/i4=; b=dPxTL3PaGAFwdxPGc9f0ALqNVd0cZu3/1Bq3BFSGEcNb4GTc92kab/0XdkiajIenTU 2NQXyraQsTEFsXApgkphoKaanx+JzCWvvIMwpD7dIEq9yU2sJzktN99VUBaLH6GU4iGr b6kpZ1+SY5T9/hxu4O7DMYzxviGVGF34jGbAF2hRNuCK33/I7PgHkO0Mc54RTPSK2cff 2Ng783X5hqrtvrbxqZTyZhdO6h9Bh3tO6H5zcQYUohUAWAp2GRgymfanhVde4Bo1Ndnd zv3cNGUpP8T3So9IFEcEXVYqyUIgPdvbhNNTGRx16B1Fn36ogPkw4ZVl4gcm2347nSn+ 8hoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267352; x=1789872152; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=EOAHEGKetRzJkEKBWy0hUUF53K6lRXkpf5AW6HX3/i4=; b=ss7tUPWWl1A+bj1SytO9HRePx4s9fAbMS4yOItg711lu+RiKSeYG1aGm/Svdn0zETx o06fTuYWVdEuwmo5lDYx93G6uxpp8vxMZqnsqW81yYsI2345CCLNSgNKTFyB8xitCTjp xU1ZOShzwCqdagqNJ4y9isl4Tf3/cwhFNxOEtBLZnpbe7qFdr5oSiw/W2ICpi7In43RJ 3ftuO0Tn3mZVqIOkTPcFziTsqojSfb0wXiuCeJZ1F8am5u0ZEPITB0Gyorc64We27Ifr sOVt/r2+Q/Vago87w5Xn1S9rEWxZ/TE0G9IciIiL/k8ohctzyuIj0eImhs8iIddze/J+ HMqA== X-Gm-Message-State: AFuF++nRxPJIJA2+i56GWGQKdqBskwUPjQPvLgsaZZ+AqLoZXcp3Ytf1 YQc9fVaxwIslWvKng2CkKHwWFtIncdzfoH4OyXxy+uwKvVo+dzyLWOW1VWa/ibTvUOlzdejh+7p cYqDwNsM= X-Gm-Gg: AYBFou3K3fFXdAxwXTJ2M1YNKQZCMnyIEWBbedWvmUOJOoOmV69o4NGT5/kYHaonvtC XjiQ5Quq26olDB3p9JU0U8Ne+3lxOMuduCmFNxdkQRn3EmtdMUs88heJr61MpRXPBhnlpdkf1ni WEgfY9RbyhueHM0sdxQ7z9pE2ubZcyFpETdNk3Q2LG0wQ9WnFFZo33sCCdrAzq7YPCMRt/6dMOq axVhHHdCKhcbCQBL0/6ZPNBqRGXqlnw5eUDP+T94RdbRH5je6j9GeVfLFXXDhUsXmK3Dr+To7mp DH7FtJBR8tu37Qs/4vqwYOxp4uWtZzh7+4BCN3PBLAzvkKjv/DDHXRbyZ7niMGRFWOstzaU5tkU zyRSaevAcEB4hurREHex/tYWG4bdWY/BrMAaYC2m4QvOwfgxGOmySzl/bp98DBRnfk2E1PhAYQy BKVNj/bnrtFDy9OMVMYd1nBEFq9fWwOtAg1l7xBGotcbVJqsz7nY+za23xL3a/QbigwkXN7vki3 aCZWts= X-Received: by 2002:a05:6a20:da0d:b0:3d0:d1f1:6ec5 with SMTP id adf61e73a8af0-3daed0ff5b2mr22795205637.4.1789267352042; Sat, 12 Sep 2026 19:42:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 46/86] tcg: Split out gen_extrh_i64_i32 Date: Sat, 12 Sep 2026 16:37:57 -1000 Message-ID: <20260913023837.741866-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267515448158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 1b297652661..8268762f182 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -411,6 +411,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF4 #undef DEF6 =20 +static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src); static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src); =20 @@ -540,6 +541,11 @@ static void gen_eqv(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, dst, src); +} + static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src); @@ -2291,8 +2297,7 @@ void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) =20 void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg) { - tcg_gen_op2(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, - tcgv_i32_arg(ret), tcgv_i64_arg(arg)); + gen_extrh_i64_i32(tcgv_i32_temp(ret), tcgv_i64_temp(arg)); } =20 void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267501; cv=none; d=zohomail.com; s=zohoarc; b=Hfyqu64DmgHwlceNj5LZr5cBaSCKKmXZpw26lngtPBDLQTvz/XQs7sYV+LnzOVFniET9tQwFYsCLUW/z1rpSIzzCQfz+s+Zd/61idQK8YdQhVmwi9AtvGNrWT7r0+crRjQ8i5q+wmnOFhp8QV43RP9tvkUfq9RTcBDoNqi1WNJw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267501; h=Content-Transfer-Encoding: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:Cc; bh=iV2JW6iooGyhZ9o7GgovMAvWd6ICVXFlqq5GOoX9SSY=; b=kNigebbJBpa0qVyV5g6LY7kQboFouG3Tx+HSomnKhYXWawVLZZIhxiqYgLmcXkzupuXKex6NZ5bFxTswALJP6Gt+xkpDilQkc4TRebhKnBkn891fe5xjogJJAeQS9E2jtISuC8M7h2phguvCt3n2qvqpavfLaWa0AOM0EU5ogeQ= 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 1789267501150345.5896573336204; Sat, 12 Sep 2026 19:45:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB0-0002Am-CA; Sat, 12 Sep 2026 22:42:42 -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 1x5aAu-0001f1-NP for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:36 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAs-0001s8-MJ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:36 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-86a25369f16so1674498b3a.3 for ; Sat, 12 Sep 2026 19:42:34 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267353; x=1789872153; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=iV2JW6iooGyhZ9o7GgovMAvWd6ICVXFlqq5GOoX9SSY=; b=OVMgFt6Xvggi3h3/DCAxWSrj+LGzV9GOXcOzKZtKCSL/fvA5lHmtOS0SsByYBndmQT n3F8S90Ix6gprXCllEkI/sd/E3ofF7r/37kjz2qraN2YfQ6BFqGjFNH/Xc5qGE4454mA vvcW5yOdbVYV+3pFiPDOYteynenW8xpt3yGNABEs3pqtCktjFdZe2HyOdllXwrBxe8U2 oc+fF2qht4H0sbNBkSK+Awm7QTTCHZc0YsXcBuiotsNvkMSZO9QkyN3nk1C7sDGh6wZ3 ZTJeBxpM7NNP2UgjJBjHXpIAIdDVtdbzcFgjA9iP0cZ1U96u58z4JgJ96WRqpvqEhkB9 cf+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267353; x=1789872153; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=iV2JW6iooGyhZ9o7GgovMAvWd6ICVXFlqq5GOoX9SSY=; b=MwEOmsZPAjAvqCbx/8xmwTnrIFupGzleQ9XeMb6lKpq3YLr0vRpRHPJyC0bQcs2aAF BY4Kx09WOj1EWOReGYYNTGl9Bhu2rE0Z0pqTj6SQ4jD3wdJ2aZkkf41/BJIpHH54cIyx dMrcJ+NgBZVg21ceBr777XTZd5C1PPz3nt/ejKoqQtrlrNxTh4v4NURAFqZrETlyM5X9 hF77QVzCb9FxIY1DI2on/d/lwl+gVocOoKUWgjdjCXJVy6MCOPhWymEq0Knk8MT8zcl/ +GeRIlh1Elctq+OdXrt/7XzP0ut9PeLm/zdYpgejTnlco8DfDAolZ9lldu0elJFnyhsD wbkA== X-Gm-Message-State: AFuF++kmeJ2phsi6ENZs6hlyEB7D6c3p4Fc27J3VDgTUfYEi12qEwPBC UfheCT2/Gv9gGdFfZkboU9yvPll8fPxpqpI8u5AOYC5If4sJFj7EiOKfsZWNPXONTnKSwDwvogK TL4D/jGc= X-Gm-Gg: AYBFou1vxY+64M3KBvxOygBCqCrq8e9iUPgYEGExTQkJcsPd9CIjNmLykC/E+tNcOcK DDh3pCnWeQFPYaZdD/hgsqcIoxkewH5U9BQcSqpADY+h5pqG/DUMvFzFE3koWH+b0bCN2guVgzQ 5gxUnyBabY32ZWB55tXuHOlWv823uSW9w9jIxvF/9qWidMydnLnDiFmcDP/YDJ70FOOHPpZ2As+ Q6bHjZPrp1ME8tjAx+qXvOftjfDJafp4dSQvs3fMtNTRBHKm0rvyKTVUvr6rw2omsg+765pRGc9 /3J+oO+3MgNerZlUQnXV1TvWRXmUuy0DFB+XOSw2LS8KXMu4kIUJQhfV0AzSqasFZfGHUbOYXrn XnYvvSaYk96/dm3mcCQY5W8JP3xpmiBj9FIniPab6oEaONS1AYRn8aV2UJ7iIdOTiqLU4gr4S1+ hyedpFSU7jfL+nuzW4M4lRN7QnKJBIxe4fMiMIOuUBA4QzVINVvXYCNa3ERoLJ+I2GdTt078gyF /DMgO0= X-Received: by 2002:a05:6300:670d:b0:3d3:ae1f:d7f6 with SMTP id adf61e73a8af0-3daed617e0cmr24300378637.22.1789267353112; Sat, 12 Sep 2026 19:42:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 47/86] tcg: Split out gen_ext_i32_i64 Date: Sat, 12 Sep 2026 16:37:58 -1000 Message-ID: <20260913023837.741866-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.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: 1789267501644158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 8268762f182..fae6cd7450d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -413,6 +413,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) =20 static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src); static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); +static void gen_ext_i32_i64(TCGTemp *dst, TCGTemp *src); static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src); =20 /* @@ -551,6 +552,11 @@ static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *s= rc) gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src); } =20 +static void gen_ext_i32_i64(TCGTemp *dst, TCGTemp *src) +{ + gen_op_tt(INDEX_op_ext_i32_i64, TCG_TYPE_I64, dst, src); +} + static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_extu_i32_i64, TCG_TYPE_I64, dst, src); @@ -2307,8 +2313,7 @@ void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) =20 void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) { - tcg_gen_op2(INDEX_op_ext_i32_i64, TCG_TYPE_I64, - tcgv_i64_arg(ret), tcgv_i32_arg(arg)); + gen_ext_i32_i64(tcgv_i64_temp(ret), tcgv_i32_temp(arg)); } =20 void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 low, TCGv_i32 high) --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267518; cv=none; d=zohomail.com; s=zohoarc; b=f65GlchGEauxOaOdr1p0quBuAOdqi6RG/wGLGhGLGLpUPfL0wL7Akp9IssJ0hJtEtiVwSkI3w06buP1nHD7Ya/R1aTxF9BIOqOC5EvgLDjdYR4ihmHP00aF6iN9Fb6xxze13lio3SG8l3fID03/ocH+gfpm1fKZPxnOv3vZLHQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267518; h=Content-Transfer-Encoding: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:Cc; bh=WlwlrVY/DkWl6vYBCl2k+q6ogIoFX6D/yFCJIEDRLt4=; b=kfSoqt1n9iK9xn/HNjyAIz7JrK8uI1hzykQNJpSnZKObNIEszbHqoOyySqJkX1fNpqwV/CMm69epYnxYdaY2A3cnDQNejDauPp3cv2GihgYueMyz4/C7n8YMdWldA+ZQIUgBT3FlJbx/5j6e8hxPEDPR7k5gWJFCK2SODB5LTBE= 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 1789267518391224.4580357673609; Sat, 12 Sep 2026 19:45:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB5-0002mQ-Pb; Sat, 12 Sep 2026 22:42:48 -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 1x5aAv-0001hY-QD for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:37 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAt-0001sQ-U2 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:37 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2d6e954afbdso16523195ad.2 for ; Sat, 12 Sep 2026 19:42:35 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267354; x=1789872154; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=WlwlrVY/DkWl6vYBCl2k+q6ogIoFX6D/yFCJIEDRLt4=; b=ODPMY77pEVOhl6K5O3Z3M8r792sCESrtfegZTytRPNwUWs7e8LOkm4Ikm+u3qd6CPT 4/rP6fi+9Iu+ko9ArLQv+Gngm00yBTrPglhTQozcCIoY3M18EC+iz6R0EtUk72tA3P9r x/lh7rSxPOcNp4ClpWzgWOvPg8jKt6P6d25hszDae2bnvZxlfy6w9/KiiVn4E4t6TK7W MBs74+hz81M2nvPjWERPvzJ4U2yyKEv41v1n9kgw8bIuzq5Jl89WsqY9YKRuuoSGpds5 urUxpWY6kRqCb+xkzOQtsi5qhcPOOnmWqsCdqV9t6qxS1mYNDnjVKS9b19u2Sq2OebKn /AvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267354; x=1789872154; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=WlwlrVY/DkWl6vYBCl2k+q6ogIoFX6D/yFCJIEDRLt4=; b=DR2xQoBTV5YZku+waw30QA9v9guJEqcRjeoXHO+bplYKd9zIzA0Bztj/nt9axNOl5t /0TObh5u0Z+guuZBMdU8teX2udFo+LCKd8y/sWdnL4lools4IIKf8/2Wpyu2PEW2QkVV txdPRZoiNsYGH0cjGtHo91g51TTn/IwM9nIE7ht1Vogat6pDE79yLmm45Fu9HMMPDPch TCSESKeiwBb+lFVsfqnNXIuM9sf2GLJiPk9yWrWmGj01xxM3C/ptbPX3P7cGkJ0OMBrT Qt8gf4bRIBZG0KM8oNZzrd7m397rQkHNVaa4LO6nBYM8aBpJs2+Ka5UibWrKDZADkV3e RamA== X-Gm-Message-State: AFuF++nDm4qasg7W4dDVZaTMLDK1xzm5xgmJKMIGb66iaHSe1L7C3EF+ fvAm+dHM2ex2wmqMMi3047ZjPl2z1F6yAvMZ/GkwPMiu1LXDLwuj1oefFgai7GInt9hbHb+XaVW QRDZQ X-Gm-Gg: AYBFou2TsQADgYbf2jbQj0Scrl/RBmPX7cpS6lqzdzCndvC7paRVN7Lemw9Xtla5CJq en2U5+yaGMLOHpXeFyvTgWMMo02CoRAvHpP4OqZ1drqHnM+1iCqLxbT2RP1l7K206ITwWXUm3YD Img5WZRHaDQPmcWzDzHgNVJEgW1hts7L077wZByMdOFL2i1c2Q4GsAQ65ti0FbDEp33ZKIFzgBK 5Q9DG94iN+W0xV0j1y6TplOOaqlf+SPi215H+C9YMxIWv1wYvisJjwcMTwKHg7QETwqFsCvXs9R w0EgSTe3m1mN/fXMeU0QlUcq3HuaNH5k/idZoUiW+x3aaQuxVxHsMw3hCXb5hbrRf/NjLzVZEtS zwkpsgC+0njM+jVTulE6EPAv3xR7I5qurkQ3Ur1lbdSoEC2ksgX6YvaZDryD4PLpuqoeNqY39/M 4nEy+YVMyqKbR4cKr9yDcyaTtp6n0TA/jsDX0fk2pHTFlHtpwlQeqomfncESR27tZKOLbJ1PZCy os1clg= X-Received: by 2002:a17:90b:39af:b0:398:bf7e:b267 with SMTP id 98e67ed59e1d1-39d9bc0cdcfmr19114875a91.2.1789267354297; Sat, 12 Sep 2026 19:42:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 48/86] tcg: Generic expansion of tcg_gen_clz_* Date: Sat, 12 Sep 2026 16:37:59 -1000 Message-ID: <20260913023837.741866-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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: 1789267519503158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 54 +++++++++++++++++------------------- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index b674d4c3c65..755e89d7715 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -129,7 +129,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); @@ -190,7 +189,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 26583254111..202df7a62a8 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -7,6 +7,7 @@ DEF3(andi, TCGV, TCGV, TINT) DEF3(andc, TCGV, TCGV, TCGV) DEF4(brcond, TCGCond, TCGV, TCGV, TCGLabelPtr) DEF4(brcondi, TCGCond, TCGV, TINT, TCGLabelPtr) +DEF3(clz, TCGV, TCGV, TCGV) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index fae6cd7450d..fabec509aa9 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -496,6 +496,31 @@ static void gen_brcondi(TCGType type, TCGCond cond, TC= GTemp *src1, gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); } =20 +static void gen_clz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + if (tcg_op_supported(INDEX_op_clz, type, 0)) { + gen_op_ttt(INDEX_op_clz, type, dst, src1, src2); + } else if (type =3D=3D TCG_TYPE_I64) { + gen_helper_clz_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + } else if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { + TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t2 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_extu_i32_i64(t1, src1); + gen_extu_i32_i64(t2, src2); + gen_addi(TCG_TYPE_I64, t2, t2, 32); + gen_op_ttt(INDEX_op_clz, TCG_TYPE_I64, t1, t1, t2); + gen_extrl_i64_i32(dst, t1); + tcg_temp_free_internal(t1); + tcg_temp_free_internal(t2); + gen_subi(TCG_TYPE_I32, dst, dst, 32); + } else { + gen_helper_clz_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src1), + temp_tcgv_i32(src2)); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -828,26 +853,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_clz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_clz, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t2 =3D tcg_temp_ebb_new_i64(); - tcg_gen_extu_i32_i64(t1, arg1); - tcg_gen_extu_i32_i64(t2, arg2); - tcg_gen_addi_i64(t2, t2, 32); - tcg_gen_clz_i64(t1, t1, t2); - tcg_gen_extrl_i64_i32(ret, t1); - tcg_temp_free_i64(t1); - tcg_temp_free_i64(t2); - tcg_gen_subi_i32(ret, ret, 32); - } else { - gen_helper_clz_i32(ret, arg1, arg2); - } -} - void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2) { tcg_gen_clz_i32(ret, arg1, tcg_constant_i32(arg2)); @@ -1769,15 +1774,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_clz, ret, arg1, arg2); - } else { - gen_helper_clz_i64(ret, arg1, arg2); - } -} - void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2) { tcg_gen_clz_i64(ret, arg1, tcg_constant_i64(arg2)); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789267376868217.87312517507007; Sat, 12 Sep 2026 19:42:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aAy-00023w-VN; Sat, 12 Sep 2026 22:42:41 -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 1x5aAw-0001mb-It for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:38 -0400 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAu-0001sr-O1 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:38 -0400 Received: by mail-pz2-x0f.google.com with SMTP id 41be03b00d2f7-cc1cea4ae2dso786917a12.3 for ; Sat, 12 Sep 2026 19:42:36 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267355; x=1789872155; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=na2WKq4hNVSjSEKdnQMcVOQzt3kswfiu7Fj2vGTHCjk=; b=F+gtOjM/KXNU7A3hOk1bIqodEFgLAVXB2Y4cbXohxM75RvBB+57XghssVuqyixmbEd m6K4dUvU/4Oiz80bX/PrUdGT5EGJjsrLSOQtdhkS0Oa5sxyNIgVkAJxqsk2O4NRmoL18 em0Hwn1CeWr0FxFxKKxlfG4EM18Tj9uhSuQROolJNT8yTmrjbFdcqRi8Cm4pVytQp0kl 2yBbVeODYNXzijbAd24SIq0G1eWk871G2kY4amVA4YHs/HYtI6JiusxVUA9FUQp24OQU DGXn7OEvNkGcMzLk6921VtdG0tzEDSALmml0MeKS1rYT0NXJ56VU2nsMjqwbx03xb4Wo irnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267355; x=1789872155; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=na2WKq4hNVSjSEKdnQMcVOQzt3kswfiu7Fj2vGTHCjk=; b=kyQVHCmyxGcM8rTUuP5rVWtkI6clmJcvHbrBzf+UXqcAdZMJkVFMG1dLnuXNghDZ6i j5XK/5oPyYbJkQojcqarnmxYd8vzMXX0hQvto959KrG5R61GXM0cQKuvnJKjBl6+6YH2 vzz5pM1F1Z5AzxerIpV/JKdArV6ziROV9F93qLQH8WwESV0cRoHunUjddFQTYdxFGpVA QPb/+pkWSvxlJlWyj0hWimpuMeEqKMkzrHcFvGXdlluH4hmFpwaXkD5Gl0MWqzfOh2VO P6dq4zzaoVyjiQfceAFUFTP1ohirDAoE3TfE6wqsZKjy8cGkGxcuZkhnfwNsSDOAIRkx w0gw== X-Gm-Message-State: AFuF++kzOE0EsUxs1of+FoDQDckFcIrlWcI44ZnSd72hQ8i7Mnh1Sg6Z kCDP8Awc7xLp+qWRwPUAUGEEfWz+TsjzfMQibH80LXsjgGwy1qVNhQd6NFjTzKuabpWjs0X1dWq JPVn9Ozk= X-Gm-Gg: AYBFou0SJ9MQrVvwbDvSxMbTxQbYinZNil/T9qwe+ZMdbrkGKtVoeV/mylYZyTEZpgi FVT7hAINQYk/dF/XLCI5MYeM7SluOXiWk5XkHR6rR6OVuANGhluYY1IWC5YDhMZZK9YiHiUmIYP 99yA1iAZRzG/U9vaUxvc6D0TotmnFFcHYNPJJ0PBbXT6LZ06A8VtyjsDbV9uw3T0yYDt/IwRXE6 RIkMjfeShexTm1H2ez2TDXuC8Ve4hvY7bl+mB3rkaS7GSUhv8wgnxua4Xf/oZoFfeTU8dDVzldQ PhIJ/tNDc+gDD6hevDng7zElkmluaeJRYWvetgTpexDF+nAT8WRZedWCAkuFVEYvoodNLOI7mmK PU5MQd0PrVk4YF39GLKDngam3CvB5AnMOF2xwYug+aTs6lVm4ifwou9tQeTx0E2ftQyDqqMoAMD KGrTsxH7l8u6KfL5ePu1uDt5XcCNkuXZH0vZx8OuaA/MVChQV5wUXMIDFPJ3uAORk6pIRDy12+o GBFHg0= X-Received: by 2002:a05:6a20:3ca7:b0:3c3:791e:5e18 with SMTP id adf61e73a8af0-3daed16281bmr22869107637.7.1789267355244; Sat, 12 Sep 2026 19:42:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 49/86] tcg: Use signed integer for tcg_gen_{clz, ctz}i_{i32, i64} Date: Sat, 12 Sep 2026 16:38:00 -1000 Message-ID: <20260913023837.741866-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0f.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, 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: fail (Header signature does not verify) X-ZM-MESSAGEID: 1789267378947158500 Content-Type: text/plain; charset="utf-8" We use signed integers for all other functions, and the sign of the second source is not meaningful here. Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 8 ++++---- tcg/tcg-op.c | 8 ++++---- target/ppc/translate/fixedpoint-impl.c.inc | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 755e89d7715..44fa7886c60 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -130,8 +130,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); -void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); -void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2); +void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); +void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ctpop_i32(TCGv_i32 a1, TCGv_i32 a2); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -190,8 +190,8 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); -void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); -void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2); +void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); +void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ctpop_i64(TCGv_i64 a1, TCGv_i64 a2); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index fabec509aa9..276bc11ebcc 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -853,7 +853,7 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2) +void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_gen_clz_i32(ret, arg1, tcg_constant_i32(arg2)); } @@ -898,7 +898,7 @@ void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_= i32 arg2) tcg_temp_free_i32(t); } =20 -void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, uint32_t arg2) +void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { if (arg2 =3D=3D 32 && !tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I32, 0) @@ -1774,7 +1774,7 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2) +void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_gen_clz_i64(ret, arg1, tcg_constant_i64(arg2)); } @@ -1808,7 +1808,7 @@ void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCG= v_i64 arg2) tcg_temp_free_i64(t); } =20 -void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2) +void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { if (arg2 =3D=3D 64 && !tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0) diff --git a/target/ppc/translate/fixedpoint-impl.c.inc b/target/ppc/transl= ate/fixedpoint-impl.c.inc index c3d8bbf2670..4e521e44bb5 100644 --- a/target/ppc/translate/fixedpoint-impl.c.inc +++ b/target/ppc/translate/fixedpoint-impl.c.inc @@ -1551,7 +1551,7 @@ static bool trans_CMPB(DisasContext *ctx, arg_CMPB *a) } =20 static bool do_cntzw(DisasContext *ctx, arg_X_sa_rc *a, - void (*helper)(TCGv_i32, TCGv_i32, uint32_t)) + void (*helper)(TCGv_i32, TCGv_i32, int32_t)) { TCGv_i32 t =3D tcg_temp_new_i32(); =20 @@ -1567,7 +1567,7 @@ static bool do_cntzw(DisasContext *ctx, arg_X_sa_rc *= a, =20 #if defined(TARGET_PPC64) static bool do_cntzd(DisasContext *ctx, arg_X_sa_rc *a, - void (*helper)(TCGv_i64, TCGv_i64, uint64_t)) + void (*helper)(TCGv_i64, TCGv_i64, int64_t)) { helper(cpu_gpr[a->ra], cpu_gpr[a->rs], 64); if (unlikely(a->rc)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267375; cv=none; d=zohomail.com; s=zohoarc; b=VQVWIRCvpxugzhhZZUkxVJjOzCtI3C30gI53Ct/zXDP0wBT4JeCc60uNasWtdQPzL4hPzktDttwiQAGOXVKzQN1IccYjW0KprvpVV7fGkLNyom03M7CZqleJWO+F9mqyTGo828VE2v95eW7wrQOiXor/MSUclZVUccHT0sPcWxs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267375; h=Content-Transfer-Encoding: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:Cc; bh=D3OxlNFHU5SCwlxQ/oZU9jTxP9O+Oh18quI7rfKHpdE=; b=nPI94ejdl/JKXTZ7aqLaWBY1AnoVPG2kNBiu35eatV19KVG/91KBVeiKtTxKKsucfJgsPqVDpWztTe/z0nS5vGVUxERm2ff0OSNMSYqJ+XAR4cAfXBKzoISXb8k8glTCJ2sJXwgzQUi3WBookPJ4hShd2kIY9uWxptGk/lkFnTY= 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 1789267375803664.1155506269096; Sat, 12 Sep 2026 19:42:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB2-0002OK-7t; Sat, 12 Sep 2026 22:42:44 -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 1x5aAx-0001uO-GF for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:39 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAv-0001tL-IO for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:39 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccd66bb5so733621a91.0 for ; Sat, 12 Sep 2026 19:42:37 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267356; x=1789872156; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=D3OxlNFHU5SCwlxQ/oZU9jTxP9O+Oh18quI7rfKHpdE=; b=SjZpLm+/GU5I7IV7V/E50uUhJJ1BRQBc0uUfdEcn5Q31jH2uR3/s0ZCT8iQBj5WH0A fvz6GKRBgYZZGZ9gdz2XHneqcf0vlMMljLom2C//RuSXwSHcay7KYofVZtT8AoQ9l4My JUlrK46r6lyjEYkVJ6GBBzvobZ++Bs23bIbQGrMovJmWG88V1yaI2uBh/KtXP9pgPD2f zjKF9okSzjtQSAollAFWPxf5JqWfzov+RvI9xlDbR0H5fiHa3kwIbYydExfUD+1M69E9 DSSWNSn209yndFuAJihm0afjoxJUwbimSJVj1DAC7HQbq1j+WWf7bDBJW3iA9qz82qt1 R+3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267356; x=1789872156; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=D3OxlNFHU5SCwlxQ/oZU9jTxP9O+Oh18quI7rfKHpdE=; b=qoUt4FZni+ByAfzvaS/no/PmqZdIMTjhxJiWtJqH65H4M34O1GgWN3QdAaHqdk+FKp GaYG8REAj/Jb//PtDK20b8PhL7Xnfd0/Q2SoPH/ykGyGi+9ugImp6akNdHuPrcltAKH6 sJI7lrG/1esGhrVGZComYEzJ10Oepv1uVG9a3/rbM9Aov+6Q/nDrys0cv2jRVaFs5bs+ RlOvUuRB0KjK3xh6PDvr5zijx1MPy6qDa4zLmhFjQ08i4i4tq6XV2O6I9du/5eh8tNCr 1mqFN4O+Ec15OzTj87apOhTCuDs89G69qViYzuQqyPWekusGkTqOn7yp4JiOTN1zaax5 zr/Q== X-Gm-Message-State: AFuF++nnMs2D0wcix9A6qEP/H7X75mpgfWBVX/bhtc/xSGv8YijO7Ilr ttcClj5VQ7ctSnmDRowxG2YIdC6a0Elmj5jH9a7XUcpla7mMkPmMxfMUdsL5ITco6Sda3Qr7i2B D4fqEDsg= X-Gm-Gg: AYBFou2m2oJF7XlWZeSIgTuLHioRSOPAO9RXZJwG4aHMvEMpqFJqIQIzdSJhfS1jfiv iJgDqDZ0/r9lvkjiFEbCRFhGm7s0yfE2m9t9rEnhFmVa1x6VxyFeVO2EjtxI2ur8nGNIqADsQD1 dThQCoegkhTmZ3QUqvKhhjvfZgIzicvl9iFnHdAV1nuZWYXIhI2ySWARiSIQZ0QIza+znCJXTU+ UdGHdYHNaiZ63by8WtygOtu0CZPmdkt/ryKPtB9dgDYppVUth2G1xsJLAHlxFIxGQzhxMYLMv5S kjKbK/jlKUWCpHg6CG70nP19gQX85NRzu5849Rq/8alA/iegKoHMpdctWaW8KymPejeNBEIwHlN uyD6Yx++GACSfRLG5xAkYj3y3k1VlwbDGalGGdQxUHv0ek4+W6r3RdDn9c1OjnWGv3gUrRpJbqb ZjZA2EVv6uROLjBKHFvtLGjifOz+h3igJmOAw9Woxn5+lbfa+gqi2ac7RJ/vls62jpZ37JEELto 2Cicuc= X-Received: by 2002:a17:90b:2dcd:b0:398:dcfe:967a with SMTP id 98e67ed59e1d1-39dbc6d53e5mr9857862a91.17.1789267356174; Sat, 12 Sep 2026 19:42:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 50/86] tcg: Generic expansion of tcg_gen_clzi_* Date: Sat, 12 Sep 2026 16:38:01 -1000 Message-ID: <20260913023837.741866-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267376935158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 44fa7886c60..521aa406c49 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -130,7 +130,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); -void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ctpop_i32(TCGv_i32 a1, TCGv_i32 a2); @@ -190,7 +189,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); -void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ctpop_i64(TCGv_i64 a1, TCGv_i64 a2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 202df7a62a8..7d0d219918f 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -8,6 +8,7 @@ DEF3(andc, TCGV, TCGV, TCGV) DEF4(brcond, TCGCond, TCGV, TCGV, TCGLabelPtr) DEF4(brcondi, TCGCond, TCGV, TINT, TCGLabelPtr) DEF3(clz, TCGV, TCGV, TCGV) +DEF3(clzi, TCGV, TCGV, TINT) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 276bc11ebcc..e8ea8bb3cbe 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -521,6 +521,11 @@ static void gen_clz(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_clzi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + gen_clz(type, dst, src1, tcg_constant_internal(type, src2)); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -853,11 +858,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_clzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_gen_clz_i32(ret, arg1, tcg_constant_i32(arg2)); -} - void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { TCGv_i32 z, t; @@ -1774,11 +1774,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_gen_clz_i64(ret, arg1, tcg_constant_i64(arg2)); -} - void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { TCGv_i64 z, t; --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267540; cv=none; d=zohomail.com; s=zohoarc; b=ah2VRWVzaSnf2RLTP5r0H4/BCzPtD2EBz3mHgIORvXXz103QHA5nwgp7tTh9rOtPIRfMkCKFAwV1UT9AYFgqKPFEhaeRYPrKUQefgi5UtT4EK1UgM5Y/vrFjvDrR3BStd87E6JMvCEW8a0Ufxud9osg9E3Crs4wALLpHHSxkW8g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267540; h=Content-Transfer-Encoding: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:Cc; bh=IpI6yZvKCS2QIkwcCgvwqHxyIjXR9BZsLELZGpEwQHI=; b=oIJ3Su1xeYEdO6rVfBGXkqfFN4en7rd7YAmYgG52MHe/b8CweqZl0qjRzsChvXW+CKkHSYhNbsZDDmPI0iMKcMQ3AIoC9KSZEi9heWkDSGVA7RQsCY5U/bJ6/Qp7XC97QxPHDzXMd2fpU05gX/fMinP19WmOAEFyLv0T2oVDfYA= 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 1789267540538895.178011729304; Sat, 12 Sep 2026 19:45:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB3-0002Xg-VJ; Sat, 12 Sep 2026 22:42:45 -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 1x5aAy-00023c-Om for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:40 -0400 Received: from mail-pz2-x1f.google.com ([2607:f8b0:4864:3b::1f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAw-0001tX-OH for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:40 -0400 Received: by mail-pz2-x1f.google.com with SMTP id 41be03b00d2f7-cc1cea50dc3so513729a12.3 for ; Sat, 12 Sep 2026 19:42:38 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267357; x=1789872157; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=IpI6yZvKCS2QIkwcCgvwqHxyIjXR9BZsLELZGpEwQHI=; b=Ccr8GbxVIp3ekVVGqms+5UwQgQ+hwiHFs4sjrUrHyMOlkSXVJ9gKCBxEsXKaDyGNLr ItA9U51jX/Bqj9eFOuLGXdzKILFRkDUxbfoYy0D2ofei2fcGUvS1BupsvstgRa75xiHj Ho5b8Ax48DCz40Tvllyh48DjW4qc4oGEy4cSNePw3PWdy5cSBqbvw2OWwNnzsXEhJiAJ JJJCEzwVA4bEFpen4EJ5g4eJ765GJCLkR15FOm+1LsiFGHDMqdpHJN2swb+dCbnPFXjy ul3doS87mZT6F+0yOgA/Gup8xb3ksLqVOX9pZdo48hGk7WnUCnwSpDHcH68UQyjYZGi5 qfKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267357; x=1789872157; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=IpI6yZvKCS2QIkwcCgvwqHxyIjXR9BZsLELZGpEwQHI=; b=tTJTB80hhXvp7MWSqg35vkxvLFYs4nAVFe2IdEgvDdVsB/HCqDnAfxQyCM8qpNuvde qNktW6ZypWVH9ZBNOwbRlz6UyHVQ7OPJLGf0nYseCV5XdHEWGQ9fMVwPVrXxmE9ozM6w Lp8azfnHtEyPxCAIQ2px5blLuGJE0oIgGXYb7iAZ7ly8A/6obTqL4jDd//GSw12LK4ww zLsuKONAaZnY9qElBu2WNaDhVN+TObNPZcuwLAtVvdznvKnH6nFMX3/nNxuP8U9cTjSy eGlpRh5Aadq/V2l+YXz0QL0ZjrXPfPFlzgm4iZ5YSilhOzK7bqoaSMw79qe4/mp7WndL QRXA== X-Gm-Message-State: AFuF++mDSiMkXp+nQz00b1RxtUgoNDKbPQX1BDXrWb6qqfhCYaPkeT/A giWaEJ0Id7rPpuSWTdhijCwchTWLanHBs9Dp1Owfp7ghyTwCN9EZRa2kaF2/bzee6wQmlyqecLq W9Ft0leM= X-Gm-Gg: AYBFou24IW3kQ6gCJ9vv39UVshd15OGhoPUsKEPHlSlVs2OAl9z1uj+v1xjGC1lp0to JUEyiKU+mOfg9FO+TGl+kOgJMZU9rgTjCo1BJoWgf3p/V5DMGGgazDPYJ+01MR//NyP3RHoG/Vg hSOkZaYpEB6tBaLopZYg1N3detbyquDE2fcR6+4xcXhCrhaDRnhPqtgZFLabhwupSb4p6OJ8EwZ ufMxijuE6ABFheiflL/98eGS0yU2c8qkMUlBdb0O2B5Glb7CHYqY4bOGm51vSAFdlNpbutMT9FQ 1Rg1H+oHm+SRu/VmN+dXWhSESFXwscjRdm4Ga42dXk4zXfA85fwlKm1ArekrdEcmAeRPpcQEaRG HKARANxGRiJCMEZzP3+qx+jt+58ZGcEvDi2pTK0TNp5nFI6PajSm13HNVGv3e1TISCiZR25i9dp zjGhEg2mXflCgGx6UiaqE5nCFq1eDVgv85xW9jI7xykSNBZT1qv+CEGBx/mMck1DihsfzITW3Pj 67y9R0= X-Received: by 2002:a05:6a21:48d:b0:3d3:ad3c:49a7 with SMTP id adf61e73a8af0-3db0e41e850mr10890034637.21.1789267357081; Sat, 12 Sep 2026 19:42:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 51/86] tcg: Generic expansion of tcg_gen_ctpop_* Date: Sat, 12 Sep 2026 16:38:02 -1000 Message-ID: <20260913023837.741866-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::1f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x1f.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, 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: 1789267541538158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 42 ++++++++++++++++-------------------- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 521aa406c49..48889a8a108 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -132,7 +132,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_ctpop_i32(TCGv_i32 a1, TCGv_i32 a2); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -191,7 +190,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_ctpop_i64(TCGv_i64 a1, TCGv_i64 a2); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 7d0d219918f..2de0aacd93c 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -9,6 +9,7 @@ DEF4(brcond, TCGCond, TCGV, TCGV, TCGLabelPtr) DEF4(brcondi, TCGCond, TCGV, TINT, TCGLabelPtr) DEF3(clz, TCGV, TCGV, TCGV) DEF3(clzi, TCGV, TCGV, TINT) +DEF2(ctpop, TCGV, TCGV) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index e8ea8bb3cbe..dfecf8abca2 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -526,6 +526,24 @@ static void gen_clzi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) gen_clz(type, dst, src1, tcg_constant_internal(type, src2)); } =20 +static void gen_ctpop(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (tcg_op_supported(INDEX_op_ctpop, type, 0)) { + gen_op_tt(INDEX_op_ctpop, type, dst, src); + } else if (type =3D=3D TCG_TYPE_I64) { + gen_helper_ctpop_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src)); + } else if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_extu_i32_i64(tmp, src); + gen_op_tt(INDEX_op_ctpop, TCG_TYPE_I64, tmp, src); + gen_extrl_i64_i32(dst, tmp); + tcg_temp_free_internal(tmp); + } else { + gen_helper_ctpop_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src)); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -928,21 +946,6 @@ void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_ctpop_i32(TCGv_i32 ret, TCGv_i32 arg1) -{ - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I32, 0)) { - tcg_gen_op2_i32(INDEX_op_ctpop, ret, arg1); - } else if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_extu_i32_i64(t, arg1); - tcg_gen_ctpop_i64(t, t); - tcg_gen_extrl_i64_i32(ret, t); - tcg_temp_free_i64(t); - } else { - gen_helper_ctpop_i32(ret, arg1); - } -} - void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { @@ -1833,15 +1836,6 @@ void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_ctpop_i64(TCGv_i64 ret, TCGv_i64 arg1) -{ - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { - tcg_gen_op2_i64(INDEX_op_ctpop, ret, arg1); - } else { - gen_helper_ctpop_i64(ret, arg1); - } -} - void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267517; cv=none; d=zohomail.com; s=zohoarc; b=OZa7Jwg/bULKaXWJISYznN5UKn3ef3zzDz1ZR23vKJlUhlIODgSW4CNCWqJywEuONpYlZlG8qSqAMPjoplXuqv4Gzv1H+UY/XUUCcekSq1Ueisna5szsQkAK5Bp7YZpq3AmuyMFb1UnL2Xk57C62QcafBW76KyQfeq+CEo1B+Vw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267517; h=Content-Transfer-Encoding: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:Cc; bh=a8JDBuoaLheLrEtzXvxl3vBgovMqyHLk+A70ZkdyngA=; b=nsGREQgviIE+GabBuV41fBsoCREhzpzFt+ZX0CPK0FZ/HhrYnMe1WTYSZQ9wf5TLGwQlGvE4QUGObpWp1BX5TvhUUFTMOGcKk3Cjoue8ZBGAZ7qEoJEF+kr5U3fpprq34b01nfyOPi0N+AW4D0Dq/23KngsCEyleJfhiEtpBMWI= 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 1789267517079137.6516260365221; Sat, 12 Sep 2026 19:45:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB9-00035i-Ep; Sat, 12 Sep 2026 22:42:51 -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 1x5aB0-0002EU-11 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:42 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAx-0001uH-O6 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:41 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-cc4d64bcea5so996941a12.1 for ; Sat, 12 Sep 2026 19:42:39 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267358; x=1789872158; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=a8JDBuoaLheLrEtzXvxl3vBgovMqyHLk+A70ZkdyngA=; b=ch0PKEY1xAEtSat2zR4aPwC1MGa493lmv/V8/keG+K86sobIKpqGLwi0LtrJvRjnlw tRkju6cbnMAA8zZCFjJtdB16FQGP3+YNFymI97NJ3A1okSJ7Y14A40J1oUtyg2Ri4kIb BfexulYhPDpF1sl1Gi4AjEKaNG3leKEpQ9iMZceRT7pc5ETFt2bjVTcZ7/Di9XSLxU// eDPouXXypPSuZu6iNAFUzMgPvJ1w7ISONsC12SAzKJGrk/NLqKr4rzQwRmsWsBjgKkQE 1QfpBCg/lfHVZuerin6BXJqYumtUhHjkppGXFZZKa2JXuTg7wGy9VSkEUefERwPlvwDS wGVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267358; x=1789872158; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=a8JDBuoaLheLrEtzXvxl3vBgovMqyHLk+A70ZkdyngA=; b=V63uM2PyyIN8s1DfADGn1rI3DyGUqwG8HDRdTCjuS5jhqTDcxaMFsbAy0R5NvHi58s VG5s0+ekbJeRJLJQBg0dQVD3yispO4VGCR1yMWlhLKRU7yj46LaQRAJgvCcSeCLfccGq uw01GdtB1YPsJDBT0Ob8ReWb2Be3E7vgd51wjhAPyM+68gQt91KTdWRTe9SCdaUlxhC9 1IAD1obqIstzg+vyM1mbXbAI7RT33uoUuLfKqQYSRQObsYg0mMBz2lD2J+p6ADY15p8h vlU4Ju+FWNhF/XXYVz+7/om5fUdXahIzKV75gBHxegsdjwqPy/VetAD/fk2Q2VrDcHXA pb8g== X-Gm-Message-State: AFuF++k61O8hvdd/IlWBNy0PYekVq98GTgiTkP7ZmisVRzOUmUkKjkB7 hQh8i3ZmaLx+HqvKeCEmVHDqNTluuV0pKZZQDv89sFiAliboooP2naWPJ7aXaIiMbcaKpmA921G RAo3F244= X-Gm-Gg: AYBFou3qAT9fGS3SYy+bf/W2M0cvr1pJTq1f+ZFbPFrtQ5/ZppARQe/CjydsdQM/jv2 nyOj7VGdHXrXDesI18XWn51FKv6ARdy4gHeFwPBtbl1ZriYxnCgSxzd3qSS6qSmeCnmf+v1CxYB ARuqQA+dYLKnJBXPj80fd5kqUyqrmbA5njITGhvNugVfA//ec7uX0mf7mcVewfrleS8IICjT/sg zYVK+Wp+RvhfHeDkp/6izZE8R5vQrBd/MQVSXV9B+PkJf42EQcIrWFLsO+/DSdupvCOfTC5qQ9a eXJ4ZPYwmlv6/tceEBqM9FCOJBt7zqwEO6TLzi8TWcspmO2g4ECMdhE0qTKiiQHey9/10Voignf Ujib5t09g+BX7PeX5kTIcJbqFhNfP4T24rYMXpWKlIGWAfKe+VBqI2B5UEOodSNukaAA2EMygIv mg7OFZP1bqIdY3POtp5TrwG+NuiV/KN4JnC4AReEOf3SuXFdsa3++TuxSK4iLSnazRaBF08vRRY x0QbpQ= X-Received: by 2002:a05:6a21:140a:b0:3d1:66cb:d49 with SMTP id adf61e73a8af0-3daed46b0e3mr20849057637.4.1789267358083; Sat, 12 Sep 2026 19:42:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 52/86] tcg: Generic expansion of tcg_gen_ctz_* Date: Sat, 12 Sep 2026 16:38:03 -1000 Message-ID: <20260913023837.741866-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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: 1789267517505158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 117 ++++++++++++++--------------------- 3 files changed, 49 insertions(+), 71 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 48889a8a108..3d03242cda7 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -129,7 +129,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -187,7 +186,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 2de0aacd93c..47627a343d3 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -10,6 +10,7 @@ DEF4(brcondi, TCGCond, TCGV, TINT, TCGLabelPtr) DEF3(clz, TCGV, TCGV, TCGV) DEF3(clzi, TCGV, TCGV, TINT) DEF2(ctpop, TCGV, TCGV) +DEF3(ctz, TCGV, TCGV, TCGV) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index dfecf8abca2..e3dd351735d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -544,6 +544,54 @@ static void gen_ctpop(TCGType type, TCGTemp *dst, TCGT= emp *src) } } =20 +static void gen_ctz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) +{ + TCGTemp *t1, *t2; + + if (tcg_op_supported(INDEX_op_ctz, type, 0)) { + gen_op_ttt(INDEX_op_ctz, type, dst, src1, src2); + return; + } + if (tcg_op_supported(INDEX_op_ctpop, type, 0)) { + t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_addi(type, t1, src1, -1); + gen_andc(type, t1, t1, src1); + gen_ctpop(type, t1, t1); + } else if (tcg_op_supported(INDEX_op_clz, type, 0)) { + int width =3D tcg_type_size(type) * 8; + + t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_neg(type, t1, src1); + gen_and(type, t1, t1, src1); + gen_clzi(type, t1, t1, width); + gen_xori(type, t1, t1, width - 1); + } else if (type =3D=3D TCG_TYPE_I64) { + gen_helper_ctz_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + return; + } else if (tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0) || + tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0) || + tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { + t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + t2 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + gen_extu_i32_i64(t1, src1); + gen_extu_i32_i64(t2, src2); + gen_ctz(TCG_TYPE_I64, t1, t1, t2); + gen_extrl_i64_i32(dst, t1); + tcg_temp_free_internal(t1); + tcg_temp_free_internal(t2); + return; + } else { + gen_helper_ctz_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src1), + temp_tcgv_i32(src2)); + return; + } + + t2 =3D tcg_constant_internal(type, 0); + gen_movcond(type, TCG_COND_EQ, dst, src1, t2, src2, t1); + tcg_temp_free_internal(t1); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -876,46 +924,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_ctz_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - TCGv_i32 z, t; - - if (tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_ctz, ret, arg1, arg2); - return; - } - if (tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0)) { - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t2 =3D tcg_temp_ebb_new_i64(); - tcg_gen_extu_i32_i64(t1, arg1); - tcg_gen_extu_i32_i64(t2, arg2); - tcg_gen_ctz_i64(t1, t1, t2); - tcg_gen_extrl_i64_i32(ret, t1); - tcg_temp_free_i64(t1); - tcg_temp_free_i64(t2); - return; - } - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_REG, 0)) { - t =3D tcg_temp_ebb_new_i32(); - tcg_gen_subi_i32(t, arg1, 1); - tcg_gen_andc_i32(t, t, arg1); - tcg_gen_ctpop_i32(t, t); - } else if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { - t =3D tcg_temp_ebb_new_i32(); - tcg_gen_neg_i32(t, arg1); - tcg_gen_and_i32(t, t, arg1); - tcg_gen_clzi_i32(t, t, 32); - tcg_gen_xori_i32(t, t, 31); - } else { - gen_helper_ctz_i32(ret, arg1, arg2); - return; - } - - z =3D tcg_constant_i32(0); - tcg_gen_movcond_i32(TCG_COND_EQ, ret, arg1, z, arg2, t); - tcg_temp_free_i32(t); -} - void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { if (arg2 =3D=3D 32 @@ -1777,35 +1785,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - TCGv_i64 z, t; - - if (tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_ctz, ret, arg1, arg2); - return; - } - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { - t =3D tcg_temp_ebb_new_i64(); - tcg_gen_subi_i64(t, arg1, 1); - tcg_gen_andc_i64(t, t, arg1); - tcg_gen_ctpop_i64(t, t); - } else if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { - t =3D tcg_temp_ebb_new_i64(); - tcg_gen_neg_i64(t, arg1); - tcg_gen_and_i64(t, t, arg1); - tcg_gen_clzi_i64(t, t, 64); - tcg_gen_xori_i64(t, t, 63); - } else { - gen_helper_ctz_i64(ret, arg1, arg2); - return; - } - - z =3D tcg_constant_i64(0); - tcg_gen_movcond_i64(TCG_COND_EQ, ret, arg1, z, arg2, t); - tcg_temp_free_i64(t); -} - void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { if (arg2 =3D=3D 64 --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267454; cv=none; d=zohomail.com; s=zohoarc; b=RfoDXn1OUWHuyJnGj30hVo22p444NgiXm/bj7d2z/f0fSHyGmI/ZEiGtzQaDjQIFFLZ/Z/IVx0HsJCx94vg2jZbs4k/M6jqsf1tktXX+gMY2gFO5jDSTBhse4mKEDmqqKat2+M7O89ezPlYwTfsc/FgeTUd2Kr/kYI7Y2KtQ2DU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267454; h=Content-Transfer-Encoding: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:Cc; bh=l5X9inQi+Iv8f6uhcC9UFt0VFWqETrWUNi2AeW8lIwE=; b=mEwusygDJVdkCrY218ddQU43T8GmhwL3SoWTOvbrtYyOLcOdJ3Sz+HOtMFG1VUu1zeN7HrVsv46TIlbXnzhhkTGL4iPyYGBKQOvkJXtUhAWI2iBzUD2JQ5QguaNVCW7SwoM6s+q4R7D3baeXo4JBoGbLbxup5iCHYLorPeVQwM0= 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 178926745409929.483979898514804; Sat, 12 Sep 2026 19:44:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBB-0003HT-04; Sat, 12 Sep 2026 22:42:53 -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 1x5aB0-0002Fz-It for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:42 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAy-0001uw-NW for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:42 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc4c08393b0so593179a12.0 for ; Sat, 12 Sep 2026 19:42:40 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267359; x=1789872159; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=l5X9inQi+Iv8f6uhcC9UFt0VFWqETrWUNi2AeW8lIwE=; b=YF/+Ii3o7MzwAaeI+LAyY6ZiKz/01imIf3YhS4ZzrdeVPX5X065jYgl/fr4VBPhdBv B5Vr+LSJckVW3c2kd8XIKuLXgc0u+Tvrn6AR14ZzoOQfB0bpSrlC6XKISq9sU2Uf+5IS HWfUwxmg6We0PF6M+5a6mYd/5TWaXYiX/T4feVM3/gIRLKtpgRlWcseT+jp50j7a18Lm /G5ss5lQPqhqPAUNv5CuVs+dY9EoirvyIZVRpecSYiU32wKsMsCQ7H+R8Ch6bhu3JcIL UWOuOD6w/xBnINL1XZB5GdIYxAgqp9oCtAt4CxujUKfsDw8NZAFR4hsoZ1Xz+DYm+ZtY T/Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267359; x=1789872159; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=l5X9inQi+Iv8f6uhcC9UFt0VFWqETrWUNi2AeW8lIwE=; b=p95AqLfdFyOyH/zHHhviaWkQgsu4Pc54FJMwuJj28B7hKV7tNVxwPDtE7JqQ1dWtvp IxpOcG+HU8wG+9GALmrPw2Gsb7gIGhsuxLxerbWZtZprsw3e5Nss5prCkFik4jPd2jPL PXw5gkRuwK6wV3kw6bYQ3McbHXk88njW89XPk8irWMrBAM/1FQKrly4iQrffBgEunbX4 iWEEYZQXQA4hrA8+yNJKJ6l3pV+svAGSiCay6rdBRwvIU875ZRjyr8+VHoS3hWw1ZidV JlONs5256cDtNzBcSn1n+HoXwkACb3Q0MBxOG8Xn+HQKr4W6kaDSeRT4fmeeSUHz5KKQ 0Ijw== X-Gm-Message-State: AFuF++lqyZR1fz320qSbjcHUHCPpVMAMqi05CrMZNWrNz0YcSrJNuh0q VIpUJLkU9GxGNesJXMIiBf+Bzsw9yZ5+hIrkh2CYNNsja6CYQVd6QmxatDxDwXoC2OoAhu2D/TS KgXqp3mQ= X-Gm-Gg: AYBFou03phSC6d8N3bByv1zX1RmD1JK9OqVteymny2fB3/DpBAe28JUxiH8+J0QYDcV y5n3vnWY8unkwiUlCNogjB2EG2o4aqEE/VtgKPPS7SJi8kaCKiZznrz4cykOJQnDREcwmsS3zML aA02BRN5FDso8KYExANK499KhIIX50BG21BVfFKQEeLk6e4HXQX2TncXKqEfKR+ElSfbi5LyISc xiGA8JQRM/Z/Uf5Xjnlw2pSH/iwiJOWrp/3K7PHe+B9s6qrtd+SWHcxzwLduAbt0E9U7pw4Ldrg wa1J7dIgS0ErgUfECwaO//p9ZVuGY5yyHFhrj4ec5wjnYVyFacZazTVLMmcMnsHQufUMQvh8igk hsRoO7EZuDEj+qdbp5MsEFmGNxXIDxcwhrjAKSZMJ1pHgZwNnhTkP7af2iHM8uqhC4aMYsK08/7 67rLfvopzywdSET0YSUZd7dq3XON3R/jaYcq14icVGgXDoSyLjBz4h/t5cjtysNvY8/PcqwaOFu lb8sH0= X-Received: by 2002:a17:90b:574c:b0:395:4de0:b78f with SMTP id 98e67ed59e1d1-39dbbe8b90bmr9469883a91.1.1789267359162; Sat, 12 Sep 2026 19:42:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 53/86] tcg: Generic expansion of tcg_gen_ctzi_* Date: Sat, 12 Sep 2026 16:38:04 -1000 Message-ID: <20260913023837.741866-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267455275158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 46 ++++++++++-------------------------- 3 files changed, 13 insertions(+), 36 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 3d03242cda7..77fc1cdc3a8 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -129,7 +129,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -186,7 +185,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 47627a343d3..9968ca9516f 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -11,6 +11,7 @@ DEF3(clz, TCGV, TCGV, TCGV) DEF3(clzi, TCGV, TCGV, TINT) DEF2(ctpop, TCGV, TCGV) DEF3(ctz, TCGV, TCGV, TCGV) +DEF3(ctzi, TCGV, TCGV, TINT) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index e3dd351735d..053b4b8116d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -547,6 +547,7 @@ static void gen_ctpop(TCGType type, TCGTemp *dst, TCGTe= mp *src) static void gen_ctz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { TCGTemp *t1, *t2; + int width =3D tcg_type_size(type) * 8; =20 if (tcg_op_supported(INDEX_op_ctz, type, 0)) { gen_op_ttt(INDEX_op_ctz, type, dst, src1, src2); @@ -556,10 +557,14 @@ static void gen_ctz(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) t1 =3D tcg_temp_new_internal(type, TEMP_EBB); gen_addi(type, t1, src1, -1); gen_andc(type, t1, t1, src1); + if (src2->kind =3D=3D TEMP_CONST && src2->val =3D=3D width) { + /* No fixup required. */ + gen_ctpop(type, dst, t1); + tcg_temp_free_internal(t1); + return; + } gen_ctpop(type, t1, t1); } else if (tcg_op_supported(INDEX_op_clz, type, 0)) { - int width =3D tcg_type_size(type) * 8; - t1 =3D tcg_temp_new_internal(type, TEMP_EBB); gen_neg(type, t1, src1); gen_and(type, t1, t1, src1); @@ -592,6 +597,11 @@ static void gen_ctz(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) tcg_temp_free_internal(t1); } =20 +static void gen_ctzi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t sr= c2) +{ + gen_ctz(type, dst, src1, tcg_constant_internal(type, src2)); +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -924,22 +934,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_ctzi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - if (arg2 =3D=3D 32 - && !tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I32, 0) - && tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_REG, 0)) { - /* This equivalence has the advantage of not requiring a fixup. */ - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - tcg_gen_subi_i32(t, arg1, 1); - tcg_gen_andc_i32(t, t, arg1); - tcg_gen_ctpop_i32(ret, t); - tcg_temp_free_i32(t); - } else { - tcg_gen_ctz_i32(ret, arg1, tcg_constant_i32(arg2)); - } -} - void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { @@ -1785,22 +1779,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - if (arg2 =3D=3D 64 - && !tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I64, 0) - && tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { - /* This equivalence has the advantage of not requiring a fixup. */ - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_subi_i64(t, arg1, 1); - tcg_gen_andc_i64(t, t, arg1); - tcg_gen_ctpop_i64(ret, t); - tcg_temp_free_i64(t); - } else { - tcg_gen_ctz_i64(ret, arg1, tcg_constant_i64(arg2)); - } -} - void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267555; cv=none; d=zohomail.com; s=zohoarc; b=fOwNh2ij5LhU2xKQYQfzdMwFbOUIq5jQoEzBbGev9bcxckGCGeWJH6W54zOf7/a8ryV1c1+gO6I95A+lugu0JPgn28c6oh8U+NGbrip+JEcb9MNrZpZHXIFfQrYqvoqVGDCA4OU0dAxL3dwLDCccDM524V/6/7LWVMUpsHnVdCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267555; h=Content-Transfer-Encoding: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:Cc; bh=bhfsNWo/UcR8ajtcMqpe1FVfse6uIeAVrBGjoo12jBw=; b=bF/G5czH93NogSw4/J1rzim/iIykR1dcxraRjpRxTiZHRaUzFyRH+eDl78ZcmUYXAcyAKz81QDDOSVegCEyxQnak9V+p8QdgA/OD9P7z9rjnKME/0+WAexDST82N/yAVOZiXElFAIeX9z/Vnu1JrI4bMIsio/IAIZ9DF9pnSo5E= 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 1789267555236892.2416037940168; Sat, 12 Sep 2026 19:45:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB7-0002u6-Lv; Sat, 12 Sep 2026 22:42:49 -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 1x5aB1-0002Nz-Ie for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:44 -0400 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aAz-0001v5-NU for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:43 -0400 Received: by mail-pz2-x0f.google.com with SMTP id 41be03b00d2f7-cc4aa0f1a94so584317a12.2 for ; Sat, 12 Sep 2026 19:42:41 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267360; x=1789872160; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=bhfsNWo/UcR8ajtcMqpe1FVfse6uIeAVrBGjoo12jBw=; b=oSRYUbTvIotXKTpdKV9Oez/zWTAFI9alZw23BYAt9gIrX3x55BASSShDoaUPo8+opq Qhb4b+HaQPKybx7P4eKHH/hwyuCtnlmt5dR03mhFoVtCHnd4RmReqVcFqqqN1894/W8J 5K+F/guHYObgI4jJsHXVBDChGBUSMJOEZQjVOaDvVlU/PwhDym51u0QSd4WTToPfePa0 YzaFcHLtRC6YnYMqiEySPSWyiT8ovXuj6455bYuUoI7zgKp64dFNZcSfEgoSh1yjpiRm jcQZomlcOEwtHbWoSFSRB1cayjJAiefyX8mC8TgsWMmh6Jy33x1Z/9xLMNoDoYfZ6BK4 Z3Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267360; x=1789872160; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=bhfsNWo/UcR8ajtcMqpe1FVfse6uIeAVrBGjoo12jBw=; b=oTnSmbW6b0oRqcxKD4K4FuVbCXEgUwfEr1aPH9oYQS7mg8NRor6ZHcVT/K4+1O5a3t v8MHpziZX2kPiB5SDdfJj6eLlJ43hH8dm64PcyySNR6xm6ZZyRANzaJW08+BEDuk7fL4 NXynbldhTWyxY4cNgjQhq6yUJkC8OoSIzbhESImQvlL0ARYahjgBj04OV0GtZF7C7hsF YehbtUafWexpllAEWzyjvCru5wuz91f13XQqkR4uYoubdEh0as32Pnf1AfcPtW+i0Xwb 9lhnE22hX/uOZhr61KZkWssaQP59eo/yz+TvmSeJaS5O/0+MRanOLQhaKDSb242Yk9D6 9gbw== X-Gm-Message-State: AFuF++n+vzFwsjkuyAZIQ53VpPLhEC4HAeRNglm2w4BdLQKlzg6HH6KP b4ipX/Ii3fmGaDAxByrtZCE7e+LLhj/NB93xXqZU9B7shCxo4gVGV8nSHKquMxY0vTfaGjlLx57 bAnh986s= X-Gm-Gg: AYBFou0GrjqF7vcf+U3Sn1LQgU3I57nO4tUtCukPbDP6YeNimNeRz7vHuOtu3kZD3c7 lK2m9IGYzcXgIKM1P9K0B9zo7XvkvUwNSakypCnY15x4qjS7dR9QCg3BC6X5XpGzUI2qWvK9Qy7 lDjuzdnjjunz9sLyW+Y0mVgKIg/WYrLm04APErUInYfOsUYdCVpJaCDDDV/E6rBAgD87vPfhoeQ Tr4S3/8d8eYIIhW2dwynoQ7dZNI7JTkYmdNCN/WXAn317gh+5aWn87aFa/jbtvBHXOxxcsLSS1V 5MgsPWmCpLaAS7WCT3qdcjga+5wfjIgxYIW35Cr/mhchz3TDezT57FoE05nq1UW74jI9sqykr5J qIvVRZXEnOOYwYmH0p4LVUAW1yF2q5wQSsNMLmH/jmXooUJkP4ypjd33bfONdlD2fdCBnoNiMGD 5yr/+XcZN1dRX2d896u2rs0e1DmGcqbhuL5jdLzDJX8MT4w/kJH48mlLlhVbIjrh9XKxry+XHWb lLPD2U= X-Received: by 2002:a05:6a21:3395:b0:3da:b089:dba4 with SMTP id adf61e73a8af0-3db0e109f4dmr10191225637.2.1789267360310; Sat, 12 Sep 2026 19:42:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 54/86] tcg: Generic expansion of tcg_gen_clrsb_* Date: Sat, 12 Sep 2026 16:38:05 -1000 Message-ID: <20260913023837.741866-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0f.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, 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: 1789267555568158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 46 ++++++++++++++---------------------- 3 files changed, 19 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 77fc1cdc3a8..579699f5939 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -129,7 +129,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); @@ -185,7 +184,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 9968ca9516f..1bdf9876067 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -7,6 +7,7 @@ DEF3(andi, TCGV, TCGV, TINT) DEF3(andc, TCGV, TCGV, TCGV) DEF4(brcond, TCGCond, TCGV, TCGV, TCGLabelPtr) DEF4(brcondi, TCGCond, TCGV, TINT, TCGLabelPtr) +DEF2(clrsb, TCGV, TCGV) DEF3(clz, TCGV, TCGV, TCGV) DEF3(clzi, TCGV, TCGV, TINT) DEF2(ctpop, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 053b4b8116d..723168aae5a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -496,6 +496,24 @@ static void gen_brcondi(TCGType type, TCGCond cond, TC= GTemp *src1, gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); } =20 +static void gen_clrsb(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { + TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); + int width =3D tcg_type_size(type) * 8; + + gen_sari(type, t, src, width - 1); + gen_xor(type, t, t, src); + gen_clzi(type, t, t, width); + gen_addi(type, dst, t, -1); + tcg_temp_free_internal(t); + } else if (type =3D=3D TCG_TYPE_I32) { + gen_helper_clrsb_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src)); + } else { + gen_helper_clrsb_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src)); + } +} + static void gen_clz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { if (tcg_op_supported(INDEX_op_clz, type, 0)) { @@ -934,20 +952,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_clrsb_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - tcg_gen_sari_i32(t, arg, 31); - tcg_gen_xor_i32(t, t, arg); - tcg_gen_clzi_i32(t, t, 32); - tcg_gen_subi_i32(ret, t, 1); - tcg_temp_free_i32(t); - } else { - gen_helper_clrsb_i32(ret, arg); - } -} - void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) { if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { @@ -1779,20 +1783,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_clrsb_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_I64, 0)) { - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_sari_i64(t, arg, 63); - tcg_gen_xor_i64(t, t, arg); - tcg_gen_clzi_i64(t, t, 64); - tcg_gen_subi_i64(ret, t, 1); - tcg_temp_free_i64(t); - } else { - gen_helper_clrsb_i64(ret, arg); - } -} - void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267420; cv=none; d=zohomail.com; s=zohoarc; b=Ajj8TDXkGEQuQMVOBDIogD2BefMTzsEnhdU5nd5XDlKYskKOICpZJvPx3qFTwzxsZL59/lkVTZ5iWWtgP33iYmc/FNNrGQyOZKfuS0zMwyiTsT7yCDJn5qW5sCBtPtBHa+EWPx7MU+GiVapyp1FB8wP4UEoUvAKrBMwIUiM17B0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267420; h=Content-Transfer-Encoding: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:Cc; bh=aN1TaxFZ7PbSOPaTNRA9Gaq8KFcGoLld38ZZcOncNME=; b=QIJh6lxqA2qb2Nq9Bnn/RsdJTKWhreueMwFg3Sok3toXrvy2VptS2cgE+PjsZ2CH/zo+K3vjdZxLj2/PpEFxL5nUXBE8veU2CIbC5WQm6b3WGdsVwdwI8MwMcxwPkaCBV6Sjenmu4d2StvbVB445llteIGym/GwoM4No6mAb+So= 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 1789267420675316.39522678624326; Sat, 12 Sep 2026 19:43:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB6-0002s9-Qm; Sat, 12 Sep 2026 22:42:48 -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 1x5aB2-0002Tj-Sw for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:44 -0400 Received: from mail-pz2-x17.google.com ([2607:f8b0:4864:3b::17]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB1-0001vG-00 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:44 -0400 Received: by mail-pz2-x17.google.com with SMTP id 41be03b00d2f7-cc1cea48edcso556030a12.2 for ; Sat, 12 Sep 2026 19:42:42 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267361; x=1789872161; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=aN1TaxFZ7PbSOPaTNRA9Gaq8KFcGoLld38ZZcOncNME=; b=FgHotrMQvybRcUBx8Cwu+/vwl6tiEIv6wG4s8IxIFHOGr92qphPz7+an7FXUvMmIqH kztcXMerxktFu6lE7B+G/TF91zBr7wNEHLivgrV3ITtJE3iGDQf3lPLSlYi/CnbAFr5a 8cgFRSmCXk3IdOuUow80aqYhCgFwunteV68J+WqK9cWJejO39Mdn/WAZs1WDPZKRROhv yiNHThEUKymWJM+0CU7UonNCUQoB+FEk+G7Vd6M6S6Kd83eQCxoD8gAZzOvZVMtgG9UU K7QGOA+PlTGyIzcDqCC/Dd39wLE1P3J7OaOPffFWi9wo1tsk6kKvOUp8NYIdzYT9bb+1 NARQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267361; x=1789872161; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=aN1TaxFZ7PbSOPaTNRA9Gaq8KFcGoLld38ZZcOncNME=; b=GKVavVl/GowJrJ09ULgA8OVmWwNI+4Uu1HR6wv/onCP5jRWiWY8X3muO5DxJCtoCKN 5fMFOSSUYBr4VY1EL0R/+7cbKhjZVKmmoDvRAnc9sT9Miq9z3FSUl1MIC2m6q6NO9rBV HXUDQSE0e0EdzC/XTTZgWLSXR/fhoJdmh5KekgUQR8ckfGxLJZEw8bl5PmW+SMCFRHQv 4FF0gqbwFP8Zw8CC9wVvxWG62ub2q4w9HjTRy8MlxtG5PwT6j957Sb8dMhG4uM3sp7CU zxT/J0wX+B7tgs6BiUkHS8mmnMROLI/rXPlbOU/OsOISa5p2p3nXFmUYVA4U/1QNKikJ G7nQ== X-Gm-Message-State: AFuF++mdmcKOoCstLhAdZEMe8h3BYtdYyEIPzHSI+uJokDwjevKCWk2h T/2bkHHEPyPtVtpLBCzTtuqh1a/jUnW2lUTy980R8HbogxxvUktvzeQmNWN9fVJgUH5DXyvnjuu 9qFc0emk= X-Gm-Gg: AYBFou3oM/bWZJXrVS7Fzm1tM5G/n42Vt2nOmUY5Y1PsKEspRQRmRXncKmrzFNUMEwv 3g3HIoX2pYnN/B/fHBMLCvMI+nxGlZ3igaqam8BpRgkZY3V1Uo6ZmdTfGl425QBCJci5E4GS+Hc hr8phj4OVHoIaug5gX8sJu23dLzTCH3yF2u4K9zCYtM/pLEYoRc+ixwvPBOBz9+J9UwUmTPijTt 3elZPph/75WMwLmCDYWACTLeGJYgNLyukVXDrfBIMyJLXFhw3di4ejmThT7xs7j+ruEmnfSqrao yKnlNr/r5sr67e4yrg1Wki53uvsVNUxnq81k7zVT+uqkc0I3v4gKnOppUV3M+eFtmrH4BhNhIA7 AbOE7pQ2qdK07lS31Q4rSmlbRMZ4MxqC+nWFVpYiD0+SlJH2vUNp1NE6jrQLgNpGA3n99yle+eV gl+rtgJO6sbmuoZY8OiAe1WF//lOpQrf2P5wcUAw700fciQHrsaMODwkt8VzvUebsICJbfCpKka V9WqAJq X-Received: by 2002:a05:6a20:7348:b0:3da:b8b4:91d7 with SMTP id adf61e73a8af0-3db0e0a9ea3mr8892503637.2.1789267361424; Sat, 12 Sep 2026 19:42:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 55/86] tcg: Generic expansion of tcg_gen_rotl_* Date: Sat, 12 Sep 2026 16:38:06 -1000 Message-ID: <20260913023837.741866-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::17; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x17.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, 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: 1789267421132158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 63 ++++++++++++------------------------ 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 579699f5939..91faccf568b 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -129,7 +129,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); @@ -184,7 +183,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 1bdf9876067..3b2b0b76454 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -33,6 +33,7 @@ DEF3(ori, TCGV, TCGV, TINT) DEF3(orc, TCGV, TCGV, TCGV) DEF3(rem, TCGV, TCGV, TCGV) DEF3(remu, TCGV, TCGV, TCGV) +DEF3(rotl, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) DEF3(sari, TCGV, TCGV, TINT) DEF4(setcond, TCGCond, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 723168aae5a..1a9e05775f8 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -851,6 +851,27 @@ static void gen_remu(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_rotl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + gen_op_ttt(INDEX_op_rotl, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_rotr, type, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_neg(type, tmp, src2); + gen_op_ttt(INDEX_op_rotr, type, dst, src1, tmp); + tcg_temp_free_internal(tmp); + } else { + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_shl(type, t0, src1, src2); + gen_neg(type, t1, src2); + gen_shr(type, t1, src1, t1); + gen_or(type, dst, t0, t1); + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -952,27 +973,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_rotl_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotl, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_neg_i32(t0, arg2); - tcg_gen_op3_i32(INDEX_op_rotr, ret, arg1, t0); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - tcg_gen_shl_i32(t0, arg1, arg2); - tcg_gen_neg_i32(t1, arg2); - tcg_gen_shr_i32(t1, arg1, t1); - tcg_gen_or_i32(ret, t0, t1); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1783,27 +1783,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotl, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_neg_i64(t0, arg2); - tcg_gen_op3_i64(INDEX_op_rotr, ret, arg1, t0); - tcg_temp_free_i64(t0); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_shl_i64(t0, arg1, arg2); - tcg_gen_neg_i64(t1, arg2); - tcg_gen_shr_i64(t1, arg1, t1); - tcg_gen_or_i64(ret, t0, t1); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267549; cv=none; d=zohomail.com; s=zohoarc; b=Xl6yFGXttMIh1CZQaEGCZVf+u6z+pN+OqXjr2hr1MzKnWqrJVuRSCQNR1tFmPrGlFfHlkpPv7bvTbb+OFloDqSEjfER2tVHRZ7k1hKxdrqinNbyTmz/UxiF4RTd/aLBArw3SScN78+goseagQ9yQTXI4FZBUwFs5zEezkPjpHdY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267549; h=Content-Transfer-Encoding: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:Cc; bh=5uU6VGjMdu+r4NDMY3M6FhCSqpZRNUfsaZkS0EWBEq8=; b=RxiIcb+GfHl1j6JwPlatFPTplGfnsAeqINzqfAB/8Pi4Tb5+pUwZ70/XFsCbmVIjrSqIvNNWm2g5u/trpag/kZW2PQVj+m+7VdDDfSZsSgSTI6IR+oMdZHFtTphNCzj+X//DFNzQ3SZuVr7WV7nsJxUWegWw1yjHaHoCRHYZRPU= 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 1789267549684346.89523691927013; Sat, 12 Sep 2026 19:45:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB7-0002x2-Nj; Sat, 12 Sep 2026 22:42:49 -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 1x5aB4-0002dW-Au for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:46 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB2-0001vR-3f for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:45 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2db710396ffso27573275ad.1 for ; Sat, 12 Sep 2026 19:42:43 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267362; x=1789872162; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=5uU6VGjMdu+r4NDMY3M6FhCSqpZRNUfsaZkS0EWBEq8=; b=PQZjMb1jkqLfMNmb5XsSyGd9x9liGsr6CENiMR8TbogvIDJG/cQx7CH1+R62pUJv4C kN23MrHaYQD6mEgtvRy7/ilqRmEHrDsv0s78X+lUAMm4UGUYNKbHc//dfDQ+SCwJxbdm 2VNIKFDmBSlRbvTOGjyogRCCXgn53hixGd80U8c2SpNeS6NRaVpgTA9ZHQGwFMfdyw94 AVXc/G978WtS6eaU0+vPbf1jg6ZgQZ/GCBIsU/kWk0fpl3PUJ7kQmsBZxuUOhOkhLC7m BDiE99yX+RQfeUGLsWllC0z9ipC1IgO4PEfDrb0fC2hO7J09aEoLpyPXjtd49iSlknWf 079A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267362; x=1789872162; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=5uU6VGjMdu+r4NDMY3M6FhCSqpZRNUfsaZkS0EWBEq8=; b=fKMusc0euiVQtz/rfsKULaAHmltkXJM4zvIUBeaDXN5TquPRELhhfjpEZe5GV1oeYC Bkkcc3oZtdZ43UsVDjFRiVokETWf8tiX0l9iJz4O6vToPChP28VHhkRkDRsgH9c/8oeB P/ggabQZEPTL8uMpRoXsLW/JbjbtvaaTELOoHeTIwpuAYhUSVHcFO8xTjvWksiBvp5TY dj5B4DhqatnTO35RIISoygh4uPsTe5D9QAWEhvR1ZLm5FO9IUfdjcYgSmqvdY1IgVDap Q3P0iGMIEAEIM/jThKALBkvHGSg+AnZTF2lKUbsp7xnyE89eJXt0dMALJ4n/e5x3+Tv4 EGpg== X-Gm-Message-State: AFuF++nS+B/wOjNizlEvYCxkm/deX7Li7YOYQbkZAoZNOgdAFEb3lgcX bEo7/spfWTSJNwHHCiIir18JNBvG4xK0MAMqVL8KBin6LMqIOWdUoWuiuj1RteyidZrH79DXLfR jJENw X-Gm-Gg: AYBFou2qwrPBWZxLSUnUHy0ACJ64YckFns+dnj6rewJMQtE91AFl9xpt8A+LKvPjZzG cg6t7rpFuz5mbJZlelaIQyY+IKMLAz9EKRqB3QTkVyIRYtkfdx8NH9n2gCZuR0GQecIoLRVmSPe e1tNFiDU0h2N9baUOSfTBcJgUDEIpKacVDVKXMEfzZZ9llH0qUY0AShV4ge1S/XZU/6emf8/fnO cFAumEINvlTnqmc00m+xl89jjjEB4Sz4plhO4LBgM2u1eDwX6DA4RamlhYGORDVLLmhGjWm3Qvp ZDBkAf9hbL7zTY9vlnhOZYzF8rFdMN8nvcLqmXU8ltzDE94xwx/oot6i1bVwHMW69VnPn53yLGE YustmJ+51TtEzVlp8xWo2AjiaYYPxw5/R4GqMTzsFBrGum/9S94TKIGU4S5aFdXTDd/20SvxzKH UZI8Yq+IR4GE4kKG6lNuNYMDzmoDc24u32xaIp8cXkYGSxA183mW9Gc/zqXv6WYtaMGJ6YrDNmR au+HpChs0GlETayvw== X-Received: by 2002:a17:90b:288a:b0:37f:e5b1:ec4b with SMTP id 98e67ed59e1d1-39dd5478be2mr860652a91.5.1789267362389; Sat, 12 Sep 2026 19:42:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 56/86] tcg: Generic expansion of tcg_gen_rotr_* Date: Sat, 12 Sep 2026 16:38:07 -1000 Message-ID: <20260913023837.741866-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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: 1789267551614158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 63 ++++++++++++------------------------ 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 91faccf568b..6c6a7f930c8 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -130,7 +130,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len); @@ -184,7 +183,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 3b2b0b76454..35542e003ef 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -34,6 +34,7 @@ DEF3(orc, TCGV, TCGV, TCGV) DEF3(rem, TCGV, TCGV, TCGV) DEF3(remu, TCGV, TCGV, TCGV) DEF3(rotl, TCGV, TCGV, TCGV) +DEF3(rotr, TCGV, TCGV, TCGV) DEF3(sar, TCGV, TCGV, TCGV) DEF3(sari, TCGV, TCGV, TINT) DEF4(setcond, TCGCond, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 1a9e05775f8..837c43e6587 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -872,6 +872,27 @@ static void gen_rotl(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_rotr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_rotr, type, 0)) { + gen_op_ttt(INDEX_op_rotr, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_neg(type, tmp, src2); + gen_op_ttt(INDEX_op_rotl, type, dst, src1, tmp); + tcg_temp_free_internal(tmp); + } else { + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + gen_shr(type, t0, src1, src2); + gen_neg(type, t1, src2); + gen_shl(type, t1, src1, t1); + gen_or(type, dst, t0, t1); + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -985,27 +1006,6 @@ void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, i= nt32_t arg2) } } =20 -void tcg_gen_rotr_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2) -{ - if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotr, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_neg_i32(t0, arg2); - tcg_gen_op3_i32(INDEX_op_rotl, ret, arg1, t0); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - tcg_gen_shr_i32(t0, arg1, arg2); - tcg_gen_neg_i32(t1, arg2); - tcg_gen_shl_i32(t1, arg1, t1); - tcg_gen_or_i32(ret, t0, t1); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); @@ -1795,27 +1795,6 @@ void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, = int64_t arg2) } } =20 -void tcg_gen_rotr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) -{ - if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotr, ret, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_neg_i64(t0, arg2); - tcg_gen_op3_i64(INDEX_op_rotl, ret, arg1, t0); - tcg_temp_free_i64(t0); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_shr_i64(t0, arg1, arg2); - tcg_gen_neg_i64(t1, arg2); - tcg_gen_shl_i64(t1, arg1, t1); - tcg_gen_or_i64(ret, t0, t1); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267459; cv=none; d=zohomail.com; s=zohoarc; b=ZZUb24uEGzs3es87JkRybUfT3bVzBRHaWdFadwZPT4kDtXwEJRZalIATeKYMoocz83Eifm8b5m7EN0rgURuQph7AQ4DreqIQhiYIJTyBD0J0/zjwEjXHf7rwTWgATUJML9GKmDh3b+oUx9VRXMzNkrqAx11WnLqT4Mf0zBWePTE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267459; h=Content-Transfer-Encoding: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:Cc; bh=A8xMZ+JTBPiyf1IH+K3UcpHGmlFbKNUSAWOxVi4iE3Q=; b=Hm7z++WXH3H8rX2yhbsy+Ufnyy6JhMBUIi5E1ubbAUW3ftWKADLTKgnMHmUGT6HZAFa7n3882bVnHwZsD5BAsCABLvN4GEXXBMsALazFi8e4ncMcuJdYrBnOgHH5ca6UIgOhrvgeFxG4D/G7iid8D64xKk1l0Sv/kZqRxNmrSM0= 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 1789267459438759.8782804954992; Sat, 12 Sep 2026 19:44:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBC-0003N5-Lq; Sat, 12 Sep 2026 22:42:54 -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 1x5aB4-0002e8-H7 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:46 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB2-0001va-Om for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:46 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d747f0135fso7281855ad.0 for ; Sat, 12 Sep 2026 19:42:44 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267363; x=1789872163; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=A8xMZ+JTBPiyf1IH+K3UcpHGmlFbKNUSAWOxVi4iE3Q=; b=RBg79HOpizBWwTT3L2VI5nknmKJBx6W33Omc2Gp7Ls4Cwmi4hPpiNfCclXeR7aJKaA UNiw5IFUc0c4nYmLUdmlE/VAhgSRn7AYxsgujMyXoKUE5zj4rZkEOmf2MsWZbDObG0w+ HJIgK9BPtNxFm9dSG443GD+8GaA9l1LsMTQfaFAdytC3IYNwZSdtV+kcYwUyBpx8yQeL 2cf0t37p1/Wlm/584FXU9q2+1lOQ85/H7lDgXLKN3MZjGTXw8QhQY6QHr9WXzmtU2P/l QUNlHNeS0VEFhRwu9pO1+ws5jYt+me54YHpuEsvmIhS1W63mn55z7KSaukSjqWTWaouZ GdUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267363; x=1789872163; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=A8xMZ+JTBPiyf1IH+K3UcpHGmlFbKNUSAWOxVi4iE3Q=; b=dwbZs3FX5m/rrFTTsgRAVXzU9oMikXGBmoKIlvoPoDFk6GsNTV98eGS4Y02gYCHnkM NXrm+mLJ1JWTHP7FHIPJsqNKCWfqQJWzW9BNmUlRqybsSZA3tkPmrKzB+fGWr3QjdvRP 15Tu9ihgaYHtkklAQFIp7Z34ZpBKeV9YTJ5AI57NRXKPo52qiGi2IirxjRu9sgc24W8y PxghVoxIL6ZC2zXz8yxBsx07pXsg/fmDOZecLF07ES/6z/2IKbgiuk5LymiACMGEcoWA ypgd7JE2PvqDkguzQBDPJkicln4nEbN7luIHg9oCMkPxBf9QaTh6L32xI9GXd1eOG0Qj TfDg== X-Gm-Message-State: AFuF++meb3L79HjzyAFNKLfSu6ghNnfah8y1QZ1dZsMXqHUQna/YLnDk 47wQxs4ZrgdY3N6VAlKVXN7hxo1sGdaTgOaOMPIRXWh3KQ29eBg7Xcn+mXf5TBHF+iAG++6qAsB EZr5WKtc= X-Gm-Gg: AYBFou3ogZ3Om+tWJEHFrViNkIRBG8fmgJXHbWNf/q1CiGWtZ1Jp4tGNwXx4Hchghan 1Tf3BxS7hb1Pq7ebTFcdYjltN0//4Ra2QMbB5ZlvBDrP8XZEPLHlVyuxUQuOzLH7toObT6V5cEo +JqrCssuM/kPR2dnTNPGZMmwIoDng/xdI+Q1kz3ovtei7m64RmxWQbpiDM65y51WIwSwipyCiCu qlZ+Nd/pjoUb9HKBbxDlqU2NpdnJLbA8nQes7pZpvF+9BzdKP5rytDwOGfBoLYuqQvcu74Nflmb ANCYDgj6ELXThYCBzoO80kUDCDr4M3s5rk7LG1blmnwX3D5v+Q4qzAuiUq+3/6jS5Tzks4WA15J DK7D78hNxNrAhM74Ho/goIAh9ePlvL1xQCfw3OHe2tC2M+NU5xQrBNfYVWIVvUcg+JQKx3wFHwu JfISqaBw/h3yne/f6nnVSPTXFFY4aEuTy2vTOm1iVBLs9twNlMbVY+DBENFIqyrXxeDTyY6Qagt EI6fhk= X-Received: by 2002:a17:902:e544:b0:2d9:484:861d with SMTP id d9443c01a7336-2dd4bd4772fmr94360995ad.10.1789267363325; Sat, 12 Sep 2026 19:42:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 57/86] tcg: Generic expansion of tcg_gen_rotri_* Date: Sat, 12 Sep 2026 16:38:08 -1000 Message-ID: <20260913023837.741866-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267461274158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 49 ++++++++++++++---------------------- 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 6c6a7f930c8..825ba2d3afc 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -130,7 +130,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); -void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, @@ -183,7 +182,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); -void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 35542e003ef..383a13aa1e9 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -35,6 +35,7 @@ DEF3(rem, TCGV, TCGV, TCGV) DEF3(remu, TCGV, TCGV, TCGV) DEF3(rotl, TCGV, TCGV, TCGV) DEF3(rotr, TCGV, TCGV, TCGV) +DEF3(rotri, TCGV, TCGV, TINT) DEF3(sar, TCGV, TCGV, TCGV) DEF3(sari, TCGV, TCGV, TINT) DEF4(setcond, TCGCond, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 837c43e6587..5034f1a6f0b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -893,6 +893,25 @@ static void gen_rotr(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_rotri(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t s= rc2) +{ + int width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(src2 >=3D 0 && src2 < width); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else if (tcg_op_supported(INDEX_op_rotr, type, 0)) { + gen_op_ttt(INDEX_op_rotr, type, dst, src1, + tcg_constant_internal(type, src2)); + } else if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + gen_op_ttt(INDEX_op_rotl, type, dst, src1, + tcg_constant_internal(type, width - src2)); + } else { + /* Do not recurse with the rotri simplification. */ + gen_op_ttti(INDEX_op_extract2, type, dst, src1, src1, src2); + } +} + static void gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -1006,21 +1025,6 @@ void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, = int32_t arg2) } } =20 -void tcg_gen_rotri_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotr, ret, arg1, tcg_constant_i32(arg2)); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotl, ret, arg1, tcg_constant_i32(32 - ar= g2)); - } else { - /* Do not recurse with the rotri simplification. */ - tcg_gen_op4i_i32(INDEX_op_extract2, ret, arg1, arg1, arg2); - } -} - void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len) { @@ -1795,21 +1799,6 @@ void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, = int64_t arg2) } } =20 -void tcg_gen_rotri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else if (tcg_op_supported(INDEX_op_rotr, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotr, ret, arg1, tcg_constant_i64(arg2)); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotl, ret, arg1, tcg_constant_i64(64 - ar= g2)); - } else { - /* Do not recurse with the rotri simplification. */ - tcg_gen_op4i_i64(INDEX_op_extract2, ret, arg1, arg1, arg2); - } -} - void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267524; cv=none; d=zohomail.com; s=zohoarc; b=VCTGVBp8uOD7rsavmgWKmvBIg6fwbWgSuT3Ybg5UtpLqtnVUZOQUa1JpLDVzTuKx9zqOGloX3W2Zyi3sWPdpW9NKuGg+k4mFYXqSQAaQloRUAP/IjhRa1Ypq191ssFFPTjyNdp/8Eq0uWJUj1r3mA3queJZxHT2daMAn+ZYBk28= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267524; h=Content-Transfer-Encoding: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:Cc; bh=9BpIbWocc+q+gVfGusICwI/TPJiwGUK4uLCUNOnxvy4=; b=EgYbM4OjFYTwD1diwnYpJav2laNKLvd6lN2Kxa7nIQ1DK9Ahva2jVYbxQr5ySkmrKJwMHDYn+xgFlrylshJrSmMbjJqqB8ROTQj13s4h4FeBRHQGH07EnowIpxYkjCiAhdjSk82TUw2dvR/X0pPJ9m3QJ82B0JE/Qticd4B2okk= 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 1789267524584895.0437583779888; Sat, 12 Sep 2026 19:45:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aB9-00035X-E6; Sat, 12 Sep 2026 22:42:51 -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 1x5aB5-0002mz-Ph for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:47 -0400 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB4-0001vn-2D for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:47 -0400 Received: by mail-pz2-x0f.google.com with SMTP id 41be03b00d2f7-cc4c3304833so670781a12.3 for ; Sat, 12 Sep 2026 19:42:45 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267364; x=1789872164; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=9BpIbWocc+q+gVfGusICwI/TPJiwGUK4uLCUNOnxvy4=; b=uOCa4W+2wEnW3496+P25LsRrpPPqVHNNpNIgO6qa5QWzIX+N1/ThYWNVJLLlfbJSDd 5pkbcUGQcNO2lkXQicJhRu4XvdrH+Q2LdKfUxDDbHaq0xNo1s19Mo7OG6ikJdZaaTmbz 5cwf98+HL4/hV+qAXf384YbWGh5+6aZxRPaOEe16FbRx4n4FLX9qMlhMxzUZwnGyheGB xFO9smhn7e0BcPAx25Z8CaE0Bzyyhm6mGOmDB/dEtJaDv2xA3taag9U1eBlEPgoGm/FI DGpvTM/feRWHMRaeHsxKm/r+wyGdvvakoV8yANx+R/auI1IRBc+wlr44/4Cj878YBQo/ tViA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267364; x=1789872164; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=9BpIbWocc+q+gVfGusICwI/TPJiwGUK4uLCUNOnxvy4=; b=ASe2XpkJvK8BiZmqsSXi6diKIGGvR2B6dQlFzMLpbd7PA+J3PI2xoBkxGZIdibO90y SBgrGhF4YWdIo4XbavI7CxxzyxkS2rrEpaf5RtZgh5eNSwl5/dSmH99GR6yMj7VenvE8 4/hRZDGTTmm8Y9n4TSYq19c6RZJsuajvHtECGsd05EkuLanPgqiA75flJzBwJEKUkNIq wFJTHYO9FDbwXAf7FtVIMMEffic8Zr20wxZ02AGhIXSfBeXhq2TMPBEt0ynUM4Fk3zXp 0Em03nqrhw/5G6h5wnwWab5R+lpJ6cfYbngqaFU/IkEyEhshcH06HXqUSqZJowOSCCyI jJ+Q== X-Gm-Message-State: AFuF++nBzHZ2TXoguyhY7lp7T3bJtDOkbUhpr56yKxro5fjKS7H1f+Vf pgmZGkd7BTsQle9i3YJniamGPbukqpX+UUF+P3m4PN84CYQ6bQWjvdY2OHx9dbDryMcHUEwvDLn v70rsjLA= X-Gm-Gg: AYBFou1CKbX5XvWcDT6lH6GMGkQE+hnU8fdYrHKkEnd4JHGhYbTveBhPiKjsdv8L0tL hPmGr6297D9vO4OBa/8UaOzvk1g1QbgoPvJRx38QFtJP6ECTQbg45OFY1o/n65mROXzDEH04jNL jwv04US4APUTptpVqeCiJhTDikIRyL+DU+6fWCVvlj4rMGfPpJ1d4Un2ahxFUpCCgyu/rCxyyHg 3qtm/oq9W17apVGDf49sIRGtjBqbnap0r7yxni/eSFyvXW7cYxqolRfMJahrRRai9XfpmE+aiEt 0xcPN3aY0y0I2engGTfqkb8t8hSNIg65HgZivc+ZA/LyvGRJOV+upirdGp3UjeJGS31qVB5zISF qQpRjT091NLNWudyxI7BQeBhk7p3E/Czqt0GDrCjft4I1OmBYckjSx9i5mYoCGOqbwStngT2XFV 9nqfhzu8gBy0IShetFNrIU/vOi7xVRlP2SdtHNjc3SeFG3IN2bMvG+EomWD4+qQbjPwCiDiGf1d OwEY/U= X-Received: by 2002:a05:6a21:4d02:b0:3d3:ae40:51e2 with SMTP id adf61e73a8af0-3db0e485b92mr10487400637.22.1789267364402; Sat, 12 Sep 2026 19:42:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 58/86] tcg: Generic expansion of tcg_gen_rotli_* Date: Sat, 12 Sep 2026 16:38:09 -1000 Message-ID: <20260913023837.741866-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0f.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, 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: 1789267525494158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 39 ++++++++++++++---------------------- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 825ba2d3afc..97cb28b7100 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -129,7 +129,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2); void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, @@ -181,7 +180,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2); void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 383a13aa1e9..57d6f07b907 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -34,6 +34,7 @@ DEF3(orc, TCGV, TCGV, TCGV) DEF3(rem, TCGV, TCGV, TCGV) DEF3(remu, TCGV, TCGV, TCGV) DEF3(rotl, TCGV, TCGV, TCGV) +DEF3(rotli, TCGV, TCGV, TINT) DEF3(rotr, TCGV, TCGV, TCGV) DEF3(rotri, TCGV, TCGV, TINT) DEF3(sar, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 5034f1a6f0b..023ab2fa7cb 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -872,6 +872,21 @@ static void gen_rotl(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +static void gen_rotli(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t s= rc2) +{ + int width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(src2 >=3D 0 && src2 < width); + if (src2 =3D=3D 0) { + gen_mov(type, dst, src1); + } else if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + gen_op_ttt(INDEX_op_rotl, type, dst, src1, + tcg_constant_internal(type, src2)); + } else { + gen_rotri(type, dst, src1, width - src2); + } +} + static void gen_rotr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) { if (tcg_op_supported(INDEX_op_rotr, type, 0)) { @@ -1013,18 +1028,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 32); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i32(ret, arg1); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_rotl, ret, arg1, tcg_constant_i32(arg2)); - } else { - tcg_gen_rotri_i32(ret, arg1, -arg2 & 31); - } -} - void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, unsigned int ofs, unsigned int len) { @@ -1787,18 +1790,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_rotli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) -{ - tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (arg2 =3D=3D 0) { - tcg_gen_mov_i64(ret, arg1); - } else if (tcg_op_supported(INDEX_op_rotl, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_rotl, ret, arg1, tcg_constant_i64(arg2)); - } else { - tcg_gen_rotri_i64(ret, arg1, -arg2 & 63); - } -} - void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, unsigned int ofs, unsigned int len) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267444; cv=none; d=zohomail.com; s=zohoarc; b=N1LrRAWqIDzcFuZjWbEpEw0EwtrLrPzoFTnRKyoXsbzZNUZuXU5JRwVjfkNIuZyGHXkkvJE2R/YkJoHkrYq59FmQabgj0VCFH1q8JK7ulpDZjl/oGiRdqIV6sQkR9sdv8/w+52tTVKxm9a/sFkbIAXKj1knX6UuX/TuejmYElfI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267444; h=Content-Transfer-Encoding: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:Cc; bh=zjV8dpVScdCxYBKetwPRMlb2nQroKKRtJhfqznhd4nM=; b=I1RaYg7QMDcHlD/OXsAlYxInzssiH+g/oYky8qu2BEBa9mKqXs6ZpYFk8Hj3AzfIKD6GSamYBKTrEAcrFBlmHCjDfJTkvvHOSZmJERs45l4vmDiyB1+YEeea/qiEEveixmRI2qMiGgKkWWwdUGRA8LxQ5o4tQtBHk+YBL+YWvu0= 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 1789267444608378.4908817925133; Sat, 12 Sep 2026 19:44:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBB-0003Ie-Im; Sat, 12 Sep 2026 22:42:53 -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 1x5aB7-0002tK-0q for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:49 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB4-0001vw-Vm for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:48 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d8fb334ddcso11413385ad.0 for ; Sat, 12 Sep 2026 19:42:46 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267365; x=1789872165; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=zjV8dpVScdCxYBKetwPRMlb2nQroKKRtJhfqznhd4nM=; b=C0O/XDSNKAtl1igrFMda2+GQWFggJmttQFeAe2S8C7g+9CXLkiSw2QwMNUJLk95N9K a5u8IIJqTiqsNAoEBBDyzEJ92+ci1sWlB61UMfOIGGa2CfyXJgEdsXE6nQDfcv17v/9M IYikGh82ZrDnHN7ptUuXAg6tHJlNNjr+gE4mw7TsQiScmiw52AWJOaBSlaSAA2CUIPtZ Xmo2leoxjFszQ8RvEgRykMAxldPhZ5cff/mrGNzon3fzewvgeoBO4COAWo05TcN7QoDX KjZ5U7txykbvnM2atSzRSaMG1wK9W4vMMWPGG56wtJuesUppDg27oJTeLIEYFK0M8I6y pU7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267365; x=1789872165; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=zjV8dpVScdCxYBKetwPRMlb2nQroKKRtJhfqznhd4nM=; b=b+i3sFe+9qbJlQg1abJRfiQPcYgWx17rA5USPTHE0hyGillgM5ziGyawUqBN9InrUR J/iTO2pCIj98V/YQ5LPAOP+W1PCbe5fPG3jh1BCUN0nXy6rqxgHlgesfgJYzgYSOeNQ3 KbHC3YoI2Lhv7EotbqGmm3HNt6qpMkUBOA+8rNNXdolk7EclJyAZkOaAE31BFdTy56wS Ko8LE5UHXVg8dqDe+99LKEFeVsHxMDOvEPAK8q9BgW+7ZS22Be6B7gMcWxyVrxg61Rhk NKFRO28qTpxizh4JOTJtPSiJhiC6oZuOH3bKhBSCh/MTiU7fzxx9txVwb+P4NquL8d0Q /xlQ== X-Gm-Message-State: AFuF++mRPyVCFi97RNv79Ao3779YRNnEiHSOP2DZ6pSefiAGfalbLtAN XnGPitLhPXpZAm2PI0yqXTne17uD5nnmtcLwhijhaEpBUlGn0W/FeIeSiH0igwWpt0ySikmpXwp Oe4YIuOA= X-Gm-Gg: AYBFou0eO/MpROemLGqJaFmIA64YKr5J9zJKCyrXneo7MIPAICIQgW8hhW53j4w8pNw xYElyMHBKmJ034fEZAwlNmLUgnHeGpXpmESrpIIzMfkEZB8jgPEJW8vWJ+DQyHhg8vr0iIljDwf TJkdP91xASODLI4iIPRyaN+FQaJp+MnIGWhscygGjPkONA69Iob5tg5bf9ISI0qMdiaYiya4m5/ 7I4wx5wWI8X/qxWAWgthfeCOTVv/Ndt/mgUdk5IY3FEsRQoV8BFA9H/J1sdTqRRUqN/GlHLH4Gx xKeYKbcbfPznBhLwHGuC/0La8LpDDXSRXMCUn7dkPcTULYZj+X+z7jwR17jvGNptD9/QQDlz3BH vfk2ec29pThDu2GiGQanpeclo+Xst/jBDoCOZG7OLa9Sik5aAaBA6RIXKhsQX+7fUVIT9exj2I7 2KPoQgcLto7SCQUDiSSJB/IHLK/o6rGM5WGu7HowJiaOflnmUFzrCTiCh4ktaIXedCKJ/HxU5IX bW3byg= X-Received: by 2002:a17:902:d2d0:b0:2c9:bf82:dd11 with SMTP id d9443c01a7336-2dd2a1e0f9bmr195553215ad.7.1789267365422; Sat, 12 Sep 2026 19:42:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 59/86] tcg: Generic expansion of tcg_gen_deposit_* Date: Sat, 12 Sep 2026 16:38:10 -1000 Message-ID: <20260913023837.741866-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267445297158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 7 ++-- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 66 ++++++++++++++++++++---------------- 3 files changed, 40 insertions(+), 34 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 97cb28b7100..d3c7e0e12b9 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -100,6 +100,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4); +#define DEF5(NAME, T1, T2, T3, T4, T5) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4, T5); #define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4, T5, T6); =20 @@ -125,12 +127,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo); #undef DEF2 #undef DEF3 #undef DEF4 +#undef DEF5 #undef DEF6 =20 /* 32 bit ops */ =20 -void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, - unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract_i32(TCGv_i32 ret, TCGv_i32 arg, @@ -180,8 +181,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, - unsigned int ofs, unsigned int len); void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract_i64(TCGv_i64 ret, TCGv_i64 arg, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 57d6f07b907..a2244bedeb2 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -13,6 +13,7 @@ DEF3(clzi, TCGV, TCGV, TINT) DEF2(ctpop, TCGV, TCGV) DEF3(ctz, TCGV, TCGV, TCGV) DEF3(ctzi, TCGV, TCGV, TINT) +DEF5(deposit, TCGV, TCGV, TCGV, unsigned, unsigned) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 023ab2fa7cb..a6f3b4bfefe 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -127,6 +127,14 @@ static TCGOp *gen_op_ttti(TCGOpcode opc, TCGType type, return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)= , a3); } =20 +static TCGOp *gen_op_tttii(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, + TCGArg a3, TCGArg a4) +{ + return tcg_gen_op5(opc, type, temp_arg(t0), temp_arg(t1), + temp_arg(t2), a3, a4); +} + static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) @@ -326,6 +334,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) static void glue(gen_,NAME)(TCGType, T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ static void glue(gen_,NAME)(TCGType, T1, T2, T3, T4); +#define DEF5(NAME, T1, T2, T3, T4, T5) \ + static void glue(gen_,NAME)(TCGType, T1, T2, T3, T4, T5); #define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ static void glue(gen_,NAME)(TCGType, T1, T2, T3, T4, T5, T6); =20 @@ -341,6 +351,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF2 #undef DEF3 #undef DEF4 +#undef DEF5 #undef DEF6 =20 /* @@ -364,6 +375,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b), \ glue(C_,T3)(c), glue(C_,T4)(d)); } =20 +#define DEF5(NAME, T1, T2, T3, T4, T5) \ + void glue(glue(tcg_gen_,NAME),TEXT)(T1 a, T2 b, T3 c, T4 d, T5 e) \ + { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b), glue(C_,T3)(c), \ + glue(C_,T4)(d), glue(C_,T5)(e)); } + #define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ void glue(glue(tcg_gen_,NAME),TEXT)(T1 a, T2 b, T3 c, T4 d, T5 e, T6 f= ) \ { gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b), glue(C_,T3)(c), \ @@ -375,6 +391,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #define C_int64_t #define C_TCGCond #define C_TCGLabelPtr +#define C_unsigned =20 #define TCGV glue(TCGv,TEXT) #define TEXT _i32 @@ -404,11 +421,13 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo) #undef C_int64_t #undef C_TCGCond #undef C_TCGLabelPtr +#undef C_unsigned =20 #undef DEF1 #undef DEF2 #undef DEF3 #undef DEF4 +#undef DEF5 #undef DEF6 =20 static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src); @@ -620,6 +639,23 @@ static void gen_ctzi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) gen_ctz(type, dst, src1, tcg_constant_internal(type, src2)); } =20 +static void gen_deposit(TCGType type, TCGTemp *dst, TCGTemp *src1, + TCGTemp *src2, unsigned ofs, unsigned len) +{ + unsigned width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(ofs < width); + tcg_debug_assert(len > 0); + tcg_debug_assert(len <=3D width); + tcg_debug_assert(ofs + len <=3D width); + + if (len =3D=3D width) { + gen_mov(type, dst, src2); + } else { + gen_op_tttii(INDEX_op_deposit, type, dst, src1, src2, ofs, len); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -1028,21 +1064,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_deposit_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 32); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 32); - tcg_debug_assert(ofs + len <=3D 32); - - if (len =3D=3D 32) { - tcg_gen_mov_i32(ret, arg2); - } else { - tcg_gen_op5ii_i32(INDEX_op_deposit, ret, arg1, arg2, ofs, len); - } -} - void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len) { @@ -1790,21 +1811,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 64); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 64); - tcg_debug_assert(ofs + len <=3D 64); - - if (len =3D=3D 64) { - tcg_gen_mov_i64(ret, arg2); - } else { - tcg_gen_op5ii_i64(INDEX_op_deposit, ret, arg1, arg2, ofs, len); - } -} - void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267465; cv=none; d=zohomail.com; s=zohoarc; b=Qu6sIqA7n7+/cI28YWuWENV8NLwN0h34XpN1ub47/HhgGeni+BPIBQuE8AD+GB4ZxI5IgRLjbV5eVHfZZDWhRntM8kmIvYCMpcbAqwOjcaWqjHPKMUrF3gDqPIdNkazkZI9/dOuCqYDzaDdybSayFGFxSTdBjBB2BsqKqn6OOoM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267465; h=Content-Transfer-Encoding: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:Cc; bh=Oy9bCvHArQs4ugjbs/nGpRpNCb0+Oy2RGuwcgoWjDtA=; b=CeCfSF5mQ+3ExxtDYI/9AFH6zM4dyzsbVMZ32iGMqWvWcQPAXb3KczuHDMvHOCjQea/AzXVCDmwkCAa2d+kfGuJSc2noQ5zXWHmCVLg4TMBgU7IIi28aQJK5Oq6AGmbfSPrTt78H9c0MONO9AYbxhARe+npGqGQ9YWfcimHK798= 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 1789267465906562.4959408551634; Sat, 12 Sep 2026 19:44:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBD-0003U4-Sg; Sat, 12 Sep 2026 22:42:55 -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 1x5aB8-00032I-8B for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:50 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB6-0001wC-0x for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:49 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-cc4c02ddd62so1638659a12.0 for ; Sat, 12 Sep 2026 19:42:47 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267366; x=1789872166; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Oy9bCvHArQs4ugjbs/nGpRpNCb0+Oy2RGuwcgoWjDtA=; b=xkaLFzX/LjJB89LrjkqtASqTZ1eTVMFiJ/QnbvhhCDJHtoYNeb9tMBm5/MFqDtnyCe 5bxVsmTrwmZP4+7dFzKkYvfUhISvdxAhF8iN/vpIkx7WNDI6eXXvSDxoyyjEsIvB9xQM Z5nWlmkhFxMHjpFI70O8ik90ad8lf3WdqwmQSHc5PFA822+4go4OWHc1Ty8mdgqFsaEa qle/5o03JXepnEjlolzzwiB1VxbxCKN0MO5cmZTeF2AXlsSaOUcg/WtkiI8pKbW8NGzJ j67KukC0RS484fedZeRRRJMERfJnIcpWA/tZTIKQOriIo7/2ogUHQ/t9uF9Qs5VJf2TV A3tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267366; x=1789872166; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Oy9bCvHArQs4ugjbs/nGpRpNCb0+Oy2RGuwcgoWjDtA=; b=fGmLW1CWSxA9RPGLt0jNs1I6F16uMU/9Bsyhwz3XIJKNJfNO9S1n4+vkicCnBpfXWu YYyLYS/ZiezNho1oTlds6RT1dt+RUk+L5ywk5XcZRn5hvnbtMxBij4ZWB0mXdzdxgefl JuU7JYvxrH0BWA6RRjDlKpacv6mCT1/4G6JclxZN4VwZIQYzLKuPXe9kB1gXxapVv+VJ EcG/ZghHKHnzhSsr5I43hNxkGlOefsYXOhRqT1w56o8udnp2WqHYeVxswdsJHKKRilC/ VQbMvvgnfGuXe75gz14ndggMgzFBy39S6GGTX20PnnjVLw0ZEAkzN15zEr3qnzWIg8gj VTfA== X-Gm-Message-State: AFuF++mYWnS1VDmkDr+1PcxuS7qrq4yQA1Ozi/oDqsk9wO5JSpJ7YAmy tV2cHMwvMbisZkp10rCdfrtYy0s4BhVoM91TrTQH88DUVxlB+ShwqpujtK1W3jnQ8lf4FQ0gDdh 24LV6/Vs= X-Gm-Gg: AYBFou1lLga9/Uo4R7x/4EGfq8wIw427Dawy2b9nsFNKVNPTfYgPUGt7MsiUxVl/Dem jbTeG9yZwSfseSEETae8bSUbOjFe7ZENNSOATCkZZ1C0PyxJ3yH6xfTJ3Q9s+O75i5FG+GNx1A5 BLQMS2xOMlOQ0TEAeWgCa4ul+0VCKWNbdxg+8DW5hFl95af0DQix8U/vfNnJXrwJV3TatbvLcXx diNz1Pna1W8uA2dEsybctO2RQwOj1eONXPBCDacK0uKu0sriUPz18igSI0ix7RGtxfU9ato37AN LPhu4RB/hXjIeksKrAQvVjmjCXukqbuK4Z2Cl8KevkgwSkcELd65MdgNXOstQkFrJ7zXiBcwYZV Hg86vWJjwpfSBWHtteOA4Jm2dI0qFWfV8/ys6G3T5OFzkCUg1CMlWRd3akrIZ6qtlaJfGXlZCNT CU6o8WL5iiY3LwKOnEcysqiHS5OhVGX4c/E0Gk6hkPteJcaqyifwUUDDKgf6mb6wInbJa8N1dsg kqFVww= X-Received: by 2002:a05:6a20:6a1c:b0:3c3:a20f:f729 with SMTP id adf61e73a8af0-3daed4bb928mr20220922637.7.1789267366454; Sat, 12 Sep 2026 19:42:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 60/86] tcg: Generic expansion of tcg_gen_extract_* Date: Sat, 12 Sep 2026 16:38:11 -1000 Message-ID: <20260913023837.741866-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.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: 1789267467366158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 131 ++++++++++++----------------------- 3 files changed, 46 insertions(+), 90 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index d3c7e0e12b9..f31ad085208 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -134,8 +134,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); -void tcg_gen_extract_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len); void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, @@ -183,8 +181,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); -void tcg_gen_extract_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len); void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index a2244bedeb2..856338aa0d4 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -17,6 +17,7 @@ DEF5(deposit, TCGV, TCGV, TCGV, unsigned, unsigned) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) +DEF4(extract, TCGV, TCGV, unsigned, unsigned) DEF3(eqv, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index a6f3b4bfefe..e8d07764861 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -702,6 +702,51 @@ static void gen_eqv(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, + unsigned int ofs, unsigned int len) +{ + unsigned width =3D tcg_type_size(type) * 8; + uint64_t mask; + + tcg_debug_assert(ofs < width); + tcg_debug_assert(len > 0); + tcg_debug_assert(len <=3D width); + tcg_debug_assert(ofs + len <=3D width); + + /* Canonicalize certain special cases, even if extract is supported. = */ + if (ofs + len =3D=3D width) { + gen_shri(type, dst, src, ofs); + return; + } + + if (TCG_TARGET_extract_valid(type, ofs, len)) { + gen_op_ttii(INDEX_op_extract, type, dst, src, ofs, len); + return; + } + + /* Assume that zero-extension, if available, is cheaper than a shift. = */ + if (TCG_TARGET_extract_valid(type, 0, ofs + len)) { + gen_op_ttii(INDEX_op_extract, type, dst, src, 0, ofs + len); + gen_shri(type, dst, dst, ofs); + return; + } + if (TCG_TARGET_extract_valid(type, 0, len)) { + gen_shri(type, dst, dst, ofs); + gen_op_ttii(INDEX_op_extract, type, dst, src, 0, len); + return; + } + + mask =3D MAKE_64BIT_MASK(0, len); + if (tcg_op_imm_match(INDEX_op_and, type, mask)) { + gen_shri(type, dst, src, ofs); + /* Do not recurse with gen_andi. */ + gen_and(type, dst, dst, tcg_constant_internal(type, mask)); + } else { + gen_shli(type, dst, src, width - len - ofs); + gen_shri(type, dst, dst, width - len); + } +} + static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, dst, src); @@ -1082,49 +1127,6 @@ void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 ar= g, } } =20 -void tcg_gen_extract_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len) -{ - uint32_t mask; - - tcg_debug_assert(ofs < 32); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 32); - tcg_debug_assert(ofs + len <=3D 32); - - /* Canonicalize certain special cases, even if extract is supported. = */ - if (ofs + len =3D=3D 32) { - tcg_gen_shri_i32(ret, arg, 32 - len); - return; - } - - if (TCG_TARGET_extract_valid(TCG_TYPE_I32, ofs, len)) { - tcg_gen_op4ii_i32(INDEX_op_extract, ret, arg, ofs, len); - return; - } - - mask =3D (1u << len) - 1; - if (ofs =3D=3D 0) { - tcg_gen_andi_i32(ret, arg, mask); - return; - } - - /* Assume that zero-extension, if available, is cheaper than a shift. = */ - if (TCG_TARGET_extract_valid(TCG_TYPE_I32, 0, ofs + len)) { - tcg_gen_op4ii_i32(INDEX_op_extract, ret, arg, 0, ofs + len); - tcg_gen_shri_i32(ret, ret, ofs); - return; - } - - if (tcg_op_imm_match(INDEX_op_and, TCG_TYPE_I32, mask)) { - tcg_gen_shri_i32(ret, arg, ofs); - tcg_gen_andi_i32(ret, ret, mask); - } else { - tcg_gen_shli_i32(ret, arg, 32 - len - ofs); - tcg_gen_shri_i32(ret, ret, 32 - len); - } -} - void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len) { @@ -1829,49 +1831,6 @@ void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 ar= g, } } =20 -void tcg_gen_extract_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len) -{ - uint64_t mask; - - tcg_debug_assert(ofs < 64); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 64); - tcg_debug_assert(ofs + len <=3D 64); - - /* Canonicalize certain special cases, even if extract is supported. = */ - if (ofs + len =3D=3D 64) { - tcg_gen_shri_i64(ret, arg, 64 - len); - return; - } - - if (TCG_TARGET_extract_valid(TCG_TYPE_I64, ofs, len)) { - tcg_gen_op4ii_i64(INDEX_op_extract, ret, arg, ofs, len); - return; - } - - mask =3D (1ull << len) - 1; - if (ofs =3D=3D 0) { - tcg_gen_andi_i64(ret, arg, mask); - return; - } - - /* Assume that zero-extension, if available, is cheaper than a shift. = */ - if (TCG_TARGET_extract_valid(TCG_TYPE_I64, 0, ofs + len)) { - tcg_gen_op4ii_i64(INDEX_op_extract, ret, arg, 0, ofs + len); - tcg_gen_shri_i64(ret, ret, ofs); - return; - } - - if (tcg_op_imm_match(INDEX_op_and, TCG_TYPE_I64, mask)) { - tcg_gen_shri_i64(ret, arg, ofs); - tcg_gen_andi_i64(ret, ret, mask); - } else { - tcg_gen_shli_i64(ret, arg, 64 - len - ofs); - tcg_gen_shri_i64(ret, ret, 64 - len); - } -} - void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267500; cv=none; d=zohomail.com; s=zohoarc; b=YJO+H1Ki53Nng9tbNk/VLV9UiMCPQBdgSnVOfevIQd8ag2GAXwKYdXrEUTVO5VQblf0xCEsxOz53bieINxhkZQxm++wk9bGHZWZa6T2mAySFDIx/s73kK76GZQpvvZCSYY6zhGkaCisevRvV3uYKApBfURO6/zEYSwwIFHooErw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267500; h=Content-Transfer-Encoding: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:Cc; bh=8nVaRSAq+Xy0i1dSMIilM4fKeLkrvkGh+aTe5+uvrTo=; b=l4zNSZyQoBkjRTxYqv6eWl6PwNsSrZZosPNrrbf57ZHtUNJdIHy2pfa9Nwv69jQykTTTcQzmXGxypP/Pm+hNr+UMzptl0FhlCw1Sm8DKKKsacZqArltoKDFjRAjJJ0cMSHKxSJzHuGJSLR+bDviB9PGLGGfIHeyb9b+xGQbCvaQ= 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 1789267500144411.08052749641627; Sat, 12 Sep 2026 19:45:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBD-0003U7-TI; Sat, 12 Sep 2026 22:42:55 -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 1x5aB9-00037a-3l for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:51 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB7-0001wd-0D for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:50 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b31b4281eso1095861a91.2 for ; Sat, 12 Sep 2026 19:42:48 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267367; x=1789872167; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=8nVaRSAq+Xy0i1dSMIilM4fKeLkrvkGh+aTe5+uvrTo=; b=KBhstxgPXplgsEmC9dWYlww+joWZUGr1anWrkz7fHtrKIbpYb/2fN/u+EWYEOY9WTd qDhE4Bri4DCo4qR4h84/ZtW+ZBD37mqQYMIQBVi7QJI1+ydt2+TL+iSQTj1Rqluw8eoZ GcYV5IOIL1hwfB+gaJjXmPJp2vJ8pn50h1xdJ80UKjyjAktoYqvOBflxM+JtcPW2cB67 JYTZ7lgfLStThJzh/mIif7uf8cCtaXtXKnr8JdybcxGst4tTS5PUh0k/pThB9Gnojtbq rnWZpzzrWhUaU+4fsdgr63LsRM6WkcL8ZGG+RK7zeWpHTZTrXvDVCjp2eutV5kcqCzk7 ts6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267367; x=1789872167; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=8nVaRSAq+Xy0i1dSMIilM4fKeLkrvkGh+aTe5+uvrTo=; b=C4jCd2FPORE8pzfnhiYVlFxoZcxlwDhdFBusfKAT4jKfsvYh3K5ap4Drl1nYD766Ns GdxFWRoIY+XU7y2pv/+/x/UfmV2cGEBXO2aoWeXZvbQrqkqlDBE/h991fvC57EbC68y6 Lqb82PAVMl1ovP9Ll/f1Y5uQvXwQiXH7P4BTP65VDbp5yf66Sxwwo0+Cqj2MWdWg8AAr 3uOQl5+wSlglbJUG5W3ZaDmQSyQOfaw6N5ctQfJio4Oe4LiC550X+reTk0Mu501x+oTt qRh1CjLkcSTYGakjdxOPaKCGxLBV+Ys6zgYt0bbcchyx9A4Ql5h8TY7D2+oHPzcZSR0g cQeg== X-Gm-Message-State: AFuF++nlMm5ZMyYuuvxhkdL5knrdsWJswv+CJU0A9qm6sgex95gT5bMM vo2c1TJSMb3pwy0vyaOppKkQkk+d7RbH/iRq+EJmtqfvgMQtixzou2eZP2mEWL9+nLBk78M/ml2 gqIMY0c0= X-Gm-Gg: AYBFou3P/n9a8mBEYCG6Idv3UH1fbbwlj9PRoWdcQXmuIlTqQvATZQY/KHeIJ0KiCUH JuX0hqkLd8ZvLLhfE2N1nMjc6T98nILgbL2inslL7vlMpYlUzFn8uFHeA+lGmiyzzvPGi/HYkB7 +MXkkb/abRDqfzHIKSyyfXjsiW+lEs2V3GypfMgsvsIfHLKVhT+2v03u1rFvisclgZBg3UJOfWs e25+tl2T31uMx4ixFV+3kiAISNuByUIP9fEl6fPbHfzJQbuFr7atvoWuG+Pks7s0inAqdei/l1s 6gn3hFgXhh2Jxg09IdoT0roWnO9ezmjQ3DvSVhj+ljlnENzWGSgHG/RWi/LmKx9p6oFhAbrpmzV M3O9zkyLvW+vWxcABnS14+9adAIK24p7mt8XJ/LIrERB8Yzgx3gJl1AaO+QVQ43EzWqL+7VtFsL 6AHiyMOJ9sc4xNeqyYzzGMDzKYJ0l6+/PgiLEEBZc48SAD4AgdxvPhJ1w2EYgPRvD65tUiCGJbA m+1Sjg= X-Received: by 2002:a17:90b:134f:b0:399:1b08:28de with SMTP id 98e67ed59e1d1-39d9beb0be4mr20886073a91.7.1789267367459; Sat, 12 Sep 2026 19:42:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 61/86] tcg: Generic expansion of tcg_gen_sextract_* Date: Sat, 12 Sep 2026 16:38:12 -1000 Message-ID: <20260913023837.741866-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267501606158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 121 +++++++++++------------------------ 3 files changed, 38 insertions(+), 88 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index f31ad085208..2800aa0dd0e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -134,8 +134,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned int ofs, unsigned int len); -void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -181,8 +179,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned int ofs, unsigned int len); -void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 856338aa0d4..21a941f5458 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -43,6 +43,7 @@ DEF3(sar, TCGV, TCGV, TCGV) DEF3(sari, TCGV, TCGV, TINT) DEF4(setcond, TCGCond, TCGV, TCGV, TCGV) DEF4(setcondi, TCGCond, TCGV, TCGV, TINT) +DEF4(sextract, TCGV, TCGV, unsigned, unsigned) DEF3(shl, TCGV, TCGV, TCGV) DEF3(shli, TCGV, TCGV, TINT) DEF3(shr, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index e8d07764861..4152e29143d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -244,20 +244,6 @@ static void DNI tcg_gen_op4i_i64(TCGOpcode opc, TCGv_i= 64 a1, TCGv_i64 a2, tcgv_i64_arg(a3), a4); } =20 -static TCGOp * DNI tcg_gen_op4ii_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 = a2, - TCGArg a3, TCGArg a4) -{ - return tcg_gen_op4(opc, TCG_TYPE_I32, - tcgv_i32_arg(a1), tcgv_i32_arg(a2), a3, a4); -} - -static TCGOp * DNI tcg_gen_op4ii_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 = a2, - TCGArg a3, TCGArg a4) -{ - return tcg_gen_op4(opc, TCG_TYPE_I64, - tcgv_i64_arg(a1), tcgv_i64_arg(a2), a3, a4); -} - static void DNI tcg_gen_op5ii_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, TCGv_i32 a3, TCGArg a4, TCGArg a5) { @@ -1041,6 +1027,43 @@ static void gen_setcondi(TCGType type, TCGCond cond,= TCGTemp *dst, gen_setcond(type, cond, dst, src1, tcg_constant_internal(type, src2)); } =20 +static void gen_sextract(TCGType type, TCGTemp *dst, TCGTemp *src, + unsigned int ofs, unsigned int len) +{ + unsigned width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(ofs < width); + tcg_debug_assert(len > 0); + tcg_debug_assert(len <=3D width); + tcg_debug_assert(ofs + len <=3D width); + + /* Canonicalize certain special cases, even if extract is supported. = */ + if (ofs + len =3D=3D width) { + gen_sari(type, dst, src, width - len); + return; + } + + if (TCG_TARGET_sextract_valid(type, ofs, len)) { + gen_op_ttii(INDEX_op_sextract, type, dst, src, ofs, len); + return; + } + + /* Assume that sign-extension, if available, is cheaper than a shift. = */ + if (TCG_TARGET_sextract_valid(type, 0, ofs + len)) { + gen_op_ttii(INDEX_op_sextract, type, dst, src, 0, ofs + len); + gen_sari(type, dst, dst, ofs); + return; + } + if (TCG_TARGET_sextract_valid(type, 0, len)) { + gen_shri(type, dst, src, ofs); + gen_op_ttii(INDEX_op_sextract, type, dst, dst, 0, len); + return; + } + + gen_shli(type, dst, src, width - len - ofs); + gen_sari(type, dst, dst, width - len); +} + static void gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -1127,41 +1150,6 @@ void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 ar= g, } } =20 -void tcg_gen_sextract_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 32); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 32); - tcg_debug_assert(ofs + len <=3D 32); - - /* Canonicalize certain special cases, even if extract is supported. = */ - if (ofs + len =3D=3D 32) { - tcg_gen_sari_i32(ret, arg, 32 - len); - return; - } - - if (TCG_TARGET_sextract_valid(TCG_TYPE_I32, ofs, len)) { - tcg_gen_op4ii_i32(INDEX_op_sextract, ret, arg, ofs, len); - return; - } - - /* Assume that sign-extension, if available, is cheaper than a shift. = */ - if (TCG_TARGET_sextract_valid(TCG_TYPE_I32, 0, ofs + len)) { - tcg_gen_op4ii_i32(INDEX_op_sextract, ret, arg, 0, ofs + len); - tcg_gen_sari_i32(ret, ret, ofs); - return; - } - if (TCG_TARGET_sextract_valid(TCG_TYPE_I32, 0, len)) { - tcg_gen_shri_i32(ret, arg, ofs); - tcg_gen_op4ii_i32(INDEX_op_sextract, ret, ret, 0, len); - return; - } - - tcg_gen_shli_i32(ret, arg, 32 - len - ofs); - tcg_gen_sari_i32(ret, ret, 32 - len); -} - /* * Extract 32-bits from a 64-bit input, ah:al, starting from ofs. * Unlike tcg_gen_extract_i32 above, len is fixed at 32. @@ -1831,41 +1819,6 @@ void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 ar= g, } } =20 -void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 64); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 64); - tcg_debug_assert(ofs + len <=3D 64); - - /* Canonicalize certain special cases, even if sextract is supported. = */ - if (ofs + len =3D=3D 64) { - tcg_gen_sari_i64(ret, arg, 64 - len); - return; - } - - if (TCG_TARGET_sextract_valid(TCG_TYPE_I64, ofs, len)) { - tcg_gen_op4ii_i64(INDEX_op_sextract, ret, arg, ofs, len); - return; - } - - /* Assume that sign-extension, if available, is cheaper than a shift. = */ - if (TCG_TARGET_sextract_valid(TCG_TYPE_I64, 0, ofs + len)) { - tcg_gen_op4ii_i64(INDEX_op_sextract, ret, arg, 0, ofs + len); - tcg_gen_sari_i64(ret, ret, ofs); - return; - } - if (TCG_TARGET_sextract_valid(TCG_TYPE_I64, 0, len)) { - tcg_gen_shri_i64(ret, arg, ofs); - tcg_gen_op4ii_i64(INDEX_op_sextract, ret, ret, 0, len); - return; - } - - tcg_gen_shli_i64(ret, arg, 64 - len - ofs); - tcg_gen_sari_i64(ret, ret, 64 - len); -} - /* * Extract 64 bits from a 128-bit input, ah:al, starting from ofs. * Unlike tcg_gen_extract_i64 above, len is fixed at 64. --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267556; cv=none; d=zohomail.com; s=zohoarc; b=RYLTY7+NPafph2BSWCuPhiZyHQMyFZsLOPIR1IGDB0kZ6Q/RWWF3rnNP1WY2eqPrD+T3WGy/CH18y2v3I4HQaXjGeU5bvJGvBmu18K6eDtMO3myKlzd2qwnoEkLO9nsf4lAvBg2DyWPCpGCKewHN90aV2vIytvfE5GWg1OdR4zw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267556; h=Content-Transfer-Encoding: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:Cc; bh=pZy4FFipy8bxOrD2p4v95gJWerVEz7A3S4kKTHj1pmw=; b=PiNy5IAtfVFVTDJLwEd1ZC9dEmh14pIm54AUv1hb5Ut5fReEbnok44UoSXrENa+HyvSZHSuWCW1byTZyOJ+NvbUj3aE5Hc6lkfKLXFqbIOKFFFm6hc5xan3Q1HNK+1v/7cB7Nw46BLO3NDWV1qcyn+81f3JW+h7vPFaW56PK0ro= 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 1789267556783534.3922705642897; Sat, 12 Sep 2026 19:45:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBE-0003W1-Oj; Sat, 12 Sep 2026 22:42: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 1x5aB9-0003Dv-U8 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:52 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB8-0001wu-0J for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:51 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4bfb6so456911a12.3 for ; Sat, 12 Sep 2026 19:42:49 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267368; x=1789872168; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=pZy4FFipy8bxOrD2p4v95gJWerVEz7A3S4kKTHj1pmw=; b=x9m7dY1EQfVHTEdlctJE9bbU/f+Bp4frYUuToTuI3KxUvY84pvXnZOveJo9TBZnI3f Sl9t7VUlKyQNZBuyeX5ng/Er2tQB5vFjMjC8uxGe7IHX46UhBqgfuQKs3C29Pucmwjx7 +8TjKeDl2uGjCNaEGo+Om5jJx1bgeoHYeSL4LYUSgceRT9kfwTdc5wzC96S4UhYSeVE6 2CnYNOxwsLJfvCPRBUAPbcoWr5cuSMFpd8gvS+WKGy4dFOkkwk599semwQCvMe1ANvBv 97OEnSc9yKkEHZX7zX5wuSb/pUMRchaBMaLFrWrsaWOtz3H8YBWo4PZWGvuUFamrvihq zQbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267368; x=1789872168; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=pZy4FFipy8bxOrD2p4v95gJWerVEz7A3S4kKTHj1pmw=; b=WxWh8wIaiVNL9f/8bEHumhP1drW9roMZ7dcQxe4J8koVEiCdWTY+C81DiC3enJmPlF td9ppOADdSMsN9au/hg8/KHupMGEz+QrYSOH3f8kR/ueemmjF+4Ses5ZFMKYkG2zNI/o aOea/aCcmFThjlnUHtoF6gVd5OYRcpKMYSJIBj6o2r/rvduJcaJM7rwKSj/ApADbiaTV 4z22EX2GRXRenKuLWg/XUFph8c8S1fvdhc3/35WMvyf70O8SJs1oFx3TgtFuw5Rdw/OR N+ykqhatOebYjwhkONCeuE4OwpTsZOssxk78LFdQadXy0w6TgZxzrKIvQYnPEMoByz/X DK8Q== X-Gm-Message-State: AFuF++lFHWt5CezxGvlreYubLhdP/uv4ItX92vSDG+VtCkK1ZVzUlLx+ La9XfYpE4QnWxV7DretoS7nW0zkaaHSd8VwDwJG0JEJJCgQeUDtZmMkyPfh+KzrNChOpiNOyE6R Hkrt5ZOs= X-Gm-Gg: AYBFou2ZkrlTHfffYonlnhzCLH5w5+eiq3EMiZaEQBWHWVmlY4oWmVo79+9or7lHoSS 5OWG9NkcF01/dSx1B10eMUQmigZvqYokfZYtynB0dAVRhuU9WuPq27T2Dp3RubUWgdVgGTOf58T G6B4DCgstw6fgLK66jdIRq4fNvd4Bw/GlcEiUmg4E/7mZVlWwNaTaDrSp9gmb/dnhKWSbmC35RN /kWoztpi0GTXHG/JbsE08n1XJFDLoq2TuDFBGc8GHs6zovaS1W4SNK3ENCSjMIsN8WfRM/4lgxw Vy1uReKFQPHdwRySK8jSOdo81gRQ7o0cZ1HkegXBKpBQuHttx3p5CInDlkIm7ws2CE1/ZZJ2/F1 /YSNDVp1iDi5OkxZ8eJhZIukGGRssDIi9vOoM8F/CvYohVrvBDelbjm4NfRBEd55mD+d+ulNBLJ lKZTB7rBFqwBa5bwsr1zzyiZ6wIKdZFqX1cd5H5x3iEaghfOtpykzLYarf6Z7pdGmyyJBnmNJMm x67CGOX X-Received: by 2002:a05:6a21:a95:b0:3da:6bdd:2c74 with SMTP id adf61e73a8af0-3daed306372mr22886209637.10.1789267368367; Sat, 12 Sep 2026 19:42:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 62/86] tcg: Generic expansion of tcg_gen_deposit_z_* Date: Sat, 12 Sep 2026 16:38:13 -1000 Message-ID: <20260913023837.741866-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267557620158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 --- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 70 +++++++++++------------------------- 3 files changed, 21 insertions(+), 54 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 2800aa0dd0e..572cb53bf67 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -132,8 +132,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len); void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, unsigned int ofs); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -177,8 +175,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len); void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, unsigned int ofs); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 21a941f5458..3b44db51f55 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -14,6 +14,7 @@ DEF2(ctpop, TCGV, TCGV) DEF3(ctz, TCGV, TCGV, TCGV) DEF3(ctzi, TCGV, TCGV, TINT) DEF5(deposit, TCGV, TCGV, TCGV, unsigned, unsigned) +DEF4(deposit_z, TCGV, TCGV, unsigned, unsigned) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 4152e29143d..49870f6df73 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -244,20 +244,6 @@ static void DNI tcg_gen_op4i_i64(TCGOpcode opc, TCGv_i= 64 a1, TCGv_i64 a2, tcgv_i64_arg(a3), a4); } =20 -static void DNI tcg_gen_op5ii_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGArg a4, TCGArg a5) -{ - tcg_gen_op5(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), a4, a5); -} - -static void DNI tcg_gen_op5ii_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGArg a4, TCGArg a5) -{ - tcg_gen_op5(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), a4, a5); -} - /* Generic ops. */ =20 void gen_set_label(TCGLabel *l) @@ -642,6 +628,26 @@ static void gen_deposit(TCGType type, TCGTemp *dst, TC= GTemp *src1, } } =20 +static void gen_deposit_z(TCGType type, TCGTemp *dst, TCGTemp *src, + unsigned int ofs, unsigned int len) +{ + unsigned width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(ofs < width); + tcg_debug_assert(len > 0); + tcg_debug_assert(len <=3D width); + tcg_debug_assert(ofs + len <=3D width); + + if (ofs + len =3D=3D width) { + gen_shli(type, dst, src, ofs); + } else if (ofs =3D=3D 0) { + gen_extract(type, dst, src, 0, len); + } else { + TCGTemp *zero =3D tcg_constant_internal(type, 0); + gen_op_tttii(INDEX_op_deposit, type, dst, zero, src, ofs, len); + } +} + static void gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -1132,24 +1138,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 32); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 32); - tcg_debug_assert(ofs + len <=3D 32); - - if (ofs + len =3D=3D 32) { - tcg_gen_shli_i32(ret, arg, ofs); - } else if (ofs =3D=3D 0) { - tcg_gen_extract_i32(ret, arg, 0, len); - } else { - TCGv_i32 zero =3D tcg_constant_i32(0); - tcg_gen_op5ii_i32(INDEX_op_deposit, ret, zero, arg, ofs, len); - } -} - /* * Extract 32-bits from a 64-bit input, ah:al, starting from ofs. * Unlike tcg_gen_extract_i32 above, len is fixed at 32. @@ -1801,24 +1789,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 arg, - unsigned int ofs, unsigned int len) -{ - tcg_debug_assert(ofs < 64); - tcg_debug_assert(len > 0); - tcg_debug_assert(len <=3D 64); - tcg_debug_assert(ofs + len <=3D 64); - - if (ofs + len =3D=3D 64) { - tcg_gen_shli_i64(ret, arg, ofs); - } else if (ofs =3D=3D 0) { - tcg_gen_andi_i64(ret, arg, (1ull << len) - 1); - } else { - TCGv_i64 zero =3D tcg_constant_i64(0); - tcg_gen_op5ii_i64(INDEX_op_deposit, ret, zero, arg, ofs, len); - } -} - /* * Extract 64 bits from a 128-bit input, ah:al, starting from ofs. * Unlike tcg_gen_extract_i64 above, len is fixed at 64. --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267538; cv=none; d=zohomail.com; s=zohoarc; b=QgQhyU9r8GO5vNjCqsA02wSunNPSzFJbtPLbqpG/2+KM9zmFzgUmED+Es6Ru6w/BJXmiDEgdnWzJV75Yv1VrFOTLydg1MIJ2etJCJIREGCgrkx+oSGtEXjXTdHhfMrmKZlnqG94mQH5B3o6ZOLAvvLN9JGYTswJ7ImRU/vuSiWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267538; h=Content-Transfer-Encoding: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:Cc; bh=5jXUshvCPeZYiDXc7WZ4y2W0CT0yd+LK0xnp4MmBzeI=; b=IToO0Rwc1/BJJh361nkUQfKhO2DRAfaJNbTFmyazP5naGbArWXBvxkxyl7Itw6QeJXB74T0aJPTDyTrSzoOSGivVi0AHuOY1Y9Bligd2ev9T3ygBYXNvCxc1acY0VmTBtP0RnLWBkQa2RUxiBXgaPjvXVcSdD+9Lyg0T+AildbE= 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 178926753852595.73600261434092; Sat, 12 Sep 2026 19:45:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBE-0003W5-P7; Sat, 12 Sep 2026 22:42: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 1x5aBA-0003Hz-Qe for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:52 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB8-0001xC-SS for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:52 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4ae2cso1154237a12.0 for ; Sat, 12 Sep 2026 19:42:50 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267369; x=1789872169; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=5jXUshvCPeZYiDXc7WZ4y2W0CT0yd+LK0xnp4MmBzeI=; b=c2wZMj3bBz/9k0WiJLQXDSdOGpXAbbK8+Yn/N26hjhWDHUvkt0wraJ8W/veBN2g8mm 7cB1NuuTc23JvW81IYZWynYHRbFGng2WLSN1x02/OK4XNLMObVCP5zGgS5trYv4RuKyu usZQFIV7dsvNMypponC3UYphVjAdc5aDy8GXbNgeqM6b5tQhceb1Kx2eK2SYCCULoZ5D N2WsXxGzDZ1gEpluJO68NrLF8q0VyGZa3V2giSuYEuS7FJCZmoZPFymiYkdfvseDOFJe UIBErGAMUbflYkT9byGbeZao1ruupgSCh3zPAfwTGSsG4QPLHQNzSqQSXt+IPgqW9zL0 qrkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267369; x=1789872169; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=5jXUshvCPeZYiDXc7WZ4y2W0CT0yd+LK0xnp4MmBzeI=; b=U7UU4maz6e+k3yPS8w0NgygDjWPP0lmhuhwTHUhJ4r2yL//2BHRgi8Le7joO3KMEzr 6A4E1UUi4GBkvjJxuXumREfqh8q87GywYIsS6V1m/gKXlqi5NNJqdD1cSsdt3oEyDaDF u0WLJFsYPXD8Lu4+p1Gzvv2xUer3Q+rwXIfXtbITYENPpYLgOQN/KxZNxkNJJ8J+6F95 Mg7Nk6zSiY0Uns0F4McdUrK4oQr+1VKWEjOlxGiP6oGYPA9+4pakylN+spFON0r8p2Qm e6o3eo/lTbdv3NRUjPhhrPi+K40VaPEjIRKgQStWNswBH5B7XMZB/NG/YDqa6X4Q51ix 0l3w== X-Gm-Message-State: AFuF++nS028c3CZHdR7svf33xlCx8JnYaJ6Fd2AylzS/6ZsKt84Q63WE fD/P6NGXsYEOj4Nu9z4RpGEXRL8XOlggccn7HK+w+7RcKHN5iCAm419oPftxvwVI8xTToxwcu7l t30tK8Mw= X-Gm-Gg: AYBFou3OjAP+6yuPBGIlogU6nzeYQg01TIJEzs5SmbXIp2jV9wQvRhu1gXX0VJvzHxO GkfC8MLkpElpoE0D8Q+Xe9J7OG+bBdJV+aAFGnpa6VjrcX6eB0d0gIYHwo4rAqIKr70j5aoD+7l 3aGvRuqqbkyMFj5Bngcdj24jUPcEeiTr2pVFlm7DTWEy98JKEWjb+nV+tdK9bpO+dyykiEqtZh4 KJ5yiPM5ieUXMIO8ju1Yr+oFl1RUBM19/u2OaaEK5GNljI6wc0NLE5nhSCKjMKzxs6VykYzEzH/ hUWA0Q6JERe0hYjnc9EUC8H7oIyMbuHdXUYF6CQWn9n5C1mQEgJp85k5dv73v2OV8/tMn3AQaGp 9sRMYJxgDlgReTG9CAT0hXUUUROQFteQye8jIbs/oCe/MHRNWesvwkkNhIl24H2D6lcSJoUYzv9 sn+A4cKIpe1U2dpOjYxfIsX/khLIavMkZVeEsb/bkcLbStZIyzisYmm1yPDAQcLlEOFOjHjsz3w gYkq/A= X-Received: by 2002:a05:6a21:699:b0:3c3:7179:a640 with SMTP id adf61e73a8af0-3daed0ff231mr19974568637.3.1789267369416; Sat, 12 Sep 2026 19:42:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 63/86] tcg: Generic expansion of tcg_gen_ext8s_* Date: Sat, 12 Sep 2026 16:38:14 -1000 Message-ID: <20260913023837.741866-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267539505158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 572cb53bf67..94eb510a1a9 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -143,7 +143,6 @@ void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); -void tcg_gen_ext8s_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext8u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -187,7 +186,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, = TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); -void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 3b44db51f55..afb8bac515b 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -18,6 +18,7 @@ DEF4(deposit_z, TCGV, TCGV, unsigned, unsigned) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) +DEF2(ext8s, TCGV, TCGV) DEF4(extract, TCGV, TCGV, unsigned, unsigned) DEF3(eqv, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 49870f6df73..b7a8cf108b8 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -694,6 +694,11 @@ static void gen_eqv(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_ext8s(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_sextract(type, dst, src, 0, 8); +} + static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1284,11 +1289,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TC= Gv_i32 arg1, TCGv_i32 arg2) tcg_temp_free_i64(t1); } =20 -void tcg_gen_ext8s_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_sextract_i32(ret, arg, 0, 8); -} - void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg) { tcg_gen_sextract_i32(ret, arg, 0, 16); @@ -1590,11 +1590,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_ext8s_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_sextract_i64(ret, arg, 0, 8); -} - void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 16); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267500; cv=none; d=zohomail.com; s=zohoarc; b=GESnl9Yns1IBaTTLpOLq+HjIsqn41Py34CgXjVAU1XVsid844g7mygI4Jgv7vMY/XUgPEWjI76mS+RCUGc/qA740JZ12vdyJKO1+HC1VWAcTfeYVHzcSMdebncl84cV6vJHb/MbCHm4vVzo/XUS6mbMSyEQ9iY1Fj2auWC3wl6U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267500; h=Content-Transfer-Encoding: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:Cc; bh=M/WJW3maXrqd0UUfk79/gPAJ0bTHG3rbSwwMVzZ2edA=; b=Sa88Uv/8t5UpxkzkYJgV8eYGAgBX3Zv75y5BcBsUJmFFw+95iZUFIRzB8mK1Husi79RZ/K/4e2YOJt8U5vG/B1RYXACOpePrer1ttejaF8h1c5Z4cCahYAL+UtV7xk1DqAVotfomTt6UxokWaFwPHsKQmTmHu9PSD/mYPx1YziA= 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 1789267500800625.043108989045; Sat, 12 Sep 2026 19:45:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBF-0003Wh-Io; Sat, 12 Sep 2026 22:42:57 -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 1x5aBB-0003Kc-Sa for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:53 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aB9-0001xY-Sj for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:53 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-3856d6fbcb3so2083026a91.2 for ; Sat, 12 Sep 2026 19:42:51 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267370; x=1789872170; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=M/WJW3maXrqd0UUfk79/gPAJ0bTHG3rbSwwMVzZ2edA=; b=hx9aWaRJ7JvUtfohZFovBY6qfFtHKddkDHakGf6BP5PjNnYCXQBVEpVKk18yEbCskI Sm9X2I83/RLqin2kymEtTIKapcup3PnpU5BJ88xG169aseZzbULVD+wDoJVn8FVyNjte sMSpwOOUlVBaJH/pJ1CFZHgFl+hZd21v5Z+DORlDprlUSzLdoW1oRMGsgVLtGQpM+Dhl v32tyn9MJBkI44SBFrMYjxYSc7dmFvu3t95hIEObRnqZAkZtZHiaG8J/Rd0TOwcQeab+ cAuPRx6A3mRPQgVx0acSZ0GbONcnfvdTt4kJmvQrWZ7E2eWRGEy4TbYd2UqQ4vtcjVzV Qhqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267370; x=1789872170; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=M/WJW3maXrqd0UUfk79/gPAJ0bTHG3rbSwwMVzZ2edA=; b=LwK2MMpdvq+XgO3MOiQKZ4gNYotQERjJElS6CpEPd4bl0WBWdCxxaPR8aRgngEBi/D hcYqZLLMjOtmOLRAgF7ONMsDAITSFAHo7nJNzMKWV3srIbqPYpZAQQWreEw1q183+/vb wUoSFjAJx9WyyM/Hi0wzPTETyS2zpWKjNsIi/QVLfoB2Q6PMSgyrLsqfr2B3sClRW6HC 5D4jtY+ZMsgh4bAbOgNaVhIGZRclbslCQP4bjwCuExWxXl5yR36F1OxnViAaLsCM+rSh RqGiBsCjk2+aIwpKbT5wZlysr2ioEzLst+Z3H4E2OGmVfb7QdIMJBjuNfelR0LAN8ueQ FBcA== X-Gm-Message-State: AFuF++l9ZQ67VbXG8QIqc1AkdQUWc77GLpCa93cBvmJrWGKWlsGSFiV7 eF/fFVzWrmSka9jsrIS6NDX8P3EsmikOJ51X9jAn8QTfWV1mZqWWG/LYqRSdN0EVZVNaghFt6Bb g8HCUREI= X-Gm-Gg: AYBFou1Hypd9WS3IUOynaY+/Ylh304GMGVhVocsvGgmeMqxeRNqGXPoWt4ty8kAYV+5 Kajkw7A+EJP2hweiXKWP+IDPE7Ob2dayQe+W9pNEGf9Em8MjhIS0nzpxa30bLtkb+zA1Nv5538D t3Q8PE5+zun/bvtSRewe6vgSZVITYBO/gbsrSAU/inf5bQTXr+VrUUGSO6N0DI9zpt/vl0NreRs q6Jx3DqqauyGMZAsdPgDkkuZ82Btc15gDRFqJj+ojt9q7XWmb4HYs9IB4PVF2ymD3k3VNhgV1Oe Ow9XsBC4+OCB1mQ/0dne6EUOyTk8DqWqm/n3uSS3QQZMv4YxE+Tg6leANrIBmhBg9t4bwBjg5Fs THpnDKR98Uc4a1KuVsL0AkQzfC0tovUIJvBeUsHYzoabSiOaAQYxUQ9kLZY0qsfqRXyrlIFk9D1 2LBpGJ5JWXstHKaRt9FJkZTrq8aXZybPH//7gEUzshAbPWTM+C0LhiSO7Mt6w7Qr5/AX/KdI1UR wNSWUA= X-Received: by 2002:a17:90b:2641:b0:398:9bd1:3215 with SMTP id 98e67ed59e1d1-39d9c352a63mr19726502a91.22.1789267370314; Sat, 12 Sep 2026 19:42:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 64/86] tcg: Generic expansion of tcg_gen_ext8u_* Date: Sat, 12 Sep 2026 16:38:15 -1000 Message-ID: <20260913023837.741866-65-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.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: 1789267501548158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 94eb510a1a9..011d3aa522c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -144,7 +144,6 @@ void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i= 32 arg1, TCGv_i32 arg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_ext8u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); @@ -188,7 +187,6 @@ void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i= 64 arg1, TCGv_i64 arg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext_i64(TCGv_i64 ret, TCGv_i64 val, MemOp opc); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index afb8bac515b..80807eac2b4 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -19,6 +19,7 @@ DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) DEF2(ext8s, TCGV, TCGV) +DEF2(ext8u, TCGV, TCGV) DEF4(extract, TCGV, TCGV, unsigned, unsigned) DEF3(eqv, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b7a8cf108b8..57e5ab9abb4 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -699,6 +699,11 @@ static void gen_ext8s(TCGType type, TCGTemp *dst, TCGT= emp *src) gen_sextract(type, dst, src, 0, 8); } =20 +static void gen_ext8u(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_extract(type, dst, src, 0, 8); +} + static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1294,11 +1299,6 @@ void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg) tcg_gen_sextract_i32(ret, arg, 0, 16); } =20 -void tcg_gen_ext8u_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_extract_i32(ret, arg, 0, 8); -} - void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg) { tcg_gen_extract_i32(ret, arg, 0, 16); @@ -1600,11 +1600,6 @@ void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) tcg_gen_sextract_i64(ret, arg, 0, 32); } =20 -void tcg_gen_ext8u_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_extract_i64(ret, arg, 0, 8); -} - void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_extract_i64(ret, arg, 0, 16); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267456; cv=none; d=zohomail.com; s=zohoarc; b=RZntj0eVUCezS2mBAH3ecBZgBgJ7oWTtNOZDtCZA7v8a1y5QsRIXJmH0tzh4G7I2umgHxWu7YhPlXe/w0PR6W2YiOijRa/UbLzApNG6yzAbkTIvoTaYa6ajz8JaiVPTSSWQJCbFkqV05T+UmjIg9votaXPdzR8rlPu7dg4Hv/lM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267456; h=Content-Transfer-Encoding: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:Cc; bh=y3kcGIZ9KYzln4lxFM9XIbLkGkn+zkNKacqCBCqE6wI=; b=XV5qwYuPhQxpGRGci61TTHYy/oemeiS8zNvYVAqDEJBhfoH95ODHccAZGrlp85xr/FPEKIX2iPYdqQYKpEIClcMhH58W8g6lWPePS9js38RuXsYm4qKpt2v/wg4zhqh5/Pyljuq7142pLGQllgT+XjCh7m9rIrV0GoeuvpelXYU= 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 1789267456876554.9270743728506; Sat, 12 Sep 2026 19:44:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBF-0003Wq-K9; Sat, 12 Sep 2026 22:42:57 -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 1x5aBC-0003NS-EI for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:54 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBA-0001xq-MH for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:54 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2dd53691be5so6770825ad.1 for ; Sat, 12 Sep 2026 19:42:52 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267371; x=1789872171; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=y3kcGIZ9KYzln4lxFM9XIbLkGkn+zkNKacqCBCqE6wI=; b=zEh+WapBVg2HT9WTr/UTLsZsft1ziiagQ4jqnK8nxPxaUUpn062ZRWwxB1ki0X/Wy3 +czTTiallKRfb0Rge+u5vFHSMMfMWkNLdEfozlzspEzIC0uW15+01+NcNPFoSsjfcpJC A7K05cny3AJ3Y4EX6ZG6VSalIIBjwUQpbmdKNnPiiyH2X60FW+jtoELtv8QRqkYnvzkn Urc//xjKZniE9/J3TiCfkiU+YfehlFajBRYImd7ugwc1sltQt9LX04TTmtq28cF1VdRH CdxY1k8dHnDvxn2ldGLBP8/CyokJ5KCTrCqz8e0YEJfWM4HMs/pBgdMlSY6iucdqOx82 A1uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267371; x=1789872171; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=y3kcGIZ9KYzln4lxFM9XIbLkGkn+zkNKacqCBCqE6wI=; b=oUeUAmUurNeR9kX+AgdxZq698xp+H2ioVMo4upNoa2d2tsU5HKxH4u/NnABsWjy48U +wjba4lOw8dvmAKb2KYLEXgsMfzXSd0uzfvFaSky/02nN4xGDgySulHXcHAbULQRKNLQ M+7DoxVjhF5PVL8GRlR1zYTDN4lhS4+rL2ywOTMWgSu3ThidwHlCIXNJ7Qvv2TzzDw2q Dynn3L4ND9kFKM8/+GTCMDXEowUxQ+9hc7zqAh8Sc5t/8snu/cCKJt/769KZJdFaQbBr KmHAv4vqod/KlNUhA+U+PXZE+wrlvQ6Prl0F3ThoilgvWJqKzd7Yx0efnzjOrl9o43B6 HVZw== X-Gm-Message-State: AFuF++mQSn91Jr0b/WHxMFgCs5A2klp8H8rc43jqEIXbMdm9BsZ3WXDt 7im3/FZZdhWceAhZMdLXGf/bk7rb14fJcxwnEHU71nayTOC5FMbvw6GMgj5AgSE8Ex+SowS9QbJ +7bF1FvI= X-Gm-Gg: AYBFou2Pc1SEHPjihvXEJmGVNPACOJVSCvvEEZIH7dKwq35JtrqrA9IGQSOFmJVhNjS nga2lptzT5EwzO4ogNJ+cg703pMKsZj9wcJUUflwXBcypBtZ9bceRUQcywu/om4nCAQKYJtd4k/ Sp/dUQa//IoHPMuq+jl9TwtVtaMa5Eett64tE3fXL4u5hummqgKvdciKHEsJ+riqTzYVLkbuGXh SKtMHGA4E8FJ/l2CHM9d8I7zyyIW0Me28NkPSLlJssdPm0U+eDgSVgxCC0qoKc5QVptJvyENCkV PbZbYXPFnhjUT5MM1IF+CV9imwVMi1gSe6YyDUDORRSQ+U5WKhNj5jM1xECzLDpf8TUTPPXYnMG K6f/idOcIGyry0wxf5abfYp0G6n/TWpw2DI5q6zCevjYNS2Z4IDeSCNjRJoQWTxc9PCxOCuw6dr 2RksOx63+y2CE9p/NYGSUQs1iiqrkekqtvm3dcOK3gMFEuD6ybYndXyk7WRW4oN2tsdx/g+ShMy B+luuY= X-Received: by 2002:a17:902:f685:b0:2ca:e19c:97b with SMTP id d9443c01a7336-2dd4bc27c37mr93372755ad.5.1789267371219; Sat, 12 Sep 2026 19:42:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 65/86] tcg: Generic expansion of tcg_gen_ext16s_* Date: Sat, 12 Sep 2026 16:38:16 -1000 Message-ID: <20260913023837.741866-66-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267457229158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 011d3aa522c..27952e3d36b 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -143,7 +143,6 @@ void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); -void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); @@ -185,7 +184,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, = TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); -void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 80807eac2b4..cb8436e3b39 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -20,6 +20,7 @@ DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) DEF2(ext8s, TCGV, TCGV) DEF2(ext8u, TCGV, TCGV) +DEF2(ext16s, TCGV, TCGV) DEF4(extract, TCGV, TCGV, unsigned, unsigned) DEF3(eqv, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 57e5ab9abb4..b07f3a67eed 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -704,6 +704,11 @@ static void gen_ext8u(TCGType type, TCGTemp *dst, TCGT= emp *src) gen_extract(type, dst, src, 0, 8); } =20 +static void gen_ext16s(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_sextract(type, dst, src, 0, 16); +} + static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1294,11 +1299,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TC= Gv_i32 arg1, TCGv_i32 arg2) tcg_temp_free_i64(t1); } =20 -void tcg_gen_ext16s_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_sextract_i32(ret, arg, 0, 16); -} - void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg) { tcg_gen_extract_i32(ret, arg, 0, 16); @@ -1590,11 +1590,6 @@ void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tc= g_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); } =20 -void tcg_gen_ext16s_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_sextract_i64(ret, arg, 0, 16); -} - void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_sextract_i64(ret, arg, 0, 32); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267380; cv=none; d=zohomail.com; s=zohoarc; b=S7fqz6KCjx9a/JccitTxqNZHGPqa03hBbBE1MQ2ONLXISKwjl8jxuUcWooTSzC7ZH8moiZDAD7GQBEOC9eyiWOXZxfjtGcobbCh+9RCf0XINA8v6GybHbd2xCpA34m/1pqNFP2M1Hk3Cg63oT3/iHDmk4EjaKgu5fDJWC52v3W0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267380; h=Content-Transfer-Encoding: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:Cc; bh=/J09EiTCxDahcnTgt+2ldQAGQXVnu/hVLGdngyd15tA=; b=jLHgHysM+hjoF2tzVff8XfewIf8bmHdf4Dks1Ts09N+cmg4JMHf0iJmCHFG8EqONfF3CMTmT7tQZg1Eea/d1c4untOR1IfH+nl2cjv3cem9+bp73JJtBuLuS6lKaXfCbMXqNU8KFTi7YM1/ZVrXZGxPTl2547Qyhd3BGp8mQEbE= 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 1789267380367704.4798165412789; Sat, 12 Sep 2026 19:43:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBG-0003Z2-DG; Sat, 12 Sep 2026 22:42:58 -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 1x5aBD-0003TS-Es for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:55 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBB-0001yA-L5 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:55 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4bfd1so755853a12.0 for ; Sat, 12 Sep 2026 19:42:53 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267372; x=1789872172; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=/J09EiTCxDahcnTgt+2ldQAGQXVnu/hVLGdngyd15tA=; b=dEDw5Ym705Fd/3COUCbrOVeiXkcN3+/c8qVWR/aQH+Fx7eA4NQEad6wrBx9SvTqLbB Qug8nLPQUPqpNVd0jq3bo+E1Ihwd34gd7fhhRK2xCk3TE1PQfqBzhxAjKmgbGCL4JkkI H7ekkH+vlrqcv365kOoxeUknSAfozkC149UzbGraa6RrY95uETLfNCz+c3H6Y6ALoBRm 1s6QCsBzPtr6m43PV/IOePR0d7dP9XPkTGWxal9+EAO9ht735L2NC5Bk8DQACY+phikw M2sCZU7hCvyb+jSzCAv/3ggqooWOXlbnP8Nmq9KBDxt7+vbcxTaBdGuiXId9FHdTbws6 aToQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267372; x=1789872172; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=/J09EiTCxDahcnTgt+2ldQAGQXVnu/hVLGdngyd15tA=; b=WqijvpHvsP7m2wlBJIbRdkaioX0tkdjKZx4Rv+nf1qvCE39Hxw8XaSTbXoEh2IFPcV 7xrXoK5GqwLDgFWHNWeR/3uMM8rxLjW55JTJQT1963VlGQJE25/CBGKM0+4FuR+PMfOa dPSVgdB37SVIceaKJelpbx4CElSW9R9jdyxZtDqm/ViIbHcOBz9w9cJnJe5B+2UpC4os /e7d+tLYQm7q0BmrMnDoZmcJSiP8hXq9VwY9mDtJDq6xk67qQJEglDcT53nGDeauDw8G ozkgUX7AvpyVK+kVrFL0FUogjBc7ANgRkBPObjLp8tAMZdI5agd3U+CxeU70YGsLzfyi kmuA== X-Gm-Message-State: AFuF++myPUddjwf/ExJLuvT5ttqW3uEUeV1Lv6Zg9qFgdbYuAGtMj6o6 pISVsNIhEJmAdDQDDaIV9Par+VW2AteKLuvOkHuFyZlJX1iZGK0dS7Qvxch+vG8vT7+1PZdLnLu l6BFjeAo= X-Gm-Gg: AYBFou2ZhfvNx/djIHqjMmuUwS21hhDz7FFvtyAPZAVydKRVK2T2Bb8Bcj0Wfjqjf26 6F0re9tPQ0sbtx4XnA8PvBiWU7T+X6CrKaa00COrcum9NXXLaqGIwBnpKSjTZ9V8cHFRTwO2I+r jFLGSohLk5iLx+o4pko25akQ1HHcvjf8A8FAFU8st/x5DGJAvCMoEl/uu2jOvt+O9KeZDQShK+I ++foHbm744+flj+DgP/MyoYiYsG6IC3gKoHjH5eGCjo7pPc2pRbKUgvjySZ0IVXEDU+Zo6KkIXp nxs85SvacEe0Go4BS+ToiN0yOnlnCGT2ZYFMWu1+zkOTNiDP+SkV8EdJqhJ6ZotvLiqVpQGjHaN LjsKeEujBfbf7/5PTy6KB0cVxQpkE8ENDT3a6x+ugka/phlmU3fon62v3zusVctpYNB3PBja7cy Oo0VK1Yf9Z4hxP44nwYup8osnCJPoe+Nif0eJwkRv7vG9oEV+L+wJXXMUPooPa9HZutvTtZaC70 q4XpTE= X-Received: by 2002:a05:6a21:3382:b0:3c4:2b8b:e88f with SMTP id adf61e73a8af0-3daed217b1fmr21183018637.5.1789267372255; Sat, 12 Sep 2026 19:42:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 66/86] tcg: Generic expansion of tcg_gen_ext16u_* Date: Sat, 12 Sep 2026 16:38:17 -1000 Message-ID: <20260913023837.741866-67-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267380957158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 15 +++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 27952e3d36b..ce9b5243911 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -143,7 +143,6 @@ void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); -void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -185,7 +184,6 @@ void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i= 64 arg1, TCGv_i64 arg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext_i64(TCGv_i64 ret, TCGv_i64 val, MemOp opc); void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index cb8436e3b39..dfad7288bb4 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -21,6 +21,7 @@ DEF3(divu, TCGV, TCGV, TCGV) DEF2(ext8s, TCGV, TCGV) DEF2(ext8u, TCGV, TCGV) DEF2(ext16s, TCGV, TCGV) +DEF2(ext16u, TCGV, TCGV) DEF4(extract, TCGV, TCGV, unsigned, unsigned) DEF3(eqv, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b07f3a67eed..5c103bb8e4a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -709,6 +709,11 @@ static void gen_ext16s(TCGType type, TCGTemp *dst, TCG= Temp *src) gen_sextract(type, dst, src, 0, 16); } =20 +static void gen_ext16u(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + gen_extract(type, dst, src, 0, 16); +} + static void gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1299,11 +1304,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TC= Gv_i32 arg1, TCGv_i32 arg2) tcg_temp_free_i64(t1); } =20 -void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - tcg_gen_extract_i32(ret, arg, 0, 16); -} - /* * Internal helper for bit and byte reversal. * Given a repeating matched block of 1's and 0's, swap the bits within @@ -1595,11 +1595,6 @@ void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg) tcg_gen_sextract_i64(ret, arg, 0, 32); } =20 -void tcg_gen_ext16u_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - tcg_gen_extract_i64(ret, arg, 0, 16); -} - void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg) { tcg_gen_extract_i64(ret, arg, 0, 32); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267428; cv=none; d=zohomail.com; s=zohoarc; b=AbEtv9WUfmsUQfwGK7qUMkSKs/yTdPduWaTmayqDFP/NX4K0SxjLbEUbeGlY3lZTkAHQMfBm4b2KBIrT9XcDnbzzf8e1ChD0lbEVA/9VPUfF7HR4rutPEyq71FObDDG+tP/CUx5Vj7Bvos92BauIZb9ELDm9dhq5N6JpuExFfjY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267428; h=Content-Transfer-Encoding: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:Cc; bh=aWRW6rG6+kMq4bIl2P98IBOUOhRaeHh4N6iEongGS1M=; b=bAlG88bIydu+g2KJ2XShcp5QDQoh8/far4ERV/t/3ft2gewEuIJlVZBfwFCo/QHpDWyr4PHfwuzzZ3dDNjUoFHY/bl9N+5nkFpKkHuJKjA2X1FoyLhfJjg7+4bZLDL81lIS93cuB53/oPDnLAOjaIHc8ZYsvvK+uFBcdKn5jf3Q= 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 1789267427913486.3655319001989; Sat, 12 Sep 2026 19:43:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBH-0003cH-A7; Sat, 12 Sep 2026 22:42:59 -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 1x5aBE-0003WH-QU for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:56 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBC-0001yR-Nj for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:56 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc4c3304833so670836a12.3 for ; Sat, 12 Sep 2026 19:42:54 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267373; x=1789872173; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=aWRW6rG6+kMq4bIl2P98IBOUOhRaeHh4N6iEongGS1M=; b=a0otqm63R/H9EPgWZbAwj6S3aupJ9zazHBscPpDjnE24VX1R4ThtT7TD5kkLfIjWbc 6/cqyzJx+cIjO8XxBMLjY/eh7fHCZvHogP8RCiAC+FpxZsL9DgvlmsXkerlsyfmKcjdH IBxfXuBMxDj1maIyEPRmxgcNZCpJLykMvrzYolP4CPzDN3iRtJ2nVmdbjT2PkiLSjnur AO8zs5kXuR/V2EoPhaaIwdiMHdTVepf7ryapKjaKk4uIVCVvv0izA+DkTUt+SSh/Bjyy /sMDlfAWxiT/pBBgJ2VQ/lVolHKPgMfKa3yRbHJyPgk8hZhWzkKn6JGEK5/Wvm9G/Ap0 OcYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267373; x=1789872173; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=aWRW6rG6+kMq4bIl2P98IBOUOhRaeHh4N6iEongGS1M=; b=OHdFHfTsfubTA8/KxBzHnYIXIasIa5Nl3WjH+63p76Xo6oJ8HU4Fwf53tD+7d/70fU fD3H0l4wCskKG3GNlnaiI1f2lj219VsU497VGDcXqLrO0Dlzf0N3v+Vpc41/dvUwwn0Q Wwyvp/WEB/8PjqHQIepNxzomfYvG0ovWIe2/065q4OIpPAqHAwUDnoefSw0AB/PUJRwg rbZ0S2dNWwk4MVojd4PN4neCT2m217N8gA/rY/lg1VBU50BoKS2/PP4KolFqOM0hyUJz rC2Bm745fb6qu2Kej38MqimR9iOhoOtMmEli5TuiCoXFgiVJ2YUB9gtgePlM0afLs5bI 1k7Q== X-Gm-Message-State: AFuF++lUreew0JcllMvw7i5CiaMzrGWlvthjWkNLnQV+usq4GVbiqWyS 7KGnIJ0zeJBdFUqikHI4KMggP7x4ACIf/FkvsLeaYQ9gi0o3+VyqJ4ph9E0HVyBvjAamX+uSXC+ 3/jnDHJc= X-Gm-Gg: AYBFou25O4KckBUfgusVE/ngF6txUugrqmbfkZj+Rhx79ipAYpuiv3bKZ/Q8ehBFY8M 27zgeXYGnM736v9OcmIS/xboF5jmN58/z9sjuCOfqX6e1nkK9gbBKz4JSQxStjUmgc4Gk3yt7Ge aqBw3GlqpDXM3pGufo1p7R2JCAd7LnFdGzKZLnEW/soH/FYyz6V2iTrNjtXPXjpH1bXbvMqVaax hUbk/ivqpfkT8iMmkfqpsE14cMyR8vm1HSDb4r61iTHjlUpTTLka2NJV9ai5kcdi94U0C9wxCNq UouhRrGK1SkmlKfMDg0BxGmXWDjf+JyzI1WaePZJGUcHL1N21NZQ98tcpQI1b0L8RJ6G6a53BRF AdvfG3wOlQzjPhWUmsS9Wt9lgwiyQ7oxmCIp4XpkDVXiD354fWneJHWOMF2yVPWuPy+lNXW8uSB DiKvSvpyYo/IH7mcHCq1wcb69HSOZOT5gJU36iB4PIfP9NfNkn9Eqbn7yK0+FdVQkgzwIaMH67M QBpgihxUhqIjY+wOw== X-Received: by 2002:a05:6a20:2587:b0:3cd:9f0b:f788 with SMTP id adf61e73a8af0-3db0e1b42ebmr8814414637.12.1789267373266; Sat, 12 Sep 2026 19:42:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 67/86] tcg: Generic expansion of tcg_gen_ext_* Date: Sat, 12 Sep 2026 16:38:18 -1000 Message-ID: <20260913023837.741866-68-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267429146158500 Content-Type: text/plain; charset="utf-8" Move from tcg-op-ldst.c and compute the width of the extract instead of using a switch. Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op-ldst.c | 54 ------------------------------------ tcg/tcg-op.c | 13 +++++++++ 4 files changed, 14 insertions(+), 56 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index ce9b5243911..7fad859a284 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -143,7 +143,6 @@ void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); -void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -185,7 +184,6 @@ void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i= 64 arg1, TCGv_i64 arg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_ext_i64(TCGv_i64 ret, TCGv_i64 val, MemOp opc); void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index dfad7288bb4..c31c819ebdc 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -18,6 +18,7 @@ DEF4(deposit_z, TCGV, TCGV, unsigned, unsigned) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) +DEF3(ext, TCGV, TCGV, MemOp) DEF2(ext8s, TCGV, TCGV) DEF2(ext8u, TCGV, TCGV) DEF2(ext16s, TCGV, TCGV) diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index 22211ccb452..031c5ce926b 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -760,60 +760,6 @@ void tcg_gen_qemu_st_i128_chk(TCGv_i128 val, TCGTemp *= addr, TCGArg idx, tcg_gen_qemu_st_i128_int(val, addr, idx, memop); } =20 -void tcg_gen_ext_i32(TCGv_i32 ret, TCGv_i32 val, MemOp opc) -{ - switch (opc & MO_SSIZE) { - case MO_SB: - tcg_gen_ext8s_i32(ret, val); - break; - case MO_UB: - tcg_gen_ext8u_i32(ret, val); - break; - case MO_SW: - tcg_gen_ext16s_i32(ret, val); - break; - case MO_UW: - tcg_gen_ext16u_i32(ret, val); - break; - case MO_UL: - case MO_SL: - tcg_gen_mov_i32(ret, val); - break; - default: - g_assert_not_reached(); - } -} - -void tcg_gen_ext_i64(TCGv_i64 ret, TCGv_i64 val, MemOp opc) -{ - switch (opc & MO_SSIZE) { - case MO_SB: - tcg_gen_ext8s_i64(ret, val); - break; - case MO_UB: - tcg_gen_ext8u_i64(ret, val); - break; - case MO_SW: - tcg_gen_ext16s_i64(ret, val); - break; - case MO_UW: - tcg_gen_ext16u_i64(ret, val); - break; - case MO_SL: - tcg_gen_ext32s_i64(ret, val); - break; - case MO_UL: - tcg_gen_ext32u_i64(ret, val); - break; - case MO_UQ: - case MO_SQ: - tcg_gen_mov_i64(ret, val); - break; - default: - g_assert_not_reached(); - } -} - typedef void (*gen_atomic_cx_i32)(TCGv_i32, TCGv_env, TCGv_i64, TCGv_i32, TCGv_i32, TCGv_i32); typedef void (*gen_atomic_cx_i64)(TCGv_i64, TCGv_env, TCGv_i64, diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 5c103bb8e4a..90accdb7714 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -361,6 +361,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #define C_TCGv_i64 tcgv_i64_temp #define C_int32_t #define C_int64_t +#define C_MemOp #define C_TCGCond #define C_TCGLabelPtr #define C_unsigned @@ -391,6 +392,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef C_TCGv_i64 #undef C_int32_t #undef C_int64_t +#undef C_MemOp #undef C_TCGCond #undef C_TCGLabelPtr #undef C_unsigned @@ -694,6 +696,17 @@ static void gen_eqv(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +static void gen_ext(TCGType type, TCGTemp *dst, TCGTemp *src, MemOp mop) +{ + unsigned width =3D memop_size(mop) * 8; + + if (mop & MO_SIGN) { + gen_sextract(type, dst, src, 0, width); + } else { + gen_extract(type, dst, src, 0, width); + } +} + static void gen_ext8s(TCGType type, TCGTemp *dst, TCGTemp *src) { gen_sextract(type, dst, src, 0, 8); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267428; cv=none; d=zohomail.com; s=zohoarc; b=TI4CksXN/f7GquuA5XLgO4dCq53WH3WtD/zaIAP2CjCL0XYcoBxfxT57FiZrcYVk+xC8NQZHDXWx5gFwospbt5Ghtqoh4HZV4IIq6k6ym6p1RB5fgC0I+JUbV9A8lpG7J3eNv1KLU9bpf1wac4dtp/JXy0uMGYCR1ClqBGK+H2I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267428; h=Content-Transfer-Encoding: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:Cc; bh=dhCzJvWtDJszKUf/B5CG/G12B+nZJX7Lxqt9+EJ+6vk=; b=eC2A4rD5Q6iKkYIYLyWxL+sD8VtWGCmMDUd1IE0R0/Jt8L9GDsEP6tYteyqUpJaKy1ognafcSmzMWS8sXXX4MPzJCGHynOUTagONBjR+y9AgT3zchCuelKAhTNnGmhlzbNDeltlmiw4PCfWs9UdoTH9305tVDQCuMzwYpKKximQ= 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 1789267428434709.2057526449709; Sat, 12 Sep 2026 19:43:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBI-0003me-O9; Sat, 12 Sep 2026 22:43: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 1x5aBF-0003Wx-Lz for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:57 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBD-0001yg-P2 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:57 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-398e9698a70so2294633a91.0 for ; Sat, 12 Sep 2026 19:42:55 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267374; x=1789872174; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=dhCzJvWtDJszKUf/B5CG/G12B+nZJX7Lxqt9+EJ+6vk=; b=m3aY4xwsLLO8pV0rx3kZxlZSy2F8dlhZ1aDvop37YZUOI4/UvACJzY58dCWfj5zy0T sY5zKQj5kaAPDcVIHdTYH7o0dzlS/XodNWD5ejdQKaNDMqgKJa1m1nHgkLHBIm56iRhI r95fLQuZyuwLVrvw6bWmA3g4oIen5g0KdmAGCPGE3MkePimC1EJ7BFQezXioAHXktb49 D/nfuhLpCK2TgOAmVLQ6HqszbM6mBOgPP+FkCEROfQPPBx9SNmEh+hAGDP+NQFPVD8cc XvgjT4L7830sDvomGLLfbHkCx/2h2WUhm9RzGTwS0liURevzbc0O1yMLVMaqwkQBiUPs tz7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267374; x=1789872174; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=dhCzJvWtDJszKUf/B5CG/G12B+nZJX7Lxqt9+EJ+6vk=; b=LoWHoNSnsr1gbmNGnHzqAAeZ17TyNT8ft/iMSnVmXW7AKLe8Z+7MkOTPbEXheJ/O4G zqAbbHti6opTIQRvjn/ZRz7i1N50nzdjSD9qUcBZTB2moEuz1W8pHK3BN37KwqEWw9za V3+c5asY0v/G61wl3VjPEHg9Z30QDYX3quaadVFVZRQCef0dWEslev4M6DpmjbhX3OXZ HecjDU2plk3kartQjd7u8UIKz5nT8KCEiUwYd1Fsy0opEJuZW/K5QDq1aMd/WNsd1B8G coUhVapMNmdFmuxDxzlFukvlfEN58X+/cv39t2QCZ19KnPKakj0yiYnXmSdJQBx2cEGK q+Vw== X-Gm-Message-State: AFuF++mmUn7+1l+x65B1dMvwTQMZQ2k0sOn0BaCNEAPkxyQ6ZlvHAIB6 BS+7HqRSFt37DoVBbQ2YHAs5R9JX6eBXIJ9k9Rrmt92OHxwhfVjMenWLwSC7QkQpTLX4VU6Cbaz BiU7o8Zk= X-Gm-Gg: AYBFou1OOkqlx7qH6g4YIgppI+Y8GWQLxYy3DSEulag+SZKrRXkQtdo4G4W/dQ5TiPB QT0G9PCNVUUa8DfwzfqrIiuwEUlgN6UlI8GXh6hyT2x/laCX7+nocBM8l0zLn5cjh1Cclar8dJJ /IFUJVniyTBjZBXWvci42tYonqg0Bii6pJASghlepDIJizzebGouRYeyBlCNu3SErZQtGKvMlKc 8BdfNqE7V73SAzMq5pc8rKCSe0x+b5MWZQA7wrhG9EGqvQPdZBhLUso5mg5qvS6GsKT307ms+kX KP1fhtufDdq0RcntUskeg2W2M3yX+EiZOFbfQiPUwUrIsW//ZiQNVA7RsFLmpJ3qOqEosTs1KiN Ik7ZsKlFYM/ltEo4W6bhRYzfQLlrxJSr1MWTo3ZABemu1YWPHvNY+2XRmNT6ke2JJSOKcam6P0D cvD6caUqP6AYiY2ryDf0vSqNj5QKaSskJG38K3bLANUMDGnkf3j76Hn7AtuTM8zT6UJ/dqr/yCZ Vb78Dk= X-Received: by 2002:a17:90b:440e:b0:38f:efed:5445 with SMTP id 98e67ed59e1d1-39d9bc0ff30mr19372759a91.4.1789267374303; Sat, 12 Sep 2026 19:42:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 68/86] tcg: Generic expansion of tcg_gen_smin_* Date: Sat, 12 Sep 2026 16:38:19 -1000 Message-ID: <20260913023837.741866-69-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.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: 1789267429146158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 27 +++++++++------------------ 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 7fad859a284..5ee14e28439 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,7 +146,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_= i32 arg1, TCGv_i32 arg2); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -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); @@ -189,7 +188,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -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); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index c31c819ebdc..2ccdddc8eeb 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -54,6 +54,7 @@ DEF3(shl, TCGV, TCGV, TCGV) DEF3(shli, TCGV, TCGV, TINT) DEF3(shr, TCGV, TCGV, TCGV) DEF3(shri, TCGV, TCGV, TINT) +DEF3(smin, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 90accdb7714..dbccb7af811 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1133,6 +1133,15 @@ static void gen_shri(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) } } =20 +static void gen_smin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_smin, type, 0)) { + gen_op_ttt(INDEX_op_smin, type, dst, src1, src2); + } else { + gen_movcond(type, TCG_COND_LT, dst, src1, src2, src1, src2); + } +} + static void gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -1449,15 +1458,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_smin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) -{ - if (tcg_op_supported(INDEX_op_smin, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_smin, ret, a, b); - } else { - tcg_gen_movcond_i32(TCG_COND_LT, ret, a, b, a, b); - } -} - void tcg_gen_umin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I32, 0)) { @@ -1989,15 +1989,6 @@ void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TC= Gv_i64 arg1, TCGv_i64 arg2) tcg_temp_free_i64(t2); } =20 -void tcg_gen_smin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) -{ - if (tcg_op_supported(INDEX_op_smin, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_smin, ret, a, b); - } else { - tcg_gen_movcond_i64(TCG_COND_LT, ret, a, b, a, b); - } -} - void tcg_gen_umin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267401; cv=none; d=zohomail.com; s=zohoarc; b=OHMeuNxWCyQiphSbg6/2EZk20W7siWRFKAAGl6feIKhmJggWvsXF462lzH938VBayrKUyPkimSqM0zJzaV2ykuREATQox6mIgIXe3qnWTowO/DtgU+0prZCglfkljzbUDULTKGS+ZaHP4fS2kca/iY7bX0L58ij7SUevf0f7Kpo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267401; h=Content-Transfer-Encoding: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:Cc; bh=hNY1gUIxZV5dYYUYh+m4OSDfwTewfT6kHZGRJwySQMA=; b=V/cj/e7vbrWq8y0/mOc+91xNyMce6Ak/EhpNlh657KeaRBRW5yhrXxO9iwQCjZZzXRJ+iOggRyJvL6wR4U+U42rz3y/n0vdSL+KANU+XfbkICE+NDsHL/EWjqAWhAnFZIjD9TH1nn4fWSVeInLQZxYKvLkVAEU5qeMvYrGbqGtk= 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 1789267401635117.43374804662835; Sat, 12 Sep 2026 19:43:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBL-0004BP-V8; Sat, 12 Sep 2026 22:43:04 -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 1x5aBG-0003ZH-9J for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:58 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBE-0001z0-LS for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:58 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d90ba1d807so14886145ad.3 for ; Sat, 12 Sep 2026 19:42:56 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267375; x=1789872175; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=hNY1gUIxZV5dYYUYh+m4OSDfwTewfT6kHZGRJwySQMA=; b=sREEVDoaxI76o/WVQyhKYhZjMa2wG68mrlR7etRETXgEVdoDfbuk63y9EFwkW5WfxR oY1khTgjO64t2Pmld2Z04UE0aHeHu0yOvZEDlGxP8EoFbUvlnf28U1VXIxz5ybb/AqQ9 J1O5/hnecymBHv8xFlxoutSfZgXDVDamgqDOALMLigQAX6BxPnQVGZHfTYmrcWyZwZSs sG8niLULe4iW7tlayhe+O99ZR1yioQVvzHYsc6gvN9UbawkQLHAmg44/goNZxZzpX2QK by3ZOecFO4Ie68E48G5cIpzH6kdr9TcARzar0XaCchzZH1JvjcD/0RF4UnKHQXZYIXCw hIPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267375; x=1789872175; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=hNY1gUIxZV5dYYUYh+m4OSDfwTewfT6kHZGRJwySQMA=; b=Cm1ZPSHw8sXh4Z/0hO6sjyNSwqg2fjZnMVlcHQz4T7rm+CHcq++9O1X9Da+3VNsXzF BLNn0QcEChkSW0+5fuZS8nwzO1itv5K8OG7oQcLWJE5ZKPqDXC/UFI/1ajuhY+DlcMhy 34VzGd+abfY1psll9lmWpEZ/EA1XzZPOM+D60OFQDaMjzH+a/eGAASWt4lDq8FtW804g 7aFyOCKny64Z5GL62K+gGxHJvq/LdOGEGOxqQ3+VGgSvzepycQuDlB7V4w3m+MyhL+nT h+SlIMe8zfTJ9XspJ1JExUpuh3F23it8dObbL9egRIP6D7OFe48vRibF7PaToKTGFbMW w0pQ== X-Gm-Message-State: AFuF++lzNGZM8hhV9lCoNfxYVpXSTGS/IYVLvpk3Loz8ApGupToEHHh9 eTTMyd0gQ7Y5TuZHLPBIVyAenWV8T4E+U6TkWC4NFeHDIdamtU/OKb3MvgjpABx4EqsSIJBtqlS 6e+Ik0o8= X-Gm-Gg: AYBFou204YY4Y7TrbCO3mVGfh+vQrgap+0zzDeWvXN5Qg4qw6ZeGsCWP1YW2vOuVKO0 4yI2a3+Micvx2mLZ7Tx3ZtD5SmR1qai2Hr0C1xYe1wlHlYvZrKTzcYQ7j+kbcHgCaDKWBgNrCBq ragbtVp4Aa/WrznunXm+KIrpsVCuoPpdGZFCKrs63tga4XrL4HZw4xsQo/ij3K3DRcRGL1Og5EW Nd8WGEE8L8xWfI8ypqBO9quBlqTD54KpmxA2i2NJTkzDzzMsl6J2AsUs9cYoXmxfE/rrn/tcQLJ KFnly3+jm3sWkoUgVyua1ae5GAKAxPcG5j8HQHG2WDNtp8j20WYaWagKigAcj8OPMX1kF2MfITh paNDAPE4rgq0cVilrl7mRY5JfVb1sLAkpor/THNn81w84ZuFPe0TmGvT/6gv7jXaQuI2uxLUW+g qT7Y0QK5Nv6foTlbwvkRCCQZmOmXxNWjyuk2rYNL5ntDYPM0UYCwK/NUQ4InjevmRwN6Ffcqtaq ovfxhZEBeBQD5FqHg== X-Received: by 2002:a17:902:d551:b0:2d9:4871:393d with SMTP id d9443c01a7336-2dd2a45aef6mr209701035ad.21.1789267375302; Sat, 12 Sep 2026 19:42:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 69/86] tcg: Generic expansion of tcg_gen_smax_* Date: Sat, 12 Sep 2026 16:38:20 -1000 Message-ID: <20260913023837.741866-70-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267403034158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 27 +++++++++------------------ 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 5ee14e28439..e2785ca61c7 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,7 +146,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_= i32 arg1, TCGv_i32 arg2); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -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); @@ -188,7 +187,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -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); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 2ccdddc8eeb..a5330ab6a1d 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -54,6 +54,7 @@ DEF3(shl, TCGV, TCGV, TCGV) DEF3(shli, TCGV, TCGV, TINT) DEF3(shr, TCGV, TCGV, TCGV) DEF3(shri, TCGV, TCGV, TINT) +DEF3(smax, TCGV, TCGV, TCGV) DEF3(smin, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index dbccb7af811..8dadba7ab95 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1133,6 +1133,15 @@ static void gen_shri(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) } } =20 +static void gen_smax(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_smax, type, 0)) { + gen_op_ttt(INDEX_op_smax, type, dst, src1, src2); + } else { + gen_movcond(type, TCG_COND_GT, dst, src1, src2, src1, src2); + } +} + static void gen_smin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) { if (tcg_op_supported(INDEX_op_smin, type, 0)) { @@ -1467,15 +1476,6 @@ void tcg_gen_umin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv= _i32 b) } } =20 -void tcg_gen_smax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) -{ - if (tcg_op_supported(INDEX_op_smax, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_smax, ret, a, b); - } else { - tcg_gen_movcond_i32(TCG_COND_LT, ret, a, b, b, a); - } -} - void tcg_gen_umax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I32, 0)) { @@ -1998,15 +1998,6 @@ void tcg_gen_umin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv= _i64 b) } } =20 -void tcg_gen_smax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) -{ - if (tcg_op_supported(INDEX_op_smax, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_smax, ret, a, b); - } else { - tcg_gen_movcond_i64(TCG_COND_LT, ret, a, b, b, a); - } -} - void tcg_gen_umax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267467; cv=none; d=zohomail.com; s=zohoarc; b=I2Zy7JJ8IuG12u7WijW/+rF9daX+OA2RXdzTGGBnJEiS8+FFAjtTVTBxZuEgzXWY0kdnZ9nWqfPTgfM06uANyDDLjjxc/90q6bVQTsQBXqrg2QTLxPbhqDdzlgqoBT+o+afKOCxam93yf0+9WC5QR3QkddxCPHs8nh0Z+brKoW0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267467; h=Content-Transfer-Encoding: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:Cc; bh=be4Ohqq/4I6ywrk9oMZFbpAurRlw6l0Hv9verrAT4FA=; b=jj98QyBFcP9THhonX2QssTwR+AePeFdraBIT7z6skeuz8q7lAUhJN9imw88dDXIg+T1Q4oDMBIAPRZfs7i5j5D2xw+N1pLz5qa++nuQvpNaXzK/P6jWygVNzJd2PIAyYcQucw3Hpkxu4dNqyYsL5UJd+pNsONIehFISLxOlPqGk= 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 1789267467689284.9459449002517; Sat, 12 Sep 2026 19:44:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBQ-0004fD-45; Sat, 12 Sep 2026 22:43:08 -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 1x5aBH-0003h9-J2 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:59 -0400 Received: from mail-pz2-x0f.google.com ([2607:f8b0:4864:3b::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBF-0001zG-JZ for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:42:59 -0400 Received: by mail-pz2-x0f.google.com with SMTP id 41be03b00d2f7-cc4c3304833so670851a12.3 for ; Sat, 12 Sep 2026 19:42:57 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267376; x=1789872176; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=be4Ohqq/4I6ywrk9oMZFbpAurRlw6l0Hv9verrAT4FA=; b=RqURcYtSiB0sG6NH8H9MRYKtkdkUQlWol8C6yzDsuOIiO4nVeagpCdZcXnHGxDjdPq nbaluq0/buy0U41k5tqy/geVb9fUsxQGz+08Iqw0NvYyo/EJG7RczKJxfA7EqluqfYKU O7LMFsEImOl4ZNQW4wWM/EXkKRjxDqa0HHGZAu9TG5/4eB8OvMxsQ7hFkRznUnpTN+dU e7cbblTTKLADvw1gcJxfUSq93ZxXmK4IbY/lXpOKGZJLloNliPSgqRW7hJm/ISZZHVXq lqgRuK7u4FCBTD2oUHLG2fGty5aZruUUE77DWV3nxWCzbE4jGAq1LCmUgfEfOFSyCHpq eO7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267376; x=1789872176; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=be4Ohqq/4I6ywrk9oMZFbpAurRlw6l0Hv9verrAT4FA=; b=oHH9ZDZeO+NZDLg+gQH3DWMH4tfcFb98F+k/ePAwVz7ha7lJWkSrZfd6XSEEgMZd4n 3l6GaMbV+ikrH63IakO1bee9a/fbgZ+DPEFMZqhyjHZHX96Xs6kglO9NlniaPpf5xara +IiRtS4DpCKCw0M66KA2yknnzrET2DwG/P+TCn8dhKhrHiwRM9UYpkmgSgwnE5Yy8PWf 04oCUsq86C1tb5IE0YIICR1Ttx3PrfLKZyNVRaPplc8MOwWTFNQMO+adn7tN2Q8wOY4w 1tFyWptCDNpTCP7cEdLtBqkNKWzQeKAqhY27IEaUk67Xyi10aKWaCOsNByYrNpWNLYUW snDA== X-Gm-Message-State: AFuF++lr021p02UvFB5JvtynKdgMCdkp+3xyaSg4iHWPQVqjoBLivHgB E7+By25KWmy4peZyB3oO5QtvwPhpFRVDkqbjtqFDCxAUv0nloueQZJC9204llEk5JOWt2HogccS PCquNzuc= X-Gm-Gg: AYBFou32MUjTzxEIkY2Qdlbg92Zuy/MaD3a5ynbYBiyhu4zHzqJ4TPO2b00cIhAYgER uT7s5928Jsj9AYs/Ll1rHKsQ6R1ZCJxLnLNYYs6WhkWFjJu6dId3+ZtMiRczmkQyXGcjxzqSbsw f8fVe/zrABQymVZkwKlzhXzKJFVlLuP2bXUA+pMTNexlr1hah045rt/9zXMhrHlaSrjYKhkn4rn 8hLcX7sMARJN1jFlqC2PMgwmZ5w6QbltLiMts5K8q3Ja6AkbXrnjNmPHCTxxggcyOrSkpM3SyON QdZFDPJTHDt7VIpMWk6lKV8nKuxJCvk2z+ScEgwHmLWCzB4bQqxsYxHPbj35zCGkzrpyW9ivbaS 5AaT3107WJJ2VazLIbRSBiKMtwGKX7Ww7OHve1tdsln8ziM3wB0B/f9KYgZdpidApB+DnDA8Gr1 fSBydNajn14LF8fmgdlsM5Hmr+bYkSmB5DuvCbWk29fQwGZ2QXkNByol97oDq9ookNIkmvfrymL 6edIOE= X-Received: by 2002:a05:6a20:3d02:b0:3d1:e510:905f with SMTP id adf61e73a8af0-3db0e10338dmr9037729637.1.1789267376240; Sat, 12 Sep 2026 19:42:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 70/86] tcg: Generic expansion of tcg_gen_umin_* Date: Sat, 12 Sep 2026 16:38:21 -1000 Message-ID: <20260913023837.741866-71-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::f; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0f.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, 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: 1789267469269158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 27 +++++++++------------------ 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index e2785ca61c7..8ffd722d9a1 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,7 +146,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_= i32 arg1, TCGv_i32 arg2); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -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); @@ -187,7 +186,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -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); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index a5330ab6a1d..70f1fc48a26 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -59,5 +59,6 @@ DEF3(smin, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) +DEF3(umin, TCGV, TCGV, TCGV) DEF3(xor, TCGV, TCGV, TCGV) DEF3(xori, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 8dadba7ab95..dc472328300 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1170,6 +1170,15 @@ static void gen_subfi(TCGType type, TCGTemp *dst, in= t64_t src1, TCGTemp *src2) } } =20 +static void gen_umin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_umin, type, 0)) { + gen_op_ttt(INDEX_op_umin, type, dst, src1, src2); + } else { + gen_movcond(type, TCG_COND_LTU, dst, src1, src2, src1, src2); + } +} + static void gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); @@ -1467,15 +1476,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_umin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) -{ - if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_umin, ret, a, b); - } else { - tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, a, b); - } -} - void tcg_gen_umax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I32, 0)) { @@ -1989,15 +1989,6 @@ void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TC= Gv_i64 arg1, TCGv_i64 arg2) tcg_temp_free_i64(t2); } =20 -void tcg_gen_umin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) -{ - if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_umin, ret, a, b); - } else { - tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, a, b); - } -} - void tcg_gen_umax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267407; cv=none; d=zohomail.com; s=zohoarc; b=e3VMQxpZJLL9C61TjRx7NR49NZThTk/+0kZ5CMISshKi/Ko4C9qZhJA+aGujuqc0h5tfaBq8Pl1b/DgiL/N9PJyyC9yLMTPbQbmijcaXwbgbSlh4i7v7ZZwop/FFQRNgOAf4VMbOTOLKBZ5vCnBIHhnLTDoL8Cxm30sf/CfHDHU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267407; h=Content-Transfer-Encoding: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:Cc; bh=L7RLDnNxBd36zZ/dxKGqsx4PjT6QesImn0dDwC0zLws=; b=jPbckESptDv0NM+79x0vNFyJY09vmyjhmodsY5FdUpGOgOFpCEX0o/9I1NoKpdaSmRdNdJ3JkaGgKfOXGMCt7CbTUsZaE33MR0g54SwCOAVmSmkY1jhVbINko2H92jaEPGY+SKeMy1nPXuqWukKOpMjDr8zbvHk9d4eygPVT4Z8= 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 1789267407145630.7814589915325; Sat, 12 Sep 2026 19:43:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBM-0004DU-5E; Sat, 12 Sep 2026 22:43:04 -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 1x5aBJ-0003ti-DT for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:01 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBH-0001zo-IM for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:01 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-381b831d535so4174298a91.0 for ; Sat, 12 Sep 2026 19:42:59 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267378; x=1789872178; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=L7RLDnNxBd36zZ/dxKGqsx4PjT6QesImn0dDwC0zLws=; b=lmpoE5H5rHcN+j6Vo43Ski7R3juZ4tnXtRSmgJkKFc3dtbLXjZ7mU7NLbhU/WB1qM0 tX9vlqPifbPeF7qoDf8kYjlHiEx+mAMBhVwngk8aKlkzVPXCyf/HUk29sczVNR2YHPaG y0pqm1PXp9i4RDDq5YBfJiR6jL3OcLPKl6WgU3SQsxZzIyytbhSX+5gG7OPpmD8O4tDB sgbNo9SLZIGfnzDpM8Wh9FpXPJ4R2FvGfMS4da8qAiyoXgJQuX5Vpuwg0oH8HuzK00In T5vPfPMlyVaPvDsA19kq8Az+5Mg+zDhG6dQUsHqOMuhjjjeoXe03z+zMbl4lbotEnyOw Rh5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267378; x=1789872178; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=L7RLDnNxBd36zZ/dxKGqsx4PjT6QesImn0dDwC0zLws=; b=Gs2/8qlS6RRdLgso4eBM1HmeQ0uE1Ce8z1189fPsnvIhhOCATaQByW46/N0G3SBXev 78ZkYQCBseqIR1RSjCYx94G+7TzXU8arXhv77s86cIo+NWolP3fKtP0DV98I5zZCr3/a l6qj8S2iJhnqmzyzuW3JAc0exvgiIqmt4X0gOm77b+KjCko+YRehN0S1kcS2XPPJc1tb uTKUPDR/m68qnJj0b3JNAVOwLRl+qzD1lB5bIatJZcvCMZhVDeH5T4PM1Vy/cT8/HjTD DsSIlfZ8DJoGkzpFbHnBi3pRVU+FYpFWIL0bbiIovPL8cMJXRws+XmpaO507c78GdtvL jUtA== X-Gm-Message-State: AFuF++lM1f5NIGj3YWMocgWuR9aXuCM2iI7nhIwU1tDK+trpgLW7HyRa BPHfs+R+0UT0xTOjbF9pndNQkbeh0Ojz6ndAlTOtSR7fkNenKnK3mplKmN1d/aEsEZtfbfk5HAK H8kMq X-Gm-Gg: AYBFou3X4Dbj6FcaAEEqiFcdHG3lkNRp/AWHj68CL2i1bETR8kIxBHI9WF2AlC27jcP dIiLlha6O2C2hAOS2oS108CRMA0Q5a74Vq5tXVVSi7l4t1TdCnBUua0uUKS+cDMwYgzK7+7ka2z wrAvDC8ZsMG+8S4+S7X9oV+sYjn/wwW9UFiJBb407xIljPpGTgHbQTfh6DwV5fwq5DLZguygCrN LUUR0RFPB2b9vQQ2YF6ovsj0FhGmhUQ5WodgDtM5VYfS0sD/KDmFDzfVQebWLWba3xKdMT/vDM/ ghG9R2PuwSSQhtHPG12lwLPmo+lOtzk5U3KCZEJjZfqEXsuvelyyHMUjk2y83r/TPaDKdoRlOA2 MJaOC3ZWE9EY7DwGmXXPNG9vdeEqXsBstuJtYrqpXvQ+3lX/z9WvPg1UXKmQ8zwP95n9UqZzdCJ IHjs1MeetCX7CKDhhGPFVXUXYyGv64h7+8zTqeU+b/Y1X9kO62BwX+zVYDybISBOcGHk07CX9i3 3uSzA8= X-Received: by 2002:a17:90a:da8f:b0:396:6344:3b63 with SMTP id 98e67ed59e1d1-39d9bbee490mr19189683a91.2.1789267377290; Sat, 12 Sep 2026 19:42:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 71/86] tcg: Generic expansion of tcg_gen_umax_* Date: Sat, 12 Sep 2026 16:38:22 -1000 Message-ID: <20260913023837.741866-72-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.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: 1789267409097158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 27 +++++++++------------------ 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 8ffd722d9a1..e040ce444ef 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,7 +146,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_= i32 arg1, TCGv_i32 arg2); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -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); void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -186,7 +185,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -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); void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 70f1fc48a26..1405dff32aa 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -59,6 +59,7 @@ DEF3(smin, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) +DEF3(umax, TCGV, TCGV, TCGV) DEF3(umin, TCGV, TCGV, TCGV) DEF3(xor, TCGV, TCGV, TCGV) DEF3(xori, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index dc472328300..401c7a16f1d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1170,6 +1170,15 @@ static void gen_subfi(TCGType type, TCGTemp *dst, in= t64_t src1, TCGTemp *src2) } } =20 +static void gen_umax(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) +{ + if (tcg_op_supported(INDEX_op_umax, type, 0)) { + gen_op_ttt(INDEX_op_umax, type, dst, src1, src2); + } else { + gen_movcond(type, TCG_COND_GTU, dst, src1, src2, src1, src2); + } +} + static void gen_umin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) { if (tcg_op_supported(INDEX_op_umin, type, 0)) { @@ -1476,15 +1485,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_umax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) -{ - if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I32, 0)) { - tcg_gen_op3_i32(INDEX_op_umax, ret, a, b); - } else { - tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, b, a); - } -} - void tcg_gen_ussub_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { TCGv_i32 t =3D tcg_temp_ebb_new_i32(); @@ -1989,15 +1989,6 @@ void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TC= Gv_i64 arg1, TCGv_i64 arg2) tcg_temp_free_i64(t2); } =20 -void tcg_gen_umax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) -{ - if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I64, 0)) { - tcg_gen_op3_i64(INDEX_op_umax, ret, a, b); - } else { - tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, b, a); - } -} - void tcg_gen_ussub_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { TCGv_i64 t =3D tcg_temp_ebb_new_i64(); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267429; cv=none; d=zohomail.com; s=zohoarc; b=iFkwV84AX8uVYIWJ8LQ83TGgq4VsLX8juvGaDtmXo9+fNf8jBh1pCzOy7Ra9xRjehzS1Im/aKoXDMUykZi+764spTlLk1SkjzcDqYSmfyjsNPbccsBgJYtiAn2LXop0SCOr5eeIy5okyGwtRU4zHmrW4wBGcCl4xhQo0Z/wO/qg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267429; h=Content-Transfer-Encoding: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:Cc; bh=1YNrn5G7onWh5f1lmKxsSbYO9/efUUkPGxPwjAksf6w=; b=Zw4x8IdUDZnqNIKs85kfy2J2l2erIGqxFgUHOx/euZMmOBBldAD6pECtcIoQjykXOIELSHUsuKXeq+RyGE5o8g8OjzoWfYEzs63mcw22TMyvjqqBfAymTG4MEYN3DfVBr3H6TnRO1DfVuR+pXu6SlEznn5/C5cAulV+k3DwNR4c= 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 1789267429751404.6720204190966; Sat, 12 Sep 2026 19:43:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBO-0004Yo-Uu; Sat, 12 Sep 2026 22:43:07 -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 1x5aBJ-0003sO-9u for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:01 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBH-0001zq-MU for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:01 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398b3b189e0so637355a91.2 for ; Sat, 12 Sep 2026 19:42:59 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267378; x=1789872178; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=1YNrn5G7onWh5f1lmKxsSbYO9/efUUkPGxPwjAksf6w=; b=DD25sSXrSt6eVAbiA5hWCuzxN8QG4kTo7evDFze8+mctBLbn+bLm4zANfOSRX4kMnJ UJW4+v1Ylx09tU5fL0fdjXfouxVfIrAOCiT7Wia5XinaKwPPhAXLy48OsijR+K9XWx0K nfWclIlbPtqVm8Z7p+PexYsE9k3KfF9wUHAav2EIIT432xAVVCWYQY64d3owh/jRbjI1 oRj9dKTVADPSY2d9R9ZqTI2RDz+QD7cyzHtPZg6JUym1BHli9iFoAVnV3qm+u3sPdivY B/bZFMwZMf4705Q9juKRu0IShsBa4cxkav5PEO16Ee0fyOQ5DMeIfZnKzJvxomKOdbNh ufQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267378; x=1789872178; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=1YNrn5G7onWh5f1lmKxsSbYO9/efUUkPGxPwjAksf6w=; b=e0pG6YXf8tY2xXcfCw8J+6vaMxm0gQbofloGUX7irsKk1ubM6S/HTujuUhhndqEipS Azd0NfzSurVwDkcxIL7bPbAOHVat021uEeRT4PpLcI8MDN9Nrp7O32dAHF5mB5arpLEf /jb8R0sqYJwkah6aJdjBLDiLpU+HGtmohSUUbgEN+Qro1FMfssJ7bg37IJZo//FNloMq kB8ebfGoROUxM/Y7gj5d4oSwqZj95GfohTwnuNnDE5+u7sI8fXbhu4JIwcqxQKA960ep Id42QtPZta/IWSpIZHDid9XiJhMgOHlq4nnd+MHqcUxeOBfcnfI94n/IRzs4hWSV9FRt bKTw== X-Gm-Message-State: AFuF++lTKUWRt5vCuoWChOsNHN/dV5hmIpL3gKyTxyisiZ3x2fQslk3q 0Niyu1dj06QtSyjGt60J2jeC43ZQlOmHomKaqntEN5VlyvGAfEPmDbRdn7kFfCN97xDlDkp+vqL mgoRi X-Gm-Gg: AYBFou2Bvn/Um7AWrB7arAZLWRNOVZ7qgsZoltoeVNgF/7AL6uvZDXzKsNXvBp0yjap KqS8SHcial49rJpB+G576yOfpqI8MfG6BcqZ2RUjR2/wBrUdXQwMF2rqDaV6qsZd7ijPDCZbHi+ kuAvei6loPt8YrXkQsh5OA5MJVk/kUkhL9UKlfYp12ZiuhRfgPvuefIQONMLJ+qT+VLWjr6qXsW QBsR0TB5Er45C1VRQbCcZNKLQy4zXmqMpYz25jE6SYnsXb5QbwcccFwEbMwCZWpFevoUgCWL3nz sfz5Fp6D6j1Q+h5D/L6dEuIPXhac9RbDElLApoj7QfSvOW47yTpwPSx3SmJDO+k8LKrYEAMkQQH ZnvcuCJ0zY1buYEZ85tT6PaYNBfgqisN45DrLA95l28b00Hz5I4kGe+9OLiEyUjQkrR+T6BZV5/ 4FfkCfKZMg3Sf0lgk2D8Lxm4ws8vQpJvVU15p/rP1OS9bO39+tl3kyKv3f7Frdhx0SDTDReicpC TpF2q8U X-Received: by 2002:a17:90b:5904:b0:393:288:29e3 with SMTP id 98e67ed59e1d1-39dbc0cdea9mr8900758a91.10.1789267378208; Sat, 12 Sep 2026 19:42:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 72/86] tcg: Generic expansion of tcg_gen_abs_* Date: Sat, 12 Sep 2026 16:38:23 -1000 Message-ID: <20260913023837.741866-73-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::11; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x11.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, 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: 1789267431152158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 31 +++++++++++-------------------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index e040ce444ef..60f3ac4dac4 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -147,7 +147,6 @@ void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, in= t flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_ussub_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); -void tcg_gen_abs_i32(TCGv_i32, TCGv_i32); void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); =20 @@ -186,7 +185,6 @@ void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ussub_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); -void tcg_gen_abs_i64(TCGv_i64, TCGv_i64); void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 1405dff32aa..69df7967c76 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: MIT */ =20 +DEF2(abs, TCGV, TCGV) DEF3(add, TCGV, TCGV, TCGV) DEF3(addi, TCGV, TCGV, TINT) DEF3(and, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 401c7a16f1d..467542a7ae0 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -415,6 +415,17 @@ static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *sr= c); * are of the proper type. */ =20 +static void gen_abs(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + int width =3D tcg_type_size(type) * 8; + + gen_sari(type, tmp, src, width - 1); + gen_xor(type, dst, src, tmp); + gen_sub(type, dst, dst, tmp); + tcg_temp_free_internal(tmp); +} + static void gen_add(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_add, type, dst, src1, src2); @@ -1495,16 +1506,6 @@ void tcg_gen_ussub_i32(TCGv_i32 ret, TCGv_i32 a, TCG= v_i32 b) tcg_temp_free_i32(t); } =20 -void tcg_gen_abs_i32(TCGv_i32 ret, TCGv_i32 a) -{ - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - - tcg_gen_sari_i32(t, a, 31); - tcg_gen_xor_i32(ret, a, t); - tcg_gen_sub_i32(ret, ret, t); - tcg_temp_free_i32(t); -} - void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_ld8u, ret, arg2, offset); @@ -1999,16 +2000,6 @@ void tcg_gen_ussub_i64(TCGv_i64 ret, TCGv_i64 a, TCG= v_i64 b) tcg_temp_free_i64(t); } =20 -void tcg_gen_abs_i64(TCGv_i64 ret, TCGv_i64 a) -{ - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - - tcg_gen_sari_i64(t, a, 63); - tcg_gen_xor_i64(ret, a, t); - tcg_gen_sub_i64(ret, ret, t); - tcg_temp_free_i64(t); -} - /* Size changing operations. */ =20 void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267434; cv=none; d=zohomail.com; s=zohoarc; b=YLoMpwKybg4cbCtWVlDnXz1OjVHsmNmZUE6ij8kCeTilGHUixkXGqHKxt70ZBAJI+BG0uzLRZy77uLLwqJr08oOKCvGovDrYUra5XMJdZq5TdDiShRj42/rzeYItMxf8CUfuMpBFKxyHgLaOIkyXKc2NlunfTK3uMRyPHrv2Ceo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267434; h=Content-Transfer-Encoding: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:Cc; bh=zSlW6OQRrX4VNtTUqMHDxZbWN8QYrduSbBaBhpueEU0=; b=EBBXWQNm+BMqL9jYv7XgmpdKtM3RQGiYpdTTeLLfHU28xu652RW/o4bzzz7I4BROM7HAnlHj66sq5Ne4paSc6777hVLzuQApISaw3MOi4E7laeLa+b6hXJOi+MLa47Ij3roTgrkzzHB45qDc4txTFhZATWFUjej1MhavxQGOeMk= 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 1789267434935180.72129873804295; Sat, 12 Sep 2026 19:43:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBT-00056y-QA; Sat, 12 Sep 2026 22:43:11 -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 1x5aBK-00045E-PW for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:02 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBI-000207-Ug for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:02 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d747eb79fbso5364225ad.3 for ; Sat, 12 Sep 2026 19:43:00 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267379; x=1789872179; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=zSlW6OQRrX4VNtTUqMHDxZbWN8QYrduSbBaBhpueEU0=; b=TcUBVYRrPVULZERqVH6Vh5O/+HqQk1Fb+eJMtwj+04uHeXe0zikEnSWSDw54pHU3rg hKFNJeX0e4gnw+mLce0C/VNE9E4vgvnJciCCXoBsPukjv/9J6s0SvkQT46gWn2TIJ+jm kUDe9P5SSZi7yFKa7mtxteCWsxdHdzc+JZALAUeB3tzGq/elEra92QoKb+GeqzZ9EJ3y pdDqS9hJrolplXFLLXc9SJrlzZK+ucHBxY5Mnip3Yh2AoSXOVgCC9l5+Tj6PibeWz64c 1d2HYzTbaAeWMkPRkVcfTsZBc8/RaXIcO6FjJ08Wp3rLGL7a+D+5BvtUpO8dPP32ywnz eKuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267379; x=1789872179; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=zSlW6OQRrX4VNtTUqMHDxZbWN8QYrduSbBaBhpueEU0=; b=VS/3UzDpZoOFTWlD11kuSVDpKUq+NozruXSJYL3DZ9nKfRHFSRMFPKzAKeOJzUCgrx f5gV6zNVARa+UtxJWtt2uhWKzObOF6UzKDtEJpbENfDBuHDOZcD8IZ8xDbbcJB4Kb01c C0aO/9briVWZfbaG0xMJgWNr7b2jlsI6ntq/D2Dx/WzTUhsIdQ6QcyhT9pn7QeY26njd ARoaJLSC12DGPRHzlN/fT2MpxZnI62YxracVdAQg4D9/t19rqQs8SKT1JmLxXlkn5CBv 1ViVyFj5jqhEO3wFx4jeiUoE6FBKQJzpUYEBGqA6/gLnrO4Y73n0JMNyc3ea785hf7yt bMDw== X-Gm-Message-State: AFuF++l18xXqEnpipe7Jlpdnh7Uwwq65rriSL2fm9NRtAM4+o86sin3/ a6w99aBvg4LSrhG3o28wC4N35RtAEwky1zuij65Y9SgY2UVwR240OVcwThiinbu06QnYgHVmmIj p4NgURAM= X-Gm-Gg: AYBFou032MZj65NvB9+R3vz1y/0DS0RFyNGiKt3XtVQ15P9An1bVPSTBXAGjOJIOMRE D+KStD2nLz3LmhnhRvhvgzK2wR7LN0flwQtmjHl4n/Gm6C9+vvsKdvxKcTs6tTVFclwjo8hH5no H5i/1StUpUXjhIEKCQGz8zVQwtuZBKC7JxwEQEBtBufYi5Vb1YGZGefhAcxw/lVhtfAfZxHTYTw 1a8vhN8NI8On6xzf+sWusCbvzBXT05MN14ypDzxxi7gLxh7cTcbY1F9rGiHkKSOZkVSbiLFWBk2 X7wxrFF/31reTGeDrBJi61BqO9qVVQplABplw6K1YDIzu4MsuLI9ZoYgIHSn71KcORawAD6Gobr qJRXEq81PoDKGw1m+UyH76oVzI0EPyFSEK0RabxNqlesERTSP2xWyZqHsOsEZk5u+0AezunPAx+ TpwLUsqS36TxWaQ/HTssoGfs/cTCEMlOVzRrcCtY+lqTWW0sKlJyoTnBZdu/snfL1bJbQpQnEbd EJdNQI= X-Received: by 2002:a17:903:4585:b0:2cf:8131:75e8 with SMTP id d9443c01a7336-2dd2a34ab27mr214003185ad.13.1789267379334; Sat, 12 Sep 2026 19:42:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 73/86] tcg: Use smax in abs if available Date: Sat, 12 Sep 2026 16:38:24 -1000 Message-ID: <20260913023837.741866-74-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267435177158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 467542a7ae0..2c15256fa1d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -418,11 +418,16 @@ static void gen_extu_i32_i64(TCGTemp *dst, TCGTemp *s= rc); static void gen_abs(TCGType type, TCGTemp *dst, TCGTemp *src) { TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); - int width =3D tcg_type_size(type) * 8; =20 - gen_sari(type, tmp, src, width - 1); - gen_xor(type, dst, src, tmp); - gen_sub(type, dst, dst, tmp); + if (tcg_op_supported(INDEX_op_smax, type, 0)) { + gen_neg(type, tmp, src); + gen_smax(type, dst, tmp, src); + } else { + int width =3D tcg_type_size(type) * 8; + gen_sari(type, tmp, src, width - 1); + gen_xor(type, dst, src, tmp); + gen_sub(type, dst, dst, tmp); + } tcg_temp_free_internal(tmp); } =20 --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267455; cv=none; d=zohomail.com; s=zohoarc; b=UPFy+xNNcpz7OQTZWLR+vtQWlnqS774CbnOPKIa5GodFUFFldZqRDooQbTDzzcqfQrzgaF5dObRiZTqWLkJhIk206EKzIHuZSo5Yhv90LUXSd2uE7HZmeYXO64qfGo27QPpSthqVQaksk27Q0WOuMZF5GLoy3qsE0qlIQZROtss= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267455; h=Content-Transfer-Encoding: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:Cc; bh=Bfp39Fy6N+4jTfaiZ81VDF4ngWDjyDLWox1YTqbMnRs=; b=adKOduINRq2HSOZdZ30chRnrQ26VJ5CPSILiMhs9sbYCCJUYOZ2zlLtu2wM5uC9IrIfFxg0dPmrOW9NP7Mf9JyM0ktQRpQ7ggwEf6bwlI5TBGHMvazQtGNDneKMccgnAc0z/4s/ETA6JzM5nL1l8qXJljdD0dLYWZqJbAORIH7o= 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 1789267455674649.5283918801907; Sat, 12 Sep 2026 19:44:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBO-0004Wb-Nk; Sat, 12 Sep 2026 22:43:06 -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 1x5aBL-000489-BX for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:03 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBJ-00020H-Kk for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:03 -0400 Received: by mail-pz2-x10.google.com with SMTP id d2e1a72fcca58-8686f46e4adso1128484b3a.0 for ; Sat, 12 Sep 2026 19:43:01 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.42.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:42:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267380; x=1789872180; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Bfp39Fy6N+4jTfaiZ81VDF4ngWDjyDLWox1YTqbMnRs=; b=lln0mbGOsGwZuMJhFzbwY/EIYOhqJHlMT1h46mXGPuJu9Hmilc8+cMjsQgFgbKTLc6 PCOYivuOZc5yC6YcygXDK2CAurV+TCsh2EAE8oMpqSJ20viQaSn+zD3+PlrcCwQHMg5W vdJF95i7GL1J9a8xsylnoZme2dPjf0F9v5kNRirzzsepYtNANemVBZEsKzlo3HHrs/8h fKvGEwPuyT1xj89GS1KYnsQzZuj5kc0Pa72DipbUO9Fn8n+pwhGQhaI6HYChL173zyXo e5pifVFSCsX7Ao0/AtqIdYqNpXxehzoOXdNmFz8aQ3ZYSLqGEQvInmik40taQsWALbeo AipQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267380; x=1789872180; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Bfp39Fy6N+4jTfaiZ81VDF4ngWDjyDLWox1YTqbMnRs=; b=aZ+DLvreIqfB4oLxxSVYk7e3iUBy+i6TsAQiyjHLOY7KIvnlBYfFWPOqlYrE3c0+9u ZcVyD555KKY/2UHfNN9s44pqb3E+RiD2BpYDouqL4oX6xrQL7aq727AmzIkbSzeVSvNT RkuVEGpJy7L8gYEnZNfFiIivu4ToPtQPEe36fowk4Mm1/7Wq6GtRwbFOGWUgw+VxMBhr OCY3WNHzahoFnSu+YjWRM56ldmNg04e0/83MX7s5638Muk8qx/7a9OFnNXH/ckoRKgcB DdEqRyPleZ/M3DEIQ06eEyjJyoW2fOU9JFwSTDF5hLFsYGhXpBsL6vtgHxsMMFOvRRZ2 DGNg== X-Gm-Message-State: AFuF++lP1tv3Q8JrhQF/peltEgf/I6zKOCdK/mlihxH80+cV2O/bVvYW +7icQ0cEU0ayJMQD2lcn+gbeB4J7Ux+RjEa5fqaPnpQLYaFiG4uQKYwi0VPF7PIHTK2+V++D3Em hJtBvqFw= X-Gm-Gg: AYBFou0gXaXSbD8wZ+R+BhHC2O/hGSYdqyaeIPXrKc4UFcB7ylLaSaExOAoIGoK7ZST TjHYe/9IiBb3hjOf4xLV80Dtp7UmsqakdAaTyFk685vwI+VrfhcdIs5EixG4afmvCe9aKzqqd9+ 7yJBEIKm/jsLraKxm8FQu54LAsRGbXcyo+oEQackDLP9BazWwjXoQd8wVNMdvhASTjhikArrBEW Qnyf7pvYwgCdgxlaUkWVdiqLOoyoP6euOyB6vK5LWvSyKybM+lrbcGU5iuo8+oyH0WyKH/usuxi 98g0lRF0Sr8gD80qrUrExP5Gg3yHXh0ehjNiTyWQxgjSHTTOsBl7n9QvS/jb0kWE57uNon1NUFy ewQ7hfxfr+GkgQspwFkuQ5AS+HOLBsYatDhNDhOfJd7+8ZDrWaPbSq99lU+Crjk6rfZ7S5UAYnE IaIFNtgG3uIoOLLrfZjxcVAGSCjxR7Ebr4XJDnWDlLz2vRWqFtwE+RATqhO+dOH7u/qSZLgYRRj PVU4mc= X-Received: by 2002:a05:6a21:4cc1:b0:3d3:b00b:50fc with SMTP id adf61e73a8af0-3daed434594mr19263750637.28.1789267380235; Sat, 12 Sep 2026 19:43:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 74/86] tcg: Generic expansion of tcg_gen_ussub_* Date: Sat, 12 Sep 2026 16:38:25 -1000 Message-ID: <20260913023837.741866-75-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267457229158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 60f3ac4dac4..f38851a5bf7 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -146,7 +146,6 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_= i32 arg1, TCGv_i32 arg2); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_ussub_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); =20 @@ -184,7 +183,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, in= t flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_ussub_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 69df7967c76..48f5acd5dc1 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -62,5 +62,6 @@ DEF3(subi, TCGV, TCGV, TINT) DEF3(subfi, TCGV, TINT, TCGV) DEF3(umax, TCGV, TCGV, TCGV) DEF3(umin, TCGV, TCGV, TCGV) +DEF3(ussub, TCGV, TCGV, TCGV) DEF3(xor, TCGV, TCGV, TCGV) DEF3(xori, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 2c15256fa1d..decc15f3d20 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1204,6 +1204,16 @@ static void gen_umin(TCGType type, TCGTemp *dst, TCG= Temp *src1, TCGTemp *src2) } } =20 +static void gen_ussub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *= src2) +{ + TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *zero =3D tcg_constant_internal(type, 0); + + gen_sub(type, tmp, src1, src2); + gen_movcond(type, TCG_COND_LTU, dst, src1, src2, zero, tmp); + tcg_temp_free_internal(tmp); +} + static void gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); @@ -1501,16 +1511,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =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_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_ld8u, ret, arg2, offset); @@ -1995,16 +1995,6 @@ void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TC= Gv_i64 arg1, TCGv_i64 arg2) tcg_temp_free_i64(t2); } =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); -} - /* Size changing operations. */ =20 void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267532; cv=none; d=zohomail.com; s=zohoarc; b=gok0h4Bdcady1Fv9sYGg0MmsWPkco+TnSjwsXw2rWDhATYusB/d0WcpbUjx9+rwoA+zOXt9HGknDjWVLtN06y4wAbzr+BKynyAHRRq4fDr1AlQB2v+GU9XhP6Tg9G4pqfdC0uKfygDHt/mFy6Yodko39RZVmTS772/6fE3W252c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267532; h=Content-Transfer-Encoding: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:Cc; bh=wIvwMDGGNQlMbo6lQyx5a2GRDK2imKA91k4EhrvEK2s=; b=Da6oOw6rjnYuQ8G27/vt5U3N/PWQwAOvAhLZipzKpK0wl3HfQ9/Td4Qoq6sIQNR1yKecxQQDL24AgtJC7Co50zNy8qqlGPO2GvQW++TDBXIvJXKboSLLkkbFeeNIHxliFtzmV64LJ0GQKS5CGabYRgDw4FjuA3BGReWsPwzYJjo= 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 1789267532547888.8742593755871; Sat, 12 Sep 2026 19:45:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBQ-0004h9-Dw; Sat, 12 Sep 2026 22:43:08 -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 1x5aBM-0004Dx-45 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:04 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBK-00020Y-IG for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:03 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea50dc3so513785a12.3 for ; Sat, 12 Sep 2026 19:43:02 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.43.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:43:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267381; x=1789872181; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=wIvwMDGGNQlMbo6lQyx5a2GRDK2imKA91k4EhrvEK2s=; b=zu57LzfylsdfURotGo7eOi1698P1D1R08zjbl23uuIuamn45rCCslxp7Hsq2zbTt1h W+fhYNDqmzLRwb8OZHa/vovPJFAaXtRAhfeoGARozOnRKrEIKlmJS2b2F+6P2NYpQ9JW VYjTFhNyyjX8XNAXb2SDg6Xjs92g5jibOy4RORRJC1/QP+POkc5e6eGyz4dFM2wBXKkc HGsytBkyfHnq/BFnsUfDVTe3c+pFmnOs2mJKEdmXTZW7kCcX6HVm2YewvL/oIp9oLCl9 Gdr2E16fR3hWDpxKI4DTM92Wy0E9GS3KncpRP5T557tc/SexXOFVUZDSAhRqGRS0yZFV oJhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267381; x=1789872181; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=wIvwMDGGNQlMbo6lQyx5a2GRDK2imKA91k4EhrvEK2s=; b=oUU/98bDQaz3WC5LmL0fQbm9X8cbQQ05GysPP5N69E6L1mIp98+/gCXghvlLcuKdFd rbeF6j3MvNqxW6r0+wJLt71cFxcIsnXx6UjM+dHEqrNv9QPUS0diozMiLoRKRtY9ZWtZ /Dd0aeQQyMHt+L9R3N8tCXrqdcH5Uzy+wPY38MrHe6OUG6mGuREZYpo+IfuWVImGuEEG dQitZkMvN+7Xo4k3TNSKy0K9DgrhDw5dDbJHzRR9XGVgsSadV7DIFfBQWWm057FFJXR6 zk8Pk2LVRQQSTGZId02F8+po6LCzI6uD0uw+Yxr/lW8wfJDGO9iExp1ZMneN6EdbB0Sz YnTA== X-Gm-Message-State: AFuF++kr1Qn9+RwGsI24osRDeFg0v+Qlu+fhbbwaTzUpWPPIWatCMsMs zq4YWiESZH0iQz/OxIZ3kMoq5NdY7jSwev8kEsYEvLa3/z4IuaLTK+mRkwd24PU0iSX9YTO/jnC Ldo5fPCc= X-Gm-Gg: AYBFou17n34JPA+DbOrgNhNkvv3kVxFS0rTrIVokjOZ0zeTmUqJJHIPGGg80L8Vq0ou E4n4kKCggguRx+xaQgQoPpaVxY/VbeN320nNhGQY2olr6tk6wn0AFh9ps+KBy9tGXYF88hk+T9m GN1gT9KKEmKLqBZa9pkmgWOM+dXpvy0PYoUB/vRUztPiSJnukh3aOH9guPKNP6XBUZBgmlpFJVm OaMxuGg8d7cwy3MfkoKM4AnL/BOGrvwjL5svhU3SGNqCgMLpezmnzSF9rB6YJXBvsBKcGwIVS8K tW1lD0Atfvut2VULXzadms/fPqill06VH1Y/vZ0u320eB4ei9eeLrlUCLoay3EIbi6MP0noPCMW lrFhLICJvxbR6BkhlT8mg3jXudMbC1sIkYRli6m37tFUxen7FwcWhepmQwmi8xSr95IkLDXn6fI btQoPfGgtThNxxJhM0E+aj2zWqmcerWR7vWnz0b+mB1Z4xR2ZFaPtVGsweTLINfG8UcpNSYfqZY QOpiC8= X-Received: by 2002:a05:6a21:a91:b0:3d3:ad3c:49a5 with SMTP id adf61e73a8af0-3db0e41ff18mr10365687637.19.1789267381144; Sat, 12 Sep 2026 19:43:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 75/86] tcg: Use umax in ussub if available Date: Sat, 12 Sep 2026 16:38:26 -1000 Message-ID: <20260913023837.741866-76-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267533608158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index decc15f3d20..a350a8185d0 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1207,10 +1207,15 @@ static void gen_umin(TCGType type, TCGTemp *dst, TC= GTemp *src1, TCGTemp *src2) static void gen_ussub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *= src2) { TCGTemp *tmp =3D tcg_temp_new_internal(type, TEMP_EBB); - TCGTemp *zero =3D tcg_constant_internal(type, 0); =20 - gen_sub(type, tmp, src1, src2); - gen_movcond(type, TCG_COND_LTU, dst, src1, src2, zero, tmp); + if (tcg_op_supported(INDEX_op_umax, type, 0)) { + gen_umax(type, tmp, src1, src2); + gen_sub(type, dst, tmp, src2); + } else { + TCGTemp *zero =3D tcg_constant_internal(type, 0); + gen_sub(type, tmp, src1, src2); + gen_movcond(type, TCG_COND_LTU, dst, src1, src2, zero, tmp); + } tcg_temp_free_internal(tmp); } =20 --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267414; cv=none; d=zohomail.com; s=zohoarc; b=LSs8xxZjmj6Q+oFlugRrH1kB+W8niEvvZJ/rJsRfaL6iHEKXUDakYdBSQb2wjG1nQqk5Dg6i9khPOTYXntISUg+OX85/U3wBwo9efBmOFveNahTB7P47MbEXRPvxvyqik3C8M9nKq5kKMFY6KmuOXYypAgs9HY4mpFGVK07imWQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267414; h=Content-Transfer-Encoding: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:Cc; bh=DE0phM+U5+tLCg4/g9SinUSArB4Qfpz3s0E3RDMsl4Y=; b=NAKl7A5+Fgs+blQlem0R1bJIEi2EE8ozvHgOfnxg2FpubioCa8gh9KIUbDDGd3zqJ4iKwGfwS/pvAEV13SNCXyOMeFDjamEmbdchT78Sgj3pIczVxWumq/lpBj+ViFXGrDxiFzkm0mjvEcBje0Ys1a6lVtCK/L2rLd47oOPmBYM= 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 1789267414440767.0682455105207; Sat, 12 Sep 2026 19:43:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBS-0004tq-04; Sat, 12 Sep 2026 22:43:10 -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 1x5aBN-0004PT-Hg for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:05 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBL-00020t-Ib for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:05 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d91c22d27dso3725205ad.1 for ; Sat, 12 Sep 2026 19:43:03 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.43.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:43:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267382; x=1789872182; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=DE0phM+U5+tLCg4/g9SinUSArB4Qfpz3s0E3RDMsl4Y=; b=e15BxNSjK8M82wsQ/WZF4MCv1y2ZyZpnhJx/JVYKTrumz5rZaDmwtH4RYCuPaJG58I 0q6bE6jaCGDfNXkSnZ3gQBvUv9batfCw+IZEJy49y8X19SnZ5DAIjHCjWpO/H5kJYkJr yfMsz3QGe42dAtdGFpUdMIivo2sdYAflul2ZEk98nFiIvTenZBbtAImaB04yNAQABbK3 enfaEU5ND4Hj9efvYxNkAOfqoxmqlV+6KS5zz+gdW2hWywzUUfjnNiaqxagAm/9UfvAc v6iuoJuOJozRdoWTNctIoCojjKD/FYUwWRTi77qxrzMoL56aDksjFllrBWWL47CsyOgl x2xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267382; x=1789872182; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=DE0phM+U5+tLCg4/g9SinUSArB4Qfpz3s0E3RDMsl4Y=; b=Wut16lz2YIf27kVn5emTtpGZ17o9lHPvvnex9sgND/xMjBFXL7oWRR6CYeUtkSj5VH dfq+V8wF9Z59j/NNpPbTOC1MK5KLXijlHvIm3L5NZntvsf1+v55INUo8XTu7Dk3zrnMq CsfEoddhRbVFlJENAvJ9KFGMUvdGKuS60vyfT/W6Ue5APQ2a4TfiN1Ei4xQ1CZPRkmU4 pajeI71rplD2GJKX0nxY6+OMfQuxTNsrK3DUFeo9xzFEdDHNNstxDK6MUQZbCYBzKvfl KF5sW5m3HOghEikVrZjtgAbH1w4RtnQxRn8z27BC8U7kqBLoHn//kOtsUhYRgSLqrj7K RzwQ== X-Gm-Message-State: AFuF++lBFsQropMif7lPoh76ebIUNzjUAvj6WjYOJVB4SMsCk7tMnxXo Gy1lBT2RN4ZjAtbDtzf91vwMmThJFoZQS1sHqsx44DslUoSW9NUv2kEAsSnqQzOGX8f8Yx17xnH POyiDS0k= X-Gm-Gg: AYBFou342Mmc+asWZlP/GlN+Sb4obbI7huE7Z0WZAm0E1ZxFvD6jcrtHRnupu9umUd2 BJ3sWIZV2thITqWWdethPgUQru/DlUfyamLWez7OB7wGK4z0YON+6jhQUBghi90y45FtX7KBGWr y5/zddj7oKtioTV/PdW9iDiqEoYyakfBNOrSDQkUWGn2hFcbTeOf1GulaIqGXWUd51qbLEGO1i0 hFct9vtvyiztS8z9NBoVp1gpk6Re9z3g6rNLbjk4Fq49asV/WKKVAoACZd0vjX88pIAxgddElxF auq+91wfkuDtBK/f/G/OBOxVPx2Sa877gZEPGUTKO9e54eu4+PDybhCJa2l7QmlvUe3nLQxBwpQ hqPc8rrktKK8rb0MCacDMhLzf/B4npjUkH/OhBzYlTsZvYMTXCEF+uHZYTHouYOb8mJto0GLxLe HG2s65pkyG+1X91PGpfGBGHW3NWxUHnnz6SkKjJB6FZe9svzCat6K892HjetmcHu4PO18FJXLP6 oPEHbs= X-Received: by 2002:a17:902:ce0c:b0:2db:479a:5127 with SMTP id d9443c01a7336-2dd4bd95335mr87970465ad.19.1789267382096; Sat, 12 Sep 2026 19:43:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 76/86] tcg: Generic expansion of tcg_gen_extract2_* Date: Sat, 12 Sep 2026 16:38:27 -1000 Message-ID: <20260913023837.741866-77-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267415148158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 --- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 69 +++++++++--------------------------- 3 files changed, 18 insertions(+), 56 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index f38851a5bf7..c973b002b5e 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -132,8 +132,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, - unsigned int ofs); void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, @@ -164,8 +162,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, - unsigned int ofs); void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 48f5acd5dc1..1f6b3e2c464 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -25,6 +25,7 @@ DEF2(ext8u, TCGV, TCGV) DEF2(ext16s, TCGV, TCGV) DEF2(ext16u, TCGV, TCGV) DEF4(extract, TCGV, TCGV, unsigned, unsigned) +DEF4(extract2, TCGV, TCGV, TCGV, unsigned) DEF3(eqv, TCGV, TCGV, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index a350a8185d0..b97c9df548c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -230,20 +230,6 @@ static void DNI tcg_gen_op4_i64(TCGOpcode opc, TCGv_i6= 4 a1, TCGv_i64 a2, tcgv_i64_arg(a3), tcgv_i64_arg(a4)); } =20 -static void DNI tcg_gen_op4i_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGArg a4) -{ - tcg_gen_op4(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), a4); -} - -static void DNI tcg_gen_op4i_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGArg a4) -{ - tcg_gen_op4(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), a4); -} - /* Generic ops. */ =20 void gen_set_label(TCGLabel *l) @@ -788,6 +774,23 @@ static void gen_extract(TCGType type, TCGTemp *dst, TC= GTemp *src, } } =20 +static void gen_extract2(TCGType type, TCGTemp *dst, TCGTemp *lo, TCGTemp = *hi, + unsigned int ofs) +{ + unsigned width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(ofs <=3D width); + if (ofs =3D=3D 0) { + gen_mov(type, dst, lo); + } else if (ofs =3D=3D width) { + gen_mov(type, dst, hi); + } else if (lo =3D=3D hi) { + gen_rotri(type, dst, lo, ofs); + } else { + gen_op_ttti(INDEX_op_extract2, type, dst, lo, hi, ofs); + } +} + static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src) { gen_op_tt(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, dst, src); @@ -1238,25 +1241,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -/* - * Extract 32-bits from a 64-bit input, ah:al, starting from ofs. - * Unlike tcg_gen_extract_i32 above, len is fixed at 32. - */ -void tcg_gen_extract2_i32(TCGv_i32 ret, TCGv_i32 al, TCGv_i32 ah, - unsigned int ofs) -{ - tcg_debug_assert(ofs <=3D 32); - if (ofs =3D=3D 0) { - tcg_gen_mov_i32(ret, al); - } else if (ofs =3D=3D 32) { - tcg_gen_mov_i32(ret, ah); - } else if (al =3D=3D ah) { - tcg_gen_rotri_i32(ret, al, ofs); - } else { - tcg_gen_op4i_i32(INDEX_op_extract2, ret, al, ah, ofs); - } -} - void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) { @@ -1793,25 +1777,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -/* - * Extract 64 bits from a 128-bit input, ah:al, starting from ofs. - * Unlike tcg_gen_extract_i64 above, len is fixed at 64. - */ -void tcg_gen_extract2_i64(TCGv_i64 ret, TCGv_i64 al, TCGv_i64 ah, - unsigned int ofs) -{ - tcg_debug_assert(ofs <=3D 64); - if (ofs =3D=3D 0) { - tcg_gen_mov_i64(ret, al); - } else if (ofs =3D=3D 64) { - tcg_gen_mov_i64(ret, ah); - } else if (al =3D=3D ah) { - tcg_gen_rotri_i64(ret, al, ofs); - } else { - tcg_gen_op4i_i64(INDEX_op_extract2, ret, al, ah, ofs); - } -} - void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267561; cv=none; d=zohomail.com; s=zohoarc; b=hsWTHgxyBJtPoM0Z3GrSq5J2QX4f/DbqLHnSg6deuYQxiwBW7ekHfzdQNPRdc/XxB2JFw3u0qrFSYpgNtTlxj5VS4EyqEaEvsanuPNAP8LAwYf6QdZ6+/87nNeXHUtoBLeK8HKKwOhqTaXeMGvUw08uOPTMaVYe0lcwyVQxsW44= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267561; h=Content-Transfer-Encoding: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:Cc; bh=iFaNpqW729rLu6OlcVBaBi0JnrSJPa+sSZOIqrxwJuU=; b=AQtqB7vz3pXXCYfnL1VqaYNE0yUFcsfKNvFJa11Uv4cfYX6X63hWwOzN32bm1ryO5Q/kuvtHdq+AWmCPvzNnvMlvdL2snO0PGs3RiPXThPWoVXFpT9Zftm9QYgES3a0uWUrv2hAuE2rLl482j8TULFjegAgYvKZECCgLL6zL3b8= 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 1789267561595651.9394395255692; Sat, 12 Sep 2026 19:46:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBX-0005bP-I1; Sat, 12 Sep 2026 22:43:15 -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 1x5aBO-0004WB-Bs for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:06 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBM-000219-Dm for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:06 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-cc4aa02a269so1743885a12.2 for ; Sat, 12 Sep 2026 19:43:04 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.43.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:43:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267383; x=1789872183; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=iFaNpqW729rLu6OlcVBaBi0JnrSJPa+sSZOIqrxwJuU=; b=JuuIPW0BGUKoeIJ8pn/ugeCuc7Of3PB0+lI9pc5Eg7N2S7QZQHlk11dxsqahteOxSP 7o+Ar966PEvS1Au78kIz3QN5T1nyMylphl7jw8qPaEjwGv1/Ntxhb1FICTytLS0R/pii HvfMR+lefhrazzEQXR0/2DSPVL0LKx+SzLb8UO2Q9FwHXYzNarq43YRHeWbQq/H3s6JU Jovfdyb00OcQIaYfhS5Bzpmrv3KUGqqBEObF231P94bv2Rlrwp+wvTA51tgjnDQRb0aV 0aUWzpgWWxGDDlFU5XKXRvHNxIapoOqodmCfgsOYmU7sEwU1GEODlTtMCmQTBCtyesNJ lE8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267383; x=1789872183; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=iFaNpqW729rLu6OlcVBaBi0JnrSJPa+sSZOIqrxwJuU=; b=eEwGUl7/eq2QHgfJlDurIjOdf/wLS9StWpuluqrrDm4Q0HpcMCQOoatZlNLR//3TKm CbPOiswkn+lgaUL9Enk4j1VBb/WkpIfdqOovhuY5415cJIR6MrqDSoyuN/+dHhkCl3BS X2EmUh5a2vSiyOKCIvCygsc5B3yO7r4RhkJte9FS0FwztDWio+opR22S/Bv0e428tq/i axI8d/91lNObpG/mbe8zuUXdMAVOvhwLINUdbhA6ZKazJY4LZEmz85KLcC5fGDPsPSN/ 8HGz57fUkXfpZ4Ub3IxsLvST8GklOnY3QHX/fABivw6MsM9/l9tWdJ6wcNat1ev1zlJo 97IQ== X-Gm-Message-State: AFuF++lCKIUp1Qf6+Pnicw36D6YD3WuLoNz5+j66iEnnzs8fms56cHpz qHrNIcKgr4pFUZDPiCrENYEiciESFpASefEpCuVxaBqtoPIBzLUVqw+BdgUrUPePKGFHtcERiNS KsrKRGK0= X-Gm-Gg: AYBFou0GCWGavdzcQneNKnmUwdCPlnKxixkGaK3Zmvo/5NW48+1vD/94qnpl9pBuEeC eu07gsLorK9wX0KjYGCnB+fjKufs6mLylNgX3QgcfcAFf7RmcFhEAZIOF+Yc5n6s7PKgn1zZZle 6Kv0lot+0I/fUbPhrUnedfCb7esYgxC3NsgcOatfFLrVux44eHQ2bFhWk1XQlddaU5hUM558/cP HzNH9UPWvCsmyKfV/AWsXz+++iU0yN2KlXPeznFxTmkB4r5K2OgS0LAS2OnWB6rnTkkW4PBfbje YFShUK/9tHxWB7h8gxqEBgar4qpdgLlrLvV9WJ84NdjofJ0UkYLvHekQksyW3N60PaROt+2mwrW m5mCfS/2p0M9jJ8VGCGP1waNpQcCW+z6I28fZ6AYPynZ+Sw6pPqAcWJNOqmxeEO+G0w1dT1UwaT FfFPu61PMxJOFO6IpJfF2xrCnh/YbHsdsNOzsJWHg/L5vGVpHhsmQUGTnCrsOUMW8TPYeQ/7b1X qD/geQ= X-Received: by 2002:a05:6a21:7e0b:b0:3da:f32e:b3bf with SMTP id adf61e73a8af0-3daf32eb452mr16545740637.17.1789267382995; Sat, 12 Sep 2026 19:43:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 77/86] tcg: Generic expansion of tcg_gen_addcio_* Date: Sat, 12 Sep 2026 16:38:28 -1000 Message-ID: <20260913023837.741866-78-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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: 1789267564020158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 80 ++++++++++++------------------------ 3 files changed, 27 insertions(+), 58 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c973b002b5e..6835d659cf1 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -136,8 +136,6 @@ void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i3= 2 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); -void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, - TCGv_i32 a, TCGv_i32 b, TCGv_i32 ci); void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); @@ -166,8 +164,6 @@ void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i6= 4 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); -void tcg_gen_addcio_i64(TCGv_i64 r, TCGv_i64 co, - TCGv_i64 a, TCGv_i64 b, TCGv_i64 ci); void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 1f6b3e2c464..141c18061e8 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -3,6 +3,7 @@ DEF2(abs, TCGV, TCGV) DEF3(add, TCGV, TCGV, TCGV) DEF3(addi, TCGV, TCGV, TINT) +DEF5(addcio, TCGV, TCGV, TCGV, TCGV, TCGV) DEF3(and, TCGV, TCGV, TCGV) DEF3(andi, TCGV, TCGV, TINT) DEF3(andc, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b97c9df548c..9fbe6c6b160 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -431,6 +431,32 @@ static void gen_addi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_addcio(TCGType type, TCGTemp *r, TCGTemp *co, + TCGTemp *a, TCGTemp *b, TCGTemp *ci) +{ + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_addci, type, 0)) { + TCGTemp *zero =3D tcg_constant_internal(type, 0); + TCGTemp *mone =3D tcg_constant_internal(type, -1); + + gen_op_ttt(INDEX_op_addco, type, t0, ci, mone); + gen_op_ttt(INDEX_op_addcio, type, r, a, b); + gen_op_ttt(INDEX_op_addci, type, co, zero, zero); + } else { + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_add(type, t0, a, b); + gen_setcond(type, TCG_COND_LTU, t1, t0, a); + gen_add(type, r, t0, ci); + gen_setcond(type, TCG_COND_LTU, t0, r, t0); + gen_or(type, co, t0, t1); + + tcg_temp_free_internal(t1); + } + tcg_temp_free_internal(t0); +} + static void gen_and(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *sr= c2) { gen_op_ttt(INDEX_op_and, type, dst, src1, src2); @@ -1263,33 +1289,6 @@ void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv= _i32 al, } } =20 -void tcg_gen_addcio_i32(TCGv_i32 r, TCGv_i32 co, - TCGv_i32 a, TCGv_i32 b, TCGv_i32 ci) -{ - if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 zero =3D tcg_constant_i32(0); - TCGv_i32 mone =3D tcg_constant_i32(-1); - - tcg_gen_op3_i32(INDEX_op_addco, t0, ci, mone); - tcg_gen_op3_i32(INDEX_op_addcio, r, a, b); - tcg_gen_op3_i32(INDEX_op_addci, co, zero, zero); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - - tcg_gen_add_i32(t0, a, b); - tcg_gen_setcond_i32(TCG_COND_LTU, t1, t0, a); - tcg_gen_add_i32(r, t0, ci); - tcg_gen_setcond_i32(TCG_COND_LTU, t0, r, t0); - tcg_gen_or_i32(co, t0, t1); - - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) { @@ -1800,33 +1799,6 @@ void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv= _i64 al, } } =20 -void tcg_gen_addcio_i64(TCGv_i64 r, TCGv_i64 co, - TCGv_i64 a, TCGv_i64 b, TCGv_i64 ci) -{ - if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_I64, 0)) { - TCGv_i64 discard =3D tcg_temp_ebb_new_i64(); - TCGv_i64 zero =3D tcg_constant_i64(0); - TCGv_i64 mone =3D tcg_constant_i64(-1); - - tcg_gen_op3_i64(INDEX_op_addco, discard, ci, mone); - tcg_gen_op3_i64(INDEX_op_addcio, r, a, b); - tcg_gen_op3_i64(INDEX_op_addci, co, zero, zero); - tcg_temp_free_i64(discard); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - - tcg_gen_add_i64(t0, a, b); - tcg_gen_setcond_i64(TCG_COND_LTU, t1, t0, a); - tcg_gen_add_i64(r, t0, ci); - tcg_gen_setcond_i64(TCG_COND_LTU, t0, r, t0); - tcg_gen_or_i64(co, t0, t1); - - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b) { tcg_debug_assert(n > 2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267411; cv=none; d=zohomail.com; s=zohoarc; b=VTd9yunVwObF4oKtTv0yD6aWxdkX1NJO6OYJBg3tXyMjzbB54KqOHanSMkWMjmkiy5OjbD7HmwaziCJpoLWQ5i+77Y9gTOcSDk2znexcJZ8g2IQ3Om9PLdZn3H9o/NZbh4rIT1PPJJ6JLjfLjvRpizY6N47cfgnfNE22X+nhihk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267411; h=Content-Transfer-Encoding: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:Cc; bh=AeGxJxkJ36zNT5JkbbUDkIaG4DGAM4yr/XShj+9wwTE=; b=BhqCjikCgKij24fO8T+FxZgp5R9kMiXQDMo3VxlE6CUJ0jAekHNjNPWKczUuhdoyCuET1gay+P3l7mlc6J8wUmIoHSulvCR7BO7ZT7A06AhvKyMLJsmEt3tpmaUfU9hHreLooVhOst3q7kSe+/k+AL3I6vO5Ja64lN5z9LBrbDs= 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 1789267411532707.0318170676819; Sat, 12 Sep 2026 19:43:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBU-0005JO-OI; Sat, 12 Sep 2026 22:43:12 -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 1x5aBP-0004dA-DN for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:07 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBN-00021O-E3 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:07 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4ae2cso1154300a12.0 for ; Sat, 12 Sep 2026 19:43:05 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.43.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:43:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267384; x=1789872184; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=AeGxJxkJ36zNT5JkbbUDkIaG4DGAM4yr/XShj+9wwTE=; b=OJWTrCEUV738PirlpD6EAnReNWAQSEEygfHofQoJbrQyKrYz2A4rgAtKoLFnL4NMGF +bLax3ZnzL1mz5v2vKzlZ9SbSXyz5j4nfWOBj8OTSFICoUQNVRGP9pOKeaUUim+S/oR3 zUYMq/Ok1jiqhUyVlLviUWdDGyW8HIt0nuGqt11g1NwNCBHOcPI0Jkd1RgFyWjXwsMJ8 KJyWJ6GfvqJrMMKBc1/3lfjJ6yZW/0yPtPTQmnTEFtYPiFhjL6wJX2VNi2ti0i5WIPFi r+Q3iCaBktf+WLSS5EPiMHYYRSG7ISWAfS6nL3omTW4wtCDkWrlJfd6UhiwqjLNw4qxY 3Usw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267384; x=1789872184; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=AeGxJxkJ36zNT5JkbbUDkIaG4DGAM4yr/XShj+9wwTE=; b=nbtkwgMy2zxHBcvZ8/LxApYLEYw3OsLv0Yx1vDLsbp2tlf44ugcsJpT2QpCiJDrnOY hCpHEmDjzJHTPM1Kl8IEo62Se761SOPtmALZ66BTcOwwSUgAsLt8fDRxefdJdms9xMLP Xv9ycS6iWcpFOgemhBQ+UMz+M9xy2f4HbA9qcEtNviqcpnA4S3mENZ4YMwdMjDyfAk0x DVTTNJJFpptwsppDx2iF94J/Q/0wUw6ShTKBea5Its81IAMIc+chpjQKOnLJ0yeglbLi Mlzlv3z+N2gx2Cx6WrWNaj1429z4ycW1dDqSZLSEAglhLJzseLOBmN6AXE/Mb1XkRz7R Uxpg== X-Gm-Message-State: AFuF++mLKtB31qvscRAQKGLUtMC24Jm+vCVWjNL2eDFMhG43kv/txCWm b/TiDzJUC+1VhTntqVrJaAMlmq5N4H9puUbWIZ9XTNvE0devOHlOIlzrrAW5KG8nLrjM/cM7ZRh GoyibZSU= X-Gm-Gg: AYBFou3mJamsVVqC91HSerTAj29MmNq9gIQjUW2nsxyBEgLnSs7apr64ppwWcxVBn9w fws6jHQog+qZV4QpQraQQMhzb/DLIYEcxP3ed3hDIREY90gckttZDbdsXXy/xGYw2cqS9PpirZi JEWohVBTAnrG9FvcSNZ+Ey94iGuF1DIKu5SEMzNzaYrdqHwZj6YQe+UMlyI2Z0gx/GrAYDtalcG FjQhJVn7XK8XjjuZA0OZozIxjKi1ObNT50gTYRbzVD/05YIupx4z029FirGu07edkQUu2A+CCvs RnyGAGNkAn0av0Di5jsANLPzj1AkzWy12GEqRAluayEdR+yz750RuJGNIQtYZtTUaJsB5oqvdt9 Gz8tAVLQgaiOR+d5N1dkIGvBs8jW+4DJ3j8HuBfDZ+T1/5tOcAwUqO+eF24YvdQXpysAUmkqIna 6mawc2seOzJ0isFt5dLLcCfhIkIQdjB64BLnNIHhP6+g19eHR64as2XlTBwgL0FjNtGJoD55B4Q eVO26w= X-Received: by 2002:a05:6a20:1604:b0:3bf:5b7a:fc8b with SMTP id adf61e73a8af0-3daecac7fc7mr21601366637.0.1789267383991; Sat, 12 Sep 2026 19:43:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 78/86] tcg: Generic expansion of tcg_gen_add2_* Date: Sat, 12 Sep 2026 16:38:29 -1000 Message-ID: <20260913023837.741866-79-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267413074158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 --- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 67 ++++++++++++------------------------ 3 files changed, 23 insertions(+), 49 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 6835d659cf1..689db3b6fe7 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -132,8 +132,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, - TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); @@ -160,8 +158,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, - TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 141c18061e8..f42aeb7d8f5 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -3,6 +3,7 @@ DEF2(abs, TCGV, TCGV) DEF3(add, TCGV, TCGV, TCGV) DEF3(addi, TCGV, TCGV, TINT) +DEF6(add2, TCGV, TCGV, TCGV, TCGV, TCGV, TCGV) DEF5(addcio, TCGV, TCGV, TCGV, TCGV, TCGV) DEF3(and, TCGV, TCGV, TCGV) DEF3(andi, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 9fbe6c6b160..23e4e9cf257 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -431,6 +431,28 @@ static void gen_addi(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_add2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *al, + TCGTemp *ah, TCGTemp *bl, TCGTemp *bh) +{ + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_addci, type, 0)) { + gen_op_ttt(INDEX_op_addco, type, t0, al, bl); + gen_op_ttt(INDEX_op_addci, type, rh, ah, bh); + } else { + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_add(type, t0, al, bl); + gen_setcond(type, TCG_COND_LTU, t1, t0, al); + gen_add(type, rh, ah, bh); + gen_add(type, rh, rh, t1); + + tcg_temp_free_internal(t1); + } + gen_mov(type, rl, t0); + tcg_temp_free_internal(t0); +} + static void gen_addcio(TCGType type, TCGTemp *r, TCGTemp *co, TCGTemp *a, TCGTemp *b, TCGTemp *ci) { @@ -1267,28 +1289,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, - TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) -{ - if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_addco, t0, al, bl); - tcg_gen_op3_i32(INDEX_op_addci, rh, ah, bh); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - tcg_gen_add_i32(t0, al, bl); - tcg_gen_setcond_i32(TCG_COND_LTU, t1, t0, al); - tcg_gen_add_i32(rh, ah, bh); - tcg_gen_add_i32(rh, rh, t1); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) { @@ -1776,29 +1776,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) } } =20 -void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, - TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh) -{ - if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_REG, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - - tcg_gen_op3_i64(INDEX_op_addco, t0, al, bl); - tcg_gen_op3_i64(INDEX_op_addci, rh, ah, bh); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_add_i64(t0, al, bl); - tcg_gen_setcond_i64(TCG_COND_LTU, t1, t0, al); - tcg_gen_add_i64(rh, ah, bh); - tcg_gen_add_i64(rh, rh, t1); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b) { tcg_debug_assert(n > 2); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267499; cv=none; d=zohomail.com; s=zohoarc; b=RHupV+FLh+SYg3Q4IbJyq6P050efwcvqc+7B7KN9ReuY7ir8w6zE08uWkEMRaB348qn+oNtdJONitUqni1gN/qtzrrWektTlGdaD4AAUaKqRyWFgjgQz98f+U6D9GPhLhzd3xKeOSxZz5LJFMsj5/28QJR3ORaVzg9uYQD9X/Ms= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267499; h=Content-Transfer-Encoding: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:Cc; bh=0kQRdVVf5CpbpgSvl1b4B5/GMPMO4cFPunvvMj90i00=; b=llnryt/rDiw5QKr+Evy4LKsr+UhAl0oEnnxJhtqxyGl1qUNC1Wp1yBY4OvFBNqfAtrnzyRmyW4SDXTXT863ZEyAA281WHOtw244FIwIrjcSTfs2ac4pprqk1urs7hEfr9ZyJXi72Sqxs8clwDmplpjoDIDSqZKGRFu1jxKrBQ58= 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 1789267499909513.6014968473415; Sat, 12 Sep 2026 19:44:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aBW-0005Qz-0o; Sat, 12 Sep 2026 22:43:14 -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 1x5aBR-0004pW-1Z for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:09 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aBO-00021x-Me for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:43:08 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2caced6038eso21445345ad.0 for ; Sat, 12 Sep 2026 19:43:06 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba4fb3ddasm14946556eec.30.2026.09.12.19.43.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:43:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267385; x=1789872185; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=0kQRdVVf5CpbpgSvl1b4B5/GMPMO4cFPunvvMj90i00=; b=iZS1D6RvLE8mg4WhBqN1X5/rOF18tmUHzE2qXlX7ZGHpSAbnbAwIXGe3qmzQ/vEWM6 XUBGdjUROxnHxXDDB7xOHzdiEY2pGkC0ub1UybUfo9LrBTIcnwelI4g8+iNL+DkGjSWI qa6sFJIAO1HfaDF1XN7rhtMD4HCpfJ1QdmrrZ/IDfz+4vf2/go1dFTkFzNnJI0IvRymH cQvORcuvFOIIGKjyZvr05NyKTwdH3L6NEqnyi4WruLhEw+B9VSJTxfopdH5ZNZc4cYma +oZbQmM02TOie9GFE40eRcTt8HkHKEOOP+zJ0YHqb3H3uvZqO50PF2xN7E/vn4jRQSxF PpJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267385; x=1789872185; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=0kQRdVVf5CpbpgSvl1b4B5/GMPMO4cFPunvvMj90i00=; b=YY/0VFn6B3+PsT2KzSTSXDgsYR0OP742Lr7RMovG2JQMNclYg4eGBHnoSXF6ti01RC QbXLznYKgClHmLMBaLHm2CWL4JuKguVe8yItfKAq+t+iqRyKtrI0tYEmiIGZbRYXYYU1 6Y+TPbhYFyLo71qvBM3wx30G7gj9Mb/mNYCUkzp3OtVPod6xm+q0W2ePzkug6tSBRf1d umT6HLI47wn9GyF6TNxfcnuy7xdWQnX4tYhxsl2YvAAd2/TvRlHCh8uxIXaPfXi6Ouot mrRHaM7qYc4mZFqSYGDqFIdFn1XiecBdzKxsdZILpHefGOm8eOCMwJzvgO1IkvhgOomK W/CA== X-Gm-Message-State: AFuF++lHXMj6JfjS7JrenYpTYrshWbwSjihvJYWiTohRNhk5A2duzX7N mVQmXh+btvkWDB8NowJ4qmdFqaZf8MCe8LC761qGl0duz4cvSdvwryGu3RsTlOqE7YduYAb11U/ oQF3AFQM= X-Gm-Gg: AYBFou3CXzSJo7K7RaFJeOFn8pWQl+GTArfeBFmNuDXAuW8rca7XzLvXVqYnmuqIisy KdMFhiMRVnXyOSowX7/KCXcHifc23PNt5c/sCrIrOlHVgx0Mv6sCIKThmZp30xOAmFNwfQZCsx+ Tz9d7Z9sUIXyQvApesrEUeB1CzRSJeJyb2IcCz3/XRjln57fqTDqhNQf4FndWvBe8ZiqwAd3rgs r7UaWofxzEktZA0RNVqOKBvr9Ltjo8jmYGtNvWFzJi5KM0zJqtC+QCeh9/syESAu1d9S2H24786 V0EeKq0gwBPOwJsdq7Gd0dflFEtPzMo/kVX3aePgJdDqwYN/KzAx+mN1mJhSLdkud3ldZpOmYiL Ow6wIce/XqB5XtaBKKBxdrPaK78lZOrVQ20/f6Bk+XMGuZytb8PlLOiOwOlGoYp3FGng7anRIny EeH9xf7K+1wNYjw4SAsTnoSyMgluKkNM4PYDNXc/9GJMv5eMuFuTy0e0a91YWyvSAQ5B444qP67 QPv8lI= X-Received: by 2002:a17:903:38d0:b0:2cf:6e5d:23e9 with SMTP id d9443c01a7336-2dd5f16b17bmr7744675ad.14.1789267384953; Sat, 12 Sep 2026 19:43:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 79/86] tcg: Generic expansion of tcg_gen_sub2_* Date: Sat, 12 Sep 2026 16:38:30 -1000 Message-ID: <20260913023837.741866-80-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.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: 1789267501579158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 --- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 67 ++++++++++++------------------------ 3 files changed, 23 insertions(+), 49 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 689db3b6fe7..e087737ccb2 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -132,8 +132,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, - TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh); void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); @@ -158,8 +156,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 /* 64 bit ops */ =20 -void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, - TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index f42aeb7d8f5..5a472a910c6 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -62,6 +62,7 @@ DEF3(smax, TCGV, TCGV, TCGV) DEF3(smin, TCGV, TCGV, TCGV) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) +DEF6(sub2, TCGV, TCGV, TCGV, TCGV, TCGV, TCGV) DEF3(subfi, TCGV, TINT, TCGV) DEF3(umax, TCGV, TCGV, TCGV) DEF3(umin, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 23e4e9cf257..26c92f5b27a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1228,6 +1228,28 @@ static void gen_subi(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) gen_addi(type, dst, src1, -src2); } =20 +static void gen_sub2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *al, + TCGTemp *ah, TCGTemp *bl, TCGTemp *bh) +{ + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + + if (tcg_op_supported(INDEX_op_subbi, type, 0)) { + gen_op_ttt(INDEX_op_subbo, type, t0, al, bl); + gen_op_ttt(INDEX_op_subbi, type, rh, ah, bh); + } else { + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_sub(type, t0, al, bl); + gen_setcond(type, TCG_COND_LTU, t1, al, bl); + gen_sub(type, rh, ah, bh); + gen_sub(type, rh, rh, t1); + + tcg_temp_free_internal(t1); + } + gen_mov(type, rl, t0); + tcg_temp_free_internal(t0); +} + static void gen_subfi(TCGType type, TCGTemp *dst, int64_t src1, TCGTemp *s= rc2) { if (src1 =3D=3D 0) { @@ -1289,28 +1311,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_sub2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al, - TCGv_i32 ah, TCGv_i32 bl, TCGv_i32 bh) -{ - if (tcg_op_supported(INDEX_op_subbi, TCG_TYPE_I32, 0)) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_subbo, t0, al, bl); - tcg_gen_op3_i32(INDEX_op_subbi, rh, ah, bh); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - tcg_gen_sub_i32(t0, al, bl); - tcg_gen_setcond_i32(TCG_COND_LTU, t1, al, bl); - tcg_gen_sub_i32(rh, ah, bh); - tcg_gen_sub_i32(rh, rh, t1); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2) { if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I32, 0)) { @@ -1818,29 +1818,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *= a, TCGv_i64 *b) } } =20 -void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, - TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh) -{ - if (tcg_op_supported(INDEX_op_subbi, TCG_TYPE_REG, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - - tcg_gen_op3_i64(INDEX_op_subbo, t0, al, bl); - tcg_gen_op3_i64(INDEX_op_subbi, rh, ah, bh); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_sub_i64(t0, al, bl); - tcg_gen_setcond_i64(TCG_COND_LTU, t1, al, bl); - tcg_gen_sub_i64(rh, ah, bh); - tcg_gen_sub_i64(rh, rh, t1); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2) { if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267618; cv=none; d=zohomail.com; s=zohoarc; b=OthHEdZsWg4nkikeVcIeAmzEyuK2F3VvT2BPAsxGVHaqljYL6ojN0RaH+loIwPCvY5r1z/Oli5/pU8zMQtATzaA/eg9gcJCzwOuOJKOkVtKTKz4B2IOoHTV+Z8RCFjr74F2TMaVIbs7EjYbvlohaLes3bVr5jxVaLAJUKBrrZRQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267618; h=Content-Transfer-Encoding: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:Cc; bh=peMxRXLmjGFHHFpoRpREeVZ1QUty/aG4EzAXvBC0g7M=; b=AHfXjx+iU5q2nTE2X0aciLIapyEbaJB9ANu0/zZs2DZ+4k79cQ4HfS5pnzULiSj+Ekp9ZDw1/ldVnBXjKcVZYT3k0oYJSNILA6xu1oAw1+w7S7R1kBXxBDCHh42F8jtq6WB4W5nJsuBa7jHsl09QhoyImC4l5i7lm2Tef2a0ScQ= 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 1789267618805859.265797211065; Sat, 12 Sep 2026 19:46:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aEt-0002GS-HT; Sat, 12 Sep 2026 22:46:44 -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 1x5aEM-00012o-Lu for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:12 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aEK-0002li-MM for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:10 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2caced6038eso21451065ad.0 for ; Sat, 12 Sep 2026 19:46:08 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba7a9bb56sm17811679eec.31.2026.09.12.19.46.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:46:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267567; x=1789872367; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=peMxRXLmjGFHHFpoRpREeVZ1QUty/aG4EzAXvBC0g7M=; b=nk9twgwpaD76vnJpVXxv9C9MXvD4MYWPMIYp6cVjVe8tCi0dQj3efbRnOvn48eyBlD kMMM0lZD0W4eu/fpChP2oFR7MX43DVn8ix4LAWuY3YEtz60zd2Yms2uBZv9KF/S6e/Zo 2o9hAHaLOSN1bIA6t9sHoYiuKtMKucNVR4Zl3sAeRxwWBQ4q6tZoLPllI98ZQV40+c7m 54+WMRnf7JlNX/E/8yLEOXjjfXh9OKxBZ1DS/Lo7UfULH09FHIR/rLaH50h4i9DVyoa5 A3PrgU2E/r/3p8o4RWCVZo/OO291cvf0EtMAabU1A36KJgapaPdBnA6h5nfBBSF8xM4A h05A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267567; x=1789872367; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=peMxRXLmjGFHHFpoRpREeVZ1QUty/aG4EzAXvBC0g7M=; b=JcgOxxxnth/dESqeIN+A0dzaR1PNrmlMxQiLuMflyzDqQGkpciNEBDKUG3829JRixZ XudUbgT+odQ7eVjFbofjiZf8rXgJK/u59yH5mod4clDvb9mwTd2DZWLXSl3jVEGVYy+c FzCINM4so1umCXgdthvQ+H/aF5VtqwmcLWKgcl0LVVQfGheBWgXlESaHBZLuo8MHVwQ+ RJW0D+AowOjIXlPrivk1WsW9zJEmW/nhh8Ky28pYO0BAoVxGnibhIJCCFFIJUX0kMAKe BJFRk8Q1QvR0h9SU0ax8kHwuzTO7d6IXElDXtqIsyXsZmOQzBMXfsKwMjkjHSvH0VyIY JKmA== X-Gm-Message-State: AFuF++mxL3Qx7Wt1+1+Df43PM+w2iwEInvcqA5JfO/ugZLJaNqG/dNCm 9StbNQNUtnWpUq2OIxSdGBEZilYfIv6eDpRFgRmgdYs6TVhSBE3Dlinmq7T6qD1t9I6toO8LYip csmR9l1Y= X-Gm-Gg: AYBFou2XYM5km4avDDO+8+aLfK1HR2fRLjT7eb8LVYIrFv1ndk7nMQqG6uEnYt6yqTu qIugOJjMt5bJkHEARHUxT5FeUxLKe84kc92qG1Vcc8J6/pS7qeTYrBI7juMAatSJ+Zb/c60NF0u 94tTL1fjltZpVTYl2yZO8LTLacbgvZKZJCrmnDj740iilIVoDUslTrn8mMb1eUzgaLrjTAY0KUt ySHd8ItmD3XAD/VAcQPrMHXoV3wwg6ZbHwunGRVsRZFJ48ss9x/kw2lukKUUQVaWAbawO123Z2I B9bqRXE+Q+KEmdFBECQ5mYzcB/bSh10OTXiMRp1TkFbSG/RpENfvNXmx6akJoIZKh3B2txMRbky ZwdbXO/QT6yZSH0kfezRfi3VfaCNLPCClJDS6uTGJCS1NW8UZjxcRIYdjq+DtQ99wacJAFDN2L+ onvkHoreyjQErbE5U0tMPMUlwSS9mq+ci1bod1EkhA9HgwmgYXrSUz53akSy+EQOvLAU8F1+1YN nLLAymk X-Received: by 2002:a17:903:2352:b0:2d9:2b1b:878a with SMTP id d9443c01a7336-2dd5f0a8a92mr7992475ad.10.1789267567063; Sat, 12 Sep 2026 19:46:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 80/86] tcg: Generic expansion of tcg_gen_mulu2_* Date: Sat, 12 Sep 2026 16:38:31 -1000 Message-ID: <20260913023837.741866-81-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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: 1789267619773158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 86 +++++++++++++++++++----------------- 3 files changed, 46 insertions(+), 43 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index e087737ccb2..9e49d29cd03 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -132,7 +132,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); @@ -157,7 +156,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); -void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 5a472a910c6..75ada0d0473 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -34,6 +34,7 @@ DEF2(movi, TCGV, TINT) DEF6(movcond, TCGCond, TCGV, TCGV, TCGV, TCGV, TCGV) DEF3(mul, TCGV, TCGV, TCGV) DEF3(muli, TCGV, TCGV, TINT) +DEF4(mulu2, TCGV, TCGV, TCGV, TCGV) DEF3(nand, TCGV, TCGV, TCGV) DEF2(neg, TCGV, TCGV) DEF4(negsetcond, TCGCond, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 26c92f5b27a..89fbc21709b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -135,6 +135,13 @@ static TCGOp *gen_op_tttii(TCGOpcode opc, TCGType type, temp_arg(t2), a3, a4); } =20 +static TCGOp *gen_op_tttt(TCGOpcode opc, TCGType type, TCGTemp *t0, + TCGTemp *t1, TCGTemp *t2, TCGTemp *t3) +{ + return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), + temp_arg(t2), temp_arg(t3)); +} + static TCGOp *gen_op_ttttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) @@ -899,6 +906,44 @@ static void gen_muli(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_mulu2(TCGType type, TCGTemp *rl, TCGTemp *rh, + TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_mulu2, type, 0)) { + gen_op_tttt(INDEX_op_mulu2, type, rl, rh, src1, src2); + } else if (tcg_op_supported(INDEX_op_muluh, type, 0)) { + TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_mul(type, t, src1, src2); + gen_op_ttt(INDEX_op_muluh, type, rh, src1, src2); + gen_mov(type, rl, t); + + tcg_temp_free_internal(t); + } else if (type =3D=3D TCG_TYPE_I32) { + TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + /* Simply extend and use host 64-bit multiply. */ + gen_extu_i32_i64(t0, src1); + gen_extu_i32_i64(t1, src2); + gen_mul(TCG_TYPE_I64, t0, t0, t1); + gen_extrl_i64_i32(rl, t0); + gen_extrh_i64_i32(rh, t0); + + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + } else { + TCGTemp *t =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_mul(TCG_TYPE_I64, t, src1, src2); + gen_helper_muluh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + gen_mov(TCG_TYPE_I64, rl, t); + + tcg_temp_free_internal(t); + } +} + static void gen_nand(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) { if (tcg_op_supported(INDEX_op_nand, type, 0)) { @@ -1311,28 +1356,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2) -{ - if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I32, 0)) { - tcg_gen_op4_i32(INDEX_op_mulu2, rl, rh, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I32, 0)) { - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_mul, t, arg1, arg2); - tcg_gen_op3_i32(INDEX_op_muluh, rh, arg1, arg2); - tcg_gen_mov_i32(rl, t); - tcg_temp_free_i32(t); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_extu_i32_i64(t0, arg1); - tcg_gen_extu_i32_i64(t1, arg2); - tcg_gen_mul_i64(t0, t0, t1); - tcg_gen_extr_i64_i32(rl, rh, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2) { if (tcg_op_supported(INDEX_op_muls2, TCG_TYPE_I32, 0)) { @@ -1818,25 +1841,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *= a, TCGv_i64 *b) } } =20 -void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2) -{ - if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0)) { - tcg_gen_op4_i64(INDEX_op_mulu2, rl, rh, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I64, 0)) { - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_op3_i64(INDEX_op_mul, t, arg1, arg2); - tcg_gen_op3_i64(INDEX_op_muluh, rh, arg1, arg2); - tcg_gen_mov_i64(rl, t); - tcg_temp_free_i64(t); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_mul_i64(t0, arg1, arg2); - gen_helper_muluh_i64(rh, arg1, arg2); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - } -} - void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2) { if (tcg_op_supported(INDEX_op_muls2, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267608; cv=none; d=zohomail.com; s=zohoarc; b=dlxOtldZUDEVJTEAtUrtJF/9Eg47AFai5MFdmyNBixU08GQZXB3o+cQJ+pgoo6ptr19uGHXyx/2fPfQIhjhCcj2vSUrwp3ZYDrQiCT2/D+dBp9V+w9i7voFGOygKLR9Icaz1XtSu6HDkUDUIUet1Qr/J+G+1Q6tY/VHp1Om+IWw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267608; h=Content-Transfer-Encoding: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:Cc; bh=bWSIgsoyabG4pwOUoMyvdeM9SqXqMtQN/3qGhkVHJ1Q=; b=Vx/LYRiVXfxMRVKZXxAPPLKz3dk0CXmOFssJZmpJXSsSlcO3UeKlbWca/MYzMVpRc0/BmfhKrCMB+JZKHtiH+G0xgQgrrR4rnQLJD6BUN2jsiG1gk7vl8fyYXn+xratKuW3Ms2PEH9mgxqenBr1/vgitGMJkdIJNK6lhbkLEAbA= 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 17892676083936.403506726000387; Sat, 12 Sep 2026 19:46:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aEX-0001IZ-Ov; Sat, 12 Sep 2026 22:46:22 -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 1x5aEN-00012z-Pz for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:12 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aEL-0002m9-Nt for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:11 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccb1a98fso630766a91.1 for ; Sat, 12 Sep 2026 19:46:09 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba7a9bb56sm17811679eec.31.2026.09.12.19.46.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:46:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267568; x=1789872368; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=bWSIgsoyabG4pwOUoMyvdeM9SqXqMtQN/3qGhkVHJ1Q=; b=bByyC5iG04BazYg9eCWaQswGxEcFZv+/JabVrTFHBxYeCzqSKP+2JOF9/QU5Lhx8yr O1q+s89deSJaZgFG/AQ3QRCK3DJ7IkTGJvrZSVqLzM4oaKf/CYbA7A/qsEAdfk6hZreA 3rt2EDEIhDtzPrBPscVPGG1ENOayZzAW1ByrCJKkMlwvyMVz5UZrkthXclL/PjN5jaA0 qY/wmnlWBZ/712OapfGJfLlp78Zfhb5h4UGUAxZzHUjlzcV1PagtcEiWdlXE/9u60++F LUDLtsgNY2bAyNvgabqMpJXag1McGeBLQL7oeqgaJ5ucKlXvP4kDfZ0N7XbnnWfZF9SP YufQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267568; x=1789872368; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=bWSIgsoyabG4pwOUoMyvdeM9SqXqMtQN/3qGhkVHJ1Q=; b=TfINvdiLzJcGles0KwPxe3BL3nKcBb+8yF0wCL+kJCfLKV+OP5GPwKdGc7x+IIGn26 +mrAnmiJS+njEKpgNCSUfpHlF/sIn0jWvTnECM8IDH+dS9ez6hYaZPV59CGFw4eNv7Km /CRWC7xu5FqjQMrAGn0db0JXcOahPn+0f5W0nRpGYV7rzOwGcGPkNYKUwjIjkITHlmp0 9xbEgqk5FkRma80pQO/k8Zx7YsK+CK4hQfCVgWHDYrcgZQJwFU63ygKcLaAXogUxt85f 72WWjHbB3lNEzPsWG0Nd7ar54jc1HIJImm00j782THa531A7umYErF6GsKhFEdDd0AQX Dt6g== X-Gm-Message-State: AFuF++kmF7+FkvTPuazEsTECa5eqfaRuPr0dW1OYm1Twt07altc6Oudg u4TTb0pdCr2OHZMYg6iA0HO3ow5KRIbZgC24p0pcMMdfgqilRYlCfQEVXCxG6TjYKU6YwFlIoz0 9RRJ8 X-Gm-Gg: AYBFou2VdeCnUiTZxeTpldrjDOo1yhNuEoTFMjTZ+OUQAYy5Y8jlUsoyFE4V+JdJX1J 9SBd/QNWaxwO1SBlUUBCXimyUKDo+K7AvRWn3wXCNLgoQe+rTa8tjzdr+wlr8nbgufMm88jlnXz wXj9td2Uau8lZlQciffE0AzN3jOgt531LU5nMAOA7dpsH8s0o0V/gsdY6Ha5rTVTaL9XKHtni+S TbAawR1GY33xAttXQ334/WuIIoD2GLz2duEUaP1Th3FvlwR+VkydxYjV1LMTj6Vj3o9tFNNTKXx GhtN5VqCDriAw+z22WTp5Vfoisfry6WEfgkOEjt43PZXqELveQPdkHd3K3KHg3/ki5aWsxSgNEY HRhYrSgFN9grGjnMQsQHbcB7z7KzrJNOjMi/USeDH5aZKiyUeYTOilFo+MgkMJ3oKHK7uWmgBrO zEdWr0WnMBD5JygVKUTKdcy0WonByY5DVrpTufNbjYcrF32iwmPcscOhATfisdUBzaxu4D1yjlH z19ya2k1wORl8ctpg== X-Received: by 2002:a17:90b:53cf:b0:38e:9045:bac0 with SMTP id 98e67ed59e1d1-39dbbea29c8mr9419738a91.5.1789267568082; Sat, 12 Sep 2026 19:46:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 81/86] tcg: Generic expansion of tcg_gen_muls2_* Date: Sat, 12 Sep 2026 16:38:32 -1000 Message-ID: <20260913023837.741866-82-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267609754158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 141 +++++++++++++++-------------------- 3 files changed, 61 insertions(+), 83 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 9e49d29cd03..95bb5fd795c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -132,7 +132,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); =20 /* 32 bit ops */ =20 -void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -156,7 +155,6 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); /* 64 bit ops */ =20 void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); -void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 75ada0d0473..5e169258ea3 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -34,6 +34,7 @@ DEF2(movi, TCGV, TINT) DEF6(movcond, TCGCond, TCGV, TCGV, TCGV, TCGV, TCGV) DEF3(mul, TCGV, TCGV, TCGV) DEF3(muli, TCGV, TCGV, TINT) +DEF4(muls2, TCGV, TCGV, TCGV, TCGV) DEF4(mulu2, TCGV, TCGV, TCGV, TCGV) DEF3(nand, TCGV, TCGV, TCGV) DEF2(neg, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 89fbc21709b..10c2149c835 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -183,13 +183,6 @@ static void DNI tcg_gen_op2_i64(TCGOpcode opc, TCGv_i6= 4 a1, TCGv_i64 a2) tcg_gen_op2(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2)); } =20 -static void DNI tcg_gen_op3_i32(TCGOpcode opc, TCGv_i32 a1, - TCGv_i32 a2, TCGv_i32 a3) -{ - tcg_gen_op3(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), - tcgv_i32_arg(a2), tcgv_i32_arg(a3)); -} - static void DNI tcg_gen_op3_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, TCGv_i64 a3) { @@ -223,20 +216,6 @@ static void DNI tcg_gen_ldst_op_i64(TCGOpcode opc, TCG= v_i64 val, tcgv_ptr_arg(base), offset); } =20 -static void DNI tcg_gen_op4_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2, - TCGv_i32 a3, TCGv_i32 a4) -{ - tcg_gen_op4(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2), - tcgv_i32_arg(a3), tcgv_i32_arg(a4)); -} - -static void DNI tcg_gen_op4_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2, - TCGv_i64 a3, TCGv_i64 a4) -{ - tcg_gen_op4(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), - tcgv_i64_arg(a3), tcgv_i64_arg(a4)); -} - /* Generic ops. */ =20 void gen_set_label(TCGLabel *l) @@ -906,6 +885,66 @@ static void gen_muli(TCGType type, TCGTemp *dst, TCGTe= mp *src1, int64_t src2) } } =20 +static void gen_muls2(TCGType type, TCGTemp *rl, TCGTemp *rh, + TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_muls2, type, 0)) { + gen_op_tttt(INDEX_op_muls2, type, rl, rh, src1, src2); + } else if (tcg_op_supported(INDEX_op_mulsh, TCG_TYPE_I32, 0)) { + TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); + + gen_mul(type, t, src1, src2); + gen_op_ttt(INDEX_op_mulsh, type, rh, src1, src2); + gen_mov(type, rl, t); + + tcg_temp_free_internal(t); + } else if (type =3D=3D TCG_TYPE_I32) { + TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + /* Simply extend and use host 64-bit multiply. */ + gen_ext_i32_i64(t0, src1); + gen_ext_i32_i64(t1, src2); + gen_mul(TCG_TYPE_I64, t0, t0, t1); + gen_extrl_i64_i32(rl, t0); + gen_extrh_i64_i32(rh, t0); + + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + } else if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0) || + tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I64, 0)) { + TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t2 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + TCGTemp *t3 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_mulu2(TCG_TYPE_I64, t0, t1, src1, src2); + + /* Adjust for negative inputs. */ + gen_sari(TCG_TYPE_I64, t2, src1, 63); + gen_sari(TCG_TYPE_I64, t3, src2, 63); + gen_and(TCG_TYPE_I64, t2, t2, src2); + gen_and(TCG_TYPE_I64, t3, t3, src1); + gen_sub(TCG_TYPE_I64, rh, t1, t2); + gen_sub(TCG_TYPE_I64, rh, rh, t3); + gen_mov(TCG_TYPE_I64, rl, t0); + + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + tcg_temp_free_internal(t2); + tcg_temp_free_internal(t3); + } else { + TCGTemp *t =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); + + gen_mul(TCG_TYPE_I64, t, src1, src2); + gen_helper_mulsh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + gen_mov(TCG_TYPE_I64, rl, t); + + tcg_temp_free_internal(t); + } +} + static void gen_mulu2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *src1, TCGTemp *src2) { @@ -1356,28 +1395,6 @@ static void gen_xori(TCGType type, TCGTemp *dst, TCG= Temp *src1, int64_t src2) =20 /* 32 bit ops */ =20 -void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 a= rg2) -{ - if (tcg_op_supported(INDEX_op_muls2, TCG_TYPE_I32, 0)) { - tcg_gen_op4_i32(INDEX_op_muls2, rl, rh, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_mulsh, TCG_TYPE_I32, 0)) { - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - tcg_gen_op3_i32(INDEX_op_mul, t, arg1, arg2); - tcg_gen_op3_i32(INDEX_op_mulsh, rh, arg1, arg2); - tcg_gen_mov_i32(rl, t); - tcg_temp_free_i32(t); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - tcg_gen_ext_i32_i64(t0, arg1); - tcg_gen_ext_i32_i64(t1, arg2); - tcg_gen_mul_i64(t0, t0, t1); - tcg_gen_extr_i64_i32(rl, rh, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2) { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); @@ -1841,44 +1858,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *= a, TCGv_i64 *b) } } =20 -void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2) -{ - if (tcg_op_supported(INDEX_op_muls2, TCG_TYPE_I64, 0)) { - tcg_gen_op4_i64(INDEX_op_muls2, rl, rh, arg1, arg2); - } else if (tcg_op_supported(INDEX_op_mulsh, TCG_TYPE_I64, 0)) { - TCGv_i64 t =3D tcg_temp_ebb_new_i64(); - tcg_gen_op3_i64(INDEX_op_mul, t, arg1, arg2); - tcg_gen_op3_i64(INDEX_op_mulsh, rh, arg1, arg2); - tcg_gen_mov_i64(rl, t); - tcg_temp_free_i64(t); - } else if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0) || - tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I64, 0)) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t2 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t3 =3D tcg_temp_ebb_new_i64(); - tcg_gen_mulu2_i64(t0, t1, arg1, arg2); - /* Adjust for negative inputs. */ - tcg_gen_sari_i64(t2, arg1, 63); - tcg_gen_sari_i64(t3, arg2, 63); - tcg_gen_and_i64(t2, t2, arg2); - tcg_gen_and_i64(t3, t3, arg1); - tcg_gen_sub_i64(rh, t1, t2); - tcg_gen_sub_i64(rh, rh, t3); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - tcg_temp_free_i64(t2); - tcg_temp_free_i64(t3); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - tcg_gen_mul_i64(t0, arg1, arg2); - gen_helper_mulsh_i64(rh, arg1, arg2); - tcg_gen_mov_i64(rl, t0); - tcg_temp_free_i64(t0); - } -} - void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2) { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267617; cv=none; d=zohomail.com; s=zohoarc; b=GjZ7fNFAjcNp+IGr+2qBVnVc1HqW77lgGwCvRfAVC6IKZ63FYWKxugKrEaLZs9qFTm0CCjOuRUql4sVW0zyh6yszgxgCBN24WakG3abX/XQOqfQrK/CzKRftbJ64J2i7nz7fLqgcvED0UwD87AlPPY8DFPWn954BY9yMLCmsCnQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267617; h=Content-Transfer-Encoding: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:Cc; bh=eysdNGY8su9IzJx7Iy5RkAcMAQQg3WuPCXfMPq7SlmY=; b=keWCuyaU8fOvE9sRyo6t5ss2NrBLmy9I5KanpQI9dPv9EsRp0v89o2/kXdyEezG+jbz/L/hqehuzsuaadu7IjH9BBbU1q/gjr/NRAMQnKNAKDEba2UhvQG3Eq9buVL3eoZetYgHE+ZsViIgm9uxourc2oK/UOXicIYUKJuqDhD0= 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 1789267617322680.9730109176587; Sat, 12 Sep 2026 19:46:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aEc-0001e8-Do; Sat, 12 Sep 2026 22:46:26 -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 1x5aEO-000131-EN for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:12 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aEM-0002n6-KD for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:12 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d8fb334ddcso11422935ad.0 for ; Sat, 12 Sep 2026 19:46:10 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba7a9bb56sm17811679eec.31.2026.09.12.19.46.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:46:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267569; x=1789872369; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=eysdNGY8su9IzJx7Iy5RkAcMAQQg3WuPCXfMPq7SlmY=; b=gZ5yX5xM81TuxQlWyM2CpUSQYHFRvZnHvyxMmITWZQOOjKX1w1+A4YAe+9MBnuKwqn FPWmW+EPgaBDoEupHIsEjZila5C9qOHh+D5kZ16j6+dX8jGRPuI+ddU99qEd3wGtuX7I 7IFQYYYHpdW6oEJ2PRbt3lG6B8AfhXaDakTaDhfZO3Yu0yyGDNTziiQZsGlJwmiRuRTY wUn0wzQ30+kf6bxTLuMrTDOi2xCIEm19kcQPEIgdN3L+lMd5EUyMKSLAzmYjEqFUshfF q0wrtzqPNsuFZhwy7nI8+nSVAwlqWQ3ZVaGm4xlM6ang5C2AuIrhgu0mUyveeubIIuPH Q6/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267569; x=1789872369; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=eysdNGY8su9IzJx7Iy5RkAcMAQQg3WuPCXfMPq7SlmY=; b=osQ76eFlVChVj1O+NT7tPhMRlMH4BN/ljZXjYW+/8CMGRbkNpUkbeAYVlDV2Z2zT9b PLOUoOgv0w8sK4HK0DXsJLa+6odha+v7UNu2xO4U6peYWYLyAVsT9ZleJlobVgAGNkhH Ofubtr8Yc7EfOV4sKner6HQluVFpiaGIpcjFbliFceiyt6DgAnoJbuOtRF4YD869I3ty YjyWv2ryqgMNDiyYuGW1d09eGk8kC6Ozzed06LqMJXhClW9KVDo1zqIWw8SczAuT4oBl VjBW23ei6vqmM07o0Ln9Teox841onWCHaiR3yrDzxPgJzyIJ1WB9BZgN7QUkNEjOcHa6 4ajA== X-Gm-Message-State: AFuF++lJowXWEN+crPBM/lG+RhM+C6K6O/6QvkR+GGkJMXQ7FENYpZfY tKHriixmgV2AWS0TSXE7aZA1wguQclN4V+PJoyTitySK+g5aRRzVjZ7hkHt5GtMvOFQJGXDSqyJ 6mCn5+bo= X-Gm-Gg: AYBFou1Zb98OnkQf1MEJ3Fn3C60spVs0I9+YRdSEWMCCPEWcytvD3DR5jlWXNvmm6qH Dqz/4sGSs1ZxYuSGeKXGNs+ATva1DY/M2vm5qUXcgNRgEPvMWdka9DAdI9WZZT1pb2Iu3Q0RpIs bPxobnRzl65MD3bmfloowrJacjzKMU6Sjc8pZaXirWC2viCw5+JEUzxshURvAQdd2khhLjatcvS ZzuPguUEGSr110r2vhzSyvuGD9q95LJZwgzxpeRay+2aV7tQJOjTm0zBk6NgzFOanSjgtfE581k txxdKUYum6DFvrCr5MgNOa7PQROccsWVTAYC2Ep+cw8IC+twLDUX4/R+tKtW3BMPsiP0xyWgE+m gaZIW8MFl8jdxpJPexL6H9l4iCuGRUqqVV+ZOTWXxJAZEhjuo414rbS4imYPMSKIkVkC+w4Fe4S fuA0ebpRO0KC63nLD4RuhI83qDeFnK4mZ1TUeFTjIU7ykUSWrCZjfWHWZPjWaEPpa+4h4CrslLS /iW22o= X-Received: by 2002:a17:902:cf4b:b0:2d6:fee6:65ae with SMTP id d9443c01a7336-2dd2a1c9c3bmr209262035ad.4.1789267569067; Sat, 12 Sep 2026 19:46:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 82/86] tcg: Use unsigned for flags for bswap and revbit operations Date: Sat, 12 Sep 2026 16:38:33 -1000 Message-ID: <20260913023837.741866-83-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267617770158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 8 ++++---- tcg/tcg-op.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 95bb5fd795c..ee26d4c9d54 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -133,7 +133,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); -void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags); +void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -158,13 +158,13 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a= , TCGv_i64 *b); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); -void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); +void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags); +void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); +void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags); void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); =20 /* Replicate a value of size @vece from @in to all the lanes in @out */ diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 10c2149c835..b1b29de74ac 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1454,7 +1454,7 @@ static void gen_bitswap_i64(TCGv_i64 ret, TCGv_i64 ar= g, uint64_t mask) * With TCG_BSWAP_IZ, x =3D=3D zero, else undefined. * With TCG_BSWAP_OZ, y =3D=3D zero, with TCG_BSWAP_OS y =3D=3D sign, else= undefined. */ -void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags) +void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned flags) { /* Only one extension flag may be present. */ tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); @@ -1655,7 +1655,7 @@ void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg) * With TCG_BSWAP_IZ, x =3D=3D zero, else undefined. * With TCG_BSWAP_OZ, y =3D=3D zero, with TCG_BSWAP_OS y =3D=3D sign, else= undefined. */ -void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, int flags) +void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags) { /* Only one extension flag may be present. */ tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); @@ -1698,7 +1698,7 @@ void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, = int flags) * With TCG_BSWAP_IZ, x =3D=3D zero, else undefined. * With TCG_BSWAP_OZ, y =3D=3D zero, with TCG_BSWAP_OS y =3D=3D sign, else= undefined. */ -void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags) +void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags) { /* Only one extension flag may be present. */ tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); @@ -1765,7 +1765,7 @@ void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg) tcg_gen_rotli_i64(ret, arg, 32); } =20 -void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags) +void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags) { /* Only one extension flag may be present. */ tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267676; cv=none; d=zohomail.com; s=zohoarc; b=PIpE4c13CZnXyRuJ/rnO2Ne/7olmG241ncRIN6YnWmz2Qbm8cUNKhVSejsiOPibzCG1auidS0WqNlAB709sdSE2S87qlR3FWuqWlI74/ohonVE9GhbHQu4b2d+uxPcfSDuSYo+vEbEfmqHRShnvzG+VN7y7FYWP06UiJzS4Yo9U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267676; h=Content-Transfer-Encoding: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:Cc; bh=6lW2eN128ACNqnvbI0rS07nLycBakx4eZvKKQdqkEak=; b=L8GwzY5k9hdDH8mXGNSmuYGpDZE90186+riXhj5xb1++BxR6TtQg1t1Ye4K46OCVUt1idWChzROwiJ22SKb0PMyuBpcSF2F/rkKjfIoKCGEbrkz49lWLX2iKhp6RMtbsziDEC/KJrGR9JDAqDBAkhk8FfzcCcNHCcsSoG0SPeGI= 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 1789267676115327.1339307777314; Sat, 12 Sep 2026 19:47:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aEg-0001zE-Ur; Sat, 12 Sep 2026 22:46:31 -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 1x5aEQ-00014H-0j for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:14 -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 1x5aEN-0002nq-Sa for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:13 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-8558c0b26a8so1605712b3a.3 for ; Sat, 12 Sep 2026 19:46:11 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba7a9bb56sm17811679eec.31.2026.09.12.19.46.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:46:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267570; x=1789872370; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=6lW2eN128ACNqnvbI0rS07nLycBakx4eZvKKQdqkEak=; b=Pf6yDGgljjN4unTgeJrb/wBzN3ElQLjxm4EiX9M5HL4x+DaVU3sqjIUzMBd2UYkyU3 aXxNqU3lXkMOYlZ9roC0TOifmeUY/M5wGcBgJWVf8Zpt+KVFNSCMvf7CxlHFSFcsy0hV PXlnCaVMMPGbKrlgh8OyEzyU/yrYeDz7QDG/X5RfrQdm2DeA0wtjYpUZqQMO7TEhJ2sX fYzlnWXf8vfFlCBqq/MJFks+4xi2cdD0Ic9W59xUgu4h1+Jpu1q0+kzr0y2BTteLJgNj ODC4gsRVUM/EcWhZSvGzZnJPI7I2XPz5cqOJy2KBmAsXZ2hGSX1xAFD+B/mSuZ3ZXkuL 69ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267570; x=1789872370; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=6lW2eN128ACNqnvbI0rS07nLycBakx4eZvKKQdqkEak=; b=pfodWOxtb9aJiT/9ItsUVqbwR/PF/PRr5M26P8vkEjILN7SwXcKzfGIYMSwLuaUtru LK0iK7VVqAo/Q9MUZjUYCOGDbQlxdcFlQaQh//qfoRBLQtJGjdRX7G9aYwNtgr6XJu1q 0CX3FaOxRrh5f3LTl/r9ncMJuGs5c/LVZ05R9t02gmgeFsiGHvnF7PyrV8IQ3WNQ7JBZ n6J16BqbCsQPBtKGtQzcb3VJNa88DUpY8MAKsAeKqU8WvXepipW5W/ZY5PHFkmCzh5XZ wcdMj/dPzNzGn4WOQi9/pHMEJMu4tnMqYEWQ6DewrG1KkN1XL6xa2zm5YmlN2OzwNDA7 o0Bg== X-Gm-Message-State: AFuF++lIsHg2mXy7UnKtmS9180nsU6dBB0BUQjM+JvzNBBDBoab54x3j 9IcQj9vB8AP2+1WiToJe28C2QHR/SZ9prX/9kssTDgKbgoFNuSP3cXgp2ibxFC6H3+JBSPYrI+F 3MVqSxDo= X-Gm-Gg: AYBFou3NUTkotX8vrLh7myKqiGHjoxw/lll39xsqUXWZ+AIj7SQkwO/x+31KGxEal8B h1IO3zBLb2D9i7CmPH07SyMZJbeoScvw86xjDeHVDTccJT7sqnROyGWTe0k0q4hBLWSqQcMIkoO eR1EBDhCBf4F5/3iYJ+vK/4lUqhQc3mxJ+b60F3PVmXKT8t0atulD4ayH+WD5yVLDW+/GOi4rHN QHP+4ipZKwfwjueF9lX2uJQH/9d3GnA1m6UiLh5B1s+Bct535jA3dycWvBPhjLMuUtYFI90m62N PcXuPKWqcDOE3yGgFxYHygWyKwLOCcbazAhtPU3HKKBpCeaaDSVltPtJ0NxYEd/uDAaYf3fRiKU LwPxV3Av3kc44pILf6bfZXREnDiKFSK/fFeA+omsO6ymkVKV95nyvW+IyH1igZJSVrL29mQJIA/ FF8NSW4FlRwBxhWAGhRzyGUPdihVF8a9kpTc8xKqUjMT7ztRCgf/PT0Jtlgbkgpuayr+otIGR1+ O2M4MQ= X-Received: by 2002:a05:6a21:6f88:b0:3bf:6d96:ac40 with SMTP id adf61e73a8af0-3daed22bf87mr20658594637.12.1789267570138; Sat, 12 Sep 2026 19:46:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 83/86] tcg: Generic expansion of tcg_gen_bswap16_* Date: Sat, 12 Sep 2026 16:38:34 -1000 Message-ID: <20260913023837.741866-84-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::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: 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: 1789267678093158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 129 ++++++++++++----------------------- 3 files changed, 44 insertions(+), 88 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index ee26d4c9d54..c36ad34b0d2 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -133,7 +133,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); /* 32 bit ops */ =20 void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); -void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned flags); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); @@ -158,7 +157,6 @@ void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, = TCGv_i64 *b); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags); void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 5e169258ea3..28cfa68db3e 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -10,6 +10,7 @@ DEF3(andi, TCGV, TCGV, TINT) DEF3(andc, TCGV, TCGV, TCGV) DEF4(brcond, TCGCond, TCGV, TCGV, TCGLabelPtr) DEF4(brcondi, TCGCond, TCGV, TINT, TCGLabelPtr) +DEF3(bswap16, TCGV, TCGV, unsigned) DEF2(clrsb, TCGV, TCGV) DEF3(clz, TCGV, TCGV, TCGV) DEF3(clzi, TCGV, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b1b29de74ac..c1b696c8193 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -109,6 +109,12 @@ static void gen_op_tt(TCGOpcode opc, TCGType type, TCG= Temp *t0, TCGTemp *t1) tcg_gen_op2(opc, type, temp_arg(t0), temp_arg(t1)); } =20 +static TCGOp *gen_op_tti(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGArg a2) +{ + return tcg_gen_op3(opc, type, temp_arg(t0), temp_arg(t1), a2); +} + static TCGOp *gen_op_ttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2) { @@ -525,6 +531,43 @@ static void gen_brcondi(TCGType type, TCGCond cond, TC= GTemp *src1, gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); } =20 +static void gen_bswap16(TCGType type, TCGTemp *dst, + TCGTemp *src, unsigned flags) +{ + /* Only one extension flag may be present. */ + tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); + + if (tcg_op_supported(INDEX_op_bswap16, type, 0)) { + gen_op_tti(INDEX_op_bswap16, type, dst, src, flags); + } else { + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + int width =3D tcg_type_size(type) * 8; + + if (flags & TCG_BSWAP_IZ) { /* t0 =3D ...a */ + gen_shri(type, t0, src, 8); + } else { + gen_extract(type, t0, src, 8, 8); + } + + if (flags & TCG_BSWAP_OS) { + gen_shli(type, t1, src, width - 8); /* t1 =3D b... */ + gen_sari(type, t1, t1, width - 16); /* t1 =3D ssb. */ + } else if (flags & TCG_BSWAP_OZ) { + gen_ext8u(type, t1, src); /* t1 =3D ...b */ + gen_shli(type, t1, t1, 8); /* t1 =3D ..b. */ + } else { + gen_shli(type, t1, src, 8); /* t1 =3D xab. */ + } + + gen_or(type, dst, t0, t1); /* ret =3D ..ba (OZ) */ + /* =3D ssba (OS) */ + /* =3D xaba (no flag) */ + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); + } +} + static void gen_clrsb(TCGType type, TCGTemp *dst, TCGTemp *src) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { @@ -1446,49 +1489,6 @@ static void gen_bitswap_i64(TCGv_i64 ret, TCGv_i64 a= rg, uint64_t mask) tcg_temp_free_i64(t1); } =20 -/* - * bswap16_i32: 16-bit byte swap on the low bits of a 32-bit value. - * - * Byte pattern: xxab -> yyba - * - * With TCG_BSWAP_IZ, x =3D=3D zero, else undefined. - * With TCG_BSWAP_OZ, y =3D=3D zero, with TCG_BSWAP_OS y =3D=3D sign, else= undefined. - */ -void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, unsigned flags) -{ - /* Only one extension flag may be present. */ - tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); - - if (tcg_op_supported(INDEX_op_bswap16, TCG_TYPE_I32, 0)) { - tcg_gen_op3i_i32(INDEX_op_bswap16, ret, arg, flags); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - - /* arg =3D ..ab (IZ) xxab (!IZ= ) */ - tcg_gen_shri_i32(t0, arg, 8); /* t0 =3D ...a (IZ) .xxa (!IZ= ) */ - if (!(flags & TCG_BSWAP_IZ)) { - tcg_gen_ext8u_i32(t0, t0); /* t0 =3D ...a */ - } - - if (flags & TCG_BSWAP_OS) { - tcg_gen_shli_i32(t1, arg, 24); /* t1 =3D b... */ - tcg_gen_sari_i32(t1, t1, 16); /* t1 =3D ssb. */ - } else if (flags & TCG_BSWAP_OZ) { - tcg_gen_ext8u_i32(t1, arg); /* t1 =3D ...b */ - tcg_gen_shli_i32(t1, t1, 8); /* t1 =3D ..b. */ - } else { - tcg_gen_shli_i32(t1, arg, 8); /* t1 =3D xab. */ - } - - tcg_gen_or_i32(ret, t0, t1); /* ret =3D ..ba (OZ) */ - /* =3D ssba (OS) */ - /* =3D xaba (no flag) */ - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } -} - /* * bswap32_i32: 32-bit byte swap on a 32-bit value. * @@ -1647,49 +1647,6 @@ void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg) tcg_gen_extract_i64(ret, arg, 0, 32); } =20 -/* - * bswap16_i64: 16-bit byte swap on the low bits of a 64-bit value. - * - * Byte pattern: xxxxxxxxab -> yyyyyyyyba - * - * With TCG_BSWAP_IZ, x =3D=3D zero, else undefined. - * With TCG_BSWAP_OZ, y =3D=3D zero, with TCG_BSWAP_OS y =3D=3D sign, else= undefined. - */ -void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags) -{ - /* Only one extension flag may be present. */ - tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); - - if (tcg_op_supported(INDEX_op_bswap16, TCG_TYPE_I64, 0)) { - tcg_gen_op3i_i64(INDEX_op_bswap16, ret, arg, flags); - } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - - /* arg =3D ......ab or xxxxxxa= b */ - tcg_gen_shri_i64(t0, arg, 8); /* t0 =3D .......a or .xxxxxx= a */ - if (!(flags & TCG_BSWAP_IZ)) { - tcg_gen_ext8u_i64(t0, t0); /* t0 =3D .......a */ - } - - if (flags & TCG_BSWAP_OS) { - tcg_gen_shli_i64(t1, arg, 56); /* t1 =3D b....... */ - tcg_gen_sari_i64(t1, t1, 48); /* t1 =3D ssssssb. */ - } else if (flags & TCG_BSWAP_OZ) { - tcg_gen_ext8u_i64(t1, arg); /* t1 =3D .......b */ - tcg_gen_shli_i64(t1, t1, 8); /* t1 =3D ......b. */ - } else { - tcg_gen_shli_i64(t1, arg, 8); /* t1 =3D xxxxxab. */ - } - - tcg_gen_or_i64(ret, t0, t1); /* ret =3D ......ba (OZ) */ - /* ssssssba (OS) */ - /* xxxxxaba (no flag) */ - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - } -} - /* * bswap32_i64: 32-bit byte swap on the low bits of a 64-bit value. * --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267686; cv=none; d=zohomail.com; s=zohoarc; b=EDb16nS0+wjGCzVj6mlAeZ355Ltwgzz9X++pbAOdnBxUEachN7juzLohFE/nN+XE+2NLYn0euFg8mE7yszYP5ISX4gbWKX1MPCJJMJL9gL+o9OQnslos50t76DpZ8UFtS6oRpctSsu5Fzhxqf7wEvVDcNZ4tFdWe/vUTMZiSVdM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267686; h=Content-Transfer-Encoding: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:Cc; bh=f536FhSaiAJO84pwnmXXXBKHZ0a9dcosugr/BSLxdIY=; b=hnJlAG8CykEV3YiSwgE0n7vPkVKMRBm3ggcSw5WzglnDzdynt5sJlfO1Dmrx5UbctEiaT9ujMflxIA5aVKuKf37mR2WLcNauzTeH9lSkj1TCwXX39O+iObIYbXiWcO+H3X6IwIpNXwYJP23rvXBZh2Xn26R1gCKWs/MoNQMSN/k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789267686882219.62956148215392; Sat, 12 Sep 2026 19:48:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aEZ-0001OB-Dv; Sat, 12 Sep 2026 22:46:23 -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 1x5aEQ-00014I-FL for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:14 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aEO-0002o8-Ll for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:14 -0400 Received: by mail-pj2-x10.google.com with SMTP id d9443c01a7336-2d747eb79fbso5369065ad.3 for ; Sat, 12 Sep 2026 19:46:12 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba7a9bb56sm17811679eec.31.2026.09.12.19.46.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:46:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267571; x=1789872371; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=f536FhSaiAJO84pwnmXXXBKHZ0a9dcosugr/BSLxdIY=; b=HfujwryIvKnk7cW01vDbLpxMW84eoLs4aH534RCtei87heY/j51JgeU+glOda4Mx7O ggzLP3hw7UjVnoBatCbkI6LiEkoWyDbd4T4Br5vjOkYeY3vINQQAQMwJ06W4cVVIZMqe 2EfecG++uwJu04F1jNcvnKfseJBewvq4k1Xch0dJEPEIggQb1f34eXM/aiFfgUsHCbFT 5U6SN160c27xPKCuf3V7j4JgBvHgeglLCo+quVv8RDnLAmf7qwuGh05eHKUKIPz8MIZ8 4g2UB79mmGA6m7SnUr1t192zxw/kjcNDX+M7tIiS3mC74V7+HGxkIAS7FFn6WGygs3Mb aBlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267571; x=1789872371; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=f536FhSaiAJO84pwnmXXXBKHZ0a9dcosugr/BSLxdIY=; b=KHlkvLXGUEhERnXMLPVq9CHffvx82UK6VVhfBYi/7dvS4fwFAOyakw+F2prfP57vef 21KGb73gR4QocmlHajIpkqs2/be2VmTD5Mk2cs9Rax0qMBl/o79k8pwCd60d7uNr+rRi dQhCqMD5UX4r7AqqGl96BmUNTqWYINnXbasCmcW0QDpcfYJ6D+pVYz/JGrD63t5+KWiI 9ypE+8mOYe0TthPtNZFL9rP5KUQ+qe2chrUPIo8vuXpp+irQOcybamo3dcs86b5rY40G sZWr9XD/fHR7MUJSamr9iSjwgydFAArn5AAb++Fnuv7jlJpWwVaCqCukZRkIS/Eqp+BC bMpw== X-Gm-Message-State: AFuF++n2pw8FbIV2q0dMvhwRXWk5dF9Q2qCzNUqVUTma/6E8AzJiFhXM NkVQ5nXoChu+/xvj5BQCVsLNayDNa6aK46g7CgUBm+5Ej2r/RdpZuSdiU3V7DCtSsPc98wQr/rP kt8SVCEI= X-Gm-Gg: AYBFou0PFGEUF/P9Okhtfv/Hy/K6Td0fyALwnwXoYLLnf9XyVSbAZ4AQ71pilddRCzd LLEHUbI3tZiBj1I3iWDT77ees1SoyvYPygoZ3Hxl+KNh1i0Win1/+ZwP8CkHKgH73NW7YKf3lGy ijH84VO4AcSFo860IPpYwKmr7MV2hd3q4EEpK5HpfBhz3/bfv1Ut+yon43HrLePLPDpA5HAALLa Nc8aWfvt0u+39RfHdYOaxe9duZP+jQ/nb49DCn45JxVabwom5OdpkBy1Lxw1dS1Bv5Ehr7t14bG apTnGFcQv+H34rluvSiVDIq1qf22+UnwtASj93y4k6o34ugcO9/g+ewxQRRVBqFdPeiY27b8DyO e7ybg0Su10ZVORdDkC1xqXyIGoH5/xDjRAdrSw4RlDlXpngqaBh/ai6O+QRL45If0r1b8SRLg2C TaoMUdH3KSP/VQEKz1Git6yGuqxc6XwMtWJrd8hM9lHT90rDrxRi7REwPjnAXf41gSQ/hyooSR2 4Jn4wPpo5rL1zKUvg== X-Received: by 2002:a17:902:f60e:b0:2d9:33d4:a910 with SMTP id d9443c01a7336-2dd2a1d526amr228889085ad.4.1789267571222; Sat, 12 Sep 2026 19:46:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 84/86] tcg: Split out gen_bitswap Date: Sat, 12 Sep 2026 16:38:35 -1000 Message-ID: <20260913023837.741866-85-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:39::10; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-x10.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: 1789267688036158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 61 ++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index c1b696c8193..1882c0b5f3c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -382,6 +382,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF5 #undef DEF6 =20 +static void gen_bitswap(TCGType, TCGTemp *dst, TCGTemp *src, uint64_t mask= ); static void gen_extrh_i64_i32(TCGTemp *dst, TCGTemp *src); static void gen_extrl_i64_i32(TCGTemp *dst, TCGTemp *src); static void gen_ext_i32_i64(TCGTemp *dst, TCGTemp *src); @@ -513,6 +514,29 @@ static void gen_andc(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) } } =20 +/* + * Internal helper for bit and byte reversal. + * Given a repeating matched block of 1's and 0's, swap the bits within + * those two blocks. E.g. mask=3D00ff00ff, shift the input bits left and + * right 8 bits. + */ +static void gen_bitswap(TCGType type, TCGTemp *dst, TCGTemp *src, uint64_t= mask) +{ + TCGTemp *t0 =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *t1 =3D tcg_temp_new_internal(type, TEMP_EBB); + TCGTemp *tmask =3D tcg_constant_internal(type, mask); + TCGTemp *tshift =3D tcg_constant_internal(type, cto64(mask)); + + gen_and(type, t0, src, tmask); + gen_shr(type, t1, src, tshift); + gen_shl(type, t0, t0, tshift); + gen_and(type, t1, t1, tmask); + gen_or(type, dst, t0, t1); + + tcg_temp_free_internal(t0); + tcg_temp_free_internal(t1); +} + static void gen_brcond(TCGType type, TCGCond cond, TCGTemp *src1, TCGTemp *src2, TCGLabel *l) { @@ -1450,43 +1474,14 @@ void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, T= CGv_i32 arg1, TCGv_i32 arg2) tcg_temp_free_i64(t1); } =20 -/* - * Internal helper for bit and byte reversal. - * Given a repeating matched block of 1's and 0's, swap the bits within - * those two blocks. E.g. mask=3D00ff00ff, shift the input bits left and - * right 8 bits. - */ -static void gen_bitswap_i32(TCGv_i32 ret, TCGv_i32 arg, uint32_t mask) +static void gen_bitswap_i32(TCGv_i32 dst, TCGv_i32 src, uint32_t mask) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - int sh =3D cto32(mask); - - tcg_gen_andi_i32(t0, arg, mask); - tcg_gen_shri_i32(t1, arg, sh); - tcg_gen_shli_i32(t0, t0, sh); - tcg_gen_andi_i32(t1, t1, mask); - tcg_gen_or_i32(ret, t0, t1); - - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); + gen_bitswap(TCG_TYPE_I32, tcgv_i32_temp(dst), tcgv_i32_temp(src), mask= ); } =20 -/* Similarly for 64-bit operands. */ -static void gen_bitswap_i64(TCGv_i64 ret, TCGv_i64 arg, uint64_t mask) +static void gen_bitswap_i64(TCGv_i64 dst, TCGv_i64 src, uint64_t mask) { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - int sh =3D cto64(mask); - - tcg_gen_andi_i64(t0, arg, mask); - tcg_gen_shri_i64(t1, arg, sh); - tcg_gen_shli_i64(t0, t0, sh); - tcg_gen_andi_i64(t1, t1, mask); - tcg_gen_or_i64(ret, t0, t1); - - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); + gen_bitswap(TCG_TYPE_I64, tcgv_i64_temp(dst), tcgv_i64_temp(src), mask= ); } =20 /* --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267657; cv=none; d=zohomail.com; s=zohoarc; b=jUMkQh0TSYQQKleCXDDd6d1Yk8VfCK0pc6f8uDtrHSHNeju2H947ZLDVNgzBnBGoZGTKv9tx2euxpLbZYuTE7Eceyswh5hP6aW7cg3rETK023lL8g9Whj4DbEUfkxbHoavD06aseR8fTElJB8gshjACCyihO5NWTKp5r/JHJ9Kw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267657; h=Content-Transfer-Encoding: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:Cc; bh=AiLQFq77MDzK2ddq1OVPSh1cWwHnrnhb6cxgtfCkJIY=; b=XEYumuA8bChvcpiNbnCr0LyqIsYmwnvXr6l/ezARifZ8kYr7m1NZjb7znV8siulcTSFY5B4w9XtXEu5N2OlMk7UQxYVFl0SzavmMo4g0Z3+F+A8dnXDobZcSyImXnx2tguQmmP2hT9xaj6LjK8ybh1AlFl3tZ1oNKutEuKeBKY0= 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 178926765742331.400841319897722; Sat, 12 Sep 2026 19:47:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aEe-0001lm-7a; Sat, 12 Sep 2026 22:46:28 -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 1x5aES-00017C-15 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:18 -0400 Received: from mail-pz2-x10.google.com ([2607:f8b0:4864:3b::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aEQ-0002oS-59 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:15 -0400 Received: by mail-pz2-x10.google.com with SMTP id d2e1a72fcca58-85469e25187so752385b3a.2 for ; Sat, 12 Sep 2026 19:46:13 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba7a9bb56sm17811679eec.31.2026.09.12.19.46.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:46:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267572; x=1789872372; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=AiLQFq77MDzK2ddq1OVPSh1cWwHnrnhb6cxgtfCkJIY=; b=C3UIWruAC7OWGsNdJFZuCkA+723lJJ7IHTvGC739JOmetWGz3TdWLr3o8Hr5cZkljK 9bN0F3uVacETkgzhn1OStF7PepbMQlpISD9JyE17dsh4/9e3W8aPlOuLI3yiAxS+6cNQ 1CVmvrRKsV2L/LpxszhVD0KXZm573g3vZHyCLvoe2hU0jTG8QnhLBVz2mvBqKwZ02ZoN 4B2MseVTPFItzT6Thd2wiy6JEOOCsqca9GFl4IojPGPMVLvXbHWcCdGKbRZLbm8UGTEh 7BMiDU+6EKCVRTGcsvJ2eVw0jlRwWeUvezPdeWhcXWY56ebr1nnq/LjelvkzSerMlu9b YEzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267572; x=1789872372; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=AiLQFq77MDzK2ddq1OVPSh1cWwHnrnhb6cxgtfCkJIY=; b=B5X76Cplxvn9135s0866puhp3HL9ypG2JtUL0heNxzR02JlR6GleBwH/NrBSlNHZBu mzzLa7eomo4ShFWeKFXtGvrewVA4Dvl2i9PcnVJAss2kVFmiQjMr1dGX/XVn499oF71M 8NUIXlWnV5CRib7Rpgeur06jDe4oilwb1gsszpc1fGQPy4A2TGazvT9i0h6v6dJ+olR1 g3CD2Pr3Aoafj0PjzESyoKEMrtGSd0PlaroTjX/Yn5orF6MQoLjyzyn522IwHJrqMRpe X4QnZDo4+Vu9Mf9tVAyP3DAf0Hh82goh7N8TrreVNqUZb6OVr4ZBKc3+8HSmWXP2YfWm v1nQ== X-Gm-Message-State: AFuF++mCF1b+xQ8uGnhSvOckpepVVPL6sEr7VcyLmkTpERCTekc8nHrO XGLAS34+H9hoP3tsZ7j8n4Tit7r1uFBL8ZJ67ZbYSJdl4Nw+mDht/UgjVAOSTZ2jxoc4lcVPxnR JbnhgzM0= X-Gm-Gg: AYBFou2PHvYn6MGGNWuEWb4Cd2djXq6Ufhea0kosUv4HuI/sDMgnZIRxXuT0m1h75wb N+34UQ+3jwanr2WOg+RhrgGRvBYkMnBywS5069F4XlCwET8o8+/gdaXtRnFyXCe+DYM/kz097tn uBToavMDAM+JSUFRGhoBSpDuWUiQOnBz87uo/JQcDv4RkZnuE/O2Sv7AtscYAjddikppGOglS7U 7hGBrF5KvJ5XEbTbcNwSsLaaMCEQh4coOiJjA6pT3Eb1W3IDbuYJsTg19xzMkUlUdO9eVA3m/hN Mx+KepELC8UIooRoHJjycPrvUvVlRK4S0EBbKgvF/wV9POQsBsoEqQd7n9+vbWAmGvHMNg9SuHQ 3jaHl28CeKPIF+ero/OvXnoBc/1ap++fffY0XZBnbF9nIy84KRf9x6Dqc0kS47XxlEYDB2pJkLN cSR23KadvJFjiWKJXgRglaPIAULfoB10s+Pd+Cji/mmBgh6gHClo/jPz+oNCpc4nxIA6dUmYj1G e3Qn7LuBoMFcowRODc= X-Received: by 2002:a05:6a21:b82:b0:3d0:cc29:ff63 with SMTP id adf61e73a8af0-3daed342f1cmr20219289637.12.1789267572434; Sat, 12 Sep 2026 19:46:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 85/86] tcg: Generic expansion of tcg_gen_revbit8_* Date: Sat, 12 Sep 2026 16:38:36 -1000 Message-ID: <20260913023837.741866-86-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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:3b::10; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x10.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: 1789267657897158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 51 +++++++++++++----------------------- 3 files changed, 19 insertions(+), 35 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c36ad34b0d2..1829fd3a0d6 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -135,7 +135,6 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2); void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); -void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* Replicate a value of size @vece from @in to all the lanes in @out */ @@ -161,7 +160,6 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, un= signed flags); void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); -void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg); void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags); void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); =20 diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 28cfa68db3e..13aa8e15e42 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -48,6 +48,7 @@ DEF3(ori, TCGV, TCGV, TINT) DEF3(orc, TCGV, TCGV, TCGV) DEF3(rem, TCGV, TCGV, TCGV) DEF3(remu, TCGV, TCGV, TCGV) +DEF2(revbit8, TCGV, TCGV) DEF3(rotl, TCGV, TCGV, TCGV) DEF3(rotli, TCGV, TCGV, TINT) DEF3(rotr, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 1882c0b5f3c..e5b3ca1bfe0 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -179,11 +179,6 @@ static TCGOp * DNI tcg_gen_op1i(TCGOpcode opc, TCGType= type, TCGArg a1) return tcg_gen_op1(opc, type, a1); } =20 -static void DNI tcg_gen_op2_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 a2) -{ - tcg_gen_op2(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a2)); -} - static void DNI tcg_gen_op2_i64(TCGOpcode opc, TCGv_i64 a1, TCGv_i64 a2) { tcg_gen_op2(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2)); @@ -1175,6 +1170,24 @@ static void gen_remu(TCGType type, TCGTemp *dst, TCG= Temp *src1, TCGTemp *src2) } } =20 +static void gen_revbit8(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + static const TCGOpcode revw[2] =3D { INDEX_op_revbit32, INDEX_op_revbi= t64 }; + static const TCGOpcode bswapw[2] =3D { INDEX_op_bswap32, INDEX_op_bswa= p64 }; + + if (tcg_op_supported(INDEX_op_revbit8, type, 0)) { + gen_op_tt(INDEX_op_revbit8, type, dst, src); + } else if (tcg_op_supported(revw[type], type, 0) && + tcg_op_supported(bswapw[type], type, 0)) { + gen_op_tt(revw[type], type, dst, src); + gen_op_tti(bswapw[type], type, dst, dst, 0); + } else { + gen_bitswap(type, dst, src, 0x5555555555555555ull); + gen_bitswap(type, dst, dst, 0x3333333333333333ull); + gen_bitswap(type, dst, dst, 0x0f0f0f0f0f0f0f0full); + } +} + static void gen_rotl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *s= rc2) { if (tcg_op_supported(INDEX_op_rotl, type, 0)) { @@ -1510,20 +1523,6 @@ void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg) tcg_gen_rotli_i32(ret, arg, 16); } =20 -void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg) -{ - if (tcg_op_supported(INDEX_op_revbit8, TCG_TYPE_I32, 0)) { - tcg_gen_op2_i32(INDEX_op_revbit8, ret, arg); - } else if (tcg_op_supported(INDEX_op_revbit32, TCG_TYPE_I32, 0)) { - tcg_gen_op2_i32(INDEX_op_revbit32, ret, arg); - tcg_gen_bswap32_i32(ret, ret); - } else { - gen_bitswap_i32(ret, arg, 0x55555555u); - gen_bitswap_i32(ret, ret, 0x33333333u); - gen_bitswap_i32(ret, ret, 0x0f0f0f0fu); - } -} - void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) { if (tcg_op_supported(INDEX_op_revbit32, TCG_TYPE_I32, 0)) { @@ -1744,20 +1743,6 @@ void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg= , unsigned flags) } } =20 -void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg) -{ - if (tcg_op_supported(INDEX_op_revbit8, TCG_TYPE_I64, 0)) { - tcg_gen_op2_i64(INDEX_op_revbit8, ret, arg); - } else if (tcg_op_supported(INDEX_op_revbit64, TCG_TYPE_I64, 0)) { - tcg_gen_op2_i64(INDEX_op_revbit64, ret, arg); - tcg_gen_bswap64_i64(ret, ret); - } else { - gen_bitswap_i64(ret, arg, 0x5555555555555555ull); - gen_bitswap_i64(ret, ret, 0x3333333333333333ull); - gen_bitswap_i64(ret, ret, 0x0f0f0f0f0f0f0f0full); - } -} - void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) { if (tcg_op_supported(INDEX_op_revbit64, TCG_TYPE_I64, 0)) { --=20 2.53.0 From nobody Sat Sep 26 20:52:29 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=1789267636; cv=none; d=zohomail.com; s=zohoarc; b=XJmzv97gy/Md/tQv9ROWEcYqLpoftrenNda9aXJY/Qn2RlaabcZ9nPwL/gYTEDUWT443b1ZP0OhTplYQpUMT1ACUTxvo5SiRdz3FbtVB5MkYsJABfWzNy3ITJDf97C8/MJdKFkGMcWbz9Rd7t2O0LM12XiAGTIHrEMbuPtE0j4E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789267636; h=Content-Transfer-Encoding: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:Cc; bh=pUhPtkcpek6tKFDCI4bNQ5ydMQDkziqFj/cD3JKv57A=; b=caZA5Pxdt816qZlgcS5ooRrdeSsZHYu13HX3rO8HYXE+MtGRnKv6gUnL9jTB/4ENzpRqMUXz0G45mpbfevzUFoKqPUqZEP7jWMtPoNO39S8SWiEN2PBaa0XkPiFgJqpy38U2lx+tHY4f4p8yShMpAMJCob6+ufYsjBY97eableE= 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 1789267636767989.3364796652386; Sat, 12 Sep 2026 19:47:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x5aEd-0001kp-HA; Sat, 12 Sep 2026 22:46:27 -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 1x5aEU-0001Af-3r for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:20 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x5aER-0002ok-99 for qemu-devel@nongnu.org; Sat, 12 Sep 2026 22:46:17 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2d91ded8174so19611395ad.1 for ; Sat, 12 Sep 2026 19:46:14 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:bf2d:a6f5:e308:cd27]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33ba7a9bb56sm17811679eec.31.2026.09.12.19.46.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Sep 2026 19:46:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789267574; x=1789872374; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=pUhPtkcpek6tKFDCI4bNQ5ydMQDkziqFj/cD3JKv57A=; b=jKWFciQWUzKq8Pqd8wn0LjAVTUOeWeYN1lmqA1MVtswubVYetwa2YrsdJ+Vgrhz5MR XaMqsCVGWz/hy8FL1uV2lrKLEyZpyoFNDOvTjLUGBWvLcvsTRMGvPEOoGpoRin1wdFWL KxeCNz/XQdrLTZ608P9GL3DNS/FCId/oYe8xf+y/cc8MglNGZQdC2Vg12R9qRmnn/ReC XlnhGTkaZmauRPc06Xbp180pN1CQ31P6LhyKa8zkerHC2N/H0NQafLcyB7Op+iEpSdPM N5UGeVFqNbFmiSPcovIxwyd5dRxmQBryJQkINhEkg+tAWSMRXufur0JsHXPG0w2jeWkX M2KQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789267574; x=1789872374; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=pUhPtkcpek6tKFDCI4bNQ5ydMQDkziqFj/cD3JKv57A=; b=I3/ALA1kJaE3BzwXbzRWYpetlNggYC5TowCkHBmtB3s3S26JBYHrX7ZCIZY1zp7snD fYValOOxDsbltZqdjDSl2Y48Xi0HYWs0oBb8EBfiuPSYTZqT1ThXibW3zUKvIYbuUEOq IE31ygzqWIrgvVPVPmuw7lvPhgGldKLB6v2d0xBhxohhAx06ANv20gXfqwACdLhCQCNz 2sClEfTakptUvGRX46Ho+QkYVirnqL8iBSBmJag1JmJ4XQlaCg86XGKoREipG+qXfkXX BSr1nZALOmUFWQCHLOglYx16NAmMpXoc7FEC9mYFaaxaf5dx1JPEYMeyn/twKA9t5rNw fTmA== X-Gm-Message-State: AFuF++ngubcMrgQmszX8mqfI09xjDTO/SY9qGbagUTE5ZLnc53jP7Q3I KaRar12Lm9Cd4vQcLO8X0fWhbDjDoo7i/G1P9s7Ny4UTX0OYw+wsPKbC1vdNjUXeYeSVyqTfSmq mhKKCh4s= X-Gm-Gg: AYBFou2pCdz+aWak3Ik/yZEcmgaQN77E2W37S1j/QgiVClo3YQ0iKKR86tsfrs143yH +S8YecS+oiWjBxWTpUogixLIof03G7YUxADufoVMuoUbwTtJROQTRx+QjThS41Hv2wwnFt26eGS vkV751MLQTwsJmk87mj/ri3Lu5i7YgH7pkv27QPhQmvX3hfKQwpbyDn0sJ5cNvQnpQ7m0ZPjPQq n0Kfu4wW0mlg3JnwNBz4YGgR6m9onHcZ+d7mgkwXuy9blu/D5AMJ03aq4hVoIigkIudtoas/QhU +TZWNSnqpvDIpY00ORNy1E3dONzaRELvuOdqigXUL/I3Ns4zWuP/U8njQ/6HFkL1rxnQ6bivA5d e0aDR8Z+YMdenZfAtErRVMilkpsH65RUVE65flwz4OxU9NN75yPRWvX2wSReUJ6gawzHbQyexFk gvIUyEvhyH12VbTJ+19xBvafQ84PCr6gFyVLTIFf0bhC47EkdZeZNWr1Xt+QitYQPrzbXoFlSrX WZO5as= X-Received: by 2002:a17:903:178e:b0:2cf:b68a:340 with SMTP id d9443c01a7336-2dd2a336572mr218495805ad.10.1789267573528; Sat, 12 Sep 2026 19:46:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 86/86] tcg: Expand missing mulu2_i64 during liveness Date: Sat, 12 Sep 2026 16:38:37 -1000 Message-ID: <20260913023837.741866-87-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260913023837.741866-1-richard.henderson@linaro.org> References: <20260913023837.741866-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::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.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: 1789267638140158500 Content-Type: text/plain; charset="utf-8" During liveness, we finally know whether the high part of the double-word multiply is actually used. If we were to decompose the operation earlier, we would prevent the removal of the unused value. This is fairly common with translated x86 code, where the high part of the multiply may only be used for condition codes, which may easily be dead code eliminated. Once we know the computation is required, expand the multiply by parts for hosts without ISA support. At present this is older s390x and sparc64. This is far more efficient than the out-of-line helper. Since this is after the normal tcg_optmize pass, do some minimal constant decomposition and value propagation for the subexpressions within the double-word multiply. Signed-off-by: Richard Henderson --- accel/tcg/tcg-runtime.h | 3 - accel/tcg/tcg-runtime.c | 14 --- tcg/tcg-op.c | 34 ++----- tcg/tcg.c | 214 ++++++++++++++++++++++++++++++++++++++-- 4 files changed, 218 insertions(+), 47 deletions(-) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index 003c963bc7d..0dda2079fd0 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -1,6 +1,3 @@ -DEF_HELPER_FLAGS_2(mulsh_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(muluh_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) - DEF_HELPER_FLAGS_2(clz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) DEF_HELPER_FLAGS_2(ctz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) DEF_HELPER_FLAGS_2(clz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) diff --git a/accel/tcg/tcg-runtime.c b/accel/tcg/tcg-runtime.c index 77c4024148f..44b48a1ea79 100644 --- a/accel/tcg/tcg-runtime.c +++ b/accel/tcg/tcg-runtime.c @@ -32,20 +32,6 @@ #include "exec/helper-info.c.inc" #undef HELPER_H =20 -uint64_t HELPER(muluh_i64)(uint64_t arg1, uint64_t arg2) -{ - uint64_t l, h; - mulu64(&l, &h, arg1, arg2); - return h; -} - -int64_t HELPER(mulsh_i64)(int64_t arg1, int64_t arg2) -{ - uint64_t l, h; - muls64(&l, &h, arg1, arg2); - return h; -} - uint32_t HELPER(clz_i32)(uint32_t arg, uint32_t zero_val) { return arg ? clz32(arg) : zero_val; diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index e5b3ca1bfe0..fc44ad4d23a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -973,8 +973,7 @@ static void gen_muls2(TCGType type, TCGTemp *rl, TCGTem= p *rh, =20 tcg_temp_free_internal(t0); tcg_temp_free_internal(t1); - } else if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0) || - tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I64, 0)) { + } else { TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); TCGTemp *t2 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); @@ -995,24 +994,13 @@ static void gen_muls2(TCGType type, TCGTemp *rl, TCGT= emp *rh, tcg_temp_free_internal(t1); tcg_temp_free_internal(t2); tcg_temp_free_internal(t3); - } else { - TCGTemp *t =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); - - gen_mul(TCG_TYPE_I64, t, src1, src2); - gen_helper_mulsh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), - temp_tcgv_i64(src2)); - gen_mov(TCG_TYPE_I64, rl, t); - - tcg_temp_free_internal(t); } } =20 static void gen_mulu2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *src1, TCGTemp *src2) { - if (tcg_op_supported(INDEX_op_mulu2, type, 0)) { - gen_op_tttt(INDEX_op_mulu2, type, rl, rh, src1, src2); - } else if (tcg_op_supported(INDEX_op_muluh, type, 0)) { + if (tcg_op_supported(INDEX_op_muluh, type, 0)) { TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); =20 gen_mul(type, t, src1, src2); @@ -1020,7 +1008,14 @@ static void gen_mulu2(TCGType type, TCGTemp *rl, TCG= Temp *rh, gen_mov(type, rl, t); =20 tcg_temp_free_internal(t); - } else if (type =3D=3D TCG_TYPE_I32) { + } if (type =3D=3D TCG_TYPE_I64 || + tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I32, 0)) { + /* + * Unsupported mulu2_i64 is expanded after liveness analysis + * has a chance to discard an unused high-part. + */ + gen_op_tttt(INDEX_op_mulu2, type, rl, rh, src1, src2); + } else { TCGTemp *t0 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); TCGTemp *t1 =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); =20 @@ -1033,15 +1028,6 @@ static void gen_mulu2(TCGType type, TCGTemp *rl, TCG= Temp *rh, =20 tcg_temp_free_internal(t0); tcg_temp_free_internal(t1); - } else { - TCGTemp *t =3D tcg_temp_new_internal(TCG_TYPE_I64, TEMP_EBB); - - gen_mul(TCG_TYPE_I64, t, src1, src2); - gen_helper_muluh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), - temp_tcgv_i64(src2)); - gen_mov(TCG_TYPE_I64, rl, t); - - tcg_temp_free_internal(t); } } =20 diff --git a/tcg/tcg.c b/tcg/tcg.c index 489df0e7386..8cdca81ceb2 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -3687,6 +3687,32 @@ static inline void la_reset_pref(TCGTemp *ts) =3D (ts->state =3D=3D TS_DEAD ? 0 : tcg_target_available_regs[ts->= type]); } =20 +/* For liveness_pass_1, allocate a new dead temporary. */ +static TCGTemp *la_temp_new(TCGType type) +{ + TCGTemp *t =3D tcg_temp_new_internal(type, TEMP_EBB); + + t->state_ptr =3D tcg_malloc(sizeof(TCGRegSet)); + t->state =3D TS_DEAD; + la_reset_pref(t); + + return t; +} + +/* For liveness_pass_1, allocate a new constant. */ +static TCGTemp *la_const_new(TCGType type, int64_t val) +{ + TCGTemp *t =3D tcg_constant_internal(type, val); + + /* This constant may already be live within the TB. */ + if (!t->state_ptr) { + t->state_ptr =3D tcg_malloc(sizeof(TCGRegSet)); + t->state =3D TS_DEAD; + la_reset_pref(t); + } + return t; +} + /* liveness analysis: end of function: all temps are dead, and globals should be in memory. */ static void la_func_end(TCGContext *s, int ng, int nt) @@ -3890,9 +3916,184 @@ static void assert_carry_dead(TCGContext *s) tcg_debug_assert(!s->carry_live); } =20 -/* Liveness analysis : update the opc_arg_life array to tell if a - given input arguments is dead. Instructions updating dead - temporaries are removed. */ +/* + * Expand missing mulu2. This is delayed until liveness because x86 + * translation generates double-word multiplies which may turn out to + * be dead with condition codes, and we may be able to simplify to + * just a single-word multiply. + */ + +static TCGTemp *la_mulu2_ext32u(TCGContext *ctx, TCGOp *op, + TCGTemp *dst, TCGTemp *src) +{ + TCGOp *op2 =3D tcg_op_insert_before(ctx, op, INDEX_op_extract, + TCG_TYPE_I64, 4); + + op2->args[0] =3D temp_arg(dst); + op2->args[1] =3D temp_arg(src); + op2->args[2] =3D 0; + op2->args[3] =3D 32; + return dst; +} + +static TCGTemp *la_mulu2_mov(TCGContext *ctx, TCGOp *op, + TCGTemp *dst, TCGTemp *src) +{ + TCGOp *op2 =3D tcg_op_insert_before(ctx, op, INDEX_op_mov, TCG_TYPE_I6= 4, 2); + + op2->args[0] =3D temp_arg(dst); + op2->args[1] =3D temp_arg(src); + return dst; +} + +static TCGTemp *la_mulu2_op3(TCGContext *ctx, TCGOp *op, TCGOpcode opc, + TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + TCGOp *op2 =3D tcg_op_insert_before(ctx, op, opc, TCG_TYPE_I64, 3); + + op2->args[0] =3D temp_arg(dst); + op2->args[1] =3D temp_arg(src1); + op2->args[2] =3D temp_arg(src2); + return dst; +} + +static TCGTemp *la_mulu2_op3c(TCGContext *ctx, TCGOp *op, TCGOpcode opc, + TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (src2->kind !=3D TEMP_CONST && (src1->kind =3D=3D TEMP_CONST || dst= =3D=3D src2)) { + TCGTemp *t =3D src1; + src1 =3D src2; + src2 =3D t; + } + return la_mulu2_op3(ctx, op, opc, dst, src1, src2); +} + +static TCGOp *la_expand_mulu2_i64(TCGContext *s, TCGOp *op) +{ + TCGTemp *o0_orig =3D arg_temp(op->args[0]); + TCGTemp *o1_orig =3D arg_temp(op->args[1]); + TCGTemp *i0 =3D arg_temp(op->args[2]); + TCGTemp *i1 =3D arg_temp(op->args[3]); + TCGTemp *o0, *o1, *l0, *l1, *h0, *h1, *m0, *m1, *t0 =3D NULL, *t1 =3D = NULL; + TCGTemp *t32 =3D la_const_new(TCG_TYPE_I64, 32); + TCGTemp *tzero =3D la_const_new(TCG_TYPE_I64, 0); + TCGOp *ret; + + /* + * At present, the only two hosts missing some form of double-word or + * high-part multiply are s390x without misc-insn-ext-2 (before z14) + * or sparc64 without vis3 (before ultrasparc t3). + * Both of these have ext32u and addci. + */ + tcg_debug_assert(op->opc =3D=3D INDEX_op_mulu2); + tcg_debug_assert(TCGOP_TYPE(op) =3D=3D TCG_TYPE_I64); + tcg_debug_assert(TCG_TARGET_extract_valid(TCG_TYPE_I64, 0, 32)); + tcg_debug_assert(tcg_op_supported(INDEX_op_addci, TCG_TYPE_I64, 0)); + + /* + * Split the two 64-bit multiplicands into unsigned halves. + * Via fold_multiply2, i0 must be non-constant. + */ + l0 =3D la_mulu2_ext32u(s, op, la_temp_new(TCG_TYPE_I64), i0); + h0 =3D la_mulu2_op3(s, op, INDEX_op_shr, la_temp_new(TCG_TYPE_I64), i0= , t32); + + if (i1->kind =3D=3D TEMP_CONST) { + l1 =3D la_const_new(TCG_TYPE_I64, extract64(i1->val, 0, 32)); + h1 =3D la_const_new(TCG_TYPE_I64, extract64(i1->val, 32, 32)); + } else { + l1 =3D la_mulu2_ext32u(s, op, la_temp_new(TCG_TYPE_I64), i1); + h1 =3D la_mulu2_op3(s, op, INDEX_op_shr, + la_temp_new(TCG_TYPE_I64), i1, t32); + } + + /* + * Compute partial products. + */ + if (l1 =3D=3D tzero) { + o0 =3D tzero; + m0 =3D tzero; + } else { + o0 =3D la_mulu2_op3c(s, op, INDEX_op_mul, o0_orig, l0, l1); + m0 =3D la_mulu2_op3c(s, op, INDEX_op_mul, + la_temp_new(TCG_TYPE_I64), h0, l1); + } + if (h1 =3D=3D tzero) { + m1 =3D tzero; + o1 =3D tzero; + } else { + m1 =3D la_mulu2_op3c(s, op, INDEX_op_mul, + la_temp_new(TCG_TYPE_I64), l0, h1); + o1 =3D la_mulu2_op3c(s, op, INDEX_op_mul, o1_orig, h0, h1); + } + + /* + * The middle partial products need shifting up by 32, producing + * bits within [63:32] and [95:64]. + */ + if (m0 !=3D tzero) { + t0 =3D la_mulu2_op3(s, op, INDEX_op_shr, + la_temp_new(TCG_TYPE_I64), m0, t32); + la_mulu2_op3(s, op, INDEX_op_shl, m0, m0, t32); + if (o0 =3D=3D tzero) { + o0 =3D m0; + if (o1 =3D=3D tzero) { + o1 =3D t0; + } else { + o1 =3D la_mulu2_op3c(s, op, INDEX_op_add, o0_orig, o1, t0); + } + } else { + o0 =3D la_mulu2_op3c(s, op, INDEX_op_addco, o0_orig, o0, m0); + o1 =3D la_mulu2_op3c(s, op, INDEX_op_addci, o1_orig, o1, t0); + } + } + if (m1 !=3D tzero) { + t1 =3D la_mulu2_op3(s, op, INDEX_op_shr, + la_temp_new(TCG_TYPE_I64), m1, t32); + la_mulu2_op3(s, op, INDEX_op_shl, m1, m1, t32); + if (o0 =3D=3D tzero) { + o0 =3D m1; + if (o1 =3D=3D tzero) { + o1 =3D t1; + } else { + o1 =3D la_mulu2_op3c(s, op, INDEX_op_add, o0_orig, o1, t1); + } + } else { + o0 =3D la_mulu2_op3c(s, op, INDEX_op_addco, o0_orig, o0, m1); + o1 =3D la_mulu2_op3c(s, op, INDEX_op_addci, o1_orig, o1, t1); + } + } + + /* Final write-back, if necessary. */ + if (o0 !=3D o0_orig) { + la_mulu2_mov(s, op, o0_orig, o0); + } + if (o1 !=3D o1_orig) { + la_mulu2_mov(s, op, o1_orig, o1); + } + + tcg_temp_free_internal(l0); + tcg_temp_free_internal(l1); + tcg_temp_free_internal(h0); + tcg_temp_free_internal(h1); + tcg_temp_free_internal(m0); + tcg_temp_free_internal(m1); + if (t0) { + tcg_temp_free_internal(t0); + } + if (t1) { + tcg_temp_free_internal(t1); + } + + ret =3D QTAILQ_PREV(op, link); + tcg_op_remove(s, op); + return ret; +} + +/* + * Liveness analysis : update the opc_arg_life array to tell if a + * given input arguments is dead. Instructions updating dead + * temporaries are removed. + */ static void __attribute__((noinline)) liveness_pass_1(TCGContext *s) { @@ -4067,10 +4268,11 @@ liveness_pass_1(TCGContext *s) op->args[0] =3D op->args[1]; op->args[1] =3D op->args[2]; op->args[2] =3D op->args[3]; - } else { - goto do_not_remove; + } else if (!tcg_op_supported(opc, TCGOP_TYPE(op), 0)) { + op =3D la_expand_mulu2_i64(s, op); + op_prev =3D QTAILQ_PREV(op, link); + opc =3D op->opc; } - /* Mark the single-word operation live. */ goto do_not_remove; =20 case INDEX_op_addco: --=20 2.53.0