From nobody Sat Sep 26 20:52:32 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=1789563904; cv=none; d=zohomail.com; s=zohoarc; b=A/F0+98m5jYSGA2WzvucWTkccEZ40ZfdThuimmFZpH3ERoWs8dBWJmmRHjaJJ/gwXUFGah3c3PFndiCFIzkdFIr8gNsmZjTgu0u2SbO2xoI5Q6x+iwlZqf5cUo0adx9dcIES1QFTcAUzR16rbmMCcczWYPRKt2PaedcXtjc9Mf8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789563904; 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=K0rAvylJFCDebhzyBWGh1HPRhJRm/GjXARu1Rx20O7U=; b=TMOhi4X6VEHSBxc/83q6yQd5Ejvxnq9Gp2bK3sQcTm7kxUqzZUArINm330x/pAZyXH8Q8Vtqlf8fZLJbz3QGa3Br5EWAbZ3HSuZs1IZ9GuL27S0c1Z6pOGysCamRnx1yyvG5ruItzLvmfZwE8tCuExyS8yNIK15SXll7lk1NRyw= 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 1789563904452624.8588109761074; Wed, 16 Sep 2026 06:05:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJH-0000yb-8m; Wed, 16 Sep 2026 09:04: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 1x6pJE-0000xg-0E for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:20 -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 1x6pJC-0000GJ-IN for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:19 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2dd68a16955so22289855ad.0 for ; Wed, 16 Sep 2026 06:04:18 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563857; x=1790168657; 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=K0rAvylJFCDebhzyBWGh1HPRhJRm/GjXARu1Rx20O7U=; b=vzBJVPg6ZK7rMZGB7sKLAozdrmcFhmSUZz3jFM/oYyR868WFdt7Dyj2YfBcdwAbbvq 6MJymQeiIgYDss7BOiaIXD2e3dVZhdX9OFAAZaNw0BYRL8aw2RhuxvmGdHvMqbnIWvRk Rajwak0ycdsx51oTBPt0XUS2qMzgiz3Ea9ndBEH5gpdBpJZP9KfaiDG4g1JsZ0DzynWQ FeMlk+w2u267xPD2EL8ji0KMDIi9f9ro5VvqcsMFiNtE19n0CLDRZibIfWhTKowyIvbz e1R2lhDU24u82zyHdKNTvh27Ss4d/h6Zp7bh94yZepeD0lC3G9s9E5ptj2BoGpaSkF+x ciXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563857; x=1790168657; 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=K0rAvylJFCDebhzyBWGh1HPRhJRm/GjXARu1Rx20O7U=; b=dJvaoZqT141qelViOBp0GVrN8YKpBjyV9ov/lcHHavmClUtRAElsOBqvKTvOnVg86L dqqwBd1VSklwiIqeYWYfcY8ftMjfrdk//ItGCmxaNr47nLRf6ao5GyskmCxZPN2U0S1X aZEsRdYJeYb8imUFl/R6Smef5ExxcelzqJJtKbkutQGHwRPsaBXDrhAZ17X07jfiPz2O aASzTK/yyphbpGFXxnZXEKJj05V5Ka5SqktHxX48vPgTLkhAQvBNtxJSld1TRuUP1c2w KOmW49J1HxbuPK8Jr/MWMVUxENBesugWzuak/2dudH2TTgv/+U+B9Y8vMb1LAHKK/CsP HcTw== X-Gm-Message-State: AFuF++m+OFQgkxrELd1+fS2WMGvfPWyJS+iYK0svW7dlye/ikk6JdESF 1/5G509nQPODFcsJctQxfAGmi1ZL6OE+CY7tpieTpSftPzOw/H+xaotBLYFxNU5VjGgHsqaow8q /7j/B X-Gm-Gg: AYBFou127KWmcRvt/D1VwnbJH0zosbc23KS0gxJpktQ3scpTblQqTRBt1EFS2LuP5CL ThJ7TZVLeiMYXHHenAZCZIBc7woqB6lCdf96yc9LkKeBrbFe0McLgh6u2il76OzT+uBpBGUEKGP v9b2l7czRshMb8vcrliw/xQzITgRMkBqgqLsdTcIm4fMTGCRe6IgPppEPFXzb9DzGMZuXNZhOra QKVBHrb36lvGwLEexIzouvxZdiGCDOubQtVlE5f6PAUq1ia4Y+GxPgs5RcMTe7r0jMfKRztcnbp 90lneME+2U60Ndvf97TV7pyaX3yVrZnPsU5GU7kFQdbKnM+9Mf6uUJ2b+eKyLZwwWDZFrHxfW5E XD0BTI9faMPAh1mgMdtxPOwtIVyD+twt1Zyc6MHDWy9HTz0sdoEY7mhHpLbKbv2n07ion3vejKW 3TBk2Mj7rpAyJfOLDwG3tfK0YrYH1+g1vwo5srVcQGyI2vDLP7iREMufGb2Juso72Kivb0uUtm+ 97UNgY= X-Received: by 2002:a17:90b:4a11:b0:38f:a81:15b1 with SMTP id 98e67ed59e1d1-39dfe188cd9mr11810840a91.19.1789563856589; Wed, 16 Sep 2026 06:04:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 01/92] include/qemu/compiler: Add QEMU_*_NONNULL attributes Date: Wed, 16 Sep 2026 03:02:36 -1000 Message-ID: <20260916130409.3382710-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789563907082158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/qemu/compiler.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h index 4c49f52eb07..3661dc5fbaa 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -25,6 +25,14 @@ #define QEMU_PACKED __attribute__((packed)) #define QEMU_ALIGNED(X) __attribute__((aligned(X))) =20 +#define QEMU_ARG_NONNULL __attribute__((nonnull)) +#define QEMU_ARG_LIST_NONNULL(...) __attribute__((nonnull(__VA_LIST__= ))) +#define QEMU_RET_NONNULL __attribute__((returns_nonnull)) +#define QEMU_RET_ARG_NONNULL \ + __attribute__((returns_nonnull, nonnull)) +#define QEMU_RET_ARG_LIST_NONNULL(...) \ + __attribute__((returns_nonnull, nonnull(__VA_ARGS__))) + #ifndef glue #define xglue(x, y) x ## y #define glue(x, y) xglue(x, y) --=20 2.53.0 From nobody Sat Sep 26 20:52:32 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=1789563973; cv=none; d=zohomail.com; s=zohoarc; b=EGXutHGZOSBheWC2/8d6PdxC1ADDUOhu8dRO6JVP71yKa4j5h55nNw3DC9o4qTXhw63mdID4sCnjxQwiF4eexbD4hEU7UGenOyTM2bzNdSDahedePpZaL73dYdYYraAXbJdQQUMBaBdBQy4pVkUf+yFwYqExoyZdwbhGEHLSI7Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789563973; 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=+yjjV+A7iYyzKjGgR+UNc4f/t+ifl8d6M9mByR9w2bU=; b=OA+QYkVJByG3Pa5AXkv48bxXcpwj6YYNNeOr2OewwIfITWKZqqVd3KC9pND0REJOsBdmQgYOBtC0NHe3QZK2GFPG+CGEd5ARtVosPCD9FeBhVXExMY8bViU/BK4CCZZl3faVck1vo1BVaHiC8Tmq7ZRIhCDA2WWGSOg0FnD4PvY= 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 1789563973072444.13298284525933; Wed, 16 Sep 2026 06:06:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJI-0000zW-R4; Wed, 16 Sep 2026 09:04:24 -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 1x6pJF-0000yE-OI for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:21 -0400 Received: from mail-oo2-x0e.google.com ([2607:f8b0:4864:31::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJE-0000GZ-1T for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:21 -0400 Received: by mail-oo2-x0e.google.com with SMTP id 006d021491bc7-6b1ae72186eso604615eaf.0 for ; Wed, 16 Sep 2026 06:04:19 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563859; x=1790168659; 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=+yjjV+A7iYyzKjGgR+UNc4f/t+ifl8d6M9mByR9w2bU=; b=k8Kj+yexrV/lZ673oULieg648ezNTZ9+NdIlk3Cius6YtYE5ZOGbrCQ7MS5yN8xZER l32vWfjEOv7FzCuBGaWXn2VUvrXYq3S6r0pdsWtNBMiDVWPUzS/4ROVG99/NYGcMbAtY kFz1DzMH42Br0W11yxyWI9n87axRsChrgm1UQWmMYRE+eRPiRgFJsySiYHSYKEfdcMSr CStWjl6r0+Nkkxig6RFc1i7C8j0bVCvkJ4B2gU8RkrVH8ncwVH5Blecf16b9DKe9EtDk FdUbu09UiQw6bkyhaKsAYS6UBOcEg6rp+lkNdBpUbGZtfDLaJEI8QEJqDSGnmqaQjfwu u8aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563859; x=1790168659; 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=+yjjV+A7iYyzKjGgR+UNc4f/t+ifl8d6M9mByR9w2bU=; b=RTVq3ZzsZPCaj0HwBhhlNmMpXZFLCrwRvwD9QpiC4Rrh67ymlDnlhxgv9NqGeXHKo6 7rabb+ze8xiPyL3dGhYNPcrHoJkCy3/RT8vOkqxgJb5BYvFcM07V71Cny4rWQ08poAYd hfsgFjos2Oe4zJ/Y7ahNHfKdUZ9jUkXsCgEAdF4X1OssKNZ/I5cKJCd7EocZcVyZkwji P4jgcGjkupCwTKjcSJDl1fRaFrWh+ZI554RrNhruOYQbu8S/s9L47Gnl1ADDGN8AlTcN 7N2oj74qQKLgrfo9Yxo6J8pvcK1J2dEZatJ/aOxggkHFlyJVGHXZUANY0sU3rWw33Jg2 b5TQ== X-Gm-Message-State: AFuF++lRypOa7CuPaI+wBhxHHEbe9T5hR/7clgukIHi+/wgP4Sl69inD WuieoWGgN3U/kpS/qiwEUvi0eKA5rd8xOMcfR6LI3PqaFA9temdfYqA71iUpSl5YyL9Ekqu3QOI ZdVqn/1I= X-Gm-Gg: AYBFou1f2sVJXWjz9mye0tpt5CqeifnIfY6yk7J8vOXEvg+j3vqmT9iqLjh0geVOnvU at3SCFSe2adU/oZc7ZUp4ot7zmWP+k8f4RH76HZwr2mRDGZbGfEjnop3vnkyuqNnp5uECQcHGAu tTQuKaiEpWU0bcYnBFkRxNtMzoES3jvkF7XjVCi7gIUgVPXF45eplqZQuHOO7EazT0xI/EomwHH s/10aHSLIySJGazIc/kkMGWy8YMn9jGe4vKtjMW8GtSdEnOvsZnEBvTK6IQJ+sLFtu4em72Or47 deWhl5vHEmt5cIPrK6Qr2YFi62oQRFnO4XXVMs5Pde+ev7X7FO72aKrhn7WBEk9CuCLpfzLh0ji C7SrM244LgGCUWv3Me5T96pZNT6iTsKTqdLyFtgVBCM+2AShwH13BAKiFLv+/wNGoe2eWBwN1AP f8tOX+0icXcBjcziaYX9KCisGFUtVmoqOxjJX8NKqFikw80bFbg5DBljyLfOdYoGb0vlpD9d66z JKxolN34mj06aoWNg== X-Received: by 2002:a05:6820:162a:b0:6b3:1874:6f21 with SMTP id 006d021491bc7-6c7cdc59df3mr2388431eaf.0.1789563857809; Wed, 16 Sep 2026 06:04:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 02/92] include/qemu/compiler: Define QEMU_ALIAS Date: Wed, 16 Sep 2026 03:02:37 -1000 Message-ID: <20260916130409.3382710-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::e; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0e.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: 1789563975421158500 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 3661dc5fbaa..8fa4552ef8f 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -230,6 +230,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:32 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=1789563904; cv=none; d=zohomail.com; s=zohoarc; b=D6MSeX0ZcjJbx7A6uZsKXiB8/OqGBwFzz+AW4wEMJA7xwRzoSPNDocUBPNZoT/jVqlUxMr1rQtYG1bvEgH3QdK0YCOgsTgCpzhNPLukItSSHF00tesXJ1x7hd3HN/U9/JtLGzEV7Lwwe5O6VCPw0Wjaxfp6Uy1zipVztOaiH6lA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789563904; 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=iGTYR7UCITvKY2ETDmItcN5Fwca4QkduNfX2aKwaQfk=; b=JKuhfOApjhc/d4jcIp52NVUqWokaOQW95fTvVAR4SdmROuwuuBHjut28uZe5C2xGKhXx+tK2/G/nZStps0VXfkBb8O0FVmEEjLQ/P6H8zpdBBYiGX9gjrtHVcjDHLVOA2+KQfv3aKf/k46fv+vgJG2RQFE9GGPRhjJC6g/n9WKk= 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 1789563904812183.7066901071032; Wed, 16 Sep 2026 06:05:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJM-0000zq-EV; Wed, 16 Sep 2026 09:04: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 1x6pJG-0000yc-UD for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:23 -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 1x6pJE-0000Gj-T7 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:22 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39dbdfaef3cso843076a91.1 for ; Wed, 16 Sep 2026 06:04:20 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563859; x=1790168659; 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=iGTYR7UCITvKY2ETDmItcN5Fwca4QkduNfX2aKwaQfk=; b=Z6YhuSYBRqiMSrqcavjuqDWagyUtZuGSAkoXq7bgKkR4uqZ7zsQCeo34sytOcEjxwH nH0kNvms9gR7/AHQ45UvliNq9bCQXJEdgD8K0zuJGbHrjMBiphzfoYhi8JFo+DdCRe+Q niweY38tC+ciRj8TyXJa+fvMuUTHzMh2YelDk3KXfS1dwpoRnpOI+BxTte6ENiCg2lY0 75YUcJxpgNabTpblGVEr59hU2HuSt5PyOHJ47snvczofHNBE6Q/LKmztbUBxr5gne+m5 jkM+Y/5IdvHlLJr70rQN+vnoSHwGgJTqAKjpQlv7F4zBckNULRbEMRNWMsqIcnAX9j5s USew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563859; x=1790168659; 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=iGTYR7UCITvKY2ETDmItcN5Fwca4QkduNfX2aKwaQfk=; b=G4PGjhUGojlAtNpS7z4+dEScTqpz1zDvuFL+Tr50XIhlVKKOulC6z1Edxjqmk9g7A2 /GDvXRarPCKEba3tQh5NZB6Khg9hjJRE4mvQEmTgJ4n0rsLn14uscFs96AHU/ToiH96c 3YQci3sqAVgEomef+yEBn3xo5b1020fj1UasB1ULleDVPtvKWqToQxKVv3JaRWWNtQ5n 6DyuC6a4wkCnNiqw73HZE/wLBssgfgvIT/0ChF9y6GTb0adNq8JM5luqoBt4OLF66DX0 gx0GPsyp2dEtpRUUudW819z20jrcymnC3X3QzQMLj7xk1FckVnHixMN1oOYPH4VW2ANv iB6w== X-Gm-Message-State: AFuF++m65vqTfBIJthuY0IAG6I0nPbha770/8pExHviUHSyMz5+I3YNY OxRL6cA5KSdW3Ec4hmGb98PiBptDwFMZ2O2T7HQ411kXHRMh2CLcP0c9ylbFzJy3Czg0mXKG8TF JV9SA X-Gm-Gg: AYBFou3AS5iqs/OpPBuiUEEI5dB7LiH28jp1NaQUsvdhDHXyaoUG9A/gGUfv7Y0xoQK zwrb9Cbu4o/VzE7HRUSOrPqhOImuiSE22QaGUUvZdWTyYCZ60wZRrFx2BtGaZkK4mXKswtY6YWd 0VykdNS/lo7Toz1uDP+0Co81ux+p6OvYnheJspUnwekua7jmVSQee5Y89pvciR5FeAtScxanRxi r1RPFydCqIOIUFFKSVavlmaheZXXfbMiIpHriiELDi3Sa/IQv/6Xjn5hkz74SIh8NMjzUZn22Qu ou/dMB6R84Xcj0VFMJJixDjCIXVL8k0xcr4Qn2yJBj8Se8ekcmPNRm63plDKJWEx1xlb6IAPsAz mcaAQh6n0UQ31Vjp3cWf6PY1rKCAckEc+90Js1RZ4PzNsCk+n2iQmdfZhoxH4mS5BezXiXGELjR WYgqS9NEKps4um52Z+VVlndEwAB7Bqu7NgEcPrOLnvIMQDndVryZ1dvOnAnmcCAQq0/ndqnDH2g 599MVc= X-Received: by 2002:a17:90a:d407:b0:39d:fcbe:fe00 with SMTP id 98e67ed59e1d1-39e1e52242amr7709680a91.22.1789563859349; Wed, 16 Sep 2026 06:04:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 03/92] tcg: Annontate functions in tcg.h with QEMU_*_NONNULL Date: Wed, 16 Sep 2026 03:02:38 -1000 Message-ID: <20260916130409.3382710-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789563907578158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg.h | 58 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 7669dc1c2db..27ea86ce02a 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -478,9 +478,10 @@ static inline TCGTemp *arg_temp(TCGArg a) } =20 #ifdef CONFIG_DEBUG_TCG -size_t temp_idx(TCGTemp *ts); -TCGTemp *tcgv_i32_temp(TCGv_i32 v); +QEMU_ARG_NONNULL size_t temp_idx(TCGTemp *ts); +QEMU_RET_ARG_NONNULL TCGTemp *tcgv_i32_temp(TCGv_i32 v); #else +QEMU_ARG_NONNULL static inline size_t temp_idx(TCGTemp *ts) { return ts - tcg_ctx->temps; @@ -491,104 +492,124 @@ static inline size_t temp_idx(TCGTemp *ts) * its index means that we don't use 0. That leaves offset 0 free for * a NULL representation without having to leave index 0 unused. */ +QEMU_RET_ARG_NONNULL static inline TCGTemp *tcgv_i32_temp(TCGv_i32 v) { return (void *)tcg_ctx + (uintptr_t)v; } #endif =20 +QEMU_RET_ARG_NONNULL static inline TCGTemp *tcgv_i64_temp(TCGv_i64 v) { return tcgv_i32_temp((TCGv_i32)v); } =20 +QEMU_RET_ARG_NONNULL static inline TCGTemp *tcgv_i128_temp(TCGv_i128 v) { return tcgv_i32_temp((TCGv_i32)v); } =20 +QEMU_RET_ARG_NONNULL static inline TCGTemp *tcgv_ptr_temp(TCGv_ptr v) { return tcgv_i32_temp((TCGv_i32)v); } =20 +QEMU_RET_ARG_NONNULL static inline TCGTemp *tcgv_vec_temp(TCGv_vec v) { return tcgv_i32_temp((TCGv_i32)v); } =20 +QEMU_ARG_NONNULL static inline TCGArg tcgv_i32_arg(TCGv_i32 v) { return temp_arg(tcgv_i32_temp(v)); } =20 +QEMU_ARG_NONNULL static inline TCGArg tcgv_i64_arg(TCGv_i64 v) { return temp_arg(tcgv_i64_temp(v)); } =20 +QEMU_ARG_NONNULL static inline TCGArg tcgv_i128_arg(TCGv_i128 v) { return temp_arg(tcgv_i128_temp(v)); } =20 +QEMU_ARG_NONNULL static inline TCGArg tcgv_ptr_arg(TCGv_ptr v) { return temp_arg(tcgv_ptr_temp(v)); } =20 +QEMU_ARG_NONNULL static inline TCGArg tcgv_vec_arg(TCGv_vec v) { return temp_arg(tcgv_vec_temp(v)); } =20 +QEMU_RET_ARG_NONNULL static inline TCGv_i32 temp_tcgv_i32(TCGTemp *t) { (void)temp_idx(t); /* trigger embedded assert */ return (TCGv_i32)((void *)t - (void *)tcg_ctx); } =20 +QEMU_RET_ARG_NONNULL static inline TCGv_i64 temp_tcgv_i64(TCGTemp *t) { return (TCGv_i64)temp_tcgv_i32(t); } =20 +QEMU_RET_ARG_NONNULL static inline TCGv_i128 temp_tcgv_i128(TCGTemp *t) { return (TCGv_i128)temp_tcgv_i32(t); } =20 +QEMU_RET_ARG_NONNULL static inline TCGv_ptr temp_tcgv_ptr(TCGTemp *t) { return (TCGv_ptr)temp_tcgv_i32(t); } =20 +QEMU_RET_ARG_NONNULL static inline TCGv_vaddr temp_tcgv_vaddr(TCGTemp *t) { return (TCGv_vaddr)temp_tcgv_i32(t); } =20 +QEMU_RET_ARG_NONNULL static inline TCGv_vec temp_tcgv_vec(TCGTemp *t) { return (TCGv_vec)temp_tcgv_i32(t); } =20 +QEMU_ARG_NONNULL static inline TCGArg tcg_get_insn_param(TCGOp *op, unsigned arg) { return op->args[arg]; } =20 +QEMU_ARG_NONNULL static inline void tcg_set_insn_param(TCGOp *op, unsigned arg, TCGArg v) { op->args[arg] =3D v; } =20 +QEMU_ARG_NONNULL static inline uint64_t tcg_get_insn_start_param(TCGOp *op, unsigned arg) { tcg_debug_assert(arg < INSN_START_WORDS); return tcg_get_insn_param(op, arg); } =20 +QEMU_ARG_NONNULL static inline void tcg_set_insn_start_param(TCGOp *op, unsigned arg, uint6= 4_t v) { tcg_debug_assert(arg < INSN_START_WORDS); @@ -617,9 +638,9 @@ static inline bool tcg_op_buf_full(void) /* pool based memory allocation */ =20 /* user-mode: mmap_lock must be held for tcg_malloc_internal. */ -void *tcg_malloc_internal(TCGContext *s, int size); -void tcg_pool_reset(TCGContext *s); -TranslationBlock *tcg_tb_alloc(TCGContext *s); +QEMU_RET_ARG_NONNULL void *tcg_malloc_internal(TCGContext *s, int size); +QEMU_ARG_NONNULL void tcg_pool_reset(TCGContext *s); +QEMU_RET_ARG_NONNULL TranslationBlock *tcg_tb_alloc(TCGContext *s); =20 void tcg_region_reset_all(void); =20 @@ -632,7 +653,7 @@ size_t tcg_code_capacity(void); * * Insert @tb into the region trees. */ -void tcg_tb_insert(TranslationBlock *tb); +QEMU_ARG_NONNULL void tcg_tb_insert(TranslationBlock *tb); =20 /** * tcg_tb_remove: @@ -640,7 +661,7 @@ void tcg_tb_insert(TranslationBlock *tb); * * Remove @tb from the region trees. */ -void tcg_tb_remove(TranslationBlock *tb); +QEMU_ARG_NONNULL void tcg_tb_remove(TranslationBlock *tb); =20 /** * tcg_tb_lookup: @@ -674,6 +695,7 @@ void tcg_tb_foreach(GTraverseFunc func, gpointer user_d= ata); size_t tcg_nb_tbs(void); =20 /* user-mode: Called with mmap_lock held. */ +QEMU_RET_NONNULL static inline void *tcg_malloc(int size) { TCGContext *s =3D tcg_ctx; @@ -692,8 +714,10 @@ static inline void *tcg_malloc(int size) } } =20 +QEMU_ARG_NONNULL void tcg_func_start(TCGContext *s); =20 +QEMU_ARG_NONNULL int tcg_gen_code(TCGContext *s, TranslationBlock *tb, uint64_t pc_start); =20 void tb_target_set_jmp_target(const TranslationBlock *, int, @@ -783,7 +807,10 @@ void tcg_gen_call7(void *func, TCGHelperInfo *, TCGTem= p *ret, TCGTemp *, TCGTemp *, TCGTemp *, TCGTemp *, TCGTemp *, TCGTemp *, TCGTemp *); =20 +QEMU_RET_NONNULL TCGOp *tcg_emit_op(TCGOpcode opc, unsigned nargs); + +QEMU_ARG_NONNULL void tcg_op_remove(TCGContext *s, TCGOp *op); =20 /** @@ -794,10 +821,13 @@ void tcg_op_remove(TCGContext *s, TCGOp *op); * a starting point with tcg_last_op(), speculatively emit opcodes, * then decide whether or not to keep those opcodes after the fact. */ +QEMU_ARG_NONNULL void tcg_remove_ops_after(TCGOp *op); =20 +QEMU_ARG_NONNULL void tcg_optimize(TCGContext *s); =20 +QEMU_RET_NONNULL TCGLabel *gen_new_label(void); =20 /** @@ -806,7 +836,7 @@ TCGLabel *gen_new_label(void); * * Encode a label for storage in the TCG opcode stream. */ - +QEMU_ARG_NONNULL static inline TCGArg label_arg(TCGLabel *l) { return (uintptr_t)l; @@ -837,7 +867,7 @@ static inline TCGLabel *arg_label(TCGArg i) * This version relies on GCC's void pointer arithmetic to get the * correct result. */ - +QEMU_ARG_NONNULL static inline ptrdiff_t tcg_ptr_byte_diff(const void *a, const void *b) { return a - b; @@ -851,7 +881,7 @@ static inline ptrdiff_t tcg_ptr_byte_diff(const void *a= , const void *b) * Produce a pc-relative difference, from the current code_ptr * to the destination address. */ - +QEMU_ARG_NONNULL static inline ptrdiff_t tcg_pcrel_diff(TCGContext *s, const void *target) { return tcg_ptr_byte_diff(target, tcg_splitwx_to_rx(s->code_ptr)); @@ -865,6 +895,7 @@ static inline ptrdiff_t tcg_pcrel_diff(TCGContext *s, c= onst void *target) * Produce a difference, from the beginning of the current TB code * to the destination address. */ +QEMU_ARG_NONNULL static inline ptrdiff_t tcg_tbrel_diff(TCGContext *s, const void *target) { return tcg_ptr_byte_diff(target, tcg_splitwx_to_rx(s->code_buf)); @@ -877,7 +908,7 @@ static inline ptrdiff_t tcg_tbrel_diff(TCGContext *s, c= onst void *target) * Compute the current code size within the translation block. * This is used to fill in qemu's data structures for goto_tb. */ - +QEMU_ARG_NONNULL static inline size_t tcg_current_code_size(TCGContext *s) { return tcg_ptr_byte_diff(s->code_ptr, s->code_buf); @@ -935,12 +966,15 @@ static inline size_t tcg_current_code_size(TCGContext= *s) #define TB_EXIT_REQUESTED 3 =20 #ifdef CONFIG_TCG_INTERPRETER +QEMU_ARG_NONNULL uintptr_t tcg_qemu_tb_exec(CPUArchState *env, const void *tb_ptr); #else -typedef uintptr_t tcg_prologue_fn(CPUArchState *env, const void *tb_ptr); +typedef QEMU_ARG_NONNULL uintptr_t + tcg_prologue_fn(CPUArchState *env, const void *tb_ptr); extern tcg_prologue_fn *tcg_qemu_tb_exec; #endif =20 +QEMU_ARG_NONNULL void tcg_register_jit(const void *buf, size_t buf_size); =20 /* Return zero if the tuple (opc, type, vece) is unsupportable; --=20 2.53.0 From nobody Sat Sep 26 20:52:32 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=1789564011; cv=none; d=zohomail.com; s=zohoarc; b=YjrOgg0X2oCypoF0tYkLDUJSiP7pUqdIstNyBq8bpOS2OlTS4wHntmzsaa6RTPqAPhd1ChEHeVZbR0FIZP4zFmfExbq18qwNDWT1gWS5Ww+9VN7ke7+uPXprI4wXi/lfAYKCW/MOniScRaEpCbYwHuDU/jHj6b5hvMEW25rRr9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564011; 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=BgBpD+m6YCq9keoV+Z18wjxXI4TWplaXnmO4kDQXpVgKxO61SmW+qb61P6smlMjZdfnuIWvRSmV7QrWirM6t1x1uhbfb8orsqKvHxXKZk2nhQCV3zsCIsiG81jqbT4iQ6Op96O0JyHb4yHL56AK8Ijn8WbLMpiktXGHaNwt3btQ= 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 1789564011436833.9188233689773; Wed, 16 Sep 2026 06:06:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJK-0000zl-7R; Wed, 16 Sep 2026 09:04: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 1x6pJI-0000zM-4o for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:24 -0400 Received: from mail-oo2-x0c.google.com ([2607:f8b0:4864:31::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJG-0000Gw-Bj for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:23 -0400 Received: by mail-oo2-x0c.google.com with SMTP id 46e09a7af769-80a7469f5e9so604790a34.1 for ; Wed, 16 Sep 2026 06:04:21 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563861; x=1790168661; 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=M6i0UP+BVdrnBjpR+Bd0FjR7WdYhROI2JIEjgq+sXdAceryMkI00aL1LAyhZsesjxO Vz78FNNNSZIBkHR3KOGVr4NTGCcruFyDQFLyEFQY7VVn7+UiKkH7E2Y12ENnXgZYw23r DyZGVHUiKq1Vc0IBWnItLaaqPjSLWbpod1zlnsxHWnLW5EC+pecbe0A3NKuO7qNXg6yH vmWCFoiXUPvZ1egbivtKGCJvGqwsa6SchSo090qUWmei73f1urXJEnksinERfZS+HEGQ g5rvUZI4U4ZCGv2Dx1n8HVKyw8M5NrAK/hlSBxnp6y22j05jTAim0pwb09eSWazlLNyg iRxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563861; x=1790168661; 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=QEc78ReWCTyVkSDPvMtHCfWiKprQikCE9/mrqXUIM1tHbiQx6fhdKB++FtFlpAdKQ5 GMtXRI6P2T22U0TFC/eQGGMEPZxyAd9o1YTSQClXK4ebhsWtp2ggX4dAOdbU7MFEqGC1 nSDK+PVjn2dFDVQg3ie6yOGcZi0cYuosX9QtUJ+Cui56R3xarnzUomhw0OeuCdAWkyPx 8tXIE8G4PF6D+o/ABXvqDnE7i3Ui2wbwfCGKzm3cHcJKKX7pJawzfWEvAvFd8Q/DzXAS gWB3lbIiRvYCtB7kTLq7JMQcCMw+E/g9jhK8jo9JKhWvSpiB8B57MfU40Pz/B3+wmJKR kk3Q== X-Gm-Message-State: AFuF++lxNT71r9R0HRJwr7i/g5mN8FnDYfPR10Oo8tE8vhR8ief8fon4 bTeW5wUIZSRycjzbYMdMHpCjYkz4XHF+I8mqGM1f8LzTkl1t0wGO40vQ6+8o0XRgnnJsKBTzuZ2 BXCE2lvI= X-Gm-Gg: AYBFou30GPmdVr8+qtqek/ACiJd3DqilAHIV8mAJPtqeuKUaX+ZrsKm6M2yFbFFL6fV 33HL+inBifsXnPt5K0i+isQ+ct/YuNsvZkiZOQjOP8qyuXgN2mKnwCltuiwyARQWqak9kDzhgpG IHGwWF79LDUU6HZBUrQfU3/qKZsWdczAVYeoQpoMZakXTv2Q4jyAMzc0Ts7VIHLTP6Zg5hZdByS ObEjGUhKJlo5cisLfY9In7Xx9gRLKuvNKH2PMks47aM6UhQrILXBIQAjkm6J3EKcG3FNw/ih1un oIHMP0lKZAJd18+IyL2pfG44Q0i46IrK72UUFeEUlqzLzIb85YjtWqVT57DUjD4g2jIWRC8llY/ UjeoOFImm347nYhibSJAmag8ZImdF7IwtfLLaleQou3OuWH+AnIdvdELMm2KJyBaPWoSMapeh9p kHu+T+E+aD/ZYZMrxB1n5U5Ijd3rG0h7U4GX8tp9+aqETMUsPm2o9QI4AosGnl/0bRlyZTPntXe +/DLIw= X-Received: by 2002:a05:6820:8108:b0:6c2:4f65:3e87 with SMTP id 006d021491bc7-6c7d3defad5mr2539496eaf.34.1789563860638; Wed, 16 Sep 2026 06:04:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 04/92] tcg: Use QEMU_ALIAS to define most tcg_gen_*_ptr Date: Wed, 16 Sep 2026 03:02:39 -1000 Message-ID: <20260916130409.3382710-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::c; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0c.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: 1789564013621158500 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:32 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=1789563904; cv=none; d=zohomail.com; s=zohoarc; b=S+pSXnrq2Q5mqNmnVLfz86oKrdkp1jMdk0aoz+n17gCBafjqp3yNLBTWUfCm1cW6SCV7lNucm37NnfdXx9R5vCZv4FYfCDz/7D1dQC9JSqkDtq1JSrLcytflDpk/yx5rdHXw3lF8u7PgV7GGez4YCiF4zCXZAA+K4rWh+HNN8nc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789563904; 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=EyvfVIpbqiYFMjTw3EigaFciwRRnh2+tfSMPM9zFtlc=; b=LtNkxnOHuQC4sIRVBTg2gOceZ1IyGhgrzqQdeJXi9D73Xrp0IXSKQ7UeNrVbwEKowvkLXAItx4ElH2VHEULlUgCML2IT1hsC7ZuYG4F2/vjVbr7PBQpVnCtuHvpnv0fhmKFgW3LBYe5odK4m+VU9UI3SAf959YqUFibtZtvQzco= 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 1789563904752689.3328721749242; Wed, 16 Sep 2026 06:05:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJS-00010b-G4; Wed, 16 Sep 2026 09:04: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 1x6pJJ-0000zh-Cq for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:25 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJH-0000HA-Rv for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:25 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-466ccdd76a9so854392fac.0 for ; Wed, 16 Sep 2026 06:04:23 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563862; x=1790168662; 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=EyvfVIpbqiYFMjTw3EigaFciwRRnh2+tfSMPM9zFtlc=; b=xGFQrsI9sOQg3QFVzWSxy2GcnwejIPrISkQceKqTopxKdwcFplTeWMj6Zew6L3uct3 QtCN8EOqgSkzf7qLIAFoDluTeilIHsOn32q5THBsQt0syLo3y3ke0kRVuF6ySlxZMlJ1 WImlDkZ/OYiy+I12c/ZhVqqhbYsiGAYxeVTpWJqgCZX33PqFJqIywCd43yjY2IERr6Kc 0k/Mj7AwqxXheeseyn6Iqhjng9OGivk14GI7XMMc0jojEYA4nX2QKJs9R93Ie1xGrnTQ 08dbXM6q897FP5sgqrDsooopgMovY6mIwJD8sQvOK35ZavmWKSnXRS2emKHrgUsHkKI1 DPRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563862; x=1790168662; 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=EyvfVIpbqiYFMjTw3EigaFciwRRnh2+tfSMPM9zFtlc=; b=ab5K/lP7a1PAMkUNJgS9m5VkMlYp1yhmgepAOKnTmduC/Id3YSstQ4VC90Xsc0upHG F4y1C82asilJ57TeLXzeJK9W+sdKrhBFdNihUS4QRrHyiyEYOCL/G00mkL9FtmiLPd0y i40b/Q1hPWiK6QHPd/J0ey2DyLBhAkpMvqwlDHicvodZfShLA3AeYFUAVAbVJIYW1meN OMMBkmMJXFQvv7kXrZ8kpPkk5jcJ73TuLagMY8atDTHMdNHl/Q5R/JceALbaGM85zSF6 n8casJUgV31heCCaT+mx2r+/hFE+V2kGxBKa9IuksOr/ffONpPPQporHZpNJ6yoJO1Cb 6j5Q== X-Gm-Message-State: AFuF++mHcQb3f4XCWlDB9Ceh18Gw42mRpUEIxQTD3Y41XQ5tm/KtWZ8E Hs3ihUyo1+YZJd6kPzbEONgQHzii9gu/lIyvNjYqpmMqtY9xy283zwsJ3K/1yVmtjb8xvyuWu3r uAUdcPqY= X-Gm-Gg: AYBFou0ZnUWHfQlW7cPK+FEJGSi9FLRnrC0NU9UTKN4AS/EeeOrizJodHVF2hSkmxcT xjixX3iQ1No2y+/TuqEeyrusrPKITprakE8+//1Ahe2Cnop9JjvzMoXDKypbIGbJwhHLv1puev2 Wi4AWzXszl3d+vPOUt0iRxIAdHn9Soxobi1m5K9jFyfuuCSZoFNv+N6gjyVTjPIkaBmhUf41NIX b63O7Qej9fpr4Qhmxp1cHGay0ELTnQGVtUntnX38LEGDOmAPTkMucNjbGKxP3WDALVXXFreGHud EPzsVJVg07Y3d3uBE0+YgKCoHI5lCvvtRALnopBqSykaqErAITnml8MCGOIjvFNdCgsDS5fErSO bAdQDOSp92rKUBb/jPhviIMTcgl1lEBsGb1Z0ssLEVrECURvHY+qjrMb7zxWd9mKIy4hJRrIW6o 2GvuW6NcbVUIjhjhyqmyO5ccvKJCOiXF9peLEtdEdgWUxzbLqRzv9fn21d05g/GJxNo7dohe8jR dfRUjM= X-Received: by 2002:a05:6820:1799:b0:6c7:af50:b2f6 with SMTP id 006d021491bc7-6c7d4ef0189mr2303590eaf.65.1789563862252; Wed, 16 Sep 2026 06:04:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 05/92] tcg: Use QEMU_*_NONULL with all tcg_gen_*_ptr Date: Wed, 16 Sep 2026 03:02:40 -1000 Message-ID: <20260916130409.3382710-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789563907126158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1e826b62574..888f00d5f24 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -497,22 +497,22 @@ void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr base, TCGAr= g offset, TCGType t); =20 /* Host pointer ops */ =20 -TCGv_ptr tcg_constant_ptr_int(intptr_t x); +QEMU_RET_NONNULL TCGv_ptr tcg_constant_ptr_int(intptr_t x); #define tcg_constant_ptr(X) tcg_constant_ptr_int((intptr_t)(X)) =20 -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); +QEMU_ARG_NONNULL void tcg_gen_ld_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o); +QEMU_ARG_NONNULL void tcg_gen_st_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t o); =20 -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); +QEMU_ARG_NONNULL void tcg_gen_discard_ptr(TCGv_ptr a); +QEMU_ARG_NONNULL void tcg_gen_add_ptr(TCGv_ptr r, TCGv_ptr a, TCGv_ptr b); +QEMU_ARG_NONNULL void tcg_gen_addi_ptr(TCGv_ptr r, TCGv_ptr a, intptr_t b); +QEMU_ARG_NONNULL void tcg_gen_mov_ptr(TCGv_ptr d, TCGv_ptr s); +QEMU_ARG_NONNULL void tcg_gen_movi_ptr(TCGv_ptr d, intptr_t s); +QEMU_ARG_NONNULL void tcg_gen_brcondi_ptr(TCGCond cond, TCGv_ptr a, + intptr_t b, TCGLabel *label); +QEMU_ARG_NONNULL void tcg_gen_ext_i32_ptr(TCGv_ptr r, TCGv_i32 a); +QEMU_ARG_NONNULL void tcg_gen_trunc_i64_ptr(TCGv_ptr r, TCGv_i64 a); +QEMU_ARG_NONNULL void tcg_gen_extu_ptr_i64(TCGv_i64 r, TCGv_ptr a); +QEMU_ARG_NONNULL void tcg_gen_trunc_ptr_i32(TCGv_i32 r, TCGv_ptr a); =20 #endif /* TCG_TCG_OP_COMMON_H */ --=20 2.53.0 From nobody Sat Sep 26 20:52:32 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=1789564183; cv=none; d=zohomail.com; s=zohoarc; b=FQUwcoVnjJP4Y5YFwpVBY3kl8V5PoA2GfFL40R6bILQ+jIiaMAKNvOvwhZp7bSjN6gG/CbaKi2zvG6+1poXcdW/AdiWm+BO3D0SOcXkbQWLGURl0a6vEXw60INg6kSR/N2NFyngyujcBAu9lTXhiDL1JrRDAS4cr2YwWRu3GRFU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564183; 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=nS0F4afUEpaeo9DXWV3nrwx6iqbi97gY4q1OhP6mo8Y=; b=DkxocGP6qpOk/VYfD0DSr/1a8QsW5iivjLYVqPl1oKo7AQ/bOvMXW+aGS8vekVcQYRCTmX/qBC9DFT73gmY6iIPtCwccgt2gJ9y8KFeEaOedVmQ4EqZR1kv2JGpXc22qwB2SlZ456tXgT0xZjXMHFODIpV45dObMa6beoMcDafs= 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 1789564183906227.90060506603356; Wed, 16 Sep 2026 06:09:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJa-00011o-Lk; Wed, 16 Sep 2026 09:04: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 1x6pJL-0000zr-I2 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:28 -0400 Received: from mail-pz2-x0d.google.com ([2607:f8b0:4864:3b::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJJ-0000HO-Kt for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:27 -0400 Received: by mail-pz2-x0d.google.com with SMTP id 41be03b00d2f7-cc50b9e8a45so630933a12.2 for ; Wed, 16 Sep 2026 06:04:25 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563864; x=1790168664; 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=nS0F4afUEpaeo9DXWV3nrwx6iqbi97gY4q1OhP6mo8Y=; b=bt04C26MiT/keKSAIaaAWrgLP0xiVAPsCHw0+M/A3uEddMa6PCLFwfjcTqQGHypSpJ H5lOzfT0cn0huppPdWbUGfC29tDGjAwh0RSsqBaQt9QHNfdMilxgegpYLywcnvXivvMP egr+edLv0AwwiN76HxT3x3FBRsd7YdJc85pxvmd1jdv/bFu4p7NR5wOguFDGl8sUcdIV 7FHA+ZpZj8curcBvj/2a1BxObUWqlV4QNQemJGoDB0WOghZc2FiwPbGHxb/5aHV0eDmR V1Sqo7LkUTjKjklCsbgJEjU/L6a1uWNlzKU4jwl7sC1LnktzMbj3iR8AiCDkq/PAUuKI Jibw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563864; x=1790168664; 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=nS0F4afUEpaeo9DXWV3nrwx6iqbi97gY4q1OhP6mo8Y=; b=NUqR0ui6uTZNXSbhmMf76pfEnC4IZpchTJecHBqtWGGs7N+w2kBJcn82AA6FZnAsS4 1lf73fKYooAOxtbsPUqDEFUNjtBw1T6+DfV1Ubn8IX5JSWmnaPc0P3Bmhhm0qVasCIYB dC2avfUbrmPURx/aornwKIduBsujFC047Q1RYWk89wk3twILqJS6kW8AURgYdz+DYryZ DxxdMziyuiloC4JMC7DoWsAh9hP13uHwbhShBg2Dw9O3/Zb4fENpti+xBjj275nayRYQ QpHIxK0NoYes69/QYhQdDXdAkDEsricKZyYJXvO+w2alldoYSexNNJHSen2JcgmTOdgW ejng== X-Gm-Message-State: AFuF++mFwSyij+LJfgL4sVCaPraVZLTp5EcSZ23FAO2iZcgssgQalH6h fSb+CDBYh/KGB6quil5N2r3Wzvr1KdRWJkoi90D51vMGRVPUgqFsBtr+EskDdL8eu+wGvPEaGJ1 jwHV2X40= X-Gm-Gg: AYBFou38FfNfRwpL2aWrZDQArM+vesN6w+R6CPDaJ470J7caEQHEvnnEVGPkoeWFdw2 8U/DguXo0e9fT2BvYofcmECc1J4IEh9E5q2WNWMC6/5sq7qAZzvMMl8RVZ2gUhWa7v55l8iirxn i8zOEatr8y+wDaqq3mDwlbZM58nyYTUSr7IXmxPNQNXmnBwbKAiRRGczQ1/mZolzx3K2IEOkptH F7udxCLemeReQqwVA10LS+0Op5CY2RSjj2KgCkee9kn+g0ZJ8Km/rQ9a1+T/XyK3B79ianhbQXR saiSvo/FhWeLDNUF0/d2r+EofspJpD4z0GG+OWxHJvA68TK+bFGgyIs4r5hiVCpNevQ+DTgRfL+ pcga1DDwf5iCwVFf7u/V518QozSPqnIx8S3ikLBsEu0HguFtr6J8+N8gB0hOmFoMM7WpJo+le/d uhAg6i3suYZe33Grr066Bo7GUrr9iVOaNKwXs7M61PAR3JkGmAasGduABOi0kHlCWWGhsoNeQyn CbPYPE= X-Received: by 2002:a17:90b:280a:b0:39d:f60b:8121 with SMTP id 98e67ed59e1d1-39e1e4d39damr7276034a91.17.1789563863560; Wed, 16 Sep 2026 06:04:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 06/92] tcg: Generic expansion of tcg_gen_mov_* Date: Wed, 16 Sep 2026 03:02:41 -1000 Message-ID: <20260916130409.3382710-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0d.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: 1789564185067158500 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 888f00d5f24..69331928bd5 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) \ + QEMU_ARG_NONNULL 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..6fc75b9286e 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) \ + QEMU_ARG_NONNULL 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:32 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=1789564272; cv=none; d=zohomail.com; s=zohoarc; b=R1G/qvWa3TqElJ0VUxRc/bQYAu4dIi4SwIhgmozuRDBCaO7ZG8rsHknk0k4vd9gTwsEa4IaciDBGrd+foTk3AqDBP8RN+HoM5cmrEzhtTjwkbm9JWxOeJHunpTJNnk1SPFsnLKqLbwmFrVA68nz6kWL5iOpFsgbbHZw8t+XCa2c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564272; 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=mi9YGCK/K8L2XG8JyWU5uLRVdpLLn+xOvd+M5yNzz/8=; b=Tn8eFyU3UXCWbuSS00tCsi0z/n+tifrGqBrBtYrM436xihzB6H6/YE0+h+MyoJvq9lbT+NJjnGBTy+T8WtSuLSoS/Gl2Mj32+Dil+S4XUZ8hU6q0LBYdMfIZnxINo92yxvJ0+eIj0QevbrsNGzY3wd//3byI5hEZ7GJjORQGlIA= 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 1789564272906212.13408704493747; Wed, 16 Sep 2026 06:11:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJU-00010u-P5; Wed, 16 Sep 2026 09:04: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 1x6pJM-00010E-SX for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:30 -0400 Received: from mail-yx2-x10.google.com ([2607:f8b0:4864:41::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJL-0000Hc-7I for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:28 -0400 Received: by mail-yx2-x10.google.com with SMTP id 00721157ae682-85d440939f0so6995947b3.2 for ; Wed, 16 Sep 2026 06:04:26 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563866; x=1790168666; 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=mi9YGCK/K8L2XG8JyWU5uLRVdpLLn+xOvd+M5yNzz/8=; b=XzR8HxH3PSiiULOX8/LHnikiRNpi/o6+Z8P7wM1qtOfqLdwgPfiQwdEaBK6tuyQNWc IYFxXS/yNemCzFn6TeEs2MsemP6VJZBjmyd0nlKt8wNhnMPD61p/dxnUghTbHPGAD0Fp L8pzhxJV73piIXi6VDRITBK9FzBJUlo7N6UoSgVJ5A41m9yeGc7VlhC0vjtRd8qBDcSP TrlQHXtq8MgtiSrQxr3N1C9osZTBqlRzr4ArkjgsmX1C5MbfrNSSMUmUght4hiX1G8uh oRB4zkoJZO/dHqbzLQQ9yJ9a1vYzbOqXRGwSm//h7tC2YYKP0q6Q+HdV7f4jrmJapRzc w2Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563866; x=1790168666; 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=mi9YGCK/K8L2XG8JyWU5uLRVdpLLn+xOvd+M5yNzz/8=; b=WnG46xJc9UhwvVG3u0pPq2WtAam4XTuPuVfgSa+7boOIFxJZLrtUYzIxU4tqxw2gbA hvMjwm9i0XhtbwEtHlbjKHFY5rJzDx0K/erXnRkxOZ9UP6jUJlS3pWHfHSaFG+ECDgtv KfsPg7q975LLZyiTk2o5h2uGwiagUTXvRh85DRyr05x3B37BVedVqkFs7vo4MPAkba0l Wdh4NlUY9RmMxPj4LJUCtivXpCySgFVLv+CNMWHZus4HQgqyrAb+2tVjKhyRuKPBMUjd ed9WazT0QyTOricS0SuAUgC1C3ABkQQSOMnbOi+7APYCRizbRZytvWlYK5zwzUZs+71O B3iw== X-Gm-Message-State: AFuF++n3gG3ljVmgo+cTlllhIkDlPrdc14oslmPQwdTbse9JIvydDDkI ionHdm4feSI/ST412+qjJofVeogxrUMRWiy2uoJjvYxbXziuHujGoYcTCJY6gmeuC33F6movLhx ublPuPFA= X-Gm-Gg: AYBFou3KloAV1X5mhusr8E7hRuhENFinSIJno/sOh/B0xiuVOpC6y5ou8uUP2lBi4wc 3BHqN9hS0/iTyIOA55y9AY7bfmfV3Ak8wu/p0TUatmetTAbTj1nGDH35twHwWXreslCynL2OIuB Zy8uomv7K8nrPXV3JQjChLU8BOXCoQCXanP3HHCAP1HMHp2I7svM5VGfv16u0QMiqKeiurIA6eR B3B5kmywPPehgA4UifGDcI2IHJ1BFlXYQjgOzBf9h4fKVlLvdySs5GyDfaFxlWf5uI35KHYX+G4 jvXpr+rpaL4k6BEnKj2lWZBleWseOk/SzqbMP5eO08r9i7NNTfC+2MyfqhlQQwPDteDKYcGS9Xs sXfVLnviQHYEc7s1VSSDTBf6jNQI9yzdoTCJ9XU+Y1Ri0NOT7e7fzNPDmCM0oYJgT6i1KqRiXhz 2qnJeYSM0XKSDiZ72+zjTEMhnyZcvtNTGgYeuz1v2GZFms+eEGC36kSoy43WAmKOB3LmS3VUfF6 eNlgMs= X-Received: by 2002:a05:690c:6e84:b0:881:ea14:415 with SMTP id 00721157ae682-892245bbb47mr6844537b3.35.1789563865730; Wed, 16 Sep 2026 06:04:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 07/92] tcg: Generic expansion of tcg_gen_movi_* Date: Wed, 16 Sep 2026 03:02:42 -1000 Message-ID: <20260916130409.3382710-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:41::10; envelope-from=richard.henderson@linaro.org; helo=mail-yx2-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: 1789564273927158500 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 69331928bd5..f54b3618e8d 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 6fc75b9286e..3b3bd5cdfa1 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:32 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=1789564016; cv=none; d=zohomail.com; s=zohoarc; b=W5/vg20QE0cn0XK/COxZ3nSC3tI+yUyMmTqR8evuQtvaHDFyFkBVcCMnZNde76F7mWu9F5pmyp9WX718PvKtFO+0s/YxM92IRmSWArj2W+Sy6jqjiKJhnDBGhIJR6oE2va8PnJ4o1ScKUkDpZdjBftUhYPcbaB6ek+rhPfA8OC0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564016; 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=SutwjnqPe1GODElxHHrPeNhq6/LeSa0ui+ENqllO/0c=; b=lT3GF597R/NkjjonIk4Epf7f0Zyw483he0Pv6E0BQ41ZXlUmQ/YSkyvpckAgvAi7qguPe921fWYabCRnpei5cXoM6r13qYvew3+RkoSSHUG+okXu5bDmp+8SJNVdn6Zs/dc5yAhaQwiYIXH3g1c3mPX0OYxIjqH+IqMylyQeBkU= 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 1789564016522530.72275492669; Wed, 16 Sep 2026 06:06:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKk-0003A4-Ev; Wed, 16 Sep 2026 09:05: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 1x6pK9-00021v-Sf for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:22 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pK7-0000dr-FL for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:17 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-4693691fc81so559017fac.3 for ; Wed, 16 Sep 2026 06:05:15 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563914; x=1790168714; 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=SutwjnqPe1GODElxHHrPeNhq6/LeSa0ui+ENqllO/0c=; b=Z2fnjQK1vuOeEhbdT21467nbhqTViC8QX3mLvRRhFDUS1eKMl8tKPqks7UfopnaMGA 3nJPawgM25wMRqgZbTEcIXmFvthtTumvutQ8Fk9sjpYLKCfspVugHXaMCgIRkVo5htIM tKPSbQahEytDRTxyqtRllbVVEk2r2P7yVl/qaoBub3s4tCgB+RXq0qAonDxBs3Sxb52K ojkR0pS5tYzOnG9ziVpqm75coP8uquf9pGsp43QivlW17ts6PMjSCVBwML2/wn9zD1tq hGY5SnrC3uPyEfrAXRgWE4d2eXcG0kJ3mxxogbunlXRyUIcFuNr3b1MaYLcniVu74esq Oeag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563914; x=1790168714; 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=SutwjnqPe1GODElxHHrPeNhq6/LeSa0ui+ENqllO/0c=; b=QHP55HglfeZ5qc5220MU93VO6wzWzRfNUOTjCxZRi3sFDCl3vXF5gHJLqRQMcXlZQu Vjf+91ouKZY2TdnLVOBduENKa3YtbyYqGtlNGTflwQCJyCyEYKYqy1zGe+qdk9NOuRnV jqBNX7VZIJeSokfxUGr+FPfB3GKAcgF+H6Vqo3BVWXKg8lpDS3O3fftfPS/1zg7dq4Go +dLyyU7Hj7Q6L/Zg5x7NyjLwOIlmaRh3Rp6VD6eP5AoLvGPbqNoW5RVRyFiReCd4i77D tp8llW43vvXWYfa8yi8haLQdkDVNdPwJe7FMHNzBhkUIb6PDvsrlwN43c5/U9GAcwRPE QEnw== X-Gm-Message-State: AFuF++myN36xIFiCsKBTeQjCNvxxfeOEV82C7860ExEmtbWxXrFqi1Tk rV0tmLs1t8gUMr8sj+HpXaScxe26TBAueRa6mQiFgk5SV/gIUEo3CvSxF3Q2b2tl1eH7kFeuWig f9k+5Ip4= X-Gm-Gg: AYBFou3n7RltjJsTzKMBRxabFM8p8Kqfg9WZ7Cb1mZCKd/UMu+TnWaoV8HOFmmf7cLA Ci52VTj+FhNUFdZ0mYcVhfUScXqtd/C12cXaCfXAgiE9CWF4t9UlKOxdv2LovO5JdGduT35n561 DNpgnVG+xLVCOZFg8kpW4JYCfram5fO0Kr9CbRa3ZT1AH0vtXvBZirPFOSKH81fEtNjrPMGivfs 2wkgVzK5XysRkPfQInH983skoF5wYm1bhg14Coikyi8gV/jT/vZOoI0GVKFFO+/ZTwrnmq02bOq 4PMHy09azTSGLl7QjzxnyXLwy1RMwuex9wAnE94KY7BgqoH9273ArygxbWEhWmUrhY5MChxm72R T+LcbDQY3/TrPFAmfwi3GscIE90yNzEnVbdFAG1R1C1bhVBa7PvqLFYyoFRx2fzu77wIwN++d1u gGrgQQpeTd2iy0zSEjidg10ofWBdGRAJiWKGvXQM9jWi7d6sgTFTkSnV0BUNtQqzinoxO76bvM6 cyhc6Y= X-Received: by 2002:a05:6820:607:b0:6b7:46fc:1c4 with SMTP id 006d021491bc7-6c7d36f99afmr2431139eaf.35.1789563866840; Wed, 16 Sep 2026 06:04:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 08/92] tcg: Generic expansion of tcg_gen_discard_* Date: Wed, 16 Sep 2026 03:02:43 -1000 Message-ID: <20260916130409.3382710-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564017563158500 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 f54b3618e8d..e1c87792a69 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) \ + QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1); #define DEF2(NAME, T1, T2) \ QEMU_ARG_NONNULL 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 3b3bd5cdfa1..a6072f362e3 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) \ + QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1); #define DEF2(NAME, T1, T2) \ QEMU_ARG_NONNULL 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:32 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=1789564075; cv=none; d=zohomail.com; s=zohoarc; b=hVQxW4kWMCb4kCyxH7uNUr0Hh2OmOuSDBtOXF9LDwdjn4sMT67jRCvAiFrSfbl7Vjy0hjfTEVEqR7qFBv8WFZM5UashXGsDv9u1L04m5SWDiY0l6rFhzm6+L9KU0Gr+W0VyEKZdxSHpvVR4DDRJ8YK5X8Y8FFyDeXZ2SL8HsIdk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564075; 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=SyocRgG0UfzspRA+5PY08nnvLtfyxVlX/4MO3LYTw6M=; b=IEqoyAJxWOVWmZmulgGVC/dyUp4IEgv/vyNulRuxObZLhjWkJI2F+htM1vqR/fcJureIAETYH6pZU5e2Yag3oD+qoiVMi2tc319QEwuWwxLuQ1kSfwJs36ctaKNjCGWeoDxdYnxvsziafARIyfZFn+D1zEUJwXMKRbB90lop3ms= 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 1789564075136656.8067206839742; Wed, 16 Sep 2026 06:07:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJc-00012S-Ta; Wed, 16 Sep 2026 09:04:46 -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 1x6pJQ-00010X-6m for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:32 -0400 Received: from mail-oo2-x13.google.com ([2607:f8b0:4864:31::13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJO-0000Hr-CV for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:31 -0400 Received: by mail-oo2-x13.google.com with SMTP id 006d021491bc7-6b4bff33d18so494927eaf.3 for ; Wed, 16 Sep 2026 06:04:29 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563869; x=1790168669; 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=SyocRgG0UfzspRA+5PY08nnvLtfyxVlX/4MO3LYTw6M=; b=PKWpfE6QLxmKXIlbBftiqn2Mvt/zf5Tis4ZTD3OsYAwfRSBskNoS+Lj9/dotxggZdc vNn75vcBQmTBxnyYQvOg4YP0z/KoiyK4AYOj8bI23wtOAjt/ABvH177tQmNiB67+umUN 9PVECYae5NpVjHmWPUqM6NvnJkLUfwINKcS7TBkTrrCHTevN9tliSiqHwf0uq1dNWJUD mYz4b6/nuyfVxlWMVNxYtWX2Yt7lsi/7YdyjelxlOCO7mF/5UUOPIFYvJEihf1bsk6Ur z2utQ8U92VGatfTJjguhQ2nxrJQOQ/vjkgoJ5t19QfbS8YhvLPK36TvNammFRIJpOGNr G1Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563869; x=1790168669; 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=SyocRgG0UfzspRA+5PY08nnvLtfyxVlX/4MO3LYTw6M=; b=P9+CUZ7jeyX0ZVOYyKYnCytgbEVhAk7vH8xU8JGsLsZjJUCpA0Wqe7rT7Fc8qio/vN 8utP81+12++lcV3jElYy1EPKbSdbfj0uUDi1c8WK6z/YxkPyB6fArH1dcFzXSF31BMYi VPHTQ0PkPYYGoIMPiMYuyjhvill2JOvEVeMIDKSbokAiKND0xSV5XKXTHgQ93oquozk+ 3Xjm0b/oP/j5RlNHL6TaN3VKbo1kRxRRWhnGwPVcUVqI6XxeEYmIElTXiJFvL7maIhIx gciihmmgSTA3BbZ1zkuxlMOl10ffBfdrCOnV/XkMYxUyIjuRIJnlFTnwqyW1FVdgwvoR PgKQ== X-Gm-Message-State: AFuF++mr67/9qdPTY+sDqZF/w3dVF0xYjSaRqCcwQZbkol4oA9o+cOE1 O1kDn0CsEOWJOCWweX14/sjWy+c0Utt5ZyoENe5qLPLRDCvhl9n7KaWFwL6nbyrWzLeVCDSdVI/ e6YZpiD4= X-Gm-Gg: AYBFou2LTsfPKXNFBfMr1iRwJmIHbtly5Wd4xTIa/h1gMSOjPEWtmnx+d21Ep5zs1tD 0ayda7CRkPdvTdLSqAtP0xGNlsyDS44So95PN2wB+XbkBLmpvjyCJfTCMqjuEvD/nEqA95GtiUM WgveM+f3PeIxp7dFL7w82mpu3LGYqNUkLMfpCoi2SvwRF0IDByfF+a5YEVdJbfNuHBpLxDMo3rv p1K51i3eConed+IPY/EMRzGEIceXWQXhybU21wAcYSWxq6fdBYHdVtNN9/cHGf3QOjedKozAv4f njGmJaCtERVJhuQSJKDLHYLEhSxNbe7Rdms8hbu0oYt6WfnCV9tbtLUyvBOPOdD0NDhszbXlDwS CtRKZfG6L6v7Xlbzv8qd93L1BPCGpiaohRu6lqHncM6tgj5GSM+nyndDfFkVHqx9vIdObRvC/FR lCwvRO/rVfY2zcJsCzlgVMzmHWM84CBsP3xXhhLnEaJnzF+8g4Bn07/JcQeAPSxxMI1SsQsY3Ah TYNcZ4= X-Received: by 2002:a05:6820:1ca3:b0:6b7:8396:f3d1 with SMTP id 006d021491bc7-6c7d3fec586mr2539593eaf.51.1789563868763; Wed, 16 Sep 2026 06:04:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 09/92] tcg: Generic expansion of tcg_gen_add_* Date: Wed, 16 Sep 2026 03:02:44 -1000 Message-ID: <20260916130409.3382710-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::13; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x13.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: 1789564076144158500 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 e1c87792a69..f1dfa4011b0 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); QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1); #define DEF2(NAME, T1, T2) \ QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2); +#define DEF3(NAME, T1, T2, T3) \ + QEMU_ARG_NONNULL 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 a6072f362e3..9846cb13331 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) QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1); #define DEF2(NAME, T1, T2) \ QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1, T2); +#define DEF3(NAME, T1, T2, T3) \ + QEMU_ARG_NONNULL 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:32 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=1789564238; cv=none; d=zohomail.com; s=zohoarc; b=NP2tY/eMaZKVFm5yOybIqfmOkIcVsCV68nyiwqhwwn0VMKMCk9CpbtXGshd/z+SakeHL+yeK/awvyfxQF5WTaKe7kekMFrnhh3wh6+uDkktXWAoOUiO0Rmafb+6CrxPGvXwvnFnIo8rk68p5xQJxJr+UcP79+Cb0DeA5gLP2qzY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564238; 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=FlMvX3IjryhcBHzyGAGHQdOIUrI/shuBuxQsakqwvo4=; b=OwmqK8eWf07/ixPBX2Vh0KsFAk/oa5u36qMzTxLBvbmCiP08ZG7bcm42oaoKOysGAgr0F3EKHyGpp9PnnyHuWZRry/zFSiLedl/rF7sdbQ8Ava9//g0XXSWnQU6vp0kXvOYjAC640rLBjclWV7zcw/cOTA3LPkPbIWKg0r+7HKU= 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 1789564238138703.0833614088043; Wed, 16 Sep 2026 06:10:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJa-00011u-ND; Wed, 16 Sep 2026 09:04: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 1x6pJR-00010m-Oe for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:34 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJP-0000Hw-TC for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:33 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-466cc9ab667so1086312fac.0 for ; Wed, 16 Sep 2026 06:04:31 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563871; x=1790168671; 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=FlMvX3IjryhcBHzyGAGHQdOIUrI/shuBuxQsakqwvo4=; b=pIOVkvPvyNZA1azGYEni4U4YyvKSi8dub2WxiYgMCWTspnrmy90NbQgHXn15peX9Vm j0p8i6ei8DfWrAJv8+6t2Iia/FSOLuRBm0+mUws1VHoiXTpb7RamLpiGZYnImRZdMMWu wEtDNIR35RjHYG12f2SKQLBbvznl8l8srn9RH7eBk9F+eh+BQyqAcUhHLrh0HmuY2WHI jzHvWEy59nFWRLoRBVtE2rg0GcI2Vquf0FaS/92FhTTTFAJx0XSorHQ26S4sjm95zt+z jtcGGvzhNTED1I/pOYNI3l9CalbH6oRB7JMtxMFn6J1RpSjGKOyZVmmavfMtE1dsF9Tu EF0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563871; x=1790168671; 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=FlMvX3IjryhcBHzyGAGHQdOIUrI/shuBuxQsakqwvo4=; b=e/Cce58ekMGm5xAnOgDWBikO0wLq4+8J94QfSTM2t6KQhNotR4h4dboDnDv+5aG90g P9VSH7BO91kB6GcAEFq9X/mMW35cM3vakm4a9HMsDVwX1Abjnd82A9ZEuhU47wSN6OMC gQbe5GQ0qCNMId7puPAjvJQ1HAH1g/RQdYsD9IHUMrdt2MC+HckbpzNTzLoUMuOaSQhE mViDtbjU51nCDDUYzKyzu/EfknxeZpuC5FIoct1IioKrr6Yk1OF7/hMHG68cCZ3OONbd qLZpYx0pnUKYJQjaE7d1XaIpoxycWcaepfn9DQS16gV47tSsTn6QhLcuMaJem4YK87MP ZFIA== X-Gm-Message-State: AFuF++kDc0O3mieBsAdNc61ebr2qFKUZAVpJrJBjaIWgO1FORJ2WePo0 24vmafNVLPNBmH03nTta+FMWeLQliS65YL/p17h9qJF75yjbNlM5GjmwVwhOdVc0WAD0Y1Rzzhw ANdaDkTY= X-Gm-Gg: AYBFou1neupJZFSxEOhtF0z3sSK5XMcqVvZJSR66RSTSEKeK0r2rgUIAO+fvGonJycl Nq4xz0s+pfYXCFWxY23vJCEsLcWMMQC/VKfGjPcsLuUhYN0QlPgt28Cb7/T0vBji8blqjMsPXev vgO1HRsuLesf4DvmVj4KQZr8n7mR16r11YyLZZVc1kI/rh8voD6DttR5c2YbctJwXYM8r4Vt4un RO1wslIWsYzU7SyciQvQsfnTOhhxcScr5Ip4d9/qS4MNol4eKgLBEDHSQUuAdkJ9VGyrU8/umlA m0/yk3MES6PnvmdjGeD+laIHqvo3L2re5D/nzyz2+cqNYnlY845YX4aTmOuI1j5m7tLl+4u9AZd aoUFynoEQBy6IcF5pOfiquOunEPgeEPeBYu8SvdaMRYbTKkpVdRM7y0ybmA4vFWolyd9+UNxb7G wTzl8N96c5H8W0LQEroBvIJd4HcFJT5D41SjcSKmFd618+DxF1AH9+hqj/D3fZ71ErqjWi7Ud16 zNBU7A= X-Received: by 2002:a05:6820:812:b0:6b1:9944:552b with SMTP id 006d021491bc7-6c7d1fd96e1mr2529264eaf.19.1789563870356; Wed, 16 Sep 2026 06:04:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 10/92] tcg: Generic expansion of tcg_gen_addi_* Date: Wed, 16 Sep 2026 03:02:45 -1000 Message-ID: <20260916130409.3382710-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564239317158500 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 f1dfa4011b0..7e6e17b2316 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 9846cb13331..6a5081cf74e 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:32 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=1789564053; cv=none; d=zohomail.com; s=zohoarc; b=kOmrlFHrOuddC5k8q6TpDHJ2mjb0/Liw7e6Ii5FgcQr88Cz2JT9+0fFWymiYtJ6STxHsQa0M83DP+V23hel8NQAGAtqN6Ih4A7gRDKnayOKeoUDDfCm5me5h4Zp7bHUJfxY4cokQEVhSFv9Yi4en3GRg/2y2CqpO9Y3ZPQKiDBI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564053; 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=zFSVA5B21DK4J9Z0Sb+FVIBRZ/HkG3ySKftoKO00ANg=; b=MvFN0o+22LzgNV5BH1WRr+blgTpk92Z/BPyd6TIMy1LGnhZgFQ/0/HWgDVsmw0qUAcfHNkyoTrIraECXWIRkYQML/7suIAePWQco5P1fAMsXB6tBRlbJ7sWjvQLD1Ma9aRP2Kiu0zgyjXiTe8dXyfHHEjKPtksaB79kL6aUgOiY= 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 1789564053138187.32777093224286; Wed, 16 Sep 2026 06:07:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJj-00017H-B8; Wed, 16 Sep 2026 09:04: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 1x6pJU-00010z-5l for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:36 -0400 Received: from mail-oo2-x2a.google.com ([2607:f8b0:4864:31::2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJS-0000IJ-JP for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:35 -0400 Received: by mail-oo2-x2a.google.com with SMTP id 46e09a7af769-804e42309a5so340924a34.2 for ; Wed, 16 Sep 2026 06:04:34 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563872; x=1790168672; 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=zFSVA5B21DK4J9Z0Sb+FVIBRZ/HkG3ySKftoKO00ANg=; b=zCG/IHYa/lQpz7OD6rOBSBpPUNXWL7REvXRjcMeXUYF1efOynpUKD5iB5H47K6MNDW X4gZbbYnBjUB2hzZMuJo1otAuozqLvAvXZZi4q3jJt9AKw2dnFWa0kGrGyWTk9a6pvvj u7chkb2zq+AKtuBQjIorXDQNUtYWluJym3OV+pferD+iZIl5gutEbBRFnv0LWp4FRcGI KT2VHg6be5xHmPJxFpJJ3D2uo1RcAbZy1nJEC95wYs00sYraLzaaYUJk2oWvcrwpTxnP jG87cgk9jzWVkX0CZdCewmEapV9Z7f7ckPLstn9noicZsS0yjzTTIkrBuVTqIkcBeyKY yr1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563872; x=1790168672; 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=zFSVA5B21DK4J9Z0Sb+FVIBRZ/HkG3ySKftoKO00ANg=; b=x/2YvrIje5wvjNuyPuzK3v3it2hy/XVO9lm7s5j7wbfZ8Gz4Z4Nap7IGt4i1iEInWC iZ6/BuZ/zOQH4kSeElLu8wcse+SsMCI1gAKSDHhU5AYz2jqngoecohpM2yUxGTWZTzKK Ns1zIgYa/zu3KUWk5gXD5JM9R6hDo6gBw59qCXblHkQIaOvRk13u1kGa9RcKkT/s/189 rokLrim3XzbtM9j4+MHxTCoIN1yMt5mjxTFrQDdRYnqBP/I97YgZasYR6iMM1oEDGpTv fR7lwM7kFV8SK4PX4ctpEhhZT2o+Dz/GBvxPKeTdyDSIXsiFAy/btmvOpXD4Kyg+Mm6l OCaQ== X-Gm-Message-State: AFuF++kkYNqwpjRb1ZibInpmecfeK1yuXK1Vm+9XQWmITCLgY+KDRfZv a8w1fHyXN7DOF2Q4zl1TaaUlvvGz+SyM9nir5Airc+k4OBz7Lf9CzF33NbBePrv7yP3yZ2STDIj 4wFUMVT4= X-Gm-Gg: AYBFou33aMdtwKjWz2XA8ApTrXvh8G8L3zjUKlvde6dK/nlJUQ/IWvLKddCOT8esK7y Fws5tgE34Ac61J1Z7WJMQOz+9vjUryFh9OwwM+r8xY8Y2SQ0vXMFgd3jX1CfofcVQEXHVv+kaPG HwhE9oS95AQ4hAPUsXwRiIPUZga4UhlqTijJcFElPBn01Pz/wWwkOTUEO+iApL3QnJo6RixoBTL rn7+sS6P5mH1QXCDZ24RD3MIf8LlPI4BRWoFUlZVt9tE3j3iL+F8TQvM0LncvqkX5bXCH8uSs2V 8qaCT7aPrzGR1Wvw5kyWAB2BecK7arWOrlk9wAOEisBkeNgclVPIaiHDOIUJGrZHzA6M86HoDbM QbpunwuSOlzQq5KHXcId3WZBpEdf3r3gcD8qHCUUfYzRd8hmEVggSIHxXbX0FMf8VUx3pEpZeXh X2fwNHikWHDf2Dh4ucWT5WxgHLBQQuDonn0woqGmRyKoqJWNkPa4UWNZvg2hE92owdZ4iFFwzja /DWNpU= X-Received: by 2002:a05:6820:f06:b0:6b7:46e9:96fc with SMTP id 006d021491bc7-6c7d39f9c02mr2420806eaf.44.1789563871781; Wed, 16 Sep 2026 06:04:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 11/92] tcg: Generic expansion of tcg_gen_sub_* Date: Wed, 16 Sep 2026 03:02:46 -1000 Message-ID: <20260916130409.3382710-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::2a; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x2a.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: 1789564054170158500 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 7e6e17b2316..6be93865326 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 6a5081cf74e..be0db3195c2 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:32 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=1789564067; cv=none; d=zohomail.com; s=zohoarc; b=Dmknr67JkBAg+6mVV0eBpe+/rt5Hw7/TELsMNy39om4SuI9zXGUz06zLtRkjUs1gX4vYiIu7oSTQ+v+aqPfkg8OIxfp36eeR+KzbBLbE0g3DswE7yEAbSp5DHVsz275dRgvyiUR8FvurGNVoy0JAY1AxSvB0PvWKmo6/8r4fXWA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564067; 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=e5JPmZJzpt96w73KehN/JsFKf4BffDhuPjFz5scKOmk=; b=lUp3uHAcffPtIBPg+cp9nDKwi5ScTypdoEebqEtWYmYiX6zG6lh4YJ2u0QDS1c9QtFzAkBGMpjWN9FDsfw+0Um0jnUAk3tZsIzaowNAH3zhEA2Sr50lQLfzxPnu/LdYD/wm+Q9jdPJ1fBTRXIUd3X8ZreZEENN/e15TdEEogjdc= 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 1789564067098919.6905682577191; Wed, 16 Sep 2026 06:07:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJj-00016K-2m; Wed, 16 Sep 2026 09:04: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 1x6pJT-00010y-F9 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:36 -0400 Received: from mail-oo2-x0c.google.com ([2607:f8b0:4864:31::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJR-0000IF-Uj for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:35 -0400 Received: by mail-oo2-x0c.google.com with SMTP id 006d021491bc7-6c72bd8a017so690596eaf.3 for ; Wed, 16 Sep 2026 06:04:33 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563873; x=1790168673; 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=e5JPmZJzpt96w73KehN/JsFKf4BffDhuPjFz5scKOmk=; b=XBu+lT1qvZzAWSOeDFjSC+7rzQAKkhfl7OkjfilWdLexFIEMURx1+HB6nWTYh52xXf a0KApoGDWdagPES87ChgVQyaZ+iegEUTg/EISuRLkgI9k/g+mOLS/vM2k67UMMRYUXuY +Loia553i3Dtgbb80UcNx5nFhWeWw45y1wBpxYkgdd6KS4ByFFAN6OakLsLPgFx5hLjt OKrJDEfrUBCjgSzO9SqzQ7lF2CuB6d3PZP1hBCXh+cRezv4QOnSNPM9EUq6UUCoRQF6V WHyUYrSmKVHMSy6vPXmxhbx+qXpjCBo7Sdix8rnqwLFL7SYiVMYVb1KSwGsJcVFXy2Pr IdrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563873; x=1790168673; 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=e5JPmZJzpt96w73KehN/JsFKf4BffDhuPjFz5scKOmk=; b=GWpnbinO6eHQeINAs1vqD5GbFHSLR/UGsxzVyXo5GifjSUIElbIpKFcC5Geu9StwSl vN2UYUWpHzynuwIjEXOwKnlAPTQ8Gg08UgnNm6IcNNCiJXs5GP8L+LAfpNTFPOTP06vk 2DVWuIC/9ve35+g/Pg+JukqOuk9tmG0dvurFb346JClyjga4feP2oRZlLKi+5D1vvqSo nJed643sgXfSgjiaQR3OHcX2zyBqew8kyIxSCIk2Q3Y54NigKUOKLxSP0gMBPKrcOf4m m6kQEOqsVebPaP/V/T+eNqKnGfiZZJ8pDb+QWgZLYnyeLHyQY1QUwS/uoxY8PtS1DGTM xNmQ== X-Gm-Message-State: AFuF++mL/DnZMmY3cIPIGMBY5nKgfZ9UJHGVQMZuguly8kyeuTdTQT6r L+GrhprhGYTsI4BowoAmJSSqpMD7/yuEh+iJlemXuRC6Hsm8AbzwYZNEwRN5B9Y0o3pb2ycvZUF MMeWLvRs= X-Gm-Gg: AYBFou3x0SyM8RCtZh+p7G2jBPv+gHfXzFn4fwG7koSnuzMDcvWLtjdsmy95bcwKUh1 vsvRyjyNENlD5k7Sq2nGe8OA1Q71TsBu6P+vwJA7MQj5l016WysQc9bRtirX9nUstcqOKOnX8J0 qu+WbZ2qWsvJ5sdLbJ8+MMEVH7GGWiu1sFCBG0UN8sLxRfihf0cR6HGaYeeQUr4l942D1cxAMQ/ PApP5GReQV+kKaSdoyx16FNZTtgUs0e7S3rnGe7vTnlXiPMh3mBwJGYohGsfqZjIUc4HiQ9xOYH TwehMSHrb99iB8ilTc0FmbwEVylHnt6fIJhtaVDKzY0rJfzZfNhaugmC4prN4tqD9OTXVBwdE4S W8l1Tpw5a859nWTZKgvcxyaF1/k0FT7c9EfirKE4USoaHg60xwEEgc97BfPA1L+eApRe+i0FzXo Vsxwq9MnYz4+qJP3nGD07+BaSOKbv6GMfhzqmC5BNHk02sjd9BFuOfFgEy3x8tsOAKstVAmh1Ef 53kbBc= X-Received: by 2002:a05:6820:4d09:b0:6c7:7668:a2a9 with SMTP id 006d021491bc7-6c7d16ca0a0mr2825636eaf.26.1789563872803; Wed, 16 Sep 2026 06:04:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 12/92] tcg: Generic expansion of tcg_gen_subi_* Date: Wed, 16 Sep 2026 03:02:47 -1000 Message-ID: <20260916130409.3382710-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::c; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0c.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: 1789564068297158500 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 6be93865326..db5315a5cd5 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 be0db3195c2..ba756d4aa69 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:32 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=1789563964; cv=none; d=zohomail.com; s=zohoarc; b=miw9T3sTtqytedORfspLIP0wRwHeQLIrOTB081RuzCsOg7TDkJIuAOpvC4JlSxmH9WVd5hM/4l66dmNN54DjG2mBn/Rxy1Kj+CAPpwHduimITMsWm2ACk5LCVucDhXvDi0UZhJq3FYW+xTUcBYwasCHRl7ugU5Zt57BhUS3r/Ko= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789563964; 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=ZC9cjz2S7VvubAvVoEtjxyzeRaMdSDwzLQ+JpOUV5dw=; b=fVuRv9nBBLE7Kw4eHteMLVKl1JUs8swG0Gd9EsnGYEOIWMjSCwGBflNm4WQ0GUFeGI6IRFE249w9b3ZQ5YEPP89Ar7ydNN2KxHVhQ9vhQ/LLOqQLZNUGbHD6CB7TdIh1ehPTqtgDEVhXXjIaAgDmRwTW8wB8U9PoS2k5aPn2oJ4= 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 17895639647611015.7489758950982; Wed, 16 Sep 2026 06:06:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJw-0001SI-Rr; Wed, 16 Sep 2026 09:05:05 -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 1x6pJV-00011F-Dp for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:40 -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 1x6pJT-0000IW-Mk for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:37 -0400 Received: by mail-pz2-x15.google.com with SMTP id 41be03b00d2f7-cc4c3304784so695763a12.3 for ; Wed, 16 Sep 2026 06:04:35 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563874; x=1790168674; 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=ZC9cjz2S7VvubAvVoEtjxyzeRaMdSDwzLQ+JpOUV5dw=; b=iySPQ58pLhCqjIqkUQ8fo0nq/wC/3jUWcfhYJLdilZlxdAkjz/cvGezjlmnbyIq11i HWkhyiEuXupqq+c2PbJhVgUog/cASD5Nj0tRepnPJYYmmiEi9ybsv5MImjkGO8qpIEdl 2OI2egZABxnvxH8YbgCz3pf8xJwWp/d0ufd7jxmVj6rC/28+JrybqOER8bY8akoHqj8B 1P5FcI1OLfK6uY8hm+h+lfmhsOzE7u6LGHsTCUlGbmSfXlXYEZZ4E9TfrjqGsRQd8jb+ BLv8pHCuP5NziLPJq2s0igevShHw6DgmsxHysCuc4sH5N6Q7nxGk+G5hRDxhuZ87Jjy6 +Ulw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563874; x=1790168674; 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=ZC9cjz2S7VvubAvVoEtjxyzeRaMdSDwzLQ+JpOUV5dw=; b=o4xmkc/5IZvuhpo3YB8X+9h/9kHKkis2Gl8j6AQLNnZrl/42GOj42uu2I/zv7C/9Gr B16MhD/owPe575a8BgPkpYb1HDBfidNo2mPWQ8KdMRyJ+ifYygb05o5tGNH4z4UYelDe vYMNPuLnhjRo9i6TzLZqoFw7E39U8ENhtoKMmmONGabLGztntcDzTTjnPffaW9ViUWJh CGFFiL/ywJiosRgY4T+TLHXGN9in6vA05IY7Br6Q1n2v/+Y/69P3vlxmS9yZkwqUXtxA K3LCUMOp0WC2UaBTMUdVAC/0KmHs4U+q6dlUKx3xCmxaOVf2EiU3UpL+NZjcQF7nv4KH fEYA== X-Gm-Message-State: AFuF++nCrNsoL5ihfDGFtzvaFu7UKdRCvgq1FMQOyVsjaJtU6f+tF+zq HoHa1qM1k/jD/+jOYNV5yKD6LIh0hhwC70xJyiTxL7OWUn5vWMOEddDRzS9ebRzHGpTrQ71ZnQj bbG6M6D4= X-Gm-Gg: AYBFou05ji7cVpStltWaWDvXQd2zy44PohE9n+Tqo84tGj4SfnTXCqFoXLzKWfbe3n6 hOC5jyQPjJMjtOv2B3cpXKmvVMlCRCbHDIGIj0Ij44vfNZraGM1JY1tTgPqYR2j+vANsmnrj1Dx Wa5ruWpvT1q/w+iNt3MHNQHsvxLXMc1r44iS777Zbkth49cJTZlVOyo7rY8r3XN0za+uGtav6ln UncUOdhej3dle8Hk5MhLmxCGgx8xfYjMBxJoRC4X9ClEMYD0cMDd24Nedvh9o0bhZRg4n1jmJFx 8E8eWPlTJF93ms4i7/RcMgdG5VoAm/WvHIEQKji1ZZHaheOtAQihnh4pti79JEBmgTqN8fvpRlc Tdd+bGKvcQVODiCdQ/Of/zPXWQ3quNBh8pcEheScNEs8wKYsthQIotg3d3CEwTp8pqow/B0tIzv HHBtfdzRWYW35qoLmPi6cFxFxSwc7+uZj66pFXMaZX4v3zoxZNK0gY4BobjcdEo9CaeHxVCNBD0 v3RUpv9 X-Received: by 2002:a17:90b:3c42:b0:398:c150:e7b3 with SMTP id 98e67ed59e1d1-39e1e24fa59mr7005342a91.4.1789563873929; Wed, 16 Sep 2026 06:04:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 13/92] tcg: Generic expansion of tcg_gen_neg_* Date: Wed, 16 Sep 2026 03:02:48 -1000 Message-ID: <20260916130409.3382710-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789563967772158500 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 db5315a5cd5..7d4765460b2 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 ba756d4aa69..6aee0190e0d 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:32 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=1789564349; cv=none; d=zohomail.com; s=zohoarc; b=gSOVgnh6u4zLnq34TKCuhjLECyUj4/uHHP/KHu+ECrhRqAAXHccUbUh+eCzkyoP2GVfHRnYTCSVT64jE5pYrrUn+isaLrZZ7WUvC1m/OWDowdkw0zoSfEqW6/QxL7hUR7V6lQHw83/U5vzvx4L/tPbSZwyDsVx3JVl0GeXaLKwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564349; 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=mRS7vobS39woljInot0zu4ep78CVsfZV7P7veSlVxro=; b=G0LVIlAIv9bVYuHb+2Gg9V69zY29GhOMcURKQXjWoeaCx/9VhgiCXt3FZQbVOlpLsYtfEe773eatNdpDxQqb9Ql8J7mZ1riV6tceUXIOUrVK3x2Z6ZYm/hTJRsLcsop2/J9bqknes3PjY0Ajr8Xa/W3+9SIzGh7AOHxdNq1N4Ng= 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 1789564349554429.3138496190146; Wed, 16 Sep 2026 06:12:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pK4-0001nD-P7; Wed, 16 Sep 2026 09:05: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 1x6pJW-00011f-J8 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:40 -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 1x6pJU-0000Ik-KN for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:38 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398c066106cso677331a91.1 for ; Wed, 16 Sep 2026 06:04:36 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563875; x=1790168675; 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=mRS7vobS39woljInot0zu4ep78CVsfZV7P7veSlVxro=; b=MlREuVnlDJ6BDHuZ0Hnf+ooeH6bsWIG0PLiJduchQ/B40WSo950XBJvAdu9t9AAwUY SSNWoKPitVzW3SCcP8dNMcMp2S6kJPHg2Go4EVmCic9VBoncHLm/raWv/gCY5gJgF4Cy L50u2WTwQXHz8N9imY4xQNCG+IVU2MkZCcxXueZmE7TKbaev0/zMIvy1ulMxq9iMjm4x Mkk2LdEyCf2Z+4yD8eTdloG7/wrjW7EZbikTxmFTN29Fn1Dp67nvmAdUkiNeYMfbOObm CzE2VWVpUiKdWKyUx4TpB+s8LrSE9a5555PYYYfaHDN/XtkON1GIPk3AzOR+DUUmTXD5 so1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563875; x=1790168675; 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=mRS7vobS39woljInot0zu4ep78CVsfZV7P7veSlVxro=; b=qkt26TsVtreXv2W7BTLpg6gYTJAVtm6+h4SxekjPbgaJ0jbqdLFKCfa8FBPMnWekr9 bSOsLI1PS8Cx66KnQVn+plP5JQ+lDjFhtR9pq9f/g6he4jdmmZaW327+fKO1t07l26Hk 3utmG7SXyhhN+OOzFHYB5lczQhEQDTneWZoGGrA6uJX9WUShKaKXGfKT7j8sgjaxh3PQ Hj2JhARMNo8ijyq1keBCyHbWNokSczYO5DVZwzZHKCjYMehunVEJdX/WtnNLd9f6qEmv fhpTtHpiOAmnQ9HQmsa4gGmcG1SpQXkVJfnCQ42al8oD5lD1fKEVucUeZNbfsJssu9XO ByrA== X-Gm-Message-State: AFuF++kCJb//PZCoahSb4SAoEtag5GwjQhy7TZVQDvSwQn4FwV7TWCAx 5AK2H1FP7usqays51U+YtBD1DspN6kPomSNGY+fy7Esjeiyen+WkjS1EWS/FZniAMll7HluUdlo /U49Mb/s= X-Gm-Gg: AYBFou31AI2IL/Qtaa5UP7h6mOvLjf4Yw/be+RI2m9G2pderDLm8DCb5da70uJU8Ebb RORuGfE7+9qaP/7Ktnoz4zv9GebWvpihxtniA+9JMchKinUF7WZeBF7xmfRfVYP4S8vNBaZ0rME FR/LgytcRDyA2UuZmV9PubQr8RzbrOwBWdjzms3nlrm3j8jVUOJ25v/WZaE1g01Bappe0sPyZJ6 PBhx9NbyzRgjqTFeMjlYnv3NZDDbN9hTHuM9j/bOieJuR/l8VYB+wSktzBPO0/SCvVk64kaq/rM QbvjBeQTM6bpbRQ5WC8lwcRvUeu5B2SVQRYfc2WlLljCru3Qjx4iF2SoNy28fUtau+de5+UBTqJ mhIjD1bmaDPsaJvt+e8BDb3PxBDa6nVumo+uOxKQfryYNYMf3n3xjvDfY8QsRfIqkfq9POiIDun 4QbvcLEd8bv9c4DAlI41NJ+Ms0FjUVmx8iBw4iN4oxhn6AG7Op15eVi5PzZrxJKzP5RzOr+jhVC tzbGtSfnQl09tAf2w== X-Received: by 2002:a17:90b:2585:b0:39e:261:4e10 with SMTP id 98e67ed59e1d1-39e1e5380cdmr6945845a91.22.1789563875199; Wed, 16 Sep 2026 06:04:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 14/92] tcg: Generic expansion of tcg_gen_subfi_* Date: Wed, 16 Sep 2026 03:02:49 -1000 Message-ID: <20260916130409.3382710-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564350134158500 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 7d4765460b2..390df36f1c2 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 6aee0190e0d..bc902d04d53 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:32 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=1789564073; cv=none; d=zohomail.com; s=zohoarc; b=NRDoPBjjol1EzMT1MvR7jgEuz8nKgv1+DyZJyeY34NVdeTvHmCmof3XEWfaGn53D3hmSaTGPwcMaqIzkvr/MQ44ScjKWD5WwE22j1f5jzTZ4cml7z0Qz39upuJiZW7D4UiW+rHPe2uOP5HOEKAAkIWIUwfviSW5TpcKmVAkxa6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564073; 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=uCmOmovegGhUQGzqTd2jYdUvDaEHmn2ZTmtygxSB6Fo=; b=LId8dKjYR9YaRiaPGonks+m88VYGbzNYqGsGdmouLynU5amoDStsOfqg9Mtvei3K4Sb7MC+k/Cd/SaNoafgGICdGv0/qUE4I1w1B+Nhf3otGK3NRTGEQSmTH/a7Xr7k8EXyOYu5P6OQSJqpSG31YjxOQ1k40GVJ1VSitf4N+QZw= 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 1789564072997274.69271538676594; Wed, 16 Sep 2026 06:07:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJq-0001Cv-NR; Wed, 16 Sep 2026 09:04: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 1x6pJY-00011y-Mr for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:42 -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 1x6pJW-0000J0-Cw for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:39 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-39647aa9d52so2253623a91.0 for ; Wed, 16 Sep 2026 06:04:37 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563877; x=1790168677; 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=uCmOmovegGhUQGzqTd2jYdUvDaEHmn2ZTmtygxSB6Fo=; b=aos3Vjw7monu4j28bEvcK/40aiI2dK7owsx5FjkqWwUahraHZufebxLtg3CX5LkuA2 EaAANvy3IZYpS53axFSPT37hlWZBJWxT3kB4ArtYwrbg/cY3NYzf7wPPRCbcxTxcaLcg oZMhRH8FfRi994vWVqPGOmKvhYxQ+1QIF1ZJW40FJtNCML3gmZFOo2W087jOSvBXWvFn fBfCoJPIYMKiur/XYikGohZL64RN+oGUC2UwZQ1GQEWrfwPNduxupmMVPnMWdshyx8ey xnl5t1szfkwa7OSoSXgSRpI/ho/qfr8JAL09EVHKD3KjWVy5aIwGCzRWFG43ypr9/rIm IsGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563877; x=1790168677; 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=uCmOmovegGhUQGzqTd2jYdUvDaEHmn2ZTmtygxSB6Fo=; b=dwbTJwa337g9NzVE0QmD1JPgw7NahE0vatqnPz8HqIih77gpQpsXwNlUpB0f4sQ+PU 1v2if5Vcp3qs/Vtv9EbSJ6nTeg7Yznnn5x5HFP3cBKSzMC7fIMPaob85bIf6yNMGb6ax op3Hl0RxxnAB3S25Tn/o5S7vF7CdqMX/IMJO/KtLK4OrZxnp+oz1oT6tUwmOjWcrwhS0 AOESPst31YEq29ihaMdGGQbOaQAsOMc4k5H7A9BpAxq5HpV/gsALCoMtu+0KSZTim5Cz HFQnc2FsSjkJQjOIo2aqaqXkzFtw+T9/1594R/ctuF78l3WT+VjM3JJanE4KmhtRQkXf XqzA== X-Gm-Message-State: AFuF++lvMxnPvLJnTViMdq4cw3KUPKYVRk+N+UDwK77VV6WcyIzZdpIS ryCflxqUwiBVVHMVIV5j0NgQJKsF4QpI9VvSWFGbacHZ5slgWK7N/JBYd6zZ8VFzTfxLADt1pvv hj/7wtuo= X-Gm-Gg: AYBFou2NRs4vKUua8DVN+vd7HFknGULKA7WKwkTyH95nty4M0eA5T/Fpli2ygt11L65 DOF4Bh+7V8ka/PVK+WdkYM9imDNGmcPVxIl+WdTg9tgTLj7wId5qSBolNBb8Gy11ryFPYlph1EY KyN7UxpUCHM1xTIR1l+Cp5SQWi4Ha3ckopavaIVu55qP5cHPTqPtWS8O6O7uGE7lMCKxuPL0GMH SsRssKyqh0ogg/C6HcVTIpG+hYYIeZ1jPIUfVIJjBhzuapdcAYOLsVGrM5xCAD9iaeUUZ/47J8+ 0HIYJeTZLo5evPmLXiApq4u/A3xi/ZUlzD+3/csO4Yfmf1Is75XTkl1fFSPTkx67FuiuPzB6a9n YTVZYwu0yh3iG9lh5P4Ie26jZuAIwf9kCuNAzL42Vgz6n0LlOglmkF6M/FfkTJ3O8CXi5kyLvAz TyQ/SG8ba3gfsDdWd4k/YZuz9Qk3gH1isN6vuCbWYJn/6jy2D9JAjQ/JQAxjADNg+pkcwYUSu9q RXN5e+WZHDRstPFLA== X-Received: by 2002:a17:90a:51e2:b0:39e:16e3:44f7 with SMTP id 98e67ed59e1d1-39e16e3563dmr3874745a91.6.1789563876423; Wed, 16 Sep 2026 06:04:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 15/92] tcg: Generic expansion of tcg_gen_and_* Date: Wed, 16 Sep 2026 03:02:50 -1000 Message-ID: <20260916130409.3382710-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564074248158500 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 390df36f1c2..80ee29ee4d3 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 bc902d04d53..ad7a70b575f 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:32 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=1789564122; cv=none; d=zohomail.com; s=zohoarc; b=U2NGBvYKu5VFRv1BLQU1wfq22Fck4wOQiH3R2r/bEYzrW+LpUvukXWau9fCYk/YGnu0itRzIQ7rwT7qT+R6ac8IrJs1OuIEEKrL28+OnnSuJHEGJw5R3h9RfJngzitrw/wCsA/ofa/UAMcJJB3kVXlOMIF84ymeuBeeD+tNzmos= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564122; 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=eVb5akhAgJSlhXNrTi2U40ggtT1EL3qh8SU+BCGHO7o=; b=kW1ckXkyxfU974hY02rTNWpeorS7fzEKHieOYQw3PXKlbTMrF6Kc8y96lSmzJKEOU55sbcrscyNKl/MLwIjHNj6CNG87Hif8oHVk9kCx5BaVvDpu3jITZ/SwZY1Sj+LMzajDyzb5+m17KgoUKrIWIRBXRU7vXJbeJK7rkHY/YqU= 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 178956412194842.8180964020421; Wed, 16 Sep 2026 06:08:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJq-00019q-GD; Wed, 16 Sep 2026 09:04: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 1x6pJZ-00011z-4z for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:42 -0400 Received: from mail-oo2-x2b.google.com ([2607:f8b0:4864:31::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJX-0000JG-CU for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:40 -0400 Received: by mail-oo2-x2b.google.com with SMTP id 006d021491bc7-6b1ae736c64so718179eaf.2 for ; Wed, 16 Sep 2026 06:04:39 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563878; x=1790168678; 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=eVb5akhAgJSlhXNrTi2U40ggtT1EL3qh8SU+BCGHO7o=; b=izONwQKz/cDFH6cUYAz1zpFsWOMqrurDsLMTg+p3aXcPY2kUfYm2/t4MCkog6Vd/Sy gov8E6uWl58ijt2MIiKnANxQqI3MSo56f/XHWZihYnztSU9wpqRPVFI3V6ikQJq3997m qAsiCteUP1Cl76FQCGV3muCz2+Pa68dyngKMYLmQju0IdgHXEDVYrFczyyEXQ5fD1hnM AMi2klsfP25kOkuVXoQtM640UuOqOTj8OTtf3trSEPCoCMso8k6Z6ftjBHVKLIonAhHH hA99JSHGJJ93hkHlPIvx7u8z+X97ck526BvcP5pnloPUQBOMl+LvoVYsWVWy7LsG827S i20g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563878; x=1790168678; 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=eVb5akhAgJSlhXNrTi2U40ggtT1EL3qh8SU+BCGHO7o=; b=25lLmmuDxhueWKEOOw6SfRTIECXOisyDPHl9FM/tRF6ZtCQoMR+GvcfhEZWDNiURn2 6CH9ZCamaMZX8peLXcijzBtYhvKDK072r+igRh9qK8LpyWt7mRQqJZUBs2qTQkjadRQh crzo+JhTNx9rbvlLRp7eu0GsrRKZnVdtvtuR39Qrp43spHKv9sTwpI2mIs57J/7rBTlo HMkh7DHF5dV19neuhzGbJsv98klXg8NQqiNMGvY5+QLNFl8wznuRMq1xlZBH8JDwXZcM EJNOqN6rMIG59RuzOjfEy93XwahGNkWD64E7DsLju+RiE+n7MctrQeZ/j3lQEx4QSIvK XLaw== X-Gm-Message-State: AFuF++nKdYLWRPghP955WzODtux6xYFwqcJkcK8KivKmWpqEpC51VpiJ SfFkbCbRzrZ3Tt2NO6MH1IbCYsyD25dtf/psybA6MX1nopgRg+AzntDu0bpWnZX+cWMrRWkJuWw nKr0UmYg= X-Gm-Gg: AYBFou3tTVDe44dKibsrWj1AE/y3ChBug+c1PkXfoExblj/XphzI620zPXfkiBWQIr/ 0vIQdhLy/Db5oIrOwMdkLTwwyRGm6LZUERctIKKhJyVQ8sMhvausjql4mxwFb6483G7fUTbUnZa OBaj9tDpjnvqoM+tR6wcAsEZEOHiVJVmU+UddQie8bOi+poxQP3VPrwKngvNCAOdG9GrWDUTUTP ORuOfB6V27R67bstWMuEf+4ZGR7OdWBCdEiWxxeQmOsq5EYYSA4rGRAFy8JMffu7XYUiwZwTRSs i99spI8UPuYEYQ3QAxTEiyaiHwiKytsSo0R+0tdEv7Jf6npyZvoAZ4N86DgQKqMxmlfdRl5iBXT 7egFUQBDIayJSRLf9Skr1TYMKU0InpPlI1slxvbrhAgrSVVvLJOT6FBvgNfOIGXSwvq4wm+ooxG hKiWlfBj2o1seKQ8va5mzI9HXQrpIoMDMmBmUhB4DlAB7imsrIPKPAuoTNuzKwakPwWx2mDyfF5 fhOWZc= X-Received: by 2002:a05:6820:2d0b:b0:6bf:70ee:7e85 with SMTP id 006d021491bc7-6c7d0ee2fcdmr2268770eaf.27.1789563877960; Wed, 16 Sep 2026 06:04:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 16/92] tcg: Generic expansion of tcg_gen_or_* Date: Wed, 16 Sep 2026 03:02:51 -1000 Message-ID: <20260916130409.3382710-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::2b; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x2b.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: 1789564124465158500 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 80ee29ee4d3..4d61eaba122 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 ad7a70b575f..0b7fe14c7a9 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:32 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=1789564480; cv=none; d=zohomail.com; s=zohoarc; b=CLhd5d4fG8KzstgslFI4d1ZCXIc1fgMSh3spa8+6M5jGkkwmqw8mW1iyJqniNOnc4zdLujFOizR+D/zyc48Y2wujH348ieReKk/NR82suEPf8qv+6lf8FT9w4jxITocCLJ7Q4cOHr0oCRpkQAg7QUB7dOAHEmwaLKlaM0kmH9gQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564480; 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=CRD0I52WWAnGnNUF8/F6bG30rfo2CUDMcZ7gqQmB5vg=; b=CWoBqdRCFxr+skU8TWqWf497SZHtJl3bKk7mqDuiFCaSD+sHpkzEyuPbUG7R5DjgORIMXQOHRzS5AiivQujBUceEpEdaWzBUpGY+LJQW/X5WKiAKybNkMwfvg693QIc8vU+NZWvNm9EEsEvYPnyELxcKpNkTGjSgg4KmA/wVPjM= 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 1789564480585637.504512059305; Wed, 16 Sep 2026 06:14:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJs-0001Eg-NS; Wed, 16 Sep 2026 09:05: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 1x6pJa-000120-Gb for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:42 -0400 Received: from mail-oo2-x0d.google.com ([2607:f8b0:4864:31::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJZ-0000JN-02 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:42 -0400 Received: by mail-oo2-x0d.google.com with SMTP id 006d021491bc7-6b1ae736c64so718198eaf.2 for ; Wed, 16 Sep 2026 06:04:40 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563879; x=1790168679; 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=CRD0I52WWAnGnNUF8/F6bG30rfo2CUDMcZ7gqQmB5vg=; b=Ula3521WS8/o+zXq7zi0kr6A/ksZY4w8idC+FmpcQXE30qK5D9EnpWzn8DBH4irv1r uveF2MMkmx1qbv3C0e6VvuRnQBwXmhOkz8BI17z6mjj5WTMMMchV63kmKexAsVOTrXnS QPxH8V9iYxuz2vhnVjo5CnIEo7TOePRXfHmouRB5pQfeYmUqAwiFbMUHcnC3rPBo33xe g508H4eUYxgOFsUtBQEBq5hmBvFAgkrHkCrmk+BpT31tbvnaECBjDqb1Li/d2fTg/l3s lFy2oVDbrEenM1sxCW7Ws7ToFmbahZw1vVFCMQI+GiELVPLxY7p3D59xKDwnzl8bfydo UcGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563879; x=1790168679; 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=CRD0I52WWAnGnNUF8/F6bG30rfo2CUDMcZ7gqQmB5vg=; b=v9fWJP826LOaqx5yAQNRyXKOqEdHulQOJI3YamSjrQ+6raLrAiHElj/8psVhmIFsoN bsssCrBXudGWswPdBBebYgX2mHLlHbVIqrpVDOE2eAQuE1fiUZPcDTaTVelPDdHAptiU PFODXk+o8z03InKxGvE2Xr2ZjcLf6RPqdR4HHBO5txSUe8c/y7ssaorG1vpK8aaSvN7i YdCey/fxVtRID4hYU+oyDnO8PgvJiPrwmrgV78g1oeClfLG7WVq/aaOInhS8w3N1nvEA p/2q6mxuSOSiAnyHeFOGuo/Bt3uWQAQfdeEzPcIoy7HP/EeRiGx9SsllpauXDrEEsSEh J1JA== X-Gm-Message-State: AFuF++niXSegPGHLikdmOFdoqyBT8M8b1EN3RqYG4GylCBZVDjle2/Ni yecejObOfjGZKS46Bvzl0Xlyc9dX6VKUeQ5R+GLnIl+qkI3YWOiQyAcUcmql5klK5kPkxxnTTil FoZ4WU+o= X-Gm-Gg: AYBFou1JlgG7wEH9PGXXV5ZlI/L6EFYEofPBJuzqKtmQlNWGSXxQBaoXHQmPoLcqCX0 ug7fGqxvFEp/atjaxepNyuXurIuI+wgRvmYTBtOjJokBQ92pyyXw7ujTaW64Uhu44yjYJTaNwrF WLPY2W05NbizcaWdbXcZwOTYJgy7sBERQrFMZ49pPHlpsNrxpFtEdk5f84f9IQvnRMBil1JLHZW 010gK/FzTlQQwLoPdp6pXGzJxdLE9dvBaltQXCgITsTkjUIb8ZO5O9YvcsZSeMNOXNtD5ydAWxR 7s1iFGEexnA27bcMIHcBINeOxVcqIdRLYZCFhiKhp10wV3qw97HV2SE3YbKPnVK2/ZFUSNuhEMh lVySY7QvDUaCTk5JF1ACac2v6YPFaifV09NfFoeDnuLutYQJN20kcUiY5FddmR/yP2B+90DEuhW 3UlHFxLDjP2aqwzUKjpNDMpJ6SvfXx4nXCbOsv++jd98NMH1P9tINJ4U/2ndrm20vL2Yz8diT9Q QUkhQI= X-Received: by 2002:a05:6820:308f:b0:6b7:8415:d795 with SMTP id 006d021491bc7-6c7d3ceb66cmr2541387eaf.64.1789563879247; Wed, 16 Sep 2026 06:04:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 17/92] tcg: Generic expansion of tcg_gen_xor_* Date: Wed, 16 Sep 2026 03:02:52 -1000 Message-ID: <20260916130409.3382710-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::d; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0d.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: 1789564481246158500 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 4d61eaba122..6365f67494e 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 0b7fe14c7a9..2b796f3cc62 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:32 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=1789564378; cv=none; d=zohomail.com; s=zohoarc; b=IM60ZlhbWTS9bAa6yXQ74Bx9ENZiW2kZRymFYewzCFijvoJ4Tg41uj7EWjkEa62yYwYHe6r+OZLzkW9K3rtas+csN4Jyl4dKc9mHPP2kZMMeO27mm+gY8qsmkwA0VXrglZmE13HaLL7mZnLoDs3KZkZ8x+6a8bolCRXtg1RXbxc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564378; 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=ZMzrrEL3HX7oRdMffSDqbnrF+w9NjI3ZykN767yq/3Y=; b=KUB+FBRMobz0OckqG6BixxSv1XJd59Db1PNmqKgboK3PWgS0PdX2Rc1Q/qaNKX39ZzqkfVa9qkQk7kZsm5SI1jGCRT4TsCp+shI/3yfnIj9vO1ZPuCcInROUg8rryjV7FZIeGPCsM0PdG2/BB5nXmSq/Thc+Dc7JWXug4MtqXa4= 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 1789564378729375.3822058783022; Wed, 16 Sep 2026 06:12:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pK1-0001f9-I8; Wed, 16 Sep 2026 09:05:09 -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 1x6pJb-00012Q-S2 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:44 -0400 Received: from mail-oo2-x0e.google.com ([2607:f8b0:4864:31::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJZ-0000JX-D2 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:43 -0400 Received: by mail-oo2-x0e.google.com with SMTP id 46e09a7af769-7f4f0dd5507so427758a34.3 for ; Wed, 16 Sep 2026 06:04:41 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563880; x=1790168680; 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=ZMzrrEL3HX7oRdMffSDqbnrF+w9NjI3ZykN767yq/3Y=; b=T84jOwD7Mpp7seoxLHXKkBPcW4AmmZfj5NI1NoDhQZSyW1nBVEqWZFNZWDYP4vKUJH D3p7iRKJMOuKOuF403X86XbNyuqLa8BdPVIVS9e9o/OpvGqvbUYCUwA03xn/sf94sD5K QH7+hFD/3HlD+BwwVcAICUy/bfSNgYdCkY+1w5+GUwC+LEkYsoNDe0QOJDZtWyDdDJRS XVU3T771cII1nSChu27nEqYthu6gqHdRRhZNsSR1ggTC4ds/W2WZTsPjLuG70h7n0uY5 rADw+3DI3VtQRKRMTKC6/RfPkH226QyK7PuD5EGaZTvVVmzb87yRFkhYBuNfr4Ky+9r8 BiLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563880; x=1790168680; 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=ZMzrrEL3HX7oRdMffSDqbnrF+w9NjI3ZykN767yq/3Y=; b=L8ZTjYBC5jnPYqUb9DlkB4ucSXRDCO+TeSxyne8xLALKbNjaloit6QP7lykpVsx2YB VgndmBkocKe+SEt+gER8bCDGZdCUwZF2BSPWW4mMlUDAkVPKmuuspvlF3C2zDUhzgnZ6 RBpCrnwnirPwsyHvovsprkuKDxhWO950hbs89MpyLaTAdCxVk2lNhboyEhAxY8pCANRL ULI5+XJXkuAzV4b2zcIgEYei7Q+q666twfqlF95ZteUdRPer9mo2opVccmSz0T7YEE1R 1Fln1IKpMYSRQfC0aaokxjb69IyGp2TfSVsaGHvNmHpPBMApnQS0RwIlqpvcnw0DPZJB qKRA== X-Gm-Message-State: AFuF++ki4qnP9vjUs80YSdtd43KEZgi3eAEvWuEazI/TQTGYxTiz2Cpt s/5AH4OMpOZhTT7wL5VzF7Flf7TV1zEooX4MUhda7O8GBE5jVC/z85OAXgfmo8/dBHrf5REyKui gZ9eRJXU= X-Gm-Gg: AYBFou2/E0InJ11qjWVVVEOLmBa85I3jrosRxH9hzzZ5bGc32QU++40z7DDYfNs0uII jwkGFky7A00khXNbfGg/FgTuxiXiEQF3J8bbGNigR8cpensOifPov5O8dLOMv1bYv90ypcRGwYV h2wbFuBblMR+pPuHh4lQXgNHsmmDSPZtqEehdCTyePpNyhiuRqI4//w8x15SxS3cm5zojE3957X YKhG+Q2ePmjsdfkLc8lp132W6k1YAe5IFf9zcx8P9O/hZKrf6VgX3Sx3Xr50K8kxqvrqf4gFPFf Bv7/Ze0RCer4DbdrV5XDXX07XhqLhgVbTBVPXEbaB0G8+40DvTOiTH+G1IY61UOUO2er4JyDGpT KEy65m1m+fwIUYOq4GJUaw9tHSQOlSYDkgJ4Zus3kkXH9J6sNcKxO2iQf/y/Y2a5/TpuUpIGjYI VjSgum32p/zcR7C9He9HSA2Eu0GyIk1K1PKSTG8n+/mOm3Gfifr9OXFjLHSQWjIH2ewOutpA3eN xtsdsg= X-Received: by 2002:a05:6820:218:b0:6aa:ed21:6c95 with SMTP id 006d021491bc7-6c7ce252389mr2571183eaf.0.1789563880269; Wed, 16 Sep 2026 06:04:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 18/92] tcg: Generic expansion of tcg_gen_shl_* Date: Wed, 16 Sep 2026 03:02:53 -1000 Message-ID: <20260916130409.3382710-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::e; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0e.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: 1789564380388158501 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 6365f67494e..5115b07ef22 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 2b796f3cc62..19e2c6c713f 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:32 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=1789564424; cv=none; d=zohomail.com; s=zohoarc; b=CHgDIuSgePLtMZ5qJU9FAex2d+xu7jPPyqBV22wDVEv2tvZvXV3z893VyZLJOE31FmRbrbV03H0xiegcGoHu4e7QUMNNIO25zu3j78PMjaSkpwNIfvroEtNQodmxVFQdJmCAY8/vSLfSZuI565S6jYby3eS+KHJfTEymHIGumPg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564424; 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=+0AwflT075ewSE4Vk6dBtxknupuv8fypEdtdVnsEwKM=; b=Lx+lcBJifCpKWYFbF5XLJoVsm4QJdews5U3QFzUDpj5/YsUchHGYwujEXNvHKof2jomQy2WG/HIjbOCSeGy1aY1EZZfN6tCG7iK/zqoAjaghiVbfwh2wIAjBNL4nam9dV6R6fi42h+3NIrJ9mCm9bHYJvX4LEQacfAbkQoFHWig= 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 1789564424677588.9711797853754; Wed, 16 Sep 2026 06:13:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJs-0001FO-VF; Wed, 16 Sep 2026 09:05:01 -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 1x6pJd-00012f-00 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:46 -0400 Received: from mail-oi2-x11.google.com ([2607:f8b0:4864:32::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJb-0000Jp-7J for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:44 -0400 Received: by mail-oi2-x11.google.com with SMTP id 5614622812f47-4c6ed1de994so662114b6e.0 for ; Wed, 16 Sep 2026 06:04:42 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563882; x=1790168682; 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=+0AwflT075ewSE4Vk6dBtxknupuv8fypEdtdVnsEwKM=; b=IBTOR882cKGNwCv8LNBBp9L4niyfhUyybL6bMxFiYKpkbJXhT+C337BH5hg4Hni7SH SA9D8VUnJiL6Ynqk1TCf9foyWvTakXiYxO/EVmlxjOmP9HtiD6VQ5qg8jWCPitjE6GBs 0jRgR9NsuRlOn/hHpRAMR2D5h/NkoYMrbXqS+isBzxrar/YlH40SAeMXB5gMpUWjRra0 zFZLH5LBmip3756DiA3RmVEujFo0xk99JqmnGbF90JRwrkqpft8C0jlpKK7Lj+twhsFy 8VYOamZ/9/a4bPk+tR65Q64NpuLOD3KQM6oEmnLR5VyQaazz/XTCgrTG394uLpLgref/ kkGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563882; x=1790168682; 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=+0AwflT075ewSE4Vk6dBtxknupuv8fypEdtdVnsEwKM=; b=1MjYRa/3tnwf2z/N+2B4cpZ3wtzA3URqXbCE7SI2IFcrLZtI9RdnvR5aH2Z6g48dNk oou5o9jgiFNjo6/sTKtXL2T+ghdWN1dx4Y0fLBKNsdu+lXKI2RcRXJJXDSshFLlJwZpt FQqE5ofhMTz3QQdExn+zLa2O8wIfLThS4LwmGabdBdT9ubCYOWyGstAmDBXZhNKQ8af7 k2V+DnBXGGrs1NXJ4T2LG4+O+yks6NpSlagi7Ka32TpNQGFSFWv7z1eh658e2cSDKn1r khj5x4/UWp+1qY07AW0jbEiP5om1XJVPSYEHemS2ZZ2Xnf1xXpPRVIGat7KY9lZKY7JN dloA== X-Gm-Message-State: AFuF++lZ1CnEUuYWVUOItlRHiCCgbtRs8nPpvZFDq3s/z8/DsQQ6H2R6 Y+l3Mm6K7SfAg/6vt+tbI+Bk/lK+DRvDgXisPV0MymT5KTmgjFC67NW5JTp4xb+WuAZSHtRaGqs gnHYbOUQ= X-Gm-Gg: AYBFou1odeYLi4R+r1UepKvUA/VSceQuk0e5YaJCzCEc06hC2+OHSTLoaYCgTsTAWV1 RKYco7ftDFAAo12HMZB3nzfjTqeYw1oIzvDvdw6nUQdPRjwnFCK5/vwY4znBSQQvZ1Aroe4Uaao m4fVF1GX9y43wLdPnEKj7V399ssdT7ZqciBnaXCjCawa73umy/wFhI2/+g/G3mcmQcw003Nf2JK m/pj8k9GWaNI3BY7G8yPFnMm5nNDq27aTMME8fMjCZCTeZl8G+i3RQbeq5NxaP2A9eTVzWdXWDr eW5OyuwM0RQEAIaxDXLwIwTI0KR8MGFalRi2ViaWoGWDPxbGt6a385omi+hp7isWJlLGeqtFrX0 qWkb2lqnZ2NoAL71d324JxqiqWKGtlbqUMOKqmttEC6Ch4iLP4Iis97vtTABSwVpZKueLjfu48g s8Wj+ZlJJbAYAzhIKk1FdgEStjtfxX5wKiSFUzhoPtsKMyQpuQ9M3rGGBJTTua+BpxPjJnyHTyK I2EtpE= X-Received: by 2002:a05:6820:4b82:b0:6c1:f832:9b42 with SMTP id 006d021491bc7-6c7d3fe0f46mr2184409eaf.51.1789563881852; Wed, 16 Sep 2026 06:04:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 19/92] tcg: Generic expansion of tcg_gen_shr_* Date: Wed, 16 Sep 2026 03:02:54 -1000 Message-ID: <20260916130409.3382710-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:32::11; envelope-from=richard.henderson@linaro.org; helo=mail-oi2-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: 1789564426800158500 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 5115b07ef22..9bb5dd22496 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 19e2c6c713f..6f6ab0a0e5e 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:32 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=1789564491; cv=none; d=zohomail.com; s=zohoarc; b=j+mjUIV91gLMkTqkvqRnIvNQJICOQZA5zpYn0XIqenUqBNllEO3u3HkREJjPd3SdZm/F5m9VyU2XnRy3KuK14T0USNSdTI7mPIhjxsIu5rJ/h9nO+0Q/rDUioi+q3OmoWCe66hDP5bgFNt7lO36eweSP+Qz8byAiyFVdw71VSI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564491; 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=oogL5M0LRU/7QsuBliPckFPoTq3H08Xfq5xmzOdRTQU=; b=PKEa4d2j13GahIgSErFoIlJlJ4KhdNm05pBMD8X6lF8PUC9TstGE3AlFUmM/DTljiri7wrFpZJrApHHVJh13F7+WClcE+62BPBIOX0xcRLzzPVGM7P8Mz/4bv+ds2JCb7M+d7EoD1Bx7EmFIWK7oQG4p8MiLC/JvcDmQQhvrfD8= 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 1789564491108490.4102419892863; Wed, 16 Sep 2026 06:14:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJs-0001EG-1Z; Wed, 16 Sep 2026 09:05: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 1x6pJe-00016B-QS for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:48 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJc-0000K3-TW for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:46 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-483c65c2fa7so600669fac.1 for ; Wed, 16 Sep 2026 06:04:44 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563883; x=1790168683; 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=oogL5M0LRU/7QsuBliPckFPoTq3H08Xfq5xmzOdRTQU=; b=VwTB2fPNPA60mPDGFWPKx+CMpFhmnzlzmjvwNnQ7jLkuPUiiptlMaukt9aZFiZpm1K jzkECYIusxQRaEMaAkCk8aHqn3SBLAazAn7TMki4VR0mSU4RAaCOuacUw8zWF8QZEzwC Z9e1ItNzHFgFrPuCU8CIlZYoO9hbp+vaX1z/AS0xczVCFvgM8VaVrBStxPB83CecvTp3 d+2Au4YysST4OYJomPvh1oEk8e/QZ4p55nPX7JQefi7GLYyqrX7pGTF+/npMI2KUZclN QrDxQyk1akWaaciAAK6zuuJuENnrsCU0ER+R/umLopjUWrW+oJP5NGzN8BkLUYJNK0SE bCCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563883; x=1790168683; 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=oogL5M0LRU/7QsuBliPckFPoTq3H08Xfq5xmzOdRTQU=; b=2mnB2Yo5tqNTKMtniTB0y/oYTTSQD46Oq/IcEm9f5ucsqNW5HIVTyXfTqKAPZdzNLv jSkapjVf6MpSHTW2gNg4KSmFX6yygXNvmPl3cwi8J9eOiqgaJBGKGOlKw47pxfURx3ea dBWbXcjG3v2Dw4bTVWvrpoqlXhNOfeJ2G/ldgfryjXlobATkFb55DnZmn9rbIsGEQFOm C/2RHTYUC6ncsihRVrvAbrqrm5/ts02JMQWTfuk52g8n3QJXoIyJJ7KecqDC39lqjsxh IyScJz3Y5jxFTebA1vbL3Wt8+UzB14bvkpX2ckkSI756VWRwHzBJC9tP8Efa+8hw8qJB GIRA== X-Gm-Message-State: AFuF++nnRwMI7VKxcQR4sGPiALZ1w4DAgKxpFM3oJLuXqnMa8voqx/20 EwLEyWykyvtm/RkdKTyEh91hQgSfwPlVmEWgNWcRA0jf+id/oVFd35voaXQ3XqVm1rzcUsC0Yll Ps7vzet4= X-Gm-Gg: AYBFou0/knLKkcM+HEUonQVcuqSxfGSiJygRMYwGlpnw3aYjQfxB3GLhVm5X02s13cP 6tLmWDcxPj0iQvjybmL06S/szwJWWCLjehJ5A+ofmeNeE9Usq9IT5jm/eX75TRpMRENuU6tQmFF YlNIcJ7etxCPIvyk/nL8UHxuQjMelnAsXK8feqnmY1PHpTPurjeI17WoVwB8yfvCxSNiAdsfonq 1M0Z/nX6ELnaLERAY1qZC4AVrI90X2eB6PZZpXGhnOsXEb9mLZpFecUlhWpkKQYgApGv5Z5A9pJ Mgs9mAsN2C0tXu6v/VxJ9XyReg6DOl8WXv7TdyYTbvKE9yIt2WjZVaza8KJdt28YQEZrx/Js018 KMC2fyRncgFZsoIBFuylrVTZl26g17XJhO49UJB+KuT0bIqwLY20/amJMgG8bUE3kc1sbj1lgAm Oa4MmVGz25a88dZrrqyT9qNSq1+OuIimCIS3ws6BL3cGfL65i7hZeMsCHpC5Ki9l5NYGxl0l6Mh NvLLWQR38WwexrvEw== X-Received: by 2002:a05:6820:1846:b0:6be:456c:c443 with SMTP id 006d021491bc7-6c7d50f55c5mr2362135eaf.65.1789563883478; Wed, 16 Sep 2026 06:04:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 20/92] tcg: Generic expansion of tcg_gen_sar_* Date: Wed, 16 Sep 2026 03:02:55 -1000 Message-ID: <20260916130409.3382710-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564493422158500 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 9bb5dd22496..eff7bf11d6f 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 6f6ab0a0e5e..c7e95dba241 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:32 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=1789564201; cv=none; d=zohomail.com; s=zohoarc; b=gyQUW9lI8cjeh8ttHL5F0fn9mEoDgn4mnBTiX7pdlm22m/XB0RAy84uWMNBGOnHJaPakSM/kaOJ2VeYSeCnantf+SCOVx+sgC1GlLLpPVDqcSm3/Ic6d/vaPVPTBDsUrGbDrrPZwxTPzKYKLxFx6pnbjGK+x+AqEJUq0EaFP0ck= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564201; 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=O+YCLO2jpwn3gMUqHmlY3kGGdcEL1JHvmbKOcEmNGsc=; b=mT6jPFA/OBjmV4mCsy5zkg5tXmjLu1YJTdCRoB8ecOQf4ZxiAwwy5O3be0T1GF7/NtAjGqSWK3pqo00b6EjaIl670gCY9k9wlSMyS66ROaUUYHmnE8KG27r2BfDcs2mcFWfFMSFnm32ywnyhHdPTzGMhhHIBSDNQ/VSXC9Jbt/c= 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 1789564201964838.8422428227492; Wed, 16 Sep 2026 06:10:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJt-0001GX-Fl; Wed, 16 Sep 2026 09:05:01 -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 1x6pJg-00016C-6e for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:48 -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 1x6pJe-0000KP-Hc for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:47 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccda24a3so698747a91.0 for ; Wed, 16 Sep 2026 06:04:46 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563885; x=1790168685; 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=O+YCLO2jpwn3gMUqHmlY3kGGdcEL1JHvmbKOcEmNGsc=; b=iGqUpEgtzZEpoMAqlVRxI8pgP71pRrkoK+yX2T1F0C9vE3g2nfD805gj9zk1PfYbBk DjNA5ZsvfCC+VljHeuvBQqsXz8TLl9OP5dBh2lnoslBepS6c2IeANSXJvRdivWuXC3U9 jz7h6SknMdjXtk4MMhc51H4w8XgQ9wa5+cyxSeU/d+wzDXKkgYib/02Cq2gQLqi6q7Cp Z831Qz4bWvD6JSjQhdJQEQ26HXMtosq+WvdX3CDSxAQvJZH/Zw4lpyWMzCCaoUXsT17x /F+2imm30DHPge5UWXjmrt5CZ0/jJVuzv8aYSk7jnMf9VlN2gesyyPQjMEvTP5Qw3cIo Sphw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563885; x=1790168685; 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=O+YCLO2jpwn3gMUqHmlY3kGGdcEL1JHvmbKOcEmNGsc=; b=ODPsgLvDa/n+k1fHohqgzna73gY/j05XR6swyNsmNsk83NtYC06eq+qAsBsd526+uH B3OYOih3MR/opTCGkyLJXIupDH9NWn3zPMxOtYnVJsAFJJsZraS8fGURhAl/Dly99ms5 zQIYLvdXraKG6m4GLKL0KhpbzBGlA3jie6Ho+ck0kDlsgJYDuLwj+62sqvgwXMWh+rhy Y/ife1GZgz4IkGR7IjPuZA/tSd83TgAJWfslHNkOVRsT+5zRHc5OG/VAiBGMe+wg5QdF UXmzQbIQfzpm/2nscLQsCuD9BLPc3cMfltFLbCNyyCAkXLRBxn941mRz+JYwjYuIzWDB jSIQ== X-Gm-Message-State: AFuF++mYM5uL4EqlirOI0n7eHRu6hrWwsP4XdRd2Qc9ejhenKGhipR3x pO1P9mEzciwEy8O3Mosw5J7hFzm72R6W6scuikjW8c7ijuzPSiEmngSI9SoWUlRCPnRNXPeLXXN IH2GP2Eo= X-Gm-Gg: AYBFou0uOwojLyZh0zIQ714/BhcyyEPFYtPM24SzPtJ2hZR5QAEjuq3q0REuP9C19o5 3Mla5XR/CNzQYK8hjm4rbI1Wh50OP6pUH3iapfGOtTP0306+g8OjJsQFtpJ6XfOdCiG3zeuzCMh pXD3pawy8UrxOKNBkrenDS9PMVrBmofLT4dcInyOBeeyVJY5dPyvGsbXieOG8Xrgm+VKMRXYMxI 2BnuDjEKYslmSPSRgPsQsI2DZ35c2LY24bawHd7+h5PYfWraDyaqKR7DbkweSeg4Gc0S2jjZ87R ITSNes16HeANARaj0akgsfvOvyib1V1dY2ahFRKN0TRaDhKXg2tp08ZLHDz+jWDQjb/4+PUxm7w tEMjOgRs91x/6vKuwHJGuhnRx1DrbvPMdPbOz1WKJDgGdrDOuWFpg0QgVOdXDqSr1NWiLgK/cKj lbdutVRRO7oFtf/Qw6vpi8m5Kub8NY4s6ejpeB/YAZoRZu6cQlyg8nEeVI5BrExZJnqEtUs7tSZ fDeLvyN X-Received: by 2002:a17:90a:d407:b0:39d:f720:c5a5 with SMTP id 98e67ed59e1d1-39e1e4907cemr7223188a91.15.1789563884804; Wed, 16 Sep 2026 06:04:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 21/92] tcg: Generic expansion of tcg_gen_mul_* Date: Wed, 16 Sep 2026 03:02:56 -1000 Message-ID: <20260916130409.3382710-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564203278158500 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 eff7bf11d6f..f45e5961a22 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 c7e95dba241..2d0e2c4b34a 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:32 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=1789564283; cv=none; d=zohomail.com; s=zohoarc; b=P6a2JE2ivMaRZE4t86onOBHNUBfU+JmO+Ideb3PQRQ1X8nv7fgACmccvb9J+Ym/qZrOQy1Wi7BkLMwae4rVs1p2VPeG8aY8bpK/XVfwBRAyS+1z/B6k4D9rLuwrxXifom8NRMcoxEypHjDhrnQ3PxKu6w0WKwFG0ovJ/YlISKB4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564283; 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=zViLnWWimhUqqQWRcEtwFvMmvTWE+xmDjdpS/VswBpI=; b=fPaLkeKcLxwk+rR5ZFd5l4NZFQsyYGWMtH/lngHU4IGYZLGNRbsVgMw3aeVe3/0A/Fnosy7eO+2t02mR0omdSmMrrxOCsFwhdRXRqNXLvOu6kuVlvYTYqeU4+wJHRkSapNxmGXISEgwMdg7meAefyfvh5teDT3lrVvZJb1D3LB8= 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 1789564283177765.1593947652524; Wed, 16 Sep 2026 06:11:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKn-0003IS-92; Wed, 16 Sep 2026 09:05: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 1x6pKe-0002py-95 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:48 -0400 Received: from mail-oo2-x0d.google.com ([2607:f8b0:4864:31::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pKc-00019Z-AJ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:47 -0400 Received: by mail-oo2-x0d.google.com with SMTP id 006d021491bc7-6bc475ffcbfso397766eaf.2 for ; Wed, 16 Sep 2026 06:05:45 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563945; x=1790168745; 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=zViLnWWimhUqqQWRcEtwFvMmvTWE+xmDjdpS/VswBpI=; b=bJPZToP75c01EncSoX6QDFR1Fj6aFFa5ABEwHGidK5UWjP+0CZ4ajT01RDSzz3CSuI B1BG8vy59MEbboRRkOThaRM0caKH8+eNyY7wJBtlg4P8fowiya4+tqjxhWEGGqw6sop9 JulOSzaA2Keh560QWUClQYYAoN3XhUyIt8M1K/kQnhp4oyqvXK/f3wlPzWXkWdtJhMl3 hfsAB90zCnJ1MVWYvKjScobFFdsznHyickLqmBCVL6yZ6VZlQpE2ax5isbTJX128xsfI 3CQFflChHESjcZiqoobptHQfh2OFc4OEkn7wBfo9HK4N1+HN88PVBuhOppQCz0/vO084 yBxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563945; x=1790168745; 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=zViLnWWimhUqqQWRcEtwFvMmvTWE+xmDjdpS/VswBpI=; b=r9VriFBrhX3NQ2JshijoIHASuNdYmYMPV7tNabaUDMdunrxVEwFmljGsNlMM4NlNCQ +UgbSu508EKlAhWD5rREpWmaDZjtooS5mUumEdEUsjWNSh7cxRywAC81Q4CYoPqs6yYO 4CZsIPuz50nJqMOv6SIoRZdm//cgGns24JCdH3URVmS+bRBqD9cAs7EinwRhhkEQ5srt aZasVjphFyKSKA8UZmn04R7zMUYK6ufCWF3YHnYI5ABh1Q5uE3/z/2/UUB80dvyYFr1k clTkHj5Po8MRCf6poo6+9xn/ZfEjNfFJzx9EjKhcSmbHzlE5yX2mi0NKu2HWVEYnjRC4 Tt9g== X-Gm-Message-State: AFuF++nALb9dUsAfwajxKtNhhH1rwXOQhnuSP5j7QuehdZPI+oK1Sfv3 CN6op/O764HzdObu3W2qK6wFUjQQP0wPE8O/mOAucOA9BEdp8YUeTfRthVuOB7rTufziJzAUNvW t1bTjkx4= X-Gm-Gg: AYBFou0TrJ6szB937oPGwpUVcav9D48ti/95e2C8E+YnZfNL+GAHWuu7gT3V22ks2Ob HUTlvKnnKBdG9J/eRYb81oMZI6526di8g39Wy6qhKknkRTbcmwkxMjR7l3sV1905t37H4t7HlYz btB1xVAGBsVdVy2ee/xxtgQcScT+JD0vdAMFRwe3sNmasY6byngU92xATwFth6Jov/CCfNMoYOR zAEnRpLgKOG/Xa0p1uEARBKBwXm8T8g0RE8P9pXYsCTRA5jJ5i+uj7Rt0F9RZyfx4695WIUQ7hH /zxzIc9txisBlmWdPC28qraEoI4gHyPhlTa+PCXQmpanV9rwkv5o5cCbNUg+aq+5ifxZzq4PNVm j3UoW6o+6hTF5WEfhQU5zN/+b4ux3c2ybRiQuq6S2x4NpWFEec3Y0kPRYJWL1rQEEXYTfBLhxBO jFWg0bqRjhy5MRy/0TjaZ3Rzs90sxVAkvCTdXuoRfQ5relLFEqa/mg5ryr8VYd5K4ebD8oUMqkj ALrXXY= X-Received: by 2002:a05:6820:2221:b0:6b1:2843:1312 with SMTP id 006d021491bc7-6c7ce24fdcemr2329606eaf.0.1789563886101; Wed, 16 Sep 2026 06:04:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 22/92] tcg: Generic expansion of tcg_gen_shli_* Date: Wed, 16 Sep 2026 03:02:57 -1000 Message-ID: <20260916130409.3382710-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::d; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0d.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: 1789564283792158500 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 f45e5961a22..14f8dce347e 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 2d0e2c4b34a..1546fc3c094 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:32 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=1789564379; cv=none; d=zohomail.com; s=zohoarc; b=hzImEWQ/PLggoCAWbl0mtwahhP7c1HtjMWvCUBScx4LjIrCis0cX4act85YOlQNWqHWNh/EPSx92jW8pIgWbmoNv93fbII/0iuW3XGW7fxUTjEHy6LLej+RyN/PaEOvc/CTxNlcNwG7jahxGxRMhEA0+cCVM+RT0Ew4N6VAQ7cw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564379; 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=pBqAhA0+CdAZCUkJyOnIcW3nJZE20xi/oNfYr0M4rBM=; b=M/bf3396R9HVcgWMoIDRqmHOUfehKwrq6hgCa7sOWl4s+eucZIgZRAT12Ixf9EqimzHyfYjhAB1kXmsW91uSUgZ4y6lc8sSppF6k0fAMKmopNZcQUAlLuHz8KntBh4rmT6PeLsLpiPxUMaEPLSbsg4R6Be7YUIGs+van5JYUpTc= 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 1789564379394345.3708054889778; Wed, 16 Sep 2026 06:12:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJx-0001Sn-5U; Wed, 16 Sep 2026 09:05:05 -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 1x6pJo-000199-GJ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:57 -0400 Received: from mail-oo2-x0d.google.com ([2607:f8b0:4864:31::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJl-0000R8-K3 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:56 -0400 Received: by mail-oo2-x0d.google.com with SMTP id 006d021491bc7-6b1ae6f1637so335786eaf.1 for ; Wed, 16 Sep 2026 06:04:53 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563892; x=1790168692; 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=pBqAhA0+CdAZCUkJyOnIcW3nJZE20xi/oNfYr0M4rBM=; b=eIAtNOUul91n+DgFjQKCzH3G6pnqyQKUZB43c42OrOrJCfJDP74Wj/QZ+SEBFoUyXB tjOY0zA0bJ1OJaEMY2OfWaNxNqsVU3rGbPHcJlEgXsHxJNEnXFVjSv5gKJ5rwpcvGJX6 AtzLZTWliw0NiagaeJ09cLbVGJJwxAS9fsuq4TlwzDbCw7jOESEWJz0XV/r4inYwrSaP 0BogIl+pfIq3u2kmP7tqLGAw/laoPjEfYLCJ0QI3aCpcmk4bmI/lZiZqzvbIfIhdOvjL u2I/WaFjz/mskgdNJbnFvSMGxTBmE0qinjWNmX2sHI4c2JRgJAVLqCZFWFRC20H0gvQH BwGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563892; x=1790168692; 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=pBqAhA0+CdAZCUkJyOnIcW3nJZE20xi/oNfYr0M4rBM=; b=UNtw0biByr6F+YygMChjcpDGCWcHG9V808FJUWNwIzPxLGfS2zVpvLaqL7xxNHMkBO GtoneP8s1Dbh9hXUURm2o8SjGPqRR9KXqVHojaMMzDmQHl2Lbl7LEKS/kZgF0bsRHUIJ okBZDZxGZY/LQfP1uLZs7RggMtYDDUAL/t3iDUSdVWqL2N0gFlQtmEHtswIjTrJ1GInx AVTFEO2N6MsUftbOxVx130emKUGnDU97LOpA6MEPNcLn4aNBJ/4n2i7KpneGegAjVNOQ os53TSrNgeQzQFEioWX4GP61vnlM3k1pBCF77LKbHUGuxWrEsF0qxd2A3jhdLXE3aXeU Refw== X-Gm-Message-State: AFuF++n0tY0kRNFRmf6TdGd5w1u9aARKlGVEyntBMZxZoPCMQdvQ7UlJ CgO049d1DviATo4zlrqB5yjBngfNWtbDGNvGT3eOx/Q06OUyAFFpBX6QlxyHecyiJVozMeeV7Z9 Z+HW/RTc= X-Gm-Gg: AYBFou1HocxHJHOn9Bldq56XSGNvzRB3towbtztyTXIvqqZfrSVvjtypiA/P+Iuta/j weX4bo7dZxPchghqZTczQtRnQ/QleWhQNCREKzi8I/voHZUsIUDCKFC2nEYJK8YWMuE7lbwOW9+ SjLK8heqvRWS4JyaXesOMPJib/GWyr8EYSUDvM3TE1KxhkqSpg00R0nJ6B3mmVR8BKfWAlKJ59u 0vDADmDU+tWHaHxN5QzosZh0qv6znpDg1sRQ78g142wpM5SCIAG34rI5+1xJkGGlHYzF+P6Z6/8 CbEtqzGWEvBj42J4HB93700Gonm5q/afkplVNvTNpEWOkDJsTPF92x4UXlBmvELVHHuzUmw4hYA l+cSB6h2a5akQXPB2S0qr9IOxiCj6zef8Fe8NIcvJwYmJjMt7tNc+Whu2DzmGXv6QzuobgE2Y+Q qG27O7ZqvIuI2HYReiGaR4ir3hCO710m8IPQ5LKha9Wayu7+gFHTTsO26bBDJmjaH/7vfG1cbOD kHbvNA= X-Received: by 2002:a05:6820:f06:b0:6b7:46e9:96fc with SMTP id 006d021491bc7-6c7d39f9c02mr2423134eaf.44.1789563892398; Wed, 16 Sep 2026 06:04:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 23/92] tcg: Generic expansion of tcg_gen_shri_* Date: Wed, 16 Sep 2026 03:02:58 -1000 Message-ID: <20260916130409.3382710-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::d; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0d.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: 1789564380537158500 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 14f8dce347e..e8ed65d8c15 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 1546fc3c094..99b56361558 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:32 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=1789564083; cv=none; d=zohomail.com; s=zohoarc; b=VvpG88HbDwGO67w2kjtdUTDssiiN/pXdaNWqxl3+lF5h90edbdilpFvYcDAakXNrBao02uvuVIWI3nC4basRoU2sGQLXlM43du2kDXouV8+Wd5r282MQERZycrdEYCO9Geq5qzqiDLOCnrAI5QfHlw6GOPoxQ1o47sDPIna3Ivw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564083; 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=gn2BVo8XsZoWSxJt8C4JLF74Lt5/vzi0qWbrkJFiwyQ=; b=Rck/0AYGgno1X8awzMVAJFlHLilRMh8X9YK2i1ntyRoFCt6wPx/8rw7sOrniqqDUdvRNT9b2NrlfAUXvtgPRLjjnrWdAEHpSIrUQQQo0P0DqO0niQoYiz6I0l1l5itHXqATTpuHCkt2MijPLKwRqOoRYhfzhgTnD6bhNCQBcKxU= 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 1789564083925366.91721570271363; Wed, 16 Sep 2026 06:08:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJu-0001JO-PW; Wed, 16 Sep 2026 09:05:02 -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 1x6pJo-00019A-MZ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:57 -0400 Received: from mail-oo2-x2b.google.com ([2607:f8b0:4864:31::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJm-0000RF-Sr for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:56 -0400 Received: by mail-oo2-x2b.google.com with SMTP id 006d021491bc7-6beed321ad9so621191eaf.3 for ; Wed, 16 Sep 2026 06:04:54 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563894; x=1790168694; 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=gn2BVo8XsZoWSxJt8C4JLF74Lt5/vzi0qWbrkJFiwyQ=; b=V7AfblQfRDFq9jQvYLQNdqexzR7+ML+j0MU35PjJSp+aaT8b/1DAiMMyGGolSnhlF7 AVsdqFkTTcISwbtx4pRfu2Ijfv/foBupp6aI9lLERX7SU/fGCptL7RJ+sxw1HrRjv4ng fggt4tBNMRPplzVyphRpSrYgE5TFmmYh216x7P8T80+vOT9lVqmQFxYvZfw5rf/h+Ed+ 8c7DxL7wOwuatbZSZTEU6l69U1UmItFKo10Czb1R8BklBZdL8/N+hEfit/7YoNCl9Ji1 JvSy9qEJwG+Ypcz6CXeezW9SS8bZS0HFg5ugsmmol3SBQsZjgSC+TH8o37Errii6k1oG tqaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563894; x=1790168694; 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=gn2BVo8XsZoWSxJt8C4JLF74Lt5/vzi0qWbrkJFiwyQ=; b=QHdmA98O7gRLZXK4ruILgCkqMI8XwpCWJVylHH3EHDuGAucW6gBQhc+9EkM7WxR7X8 42zrSQYqZ0QMRk7fMFvnftt7i9PirSPb/XGWOIONd+UxOQFuhZtBVyGC7BiqcAX9GqyN EIjz5PHh7iXB4aNGVWQ962m9SDYsFHyX6AHSaoNfVx2X/dhIhe+ycaFbqIIIwOX0uKfF hOlSQWAj/W476hKgo4gj6mxigPiArtoxoZBLtWLWxZJyC2VG3zdaci24fThrbl37meFz MYeVnu6DYUyVoeEMJKqMkECWEikBJdF9YquSYpT6cSBnLbyShEvGbnzHi8sA66NmDEOZ W7NQ== X-Gm-Message-State: AFuF++kkpN63oUcSt1+xnc9WdLGr99VVpUCaIt/GfEXR7ESpHqCEMEkE F6+MCrVUoOVjdR95r8/fZcRzdYrwvX6gKB4ViFrCmWoOG7CRigSS2SZdN164vOWKanukhNLNsoY mWGyGK8c= X-Gm-Gg: AYBFou13vTZ2tMprmYslJzqntlkMr1ZnL/Pjby64eZ10h5Ck1xhKxBve2E5E0QJ889M iJj7TBNP2fwarXTlZcPA+Q3P5XMFMAAUic7L2yvxgrW+K899yo7vaOcTP+0uuGpp2wbDi5HNvYq 5g2fAozeLOi4zEbDVFEF7qE6XzxWMPIEwuhvPdnjT4TbxeooPtpOCfCaxClJf28OwmHuJLyRVSC 31co6M11uLJMQ8EpeN6QnBt2rQY3qg0IpeZmdX0KxWT74DIc0rIE3yMX6XJDz81+fNgaicQX89/ YhdFV+Gqx2lCvhmK7rLyQzd2aYouRovk1teITAWEw3LM6J5jqPkEK8uFiVMvNLTz6tGm8OSsYy0 97p4vPGVih8ZCM7dCs8oGVro20W8GgsRXe0UaYwqPa38UqYC8nH1bXY4rf4uXFo3CHshpYaj0Nm 3liqW3wKxTkFG4wHDHi6uLTPQbqMW3yzMILrbMRSPBbGWIhIE8b7J8MwtLi1OlfOVF4vpjls94j 8vZpNU= X-Received: by 2002:a05:6820:820:b0:6b7:46fa:16a7 with SMTP id 006d021491bc7-6c7d4cf4cd5mr2324095eaf.60.1789563893582; Wed, 16 Sep 2026 06:04:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 24/92] tcg: Generic expansion of tcg_gen_sari_* Date: Wed, 16 Sep 2026 03:02:59 -1000 Message-ID: <20260916130409.3382710-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::2b; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x2b.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: 1789564086422158501 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 e8ed65d8c15..60c74688b8e 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 99b56361558..aabccf49a81 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:32 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=1789564236; cv=none; d=zohomail.com; s=zohoarc; b=R0T0ezuTgUYBn9is7wJkCWihGgkawZh83XIOh35gzluUyqWcOUCQxaINE+m6YDyYDqkrkQyRFW6ZYEQpQVwKGsRrHXqTAN1Vzi37yRmjuYKNpNW6ND245FC9ceoO0vIVzKIxzYRZl/h5wy7EzDGHels7UqTY5eu80F4i0F5jWA8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564236; 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=4YgPpKtv3vK+X6eZmY6C3wjGd41BpUgxi2x7YqJJ06E=; b=V2pmskEUR4IryiPfUPr+tWgilps6j2vZRXFUdPEps7AXJKraAP+sr+FIEYlEmdxlyODmzTmARGN4XfKVvwAV6U2nLoWuvEz8wXzGQ2StolRgVX/py1WvDt9OR2K4dembqmlw03mjNit6nhEtxtYxydsSdRosAUHcp+TWNScyp1A= 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 1789564236081904.5679210214871; Wed, 16 Sep 2026 06:10:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pK0-0001d5-Sp; Wed, 16 Sep 2026 09:05:09 -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 1x6pJq-00019p-1b for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:58 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJo-0000RR-6B for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:57 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-46ac6e5d8f7so538914fac.1 for ; Wed, 16 Sep 2026 06:04:55 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563895; x=1790168695; 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=4YgPpKtv3vK+X6eZmY6C3wjGd41BpUgxi2x7YqJJ06E=; b=fUEy4kZJv1f+zT1RaIFciCHRTzHAtG/yP7OgStL2icQOYe3LzD3MGBbcM3rbwtu2YD 7gfUG/hyhAbtzVDHWgcmdNXU3aMVfinKADlMERu9Lzd9qyBS8lFW2o1m8AA26p3O5v1O zuXvsON0+nTPoPmZnYE+qYuman3qIZz9bLO7ZvZ/qFrkQ36K0H/Z+XlA8mszE+DvyItc ERt20bcrf2bIVCCTpUwWld4YpuMGUYx2zG5yMAJ8aQquzgM/F48vn0sZAum8VAeC3K9C hd9D6tHydVDIjbXQgWQcLZKXZ0O2K2VDvwrgyQ5XMvcyYWYxGlSAzY41TY1smPC2/ain EUqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563895; x=1790168695; 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=4YgPpKtv3vK+X6eZmY6C3wjGd41BpUgxi2x7YqJJ06E=; b=wpdJFzY+j3WIObcfM2ty1Wsuq+A+8K945Gk0dAynWffGclFDsfQGfN2ExbvlLucMZU YyoQFQOJNS/kT13YBr1GmYM/UPMrLnHCvl+fMwoIiVkDTxtBdCQhy9EgPPZXx8ivRrJu ctFlIgDWYokSI9HQ9f63cWv+jMB67twlEu8Cx+a1BPz6ExmXrAThRHX1SBV7HmaBnkrM WxjZF9KHlGuNgItniR6sFx3rOIzL7+rZro85CB8RmMthJo0elxvYKNieYNrAylMEI1Ey tqGBF45o3BroYjdlMIBmudZ25yh9mFT9PxYN+RuMn77hp7fVLI2Mi3Ag96U4AOyyEQy4 w7WA== X-Gm-Message-State: AFuF++mTdQBQ18VBVmRZ2HoGQdM2tQ9lMASTG2CiZ30CbxlbOjdKsITu iM7v0DPONmgz3bXUpZYDk1UpTswwQsbrlEcns+4mZEZO1JugUp5s50zYXkELAuvVB/nKCueqe+C wiSYu2cY= X-Gm-Gg: AYBFou08iJ5pjQaWdvZGwtFtTiEnlsWob6d0HCbGKQKwSV+KUFnDbTQbQ2Z8ibU4APa 3OhzcX25NNbAPHK0QKCvoFfxJwAiLGao/fXzB6skdqhjzqxwh+tkdFWfu0i9ysgunY126rqMThe kVO6YRPFtf0rCTQhX602I11mxkyMKhHd8OHEE4+WGkDgnSNGxW/UDSB37eWONbfFNz7qSFVW7mv 266n9sQdQt5ndqBZs8RU7Qi5O2PvOGiFo0bcngPejBobUsuZOta2JJfkeCqBV5CkJbqB3h9HLJq w52fPEmZhGV/Qy94qVyg8NqKJNdvAGn0F6G3l0kj/FpjkqTEl4sKCoD9YMrkD0X0FdOrQX/xJkv kOEaGDym5AC9NdmrnQXo0060/io8JyMkLmYONd4H0OIJHKAlsj9wIY8UqnDFTFQOugDu42Kh5Ml D582tCmcRbE8YfQ8gEH7XOxBBxbTjIo3+Lmo8dOvk/JtfI2qpA2gr94/ze5EzXm7qhUx9ha4mhX hVWyrRckiavN/LPJg== X-Received: by 2002:a05:6820:178c:b0:6b4:c316:6fdd with SMTP id 006d021491bc7-6c7d17cc645mr2472384eaf.19.1789563894729; Wed, 16 Sep 2026 06:04:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 25/92] tcg: Generic expansion of tcg_gen_andi_* Date: Wed, 16 Sep 2026 03:03:00 -1000 Message-ID: <20260916130409.3382710-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564237434158501 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 60c74688b8e..57caf5f6631 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 aabccf49a81..198e1021ed1 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:32 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=1789564355; cv=none; d=zohomail.com; s=zohoarc; b=YoGjNv31clX7rZdkkZbE20rpB+0M7hve17KAdacqcvUqS1eVssJHty88eevxTuGMM18j2x/CEZPn+GNbpuxyKoUZV+4nztaFto7QuQIxq302jsFRNq0okh6gy2gyjbn8McjyAvZiAVruaT+IU2LJyig28xJQ3zAPJFC3keohz0U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564355; 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=Sq8Yv+sp7tQR+JDzfb4K48KyhrUPcZRMabJqL0FAtTI=; b=bAutTe0t9d8uZHfAreZx3av6Cp2ORLuDGzqyO8zfP2pvtkkgnCYa8J6CDx1SYKydf1EmcPDUTYsuuwulyAXdKK4+XL6dO77RV1Gq8H2+9WiyQsXjGOdkNShj43Dan0DprgFJmouRaHFYEJb09b+//9PAoW+1suJgcbZMe8uR8yQ= 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 1789564355455109.3384728329678; Wed, 16 Sep 2026 06:12:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJx-0001TD-BY; Wed, 16 Sep 2026 09:05:05 -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 1x6pJr-0001Dz-JF for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:59 -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 1x6pJp-0000Rp-PR for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:59 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-398b1e63c49so1722756a91.0 for ; Wed, 16 Sep 2026 06:04:57 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563896; x=1790168696; 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=Sq8Yv+sp7tQR+JDzfb4K48KyhrUPcZRMabJqL0FAtTI=; b=K29+CkO0G53KfNgSAjSXlKReVHhunHVaYoTOb7Au/LjquHzHyx3695r8h/X2YUXW16 V0PYK706O+piSzu2WPFHx0x3iOUZdzO6UcSJfnKx4HHJBq8FdjOkDY0eCDE2/q8/aSFX mAjD5hPBHYKO3a9tBIF0s3NWSvVHauIeCFAAHUek9MD6dh0ypcKKza8zfTLOiEaTXbf6 XUyHSZ/KoZFiqVU39W+ycGMDnyz7nZ8fhrCxhc9/uGHfASGyydtz0BW7R1Yfar6+u11M SRV8Gf9nQeoThXG5lUdK4twnnARO1l+gafkScRGDEywMismBxvpPdFI/hBVJvFguLqzi ghpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563896; x=1790168696; 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=Sq8Yv+sp7tQR+JDzfb4K48KyhrUPcZRMabJqL0FAtTI=; b=d69c6Szpn+HJBcBloyZ71vADS/sbLrCnQ0473n09IJwRYrccSWlKRqyaM3z9I4o2C5 4RAOlHc1elkeiTOS8m8vCNxBol3VWKq/lghTbsP9y/aG8cKuTSj73DDFRJAZkE0XqGD/ +sYDhoe9Ig28Xovc+3/q2p8wAqMiOB36S8b8t9VTZD0XwQn0gG9I7fHQua25H6BEE5Th VEK0cXpMJr7d5watwPtctCmrFZxWTN2ZkqZMPrY+Ppv9Uxi3muUBqjog4w4GdNvJcB0w D86/KihWEW82GvpzA85UHTT3944lvpUxkP2lch38tRH86Y1/rqzLMioebLCgWj7cV4EQ CfOQ== X-Gm-Message-State: AFuF++lso7ZrJzr4wBjRNXXs6PT6DX/jWlwHKiqV21gZn5V/0tT36+eQ 0gDNKtTUsJ5ux8LFpYB9rZEdKdMB2cQRWZym8igK9+s17IAbs/9Z7QGiXzVO7DpuQrcONpZ2u8b M6pTcHXo= X-Gm-Gg: AYBFou1MyBOxAKdlYPiQPWJDpDnrEun8pdXMnfAX4d7GD4W65buw6CRV3N4MMFXiEP0 bgkldYJ3hhLII6PcJtA4zUDF4h/ni4N8leLV0l7TK6I8Ukrg+qPMiTrXscg4fVPhw+RzcQz67zn jmgo7U3d06rf7xJYTu97R6/H6byOxeh1mzaNGJ8j0bmXv2P1XCGNj3GlQvrBfew2lCuo4MEDsLm ywfy7mDASUVObHgo+2/8DxIfBFMh/n37afuDAj9VhGYC24eSFQIPjBmX75ATdsnbdc8SJ9u2DSY U7PPLK+X4ZtqrmOeQoIEACPgmJusIz0N4MZVq2ZhLTgH8ZYoVlJZc+9LxQ40SjC3NGYCGzpqFV5 LWDkKLddgQar4ii4gUaJ1Tqhzdoc1Xtlyc7e8zaMe7wXSbQeY5I/bd4MXVmODWioM2kfuaijFxA uV3SA6hQ71UCL3Nqpu05y/mr438uCSukma0yFlV2SwIiZcmL6gqf0a+ZVU4ijYSQ7Er9w/0pTHZ rx2mzo= X-Received: by 2002:a17:90b:17cb:b0:36b:b903:994 with SMTP id 98e67ed59e1d1-39dfdfdb38dmr12222294a91.4.1789563896033; Wed, 16 Sep 2026 06:04:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 26/92] tcg: Generic expansion of tcg_gen_ori_* Date: Wed, 16 Sep 2026 03:03:01 -1000 Message-ID: <20260916130409.3382710-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564356699158500 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 57caf5f6631..a30e9972b86 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 198e1021ed1..2c7627e7cfc 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:32 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=1789564014; cv=none; d=zohomail.com; s=zohoarc; b=YlnLWe3Vcx/Q7rK79p5IQIClgeXICxR/Jbl4hTOKgzBcD/S18mOHtAfabd2UCqi27ZINERC0Dt0xo83HXUY0QWQ2G8axd8y1XXTQUkpW6mieAT1rpHFoY9SWu54rOLHmu+wQ2VlEpXBPEJtDR3dzDYm6OCSrFRzUQ+mdK4H08xc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564014; 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=rE6Gp/rdILGcFkeRqaWTBtq7xL0npMobAFrbzizZRMI=; b=kUIsorRECLpcvk/a9HK8j4qvdZoSfKCbh8/oEk0p8xFVUz4xWsCrP3bha6ekqvIxnLs5qJzggOW6tYjzDvSLhvqC+q8S8U5P+U+zytR+GpXQjgkFCU/H8GIYIqoPbg3ERRax+2BlZZqtLtb/hSmj2oejykyoiFUYbDNNvoPFqyE= 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 1789564014942392.01731780951366; Wed, 16 Sep 2026 06:06:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pJy-0001W3-ND; Wed, 16 Sep 2026 09:05: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 1x6pJs-0001Ep-8o for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:00 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJq-0000SL-Ec for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:04:59 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-466cc75f3f0so536395fac.0 for ; Wed, 16 Sep 2026 06:04:58 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563897; x=1790168697; 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=rE6Gp/rdILGcFkeRqaWTBtq7xL0npMobAFrbzizZRMI=; b=CGH9uhCXxizcg2qwEPvnngP7U2xHyPfnn7eU4r6Tlq6je4rPw+Bu/7PIt/gyu7EoK2 HYKImzaGLf+GHNwoDalQPNnbo6SZ7ZwGe+GOAJuEoETACJ7u2xISZAbB+7BVux6W3T7z HT3FSkyGv3+6NHABoMx42U+ipK/JcPkbnhcEWq7CVuMPDGLCa/YezfZ6MLkPUcY3NH4O vA7bE6//i2kJXGCVk+UoBnhbYpHBTxH26w5yTNk+TCB3yUHMFzLu+nmkZdlHsbtI+SgX y6N5j8SZDb6CtemXWataKuZ+ri598QJu4ycXphASUC+jT8KPpogRgsUpmoIRoMr5ZgVi 1nJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563897; x=1790168697; 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=rE6Gp/rdILGcFkeRqaWTBtq7xL0npMobAFrbzizZRMI=; b=vZ1WrljnIZ0qER2Z4k4pwcVYZhMAVKs9ySuOS0jiSBLtrOqcXVSFY28G9juvgyGLAf WCPaxVBeOIfFzqLhB0Ah8nWh3ltPYLQvuNeWI6AZ+tTJdU7ARlH9QJLsfLQZFGGHczpt Zo9zjBRgsBrnsGwBdauoh6UAQdQ6woy9AhBsAR3oV/VWqPpPDEI1eEE39dV8PzP92VTv h3KdV/qLe9EI0G4TbeT13OLT9zvyd27wBDKcuJquGNnD7jYjVgyrfp6hwsGhYbcYZE9N RxZkRDJV+6GNLSwrhJmcLwhtaKXZ6CQdjswEfd+0PsVpkVDe/dSJKiI5aOgGjRhccmlL 2nrA== X-Gm-Message-State: AFuF++mTALrEW8S+cD1oQ8rykBQtpEuasANToYdgIZFRCsdiGAm0ayWF jimNEzSsEnkKJ7H+0dlNRtGu2e2sqRTPNwk9RdZ/quhA1IOWxtDHO41JfDM7HLzH35ekNDnpj6c zc0qXA7M= X-Gm-Gg: AYBFou3Ct7qe4dFn4LTRdYTye09HsXL9mO9uWVA+tdkbAs+jm6p/6aqeEBamQ62gmKn is8D25tvPOr6nMVg+ovRRAr1PWj6fHUcP+sVe4pn7ZgrIlxdAOarXgxSExjsmIZCdl/tku+bVNm qPPDwT197S1ehdwbEZ9Gjfbq8FYyhWybMNyvsl8di24vs00w13WFg9BOtoLpJfs1D1hs2gAcX1c dsoEUX8w6amKcB1BmEx6Hfm4KIW+LuFV1fGYzAtLlAnWUw56UaKY8noTI6bdV/SIRWXXdDlAACI 0xahj1umorMrdg2KTs6yv1uhAp1JTBoWQyWXc1Y6bIZ4+h6jhyRlfCM0rgoHPUAy/gZnjAZiSrd f1LUbb5pk+5FmrcsOsnLSyxQ1Hj/GsZOGFG5Z4ISaI2IeZIzm6xjd6ibORH6tixzVOPGPipgMUs DhMYhGQdRG6mbz+miC1UzGxXN2sfBOcEQmAxNheLgJ5t2yYjO3d+Y8ghxnpfd0F9UEHfIfLfs9l nqD1mc= X-Received: by 2002:a05:6820:1c89:b0:6ba:1356:2038 with SMTP id 006d021491bc7-6c7d48f0c00mr2518771eaf.65.1789563897059; Wed, 16 Sep 2026 06:04:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 27/92] tcg: Generic expansion of tcg_gen_xori_* Date: Wed, 16 Sep 2026 03:03:02 -1000 Message-ID: <20260916130409.3382710-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564015596158500 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 a30e9972b86..cd651d6e427 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 2c7627e7cfc..e1338fcbc50 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:32 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=1789564116; cv=none; d=zohomail.com; s=zohoarc; b=TNDJq7YYmwA8OZoKBih03y+axZdcuNC6W/c+anYX/pBoW4cCuTW4v8IxlH7UlB7pZrjPWrJSTplOIrA+wAXlawJC8lcAvJNRl7XW4RrvaJcOCu6W5XJyQXJHXVfks0QtpD2+1c+qJXR8Dz0bYhX0zwcNJDeRQ+qiTG8B5yuwLbU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564116; 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=pXBzmLKK2kYI0+zni+gpeQfaJhIUyxpRdoQvDQizyiE=; b=lqOCaGpywvCwUE3x3TctwwUCHxYSjCifH7LjemWMDRwNAFAR3kd9FAr9Dsj8RDjXtYcOjvxEStxIQbC/NSOeOeWcY9fqpcbed3QZrpH6rqBkceLzsvwcU1pvN377GRQxh4h5BPxxjk+MZ7yHw8jqTmkSuqICk7Kf7MI8SdMIsBc= 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 1789564116889626.6790204904784; Wed, 16 Sep 2026 06:08:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKZ-0002MN-8g; Wed, 16 Sep 2026 09:05: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 1x6pJt-0001Gi-C5 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:01 -0400 Received: from mail-oi2-x10.google.com ([2607:f8b0:4864:32::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJr-0000So-HC for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:01 -0400 Received: by mail-oi2-x10.google.com with SMTP id 5614622812f47-4b37a3688a2so735009b6e.0 for ; Wed, 16 Sep 2026 06:04:59 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563898; x=1790168698; 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=pXBzmLKK2kYI0+zni+gpeQfaJhIUyxpRdoQvDQizyiE=; b=xO9MiM5tYbW1SdDuKiAqu7cTAbnr5eRGED46hLdv/I6jIYy6pDYLa9xTe5Cnpddo/M Hb/4cpvNHzmerjbu/vImKn3AGlGc3X+2atQgzyZyBcEg16PAlJh+8KVgpbBCGVh62BRi I6GHYDD6eDwRlJ9a35lQQ7jobsRuzNwO6aNHjo68KOGrVAOaNWq3zauyuerYQrWMt59j bUn89fum0TvO3C+7GF6oYgBTmy51kXhO6u91ndS02rM9xvZhFfpnG8jh68wQhMZMk9Aw HTtKF2oJQb1oVwjinK5DSADKE/hjNp9cmw5RItKLAhBXQydceKAs+Z6AqaoTzSoXZHiz bYog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563898; x=1790168698; 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=pXBzmLKK2kYI0+zni+gpeQfaJhIUyxpRdoQvDQizyiE=; b=bi2FtecYg81FSvxD14XMlGSId7v38KhOIS370h5L4tAHbt7xS/FEyj4GYx+jEqiCQP rzAekU+WjBI+/rfgw5Q/c3rswzEPFYFWGXYXh45z2/RpOu+mLcWdXcCpivz5cPoo99Zp i8DiqYBfOzUCitSBNZHGR4XKaRgOaVPdqZaZ04Qs5DsizxzEYtj9Nj7/q3Rav/j7sTnP yMI/kU3D0IpUZvMktggSApG8hHtHHx6T40fV+u6zq8y9dWvYX47kmzndnoZaT3mwwUue 4LSI2RG1tp8YlGF2NM36u5ZDCUz2k1jj3J3S2TbfQ2tzOpWXE/jmk7FvLw/uIIZdaaHl bqaw== X-Gm-Message-State: AFuF++mOIJIUpDuNpAdCOeOBpA3webnSXNboQLDH0JqqZkJfimcWC3Ex LcatXsiOZdM4i9amNq7stTdm6++0Lw6mc3fLZBLgkAL3TIl/rhbVMSvIxBy29UeB0O3rThGuE7q sWVeG5UY= X-Gm-Gg: AYBFou3shEjZu2akAvKkavO09Oj2gaTj1tIF6TOqz+IS8uL6/ITCNwXVZiY4hTUDE6X WT5V6wnPRXVXAyVDQEUjQ22/XWJAOFLN6xyIFpExQXzQ24zFqlX7apG4C9FQdbEcUXkPEJdjnIL aOOudYHV7jW4VpUQccKbVl6cr4JgMdD3L1KF1mzNn3xBWpKmO4grvxJNFbH/vkXx8EDV0qb2pU1 Zj0bTk6FXRFBzUPLEh/SXZknHB8I0lZutlo7+GfgFJYQUrDM69WbEbgSCyOD7UmYk7WCJ98meCb OZBUdFhmA2r1jGT5fqP6ZaVLUc0m6mnLvxJAHyNa4A0Et+V8dSgxv8fQthmPXByme5nSOd4rPqS gPq8v66ryyKHZztoQCdT3uazs81kBbRmmvhWMVtluRggetJQXJVUDpHd+xwg8a2zRr5POe7U9VL kbeqjEp3hpbEzD4PfbS0Lia57mPZwjopEj3XRZSNRHOh93jOS3PJuz5L9ayH3l7WeDM+7DmA0Ol O9J4oY= X-Received: by 2002:a05:6820:1ca7:b0:6bd:cd33:b885 with SMTP id 006d021491bc7-6c7d3af445dmr2772011eaf.42.1789563898177; Wed, 16 Sep 2026 06:04:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 28/92] tcg: Generic expansion of tcg_gen_muli_* Date: Wed, 16 Sep 2026 03:03:03 -1000 Message-ID: <20260916130409.3382710-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:32::10; envelope-from=richard.henderson@linaro.org; helo=mail-oi2-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: 1789564118544158500 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 cd651d6e427..25e8d27a54f 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 e1338fcbc50..db47364ce78 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:32 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=1789564345; cv=none; d=zohomail.com; s=zohoarc; b=KEKsLY1m6ZqGxL+iMDzVSQkyCmpmP6SLpUkvHMKFu2EKwyTLic3I2KEk6OJ7+k9bvdcZfNc+gCuVZx4YVb5g3VGTNTIBv1xyKX9mUuaU7umCO4GbtkwgKQCNsDX8hZIJId/65vJUTANKh+PVfBqL0tERLkKihNAWemPKc3BdH/4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564345; 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=EjC/hgEAHyg4QeR3ltbofy/cVH5NVRwoIGMREd1s2Ew=; b=CKEklJKKGdGBWiw2PShNrgMUCH9G6FfhZrq/nwFGveWak7lWAC9f9EOsIcadC9pYlkcj1u9B2DAr5v4GI7F1tVLSFlGmjEJ36LGs3it0NlxfM1JCqHmkcpw5jJQuWU1D6rAwUnZcvvX6myrdt0pXZj298UzGtngGcjYjSVclz6U= 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 1789564345284593.7666019159609; Wed, 16 Sep 2026 06:12:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pK8-0001oB-Kq; Wed, 16 Sep 2026 09:05: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 1x6pJu-0001Ir-9z for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:02 -0400 Received: from mail-yx2-x10.google.com ([2607:f8b0:4864:41::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJs-0000TT-H6 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:02 -0400 Received: by mail-yx2-x10.google.com with SMTP id 00721157ae682-85d43ac6072so9270287b3.0 for ; Wed, 16 Sep 2026 06:05:00 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:04:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563899; x=1790168699; 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=EjC/hgEAHyg4QeR3ltbofy/cVH5NVRwoIGMREd1s2Ew=; b=rhfXux/IZyeXhUMIeFzzgql0PeylkF+K2FoTe2kkICIiJCiMPqgtuKgft2/XaDhc0E rUACCax9eUedu1JdDuFZ4MdumSOGMvS7PInvz1cf5Q46nnwwxcvROFtg7KXO/gyTbrx/ 2cmMB0/uQjbqnU81PUj0xSIZRSbE23bIf5qmpuNEKXolKLKjgmndPrgeK+e2OAqGlshP WbYwSxH8jChTHmg0kbXUbPCJyhkXajgFuqx8D/r16CpHABxnaJyMcarAB028HFvtWp+u UJ7aD3NMiYjFOX/qvLle5SmYrLGysC26aeT53XnMH8Bhy/1BO54Ne9XLKyxlaNyffkim 46uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563899; x=1790168699; 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=EjC/hgEAHyg4QeR3ltbofy/cVH5NVRwoIGMREd1s2Ew=; b=LhQT+n+wm3kpKiGnXgnz1hsSlyNJHHhVW8iRmU4U5oh7tc1CppKSnU45tafOpzIckv +y+5SoqxhoHF7zfHsJBNbow0l2+NTJ1z3XiYxapYM6bDLWZ8v3rGg2aMlry+rmkT/IuR GTpfMNRMERiVKr2IhO7Jo8RoieWwGHNcB+g5scDv8EM+4W7e8YNilvIObZGlerDAnWlA kaGWAfR0S+g1VZjDUdw0+v31Wi6WizRpwHXFOof+L4EP5g/ZomeJJ6ITutiGemk0McJo cbRUg8sxBgU8FVLrBlSqeE96/od2EK4I5ISjB49kN0XT+iCSJ6Sy6Z1W9S0Ej2wbhDMF KPYw== X-Gm-Message-State: AFuF++kGPUHIY4MJRM9iEd80MYTzmFFToVW+u+MnKoh/8YQt7S2VX3LQ brkW09Cm+0Zn7L6LtOJNHsDjIy0p+AhRzLOj+VNsHWieHTb2u8PGP6WUsFYazv8XYNqqPF85lD6 0URZj0SM= X-Gm-Gg: AYBFou1sfKfHAu56pPAL66y5L1j82urrihmu6YsE/leUtbCmm6UI+NeytMvhrRgDqFY FynUVPAdeSgkobqCvxtiFhPM+kc0ZnVOnYzebg/T0xfyOGVV4BCyiOGarK3NRgQSJcbPnaKxEoh zc0BE/SW61MuBPog/l057xsvAQYhjiOctKGgUVoevN89+GhmeND7z0EAClSIg2MosS3LRoigKXo GAXbpazF82hCrgxC9HSc1aSSx4cbIV8QyfJlUcrZYydV8csnYcBY7ze2SztiyOP64x0JFvoP91G rm/PcCktB2aWCIldkMYlXZGv6rW7QcCnCV270NPYkEV+dGSAA/1hHIr+ITfm1ZKZFmXutt9xfcq VMhMfTghUgxFsRUr3b/jQA9rqKKr1uaBjJOuVlUfnOZBu/o/8CcRGNFeEKOFjByNmhkrqI67IRO JTQP7GjsLyAHV0aQcNLUs+wbUl3CLxfMmzEcvI1KMVCFSiVoMsWQajJpDGCHfMwGXwWI/Frd3E7 RuQlO8NB6P2LoPXgA== X-Received: by 2002:a05:690c:4f02:b0:873:5c7b:c0f4 with SMTP id 00721157ae682-892247a988cmr5374467b3.44.1789563899273; Wed, 16 Sep 2026 06:04:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 29/92] tcg: Generic expansion of tcg_gen_not_* Date: Wed, 16 Sep 2026 03:03:04 -1000 Message-ID: <20260916130409.3382710-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:41::10; envelope-from=richard.henderson@linaro.org; helo=mail-yx2-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: 1789564346235158500 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 25e8d27a54f..a8dffa7c5cb 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 db47364ce78..9a2626e9669 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:32 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=1789564358; cv=none; d=zohomail.com; s=zohoarc; b=mdzr1JcCqNC+4Bs+b7qPewwbXLdszsj6UOnMI2lCKFt0DzHt3u0VCGEb0DeSOkNjiQJqLqY/C4nuI9GCfwihPsF90sHJV7Z5Aeugf1xbrRFFGj8BN9cq/Wb2eMn6wxRhWwLn6GAi/LOC/8asJtbB1oVZVBR04ZuLcbAigDXQgRo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564358; 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=Jx9DLc4i3XAB9yWHymCGsCEcpc13lR01X3/dMGZDCr4=; b=TQSTBTThe61D0Pljzc1OXpztv6py9NsgRU+KtNDgmqgtuwG9IoZTlw2Tashjf+TtrnDqcKuoNzjraxBUKk9Y0ZZsND0+dSx/iXXjNOfDh+Y5Lisk2XBxQU+mM+njyvoH32unyAJ3WJGlQyb71J0raLxWd1DJRy08/msnM2inmg4= 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 1789564358100982.6049242924413; Wed, 16 Sep 2026 06:12:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pK4-0001nm-ST; Wed, 16 Sep 2026 09:05: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 1x6pJw-0001Rm-7b for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:04 -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 1x6pJu-0000Tz-7i for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:03 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b9184fa80so807302a91.2 for ; Wed, 16 Sep 2026 06:05:01 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.04.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563901; x=1790168701; 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=Jx9DLc4i3XAB9yWHymCGsCEcpc13lR01X3/dMGZDCr4=; b=ckVgiGr8VzECExHTOxrCVVSMqiHcx6REawWS7mufIgMnvpJaTaA7btVifoOpEXbRn8 +ZAbCp8SsNxcRGwgQGvATjXQGTa7yGy0mUPmeDvY2Cx133xv2om5E+v0l9EcJsscnPBf /exYVkHalR846e/RYFJ0GuW53tZWXlVzOZ+hNx+dNcRSVkLrOLE7XYMxT4RG1VPnU0tW PJUh3eT66EBu9vPuEiVWNfTCKwEP3fU+yXKW+zovqyhUB4zdZkrEA1T7Bn2u/ciRvHs4 lRSDGCjKpOnAXBaU12cyf8monOn4R6/I4YkQecn6YjfB30OMyVPAAD1NJf6BOPhwmMGr tMjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563901; x=1790168701; 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=Jx9DLc4i3XAB9yWHymCGsCEcpc13lR01X3/dMGZDCr4=; b=zxSOroqYl7r1eKpsiGU/FDl/ZD1pP2ngTAe0WRvkjaf4EkWNjcWNEv39QD5MU+sKRF 8+R+XcamZ04KZz/GvsXJ4mAwMhpcqmBWaDUzyAWFManNoG8yeG8YqVK7PuZGGFPMN1NS Swq713WNPQ6E2AzTpl388aTNNn+R5Qe0jCOchAqrniWS57mgP5dLOfo8s6JyeIHAuauO 1Bh9Fsp94NvutOelrEp+1Juk3V4rW7EQGyPMqtp45vNFbRh/6cDagWhOAbWYYxuZb23L 7Rv/TMz8qwrvlN1CWvnbkhXHIts8+G/F6akHykKc9sZeALU1xt2nJvmUQeJ9RLys1R0M DS7A== X-Gm-Message-State: AFuF++lCO4M/7yZPmUMk12ZDDLVoDN2qxhdjN3dpvGZ9uUCOa4cRfDMV j73b22Lw2VBMvafZSpHEe1VcRJL9zwG8TttbO9F4rxQoKuygm5zkzGhQo5//CVKmPGyoSBdQjSq BvvavSfo= X-Gm-Gg: AYBFou3iI0B5V0gJ9KdDneMDBG6og9trbv+NH3BgVdE/66O8ipRWYupaitNI5h1OOyf FuDV4riFfKS0XXk62HF46zKMYAMdOwwn2Cm45wjADu+du6cQySL2xd5l+cFc4CNZ5V3srYIhpC/ uuoA0t468Vd5U9NQi7OqSdXUX78dqsUw+MnwM7RV7WqPXLVwNcpHDnnKzLCDSRWFGUzxdbpbv8t bWAMHIWsSEgE7VpGxvQD0dp6MYyTp3s0LZIlQmQBj2vXZcj89l0fpiZACg2A6l5ZzTPPHXuCnsD thIeRN+RgHkwyHLBV5FBeeIjKkh46xl3GGUcgzyKezdwj4b3uJRTxbzJ/yEbBt/52JkONMcx3dp 3aZYVesd1t+v4Sz3zaUsY+hZaXvJnQSulcPKvTY1MCuzpUgflnYW/QAWuvA3Nj9QK4ojMnhymLj oWtRCTez6+Agk4b2eAX+BVQYAcx1gBMz9OPVsuyB4hpYfym9zzml8Vsq1A0xR0PkB0veQFob20D eeea1U= X-Received: by 2002:a17:90b:4c49:b0:366:3517:1aa2 with SMTP id 98e67ed59e1d1-39e1df6e4edmr5822388a91.0.1789563900527; Wed, 16 Sep 2026 06:05:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 30/92] tcg: Drop division helpers Date: Wed, 16 Sep 2026 03:03:05 -1000 Message-ID: <20260916130409.3382710-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564360391158500 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 9a2626e9669..5577f14ef62 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:32 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=1789564137; cv=none; d=zohomail.com; s=zohoarc; b=ifYzPXTTPYm0arABWqFYfqSskHesF/m+qTVG4XgvVVwDxMBNlB8rZq7EF3uuteklItAGApRqKQkfJEfLGTVCztcvapap0a4pxTJ1mSqiwyxTEFLqxvUcnRJMZwk0F1KZzEW2OzwiG4/XFqejKFs1DWky8TdwbpyKZTrqP5i0B5A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564137; 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=J2jzham0sp1Pnj8xD8iAsee0l+4w5DFO7FCHd8VARjc=; b=kFxieFP8IIzfn7eeG5DJZ+58WsgAWAf2GiSM3yHWt1vbkjEytGZPdj4rT6s/vD1Dguqb6nDT09OIfQ9vmFzmbgVMOqAaVBN8+/C+RbZGikgexJ2a/LAb5k0p3g0RFC6yELEqKdjpzBsRc+QUjsHUJ6aNOxOw+vo4Zzo5CtNk5SM= 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 1789564137349994.0156198851129; Wed, 16 Sep 2026 06:08:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKZ-0002Nr-C3; Wed, 16 Sep 2026 09:05: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 1x6pJx-0001UN-RZ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:05 -0400 Received: from mail-yx2-x10.google.com ([2607:f8b0:4864:41::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJv-0000Uq-Fp for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:05 -0400 Received: by mail-yx2-x10.google.com with SMTP id 00721157ae682-85d43db0c29so7142997b3.2 for ; Wed, 16 Sep 2026 06:05:02 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.05.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563902; x=1790168702; 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=J2jzham0sp1Pnj8xD8iAsee0l+4w5DFO7FCHd8VARjc=; b=mpHJbEfg4MkqqmpgdSiOpHFPICwAbCs9ZfiWQWV8vKjox3SLQi595+wpmabW/XuB1z ziIgvYvu4zPuLCw8CX306Q4JUGEWm3RiHe9LX+bQSxPbrHMr+vStDOUbMVLPaZHAExDH SsvBI+5QuolZ1N3rUnXBeLlnRqmm5TC7WW7kQAu+MlGNjTJ66TMiLe0lRp3lnKr7WQMD wzUcCUzOzvoRojW5vItCogyq3SPG+SZg6A/nDPzzGWuKwbDYU6WXbuxrmcoUPpp7G+1d 6elCBpnNODi2m0d7FzQckXkxGNqQAkITCbUAbBnLb+/CABR+2z9mEIZTgSlp/fillON9 bmcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563902; x=1790168702; 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=J2jzham0sp1Pnj8xD8iAsee0l+4w5DFO7FCHd8VARjc=; b=H6Z1EF1S+9qjflT0pnO1Bi+a3OlGnBRvWmYn07sJ+66gwwiAHT8hcV5TS/bQBNKp0m xFqrwF+kfMHRU3PqmKZlM85tBb+CVKV90m73lQb3coTX2UQehP+Up5E2HzH04zzUyq2U 6AtcZ1Yu2hdG4Rndiz8V+H2zUy7h8faLOmcnMZCLkAqgvofTGZJLlVQeNWN8eM3agJhT 6zsga6F4m6UJJL+p5v1Ce4d0UE7JlydjWuni5MOLgvePXt3CSRsrq3LhaNbdeKQwUQs1 W3hqXYGcOVUfWcWe6qcEyLlIZ6DVH+YyOerA4ElucMFplQ3iYiOipJyDV9QHsVvUEViJ ZhyA== X-Gm-Message-State: AFuF++njVo54P88fEojX6JB52Joh9jlxowKee+JTFxHByrePcVTH3e0q HtMbWTd3H/ySaJcoJrLj/utZP1MXhaufdCRtjOUwgkPJ2w6QHEpkCXnsFRVs7KCEvawFKOSGPV4 y2Gzrlus= X-Gm-Gg: AYBFou2by5pM75sMk6gas5oir0BcEyRRPz9v3scVsZZ3glBa6sAbqTmD06K20+5dA2a g1JIzMXeLd7wakRn7Ic+9FhnilNUEXVOfSJ1Xy/eCbvkt411T3OXKzRI740+YWMd09PgtQhjD8p KuNRX+lLmyaqtnEi3b6Nu4E4f0RhCKOQual+NMte0yWHx8X1eBoDcWIHMkux4gLMukfvtSq6Dsg 1QocLA7CVrmBouloxnmU7irbVCfSnvTr6nqRYOzwCWzdP1qWDFfQnZ4Gqih4P1V6H2wi1U2gLAN 4IB+eHthrK7mWPXqISTOBEXM8Z6XLj21v7XrXT1Rjqs88mSoDI2uJWRBb+NTuBk9oUtceUzdoHl QW6qu+jpX3yxpGoWNX4pkQ4kFUqGvplUIE11hYcDPZEClvOr188N1lxHOl9+4+nl3c6jq6BL8XP WzzIvDpwqtLZaXZ6QKjVxc8gpY5316+trpL9RvVar4D6X2MgNNceI0oHVM8JX36oY+c3fUzwtXC 3Do0P4= X-Received: by 2002:a05:690c:386:b0:873:5c6b:a313 with SMTP id 00721157ae682-8922996fa76mr6984677b3.65.1789563902105; Wed, 16 Sep 2026 06:05:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 31/92] tcg: Generic expansion of tcg_gen_div_* Date: Wed, 16 Sep 2026 03:03:06 -1000 Message-ID: <20260916130409.3382710-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:41::10; envelope-from=richard.henderson@linaro.org; helo=mail-yx2-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: 1789564138681158500 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 a8dffa7c5cb..2f8a9f48eda 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 5577f14ef62..a6b7e68514a 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:32 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=1789564340; cv=none; d=zohomail.com; s=zohoarc; b=Fg8p/KtYeMQGplFT7a1+1nmAzjpzbxYRdU0cLDSE+yNVTPjONGiD2OJL53pUbPQoNBq1DZNeRxmYY3BLmcXtqx2hgqE67ZY++234qT0y0XYFNKYCYXEmupNJGykB/mvBPvwaopMICMYhwOE4ceKoMlf0RyqrM9tDo+nCL2bBE4s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564340; 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=h9nk6WX+Se3SImUq2L5kQSasAq92EvTsEvSd+cK6v/w=; b=ly8ula+6AiooCMnydKyd8wX23XoO8/0il5AXyeCyHopX9EEmruspTlK3wxdYFS4YWBbhcNiAdyy7zCGUcV/DmH9GF3lM1TpgBNvDO+GSHwIqlFSIVATN0KoDxZSiHX1/A+73ELO0D/EOE8jyejsjueYox1ZWOaugfWqr9K9LQPQ= 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 1789564340544959.1234676367395; Wed, 16 Sep 2026 06:12:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKb-0002f0-UR; Wed, 16 Sep 2026 09:05:46 -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 1x6pJz-0001bL-JG for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:07 -0400 Received: from mail-oi2-x10.google.com ([2607:f8b0:4864:32::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJw-0000VR-Jq for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:07 -0400 Received: by mail-oi2-x10.google.com with SMTP id 5614622812f47-4b37a368895so566879b6e.3 for ; Wed, 16 Sep 2026 06:05:04 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.05.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563903; x=1790168703; 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=h9nk6WX+Se3SImUq2L5kQSasAq92EvTsEvSd+cK6v/w=; b=RTCwAWJcLhqMLjkus0103/C+UTK4eLsEiTEVbCe/Bmcqfmv0W9iZZ2Z7D8U11CFhhv 7gpvm0YQpZIyeEXgjVeAsEGq6qWYPUbQ8KaZ8ntHy9dZIrFpkl/zR8QLNo/K+DUkCX/s azg3CzoutnMa+/08H2defb+E5Z0MAm8cgMWfQ0RIU6+oPB5H4j2VupneiovUZYBM6UL3 GGuzsJfD2SUfQBMcveJ7XhbInv+fpo//g1fbh99KumToi2Hqtp6ejac5ZR3BCxL31/Fd QR9sc6na+agwiqGNl2xIk70ks71NKwFazCfERw0izCgznpLuHurTVNnVxa86mHMTZph+ o5rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563903; x=1790168703; 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=h9nk6WX+Se3SImUq2L5kQSasAq92EvTsEvSd+cK6v/w=; b=Wo7WotRoQ6x+3/2ZZeqyT4pEE1jD3c9XSyz40KtUdZJD12egWGOCQ+hOfDvegeUVZc iG+qZsEcR8494ENjVFnWTApgOyB0yVek9kAB1RVkehE+Zt3jdUGEQTPt+vgQ/CukBYUl 8Egu7eROXP1IMqz7YksFBuj4gXraC3ZJ+z2QNfN++slJhpadc7nY49nkjvwr4T5z4A51 ZPmYSUfswR8XdS600RsDj90UF3k7MRnddWTZ1B0Ez1P8MZQY5oPXDeZGDufe3zHTtJAo sYMLFyVdzJmi9XPJdaWcasyIeuIxDT3/enAetQ0JlElr6FRMf6XmtaqkpQViU5lwJmMp KDmQ== X-Gm-Message-State: AFuF++m2DAXWeIppga5xJjb+gCLSoiWWtlHmXBpAtHG2WMARYIbTtu2K sIl7/NXv+iHW5McwORzODJsB7pGghU5qy8p5A/hY+PFQvwj0v9xZ+VmX5Vp6dTqwC4nlQDkpRYZ FZadrDt8= X-Gm-Gg: AYBFou19AOH9+IqTwBIzuH1o6NAWWo1m7SBxN9iM/bwmD+Xpd2fF+TpxSnQoKN6pNZE nMJ7tX58pEGyLal/CLm8oCSDFZvo9441Rnuvi60+gOq/rzD+TWpP0HnL0OFmlu7/KXnofx6pzy7 hZhsciJRb8WJW4CRoK+HJ2jS/XUtR3ssUVGREm+4Emuam8ezS5gn+uwIk/CqnXFEMNPDIuf80Zz KPJXxf1UBukz3kqQWMpYYkpfvEXK9yn5H9R6SzkyKGf3fYYI6P5xxCSIBPjjQvMioV/v4pRJMJW dmFWcga6AXWy1gME8nsHnz+Hvkx4E7wxSVDY2i6Gr+/pfK42evuVvsSKlgM9dJ8RK2fUzlMUT1Q Hl2CpRXk/A5W/F3ZvZgGhIHWiqEVu/4ulBwmvfhbKU8A07+3x81F/DzhMjCM0G/7HdpBs9/iiP8 NL3Z+rH2f8yEjNiHL4d4E5dR9w8iK2o7/cgjHoYfbK6O0QZ9fALV43DxegMdRLTqlVKVceEm1Fv rx+Rc8= X-Received: by 2002:a05:6820:198e:b0:6a3:1dc5:3570 with SMTP id 006d021491bc7-6c7d3af807bmr2457931eaf.31.1789563903119; Wed, 16 Sep 2026 06:05:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 32/92] tcg: Generic expansion of tcg_gen_rem_* Date: Wed, 16 Sep 2026 03:03:07 -1000 Message-ID: <20260916130409.3382710-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:32::10; envelope-from=richard.henderson@linaro.org; helo=mail-oi2-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: 1789564342346158500 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 2f8a9f48eda..6223d46b199 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 a6b7e68514a..7b6eb9a3fbd 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:32 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=1789564174; cv=none; d=zohomail.com; s=zohoarc; b=AzPkLbGzJm5Nrig5BhIKYxxnw6a0qWGYXHHRpmOLzQwuhb91lS/wkjaT1OIWDzTd6RM51mbZYp1+Q0USV7LEoT4261qoXAbTINsukB3A+8vviNk28Qm2rLhOhQjleLVnrnRH+8oRpd5910e4pVCNYGu1fZ0nbgRJ7tnfOX8AbHE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564174; 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=0qud3ViN0qLpjocCia/wtCVduN1uZ5G1LgBxCeKJTWU=; b=FA4+rB0cIZpcCzrdgDmi2OFSh2AAQHoeHX0xQ+RmZ60ag4wdD+c3EA/qwZWs6yy1l5dAGcAyWchqOtH7CVK3MG3VVvm96oUhGdRYD49UtiLOzOIkU9yMMU3gree9VDDlEwwRl8Rwh4ixu5IjvUMSRBWkiO8fFJ+FT2IFtY6HNgE= 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 178956417463835.59089214763026; Wed, 16 Sep 2026 06:09:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKa-0002UX-Jv; Wed, 16 Sep 2026 09:05: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 1x6pK0-0001dD-4R for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:08 -0400 Received: from mail-yx2-x10.google.com ([2607:f8b0:4864:41::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJx-0000Vu-TQ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:07 -0400 Received: by mail-yx2-x10.google.com with SMTP id 00721157ae682-85d45ae011dso7630697b3.1 for ; Wed, 16 Sep 2026 06:05:05 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.05.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563905; x=1790168705; 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=0qud3ViN0qLpjocCia/wtCVduN1uZ5G1LgBxCeKJTWU=; b=YKRfFe/RpBM4WOGyIKORzZuRbjt0RFZdSKtpSB6bsMYgRX3nsEWPAiPkLBaQv81pGp pNJyaNGRDpI2Si4YBApVkNCEVAwewFT/ch/TmlIBxOawX4I2YxVlMmKxMNQxUQaBtSNP qOGDHIIzjF/Yv/L0FuSoZ1kEuumxB0FMqKFqciBve0GiXGdHYlZXAGICAm6yd/kuv03O goZ7KAOFeifbCfzWAxjvpYM8M0Bd37hHG3axts/xoIoqCQ3sxu8E0FT3Pv/J8oXYngU3 t0yfVtUDtRNY43JpMjjlMm5XBV9UzudtmXnJiKV/3npKCj2Vzns+sJgWNbsBlyJU6jkN k1Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563905; x=1790168705; 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=0qud3ViN0qLpjocCia/wtCVduN1uZ5G1LgBxCeKJTWU=; b=n8Z0lqlPj0F1BXa+pQmBpDskqR0Fe0ct5fBW1t3uRg6mVrIr+Ltc8nzFV0NMNZbdt9 9E8vGlL+nimX98M1CzX/ao9Ygt2aqlOIJ+X1s+4BnL8oxs1ESAdUROLaC3O5ldlY5Wmx 9l1WqALuInzL6SoQT15HjXBVn017TcPiLGShRm/G8PWZGj++q63+350G+tv/HsfEeFdN io9KUoQ2PnJiqShW74lCrZk6FPLbT98GlbcdV8FTNilwVQ43rqq3S4+C88vzDgEh4EWC wCecpB+GS5NCDyj5SQTtPUogmq70/ExFsDveo7tFpLegjtS26dAiGvKSC/jqJbOEG2oj 6bTA== X-Gm-Message-State: AFuF++lbayPRS5++6oBgKxrYKZ5tX8DNdmKEXjdmiEakA4yu82adg44m +9OprbslznpVsVn2uusgvn81MqPUsSTs161xFmKA7mhWtskemJ4SUsELOMH7C/c9hbKuAx95QLm eHq4YaBE= X-Gm-Gg: AYBFou3fQ5b8l7ROX6x6bbSO66B5ksy6hpPxXA6+Gc+9vcB2Bj46ccWPgyOrkrhZDd7 WOh+m+T1EElFxZUC7Tz1953m+qEVRb25oQhWRop7qEnvWzo5B/XOcwc965QjSndCq4zvsGCag6I A378jJ+PyD5sNr3b63fcxs3RIil7qepvk0XCHJl8iuI5LyAh4Ebc4kHSME2YkfOVfC0K+l/Uxni 5sUzT0amg5yGh2OfA2iJ/hjKL0amh15tGZ+lwvvEDTECQLjbWegCJbRG8hc4lj02YB/tipcQhVH trqfLtvbSqEdb81Fs75fu4IWqjakcG7OtVeNXZ7nRWlugKJkAMYZQiew7f7bXpFQpzHTbFa6Dpo t4Ru4tyk/VLaM5qzO0vb0dMA/RedD8jbtvr7XD3MKXzr7X1nNtEnITrZmVAkZgLAOlzi+aKSt6U XCjHps/vCkkyBH885nwwbxQLeJF2s71gt/0yVVCdvg3jRC9ul6K4aWzwlq8KF1WcQ3A8wmSH/Vz Y//yeAg X-Received: by 2002:a05:690c:a7d1:b0:873:5bb2:6c2c with SMTP id 00721157ae682-892292a7c99mr5314457b3.51.1789563904706; Wed, 16 Sep 2026 06:05:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 33/92] tcg: Generic expansion of tcg_gen_divu_* Date: Wed, 16 Sep 2026 03:03:08 -1000 Message-ID: <20260916130409.3382710-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:41::10; envelope-from=richard.henderson@linaro.org; helo=mail-yx2-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: 1789564176849158500 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 6223d46b199..05b4bee34ce 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 7b6eb9a3fbd..cf6904623f0 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:32 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=1789564136; cv=none; d=zohomail.com; s=zohoarc; b=DrCZk2OAmkR735StXFjbhY3eBcZzsiwq3WZP1Li3KrSaFTnwLmLU5+vrMB5/NDvH2nbiR2kFSU3L4d407Fv2/XzLre/0Yz0xsmL810wh8mgzyH/8nHaCV3e+CTki3JVq/OcqnzMKu/uek4MjQJmvDC/luqhsVqyDtFQbpt0rx4k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564136; 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=hqIvAs01/tzFxnPBUZbWfplwXnefzCiy3X4W6ix8rE8=; b=VA05ceM3rBOyRlfISX3yKKNGhbnQBdCiJEAPxXCvDQ+n+ZHZ8cnb2GEJkx4TGXokMyw4KCBOvDKSbARiELuyYo/bdfFkNxSCnRG2fSM2isoJjXJXjCAJTnAJ9inabaB3OtHxYqpUpOK8SwLgeX81VcChe/0VSJQ3savyxYWFQXI= 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 178956413683499.31766826777891; Wed, 16 Sep 2026 06:08:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKd-0002n3-Or; Wed, 16 Sep 2026 09:05: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 1x6pK2-0001mC-2p for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:10 -0400 Received: from mail-oo2-x14.google.com ([2607:f8b0:4864:31::14]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pJz-0000WE-NB for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:09 -0400 Received: by mail-oo2-x14.google.com with SMTP id 46e09a7af769-805bf8c2661so661819a34.3 for ; Wed, 16 Sep 2026 06:05:07 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.05.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563906; x=1790168706; 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=hqIvAs01/tzFxnPBUZbWfplwXnefzCiy3X4W6ix8rE8=; b=zp2lFmCZZ3tcigInJk4chxONPZh6zt3jgizQ+U98eGwLoQSjG+8oZsJwHjIlJQbmBH 9/n0aoVR3wbF6kzB0/wWNiLJ+NqmH1UmgPts6t5fjdR8j12znHO5q8qd72dgp0E40CSP gu6/ENBZEibLpx02LtyGnTEiQlt2fv4bS/Y5LejyAYoBjo5SU3jXhQs0HyN2O87ruyYD JDXqQuOx9YflbnQ0BFwQ7Ak5TsHbKYkdPzQy+3zZ699vES4funM7JgRbrHt6wVnQzcnB gK8b00Yp6WxDWIo7rHWXafuFo6t3AJiJHPOmz5Z5KjAyAzl7f/2Se3lzUToEF7IwgXP3 cdaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563906; x=1790168706; 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=hqIvAs01/tzFxnPBUZbWfplwXnefzCiy3X4W6ix8rE8=; b=RyMN1g38s2tIimQ5lFkJnmyGiSKmfOkLXJhn0MKJS0yG/4A4b+i0Gzg4+bDY964C/i TgtfQDBa6YVJZxKbmA3KdrhMnXy6oJDRIoyUtsBruZhlGCZNDiR0qO0b6nRGvksJzuFy B0h9F4b8bBRDCjtvvVfSiHCZyG6itXRQwxqtFNlUuNvB39mLw5LmJAMOYZaC32u3ZYU4 2hzOT0zblYjBRYPQOIQjKUTzyBGwwc0Jv6p5VVhjMMhfItTYf35caSnTbpk/j9i9Gh0w nqdu1Bn+er+bOLxF1mmi2YOeIxm/qgGL7Ml//QENhoX+RlXv++D9HaxKkcFiwEa8HxGx sLUA== X-Gm-Message-State: AFuF++kEtlKb+K4OPaFVeL0hVrcTvvPPg4us9Qr0CPLruGkg1H52KE1N oOy4rbrx3dhaJ5bW8BhuqCcMYqoMI1ADLaQ5krYB0XUHZjQyn8d6bp2Y2YWq+b+UQkYAWpLhwRe ArI12cqc= X-Gm-Gg: AYBFou3el3t0z93OgXtMN0INsiSU4vHiA4tR3iokIRSgV3/FOnkLbsHLkwBNE8wC0gq wVm7HwN2AXNmstCK6cuv/SWPAY4SnqW3O1UnIoqSlh/jKuiqKTEXCUwX5SDQZwDXjn/mNyqtpqw 5UzgUn6Xk0ugjL/kWFmpsYTm0pjBuBv2+R6mXuevPOy+AqtayK8wgVGWSMinST+d0OakjidswC/ tE9qWrd1MtJspM7nFio9RQ1E/pZYs9g9cXScZdiOLVcCwLEGF91A3OFb3zNmkJP3P/uXF7gz5V2 FzXczHr2prN/yPOtmLcJ+Lz8uyGVO56knoqyyBPBB1CxJjyabvsWExl7TC3BV9EfvyCvNZj06H+ 3/SHAxkVy/oKYWDZic5KjZ4xedCu+UjT2h9XpEOhZFkFcoKqk1MobvxrZDrLQCazzF50F7OGB/X Bg6o0JRC6SNZ4Wg8UjYKY2vnDninBcLLTlhERUen/H1ZGhNfyn35ZKtX9KQTEI8m92rNSUuKy1/ HM2xB0= X-Received: by 2002:a05:6820:820:b0:6b7:46fa:16a7 with SMTP id 006d021491bc7-6c7d4cf4cd5mr2324675eaf.60.1789563905823; Wed, 16 Sep 2026 06:05:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 34/92] tcg: Generic expansion of tcg_gen_remu_* Date: Wed, 16 Sep 2026 03:03:09 -1000 Message-ID: <20260916130409.3382710-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::14; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x14.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: 1789564138714158500 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 05b4bee34ce..f0572df01cf 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 cf6904623f0..94cdf7a3c75 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:32 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=1789564053; cv=none; d=zohomail.com; s=zohoarc; b=KU1lNG8bKV2UJ9XjdCTrdhdkpOOvQWMPOFlq1keYLGVZkDtddCISrPvvBCtSe9b4eNurw4f9Z2VAV2hnky21V8+7INBwBAu0i0fkqeB5MMfCeHwBKgjNL2Avc24dbUXRSkZQhySJrkOf9krRN5ft3yLmxscPYdvw5cz+GXGeILA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564053; 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=bcbj7XDvDJiqQ6c+Gh57SWm8p8v/ikVlu2ooEFzrzEw=; b=CLAKG02YXTXy1oClkbkIYoRH1l1jQdw6QPPsOUak0f9zcJjRXS8hlAg4SmRNbbuKdHzwqVxZfgatdsgypOLfZG8Y4w1Pl2nfBLKn0Xwtv+cC2ObFM2lyb7p3ehbk+v89WWc1XVhBTxj61I++4kaem5zlWEZJREbWTUByaldkS8k= 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 1789564052998231.5012240946345; Wed, 16 Sep 2026 06:07:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKg-0002wE-B9; Wed, 16 Sep 2026 09:05: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 1x6pK2-0001o0-UW for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:12 -0400 Received: from mail-yx2-x0f.google.com ([2607:f8b0:4864:41::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pK0-0000X2-S0 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:10 -0400 Received: by mail-yx2-x0f.google.com with SMTP id 00721157ae682-85d440939f0so7013597b3.2 for ; Wed, 16 Sep 2026 06:05:08 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.05.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563907; x=1790168707; 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=bcbj7XDvDJiqQ6c+Gh57SWm8p8v/ikVlu2ooEFzrzEw=; b=QRVwm0p74Z38AKVw42mJgcMaCWNz66bQMI2IGQGrEfVaINANdVpK4gp9TlQYmpR+e/ lnonUWY8lMWubyXhkURX0Il+Nvq41aTQT/QfiqxaGGzxyASMK5JJIjGpJatp7wI8hNsf GgE1Mn67SGw8QKQXE/oIdH3bmz6tavUEiuWlcboMLFAZxHqGUzINJZVINIBg0Wa53Fl/ oPJDiBADE+WZ8YV0qnMG/c1u8ywo3MdNd3vrk+dbHF/9clmxZv3B0Xi4opUVPQmLMf6r aApyTtxdcz74eqhzEU1poRJVsnjmjKcEvv+6TylHhi2i11SkpYozvIFzOoKd1JWHUPVL XX6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563907; x=1790168707; 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=bcbj7XDvDJiqQ6c+Gh57SWm8p8v/ikVlu2ooEFzrzEw=; b=bgXjBxiKPa1SBNScZ40W/Po5Hdh0Jgw7ftirkaP9nsJZV9qmiMufrPfwVbi4yYFBvJ reApCEvZJ8mK030uMPoXJiGzS3HyPMykas8EBW9EyuCkfsLD5B/UlyHlODGMFHjfyIX9 8DsNP7NnEj7iW1nKX1QOH1a2tVb3+bqt+qiDx5x1eLwfhXEOXsCsuPQ0+8qrzjCsnfyq 0ivkypRCxybvFtQIEzi0lKuqv+1ASEh7rrcI4svVOJJloSpDAKgXHJ0DMDoebuZbmILa OSMirSlhrHu0q7M/BmJjUxfdavrBvGh582+WYANXO0m6rcdYk5z7aPmxyBXEPaa/SA0f ymPQ== X-Gm-Message-State: AFuF++n+tNO/TzLeEVuX6GcjrpEpRVwXAVrRIHLMxS1fF0KphNuMBqrS 6dtsPPyxO053JBlgvRblKpIaNUo2K2G0YhBlWpaSXVbQUjRjiDusPI0iNr0rYcsrlXyNeDRkcXa w7rCAmUA= X-Gm-Gg: AYBFou0J789N1x3puHn1pUVc7jbNdtA/KH79+TMA/mk4PSZTAIbvRm4mBIhof6HbwP/ QaheaSOCrPOd/zj/BaJ9MgEtjiyS5N01A6obccz8ObWMHPhLwSmQ8OcCus02SEQs5sZqMNdX7lq 3KLLuif0L77xgkpQXfry05cEX9KL+SMECTsMD23G36pdRdBFr9gLBHAS+/uQr1Eoqo2sJ5kG6gh Nl5KD5audX83H4Jrv/VjHFU6Q0NN+6TpK9OHmoZDZ1EIC28fsuTikX6UnsaX7HkCon00EmT/yTC CS95yHN6Q3p2wxpw/jTq3IyNaRagS4b5Pk+NC9xG7QfidKeBtdMHsep2raHiVkh9T1/msrtm7sx hrVmw0HQKcLyBwqHv/megwu2xLqP1E+cwHQB3GSJnlns4/sYE9+y8QWnc8dSRmy9t+ht6EKL4IR raatdE3gojh61+InYFVNiQeyugtjJV7iBXXUhAEgUn90+WLOOhEeH35xjtyUBbPMpjOL96lBRA/ 1DXY+0= X-Received: by 2002:a05:690c:288:b0:88f:571:f746 with SMTP id 00721157ae682-892267e8927mr7156797b3.65.1789563907449; Wed, 16 Sep 2026 06:05:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 35/92] tcg: Generic expansion of tcg_gen_andc_* Date: Wed, 16 Sep 2026 03:03:10 -1000 Message-ID: <20260916130409.3382710-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:41::f; envelope-from=richard.henderson@linaro.org; helo=mail-yx2-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: 1789564055991158500 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 f0572df01cf..7517e8d9d9e 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 94cdf7a3c75..12837fc394b 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:32 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=1789563996; cv=none; d=zohomail.com; s=zohoarc; b=LBIRlMoqSS39bPHySPcP+0iVQvpMVvyAl3NOaJjuYw94sGcw9wtnHFXqL7XHX6HflYkBLH0Ik4Kh4zGHhAy9q8n4gYM+PdUcYuk1RoqC8CfFxpKCTxL10UjIeX0pTlxfgaobDRBh+CkWBMoZiLfGQzBVxw7EcQ5YOTGTs4vPfSk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789563996; 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=6ro3HYJ3hdQ6ae4Mr5BVXt8Debu3Ago/nOyJblBRJ5w=; b=Vgd6dVJnkhRfxt+EWUkIP7QR0Ai+zdec5VqhmbiOL2KcMNAIkTt9DH9UDzy04oL776ZSnA9CZ+he/AC63fPXBoD9mxWgc27MzWPZwxgbpH1Hb1rVumZzciJFtY1JzctbrP9Xt/q9gDotAX47SYCDs0tu7PPA/1KYGQlLAwXFGl0= 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 1789563996893962.3916134420302; Wed, 16 Sep 2026 06:06:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKk-0003E8-VN; Wed, 16 Sep 2026 09:05: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 1x6pK5-0001oy-3u for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:14 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pK2-0000Xv-DQ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:12 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2dd68a16955so22301785ad.0 for ; Wed, 16 Sep 2026 06:05:09 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.05.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563909; x=1790168709; 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=6ro3HYJ3hdQ6ae4Mr5BVXt8Debu3Ago/nOyJblBRJ5w=; b=Xlxo6+RtAs+zvqLw4Ryy03ZrdOKVG/9q4eglFRXU+bdhLM9DBgULl66Yk1qowyUJ0W PkK3gzppqglTAFKjIQzY30aBBt12c2q2yeGZZZ284R2H0HxWCQr+JhdhanuUigQhke5Z qFPomxI/JSowv8GpqayTCMlOx8/zBSvhCfWSusF0fDKZiwvXIP9dGDZT1Id2LFpTpOqa s0I+CZ8Gj6wZUfPynX9e+uqXgRLv691KBEZVBZ4A+o9biYWxtwDYl4paIRCtiZgsDYqa 0LMYbXlOMoQNi5NuCd5awrS3+HgaOllL5lBCYZOeaw+uvPpArgCB7l9HkdVHpzRmA9bm Bp8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563909; x=1790168709; 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=6ro3HYJ3hdQ6ae4Mr5BVXt8Debu3Ago/nOyJblBRJ5w=; b=hwHp96q+kH/hdaG5xkrxKqj+bJuOZgSp/oI8a000fsCpsMgkLYcJj9Pc11J56L7dau mDw+yjLFpbWPbpdw7ShiAcW3S0wnyxPJ+Gudhw28wV3U+fRhQzahD/z0oT+CSDEQLhbe h7EkFdnI5T34qN912wsTAYJIef6GtvVrOlQlTIZzzYyIfyn5X1qcj1veRtiRx5A6ixPY 5ER46/zwkH+ArIvvGeTqMykD7xRihG04QWFAvIAADcXxowACDYtoWIh+t2LyNPQJkzyO VSe2hKRax0bp92RtajqJAUI5CT0VLxatLwjjLZpDR2UtAlYLLptI1XrHcFvgraMDiZVy U2cw== X-Gm-Message-State: AFuF++klaaI1CGlnwbfemBfAeBj9khuW31XV0nIGEAGV6f+fOy/5vg4Y JEs+xtqiALDjTtcBJWxW90eigt9IAEWA88k9is7lyV2Utfi6WwATObV9I74AeyhqChEvcQE9XgT SMVhg X-Gm-Gg: AYBFou0e47eaF8LuKWmESTvEGvga+YhDmhzJ5QPzzR91NiyxHg58vcaDNEryM71cHPO haSj4jUWg/7lm14osH1TwGmNFzRYJXKbKkyLa5gLfIyI7n0pjso2PsRAXler8cguFjngs9e69Uv jxWRa7NHCMPgLS0WzVvzaJnk9+Llq5JZKwe05JDECWzTgAu/8v1aIXhkjpnuTIZ6wGt/2vOGapg YmWeYm0kVie/MONqI+gr5dMdEHui3SaB0G/glr3KpZaujfzmMcRzCqB8Cb6Vux5FTAaDaUeEuGD 0o8AaVBDHV7i+SMvzmmsPX5n8+Bg0uerH9lpIkirLtdpYsJeZZw3sEXco8Uq2n7qrAUh6I0Jx+y yT1IYgKd1wVBVO3Le96TWyMY2EzngJnVvQwsf9ZcWGt1XGCeUQ2oCt2N1OAg3bykitc8QHgDarH ZiVyoIbu+uxe2P9rx9KaT1DZTUAkUyefN8o4HjbHkKYdEpzZ3T6kk/aKc74VcHLPIU+/g4dlBQc 1Zmz98= X-Received: by 2002:a17:90b:4a92:b0:398:9beb:a2b9 with SMTP id 98e67ed59e1d1-39dfe1ca2dbmr12184286a91.27.1789563908393; Wed, 16 Sep 2026 06:05:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 36/92] tcg: Generic expansion of tcg_gen_eqv_* Date: Wed, 16 Sep 2026 03:03:11 -1000 Message-ID: <20260916130409.3382710-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.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: 1789563999377158500 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 7517e8d9d9e..fbbc3acad83 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 12837fc394b..1cb450bba9c 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:32 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=1789564067; cv=none; d=zohomail.com; s=zohoarc; b=YcT1iRhIus9XO+Q6vOSd8N+zqUh80DBTpxYcZbH0l/E8sU8A61rHGGfK+idihMZWmKR4CDDyT/KHvwQqfUEX/vZZKr9bbyhhWIrQ3n+Gl9egZUyIG0LqFh3gFEHRnQmELhIsBXkHYCuk0hEaQBhdiM5zWVx3kB0p+1eYvnfW9GU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564067; 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=9f9DyXWd+AEgfGwk8FS/+nASQmdznA6xYwGP3lWH3us=; b=bfSdzel6T+WIUDDUdBtEuoezt8B5ZE7YTbD7HCBtguyXoLF8dOrsEt6jZphiFTaSVwBGxmIzOZleLDLzxpkWZ/qwNbPYQinCHZlKASJIMiYXEaGmZexYQ+ziHTVsIXTF02xoK/AuXEOB4YoGvG8vn8ch+FPuDHjdKGN8M9jKFAk= 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 1789564066989747.4216314113428; Wed, 16 Sep 2026 06:07:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKg-0002xC-DH; Wed, 16 Sep 2026 09:05: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 1x6pK5-0001pH-4E for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:14 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pK2-0000Yc-OA for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:12 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-466cc88a9baso683663fac.1 for ; Wed, 16 Sep 2026 06:05:10 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.05.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563909; x=1790168709; 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=9f9DyXWd+AEgfGwk8FS/+nASQmdznA6xYwGP3lWH3us=; b=zQ9rc39BlhGtAt4u/kAneCYAMzrwREaQOLZ8r1ULbfk99w0XQXN+Nak5LG165dbhVt oEHV9xM6Tk2e6v6bHhVDzuGIZiUWEt2zgnX5eGo662k8zL0fsrPrIh8DBB/Wc352Mmwq fV0vzL1+WnzM8DPO5YtrmcEM3vXiDEiCQ048z9Zti/xagbis8EfcWqMXbmfcwlZiWCXs 8OwptmQiVf9UeGV5VyA3XgZVy33lBFJvYgNimNbq83mowBSl8y8od3CDexNUaHbT2474 Hg3qpL/QXladZgIhocZdeNpxHfZa7KPRgIwM0dkU+LpgyDt3yqcKu/JBdkhiNcInxuHV ffrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563909; x=1790168709; 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=9f9DyXWd+AEgfGwk8FS/+nASQmdznA6xYwGP3lWH3us=; b=K9csYufkH33uYvB71egldSNOOeBhgUFZZr7KKcO3oDM/2cwCIF/Z5wkF64hO05fU88 yipppts5ZQ8sh80M5I+0fXAPvDxCKd3+mkQxyVBgtzDiHjeZdbROLFKCLfFGasLCUKd/ Dw7uqrIPNSdBQ5OaiaEwIEnL/VLROcZTAl66bTjqKZVhSYMRdkHTZaIodf5VNQDXhiXi ifSL8pWuK/t7dd7COS+tpfXdEegIv0bhv1q/gFPcptcyMwEftSmv7yiaVp2Z5BD0bx5W nNOUTDmCWBdbZiGqJ1Kvzcun+saEdAkVfXOfLCKFUQr/pxnY8NbiE0TBJ3LsKsMeSmCY 1LbA== X-Gm-Message-State: AFuF++kU78CZMWzljLEcSmCa8MvCfNsOTIaXTnBKbJGhlhTe/26oCJGy Epu2SiaaBbDePPWtDh66jn9ia+On90zlOLW+57xOXbsaAR5BG7IQamjOyOO5MNoN9Sw39+Ouw5l NBgn5jV8= X-Gm-Gg: AYBFou1B+zW7KTIrAiAlO3vMeSVLG0kEL97YBGGHr7si9+5cv6VBKqAoA7SA6+9OTnZ UH7D1KcMWKjJKBrEx68KHHIQ4nQHeUzfv/NpyWFnLtmcesngJWrYlIkOMUDnBA5lILdLlskp82I QA23OnYF3OUDsD8nM4g+eBqyfEhgN7kjmCgsyKisWz+jreuCqaXgqnmCW1D4hCzILzN/Patkh0X YrQ8pc2KoptmRJ9cPgdPRjxXren1riqoK4IV3yryQJMogIIoLCDBw6SwKKlflG2s0so75Dd1xZ8 bIdV+sa8vIFC8tVo1VJS1oyhq9ndXZYg/eggy667ecYFeMiZwAudiNVBNQ5yR9xfcY0BXyGjdCH 66nEOIKgelactZNS+87VcRTrnnDqFtz22qCpDq7qyKltC1hBvTfqMyKzwKqv+69vDaf35qZfXv9 eGz1bLJ3xfaN2Ja2BoDQl2q2UV/TrhUGIPsyw6S431UUIphChXLwqg0hmbVgKnG8eP3UYJjbiZW KfOH/0yQTNYf8nocw== X-Received: by 2002:a05:6820:3107:b0:6c1:7804:55ec with SMTP id 006d021491bc7-6c7d2df9183mr2470331eaf.44.1789563909388; Wed, 16 Sep 2026 06:05:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 37/92] tcg: Generic expansion of tcg_gen_nand_* Date: Wed, 16 Sep 2026 03:03:12 -1000 Message-ID: <20260916130409.3382710-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564068347158500 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 fbbc3acad83..613e844aecb 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 1cb450bba9c..f5edd77602a 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:32 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=1789564216; cv=none; d=zohomail.com; s=zohoarc; b=QEFl7fmW2E5WQSjJ5OsGyTHbU4SPO5sTHD4Crs96awG58WYC69AmfR3Tm1nsdkkzMUAfwtkSoSIsPeQN5vbraREK9vzcYJp4nhSpwC6GkP3wTMBSLWw/gpLKwW0496VgqMaYFI2zxwt+wD/71TLEUmT8FJ4YjchVyDQQlgQKc0A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564216; 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=ZwfJtJ3HSNv234iEr+3vfcsQw2Bq02W8dccqh4RK04Y=; b=inkZtnYSDnwVGqorI4WxBw52Np7ebcznP0aUYdcI+FTVI52o9Ry82tyTdi6i8LtWK6CF/n9BW2Rh6O+ujjXpyYMPuHpWEYZWyB6Dwdk5Be9OIknePy4dchT9fRsdx2NpCHwYQKkH43lAN6VEI/NlxhWkHnwNxjxtcpwZE/XbQhA= 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 1789564216607835.1648128293067; Wed, 16 Sep 2026 06:10:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKj-00035H-03; Wed, 16 Sep 2026 09:05: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 1x6pK7-0001tv-18 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:22 -0400 Received: from mail-pj2-x0f.google.com ([2607:f8b0:4864:39::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pK4-0000Zf-Ow for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:14 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-39b9184fa80so807513a91.2 for ; Wed, 16 Sep 2026 06:05:11 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.05.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563911; x=1790168711; 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=ZwfJtJ3HSNv234iEr+3vfcsQw2Bq02W8dccqh4RK04Y=; b=yLv/plQ8VP9Vl7aCS8V+4zzXuZpHHnv1mmecWrbi5BSqVrEZWLBkSlDwsgkVD4o8Wf v33t6E/aV/M2BY2AMnGacREkatq4P7r+N7feaeGK3bN+TxZ+rN2ISWNKzinOtM6Qa8Jr mo2G/RewiPcAkgc8uTpMg8zVXtUD0fXjUJz4k5q0XA4vBIBp3eY56oQVykYAhIry6MwD XSWtLNFMTzmFAHJ24zJcvaZRRlzndQf76+kEMLntYTjddeoakDII5vAUsNNRWQdh2H+/ H9lxwF7h9PNg1cfIACnxtOB0VXH5vRGB1l9XwK21BK0QCzyXQKOzEKI/SA59iKaPjSQb BhQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563911; x=1790168711; 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=ZwfJtJ3HSNv234iEr+3vfcsQw2Bq02W8dccqh4RK04Y=; b=x99MYumlAsW+PNqw7JGB/Hp5XHT/x8ei0g7jEiMnylsm+WGCAa8qtrbJoWBXHO4ISk KmdYpLtqXq3/y8S8yjil+jC32GkGakZvXAdZPDEyOs1WSC0nHHWM1a+6HMf/W5CvE9jj 3aF0UCZ8sdJeOVq0/THFsWSAs+xoZwAeriTaWdMAojQNYW+3PK3ulZSctftW1KOEibqX jkv9m7nige1alIkYQwsaUgQ6CfEQq3WazOQNuK3wKbK7ODhj2DRXbYVgCg+MJmI5uupn YhahYOi1gOPoz0Pfw/E9lpe3K2E9aChBjyr7SnM8+5/SmaltfsZfBhtTIZH7/XsgMIrm VlTA== X-Gm-Message-State: AFuF++kLc6CgzcIJGACcezPEauwM9u4jiOd8gjxFCMaWw7i6AH49q8Hw 98nKqvTb84yqoiW/6pI0Hau4qxFFsExMqi2tnw1C9FKDFfIapN04sHIRNPEof7Ptmq0dEMkn6ux XNAazqIw= X-Gm-Gg: AYBFou2Pz5tpI6WPihLUKpFhPnZ+/wZoSTJ+p5b3wqTTF6Vi3tB6GzMrUYqOLSeKgvr M8jaHtzH/lrJYBxqVio1aW/Hgn2/H71tSBtBaE7qAQWHcea+GmI5BiEIet4Jxr7OgtBBZM9amU4 ZU6JjYKAws2Xsn9DS+7Ip4cs3Mb3/1vNFxGfNEFWuAp6Yr0RdA4AqXtUPC2Q8CRkhnNN5LtSkdZ pwb5lpauewu8bPqBUzxhrPwrOUVeX5XB//o9GgJBom5YtUKW95J4d6M1+EHXpqlKBqNlEshDjZp U5M72DI2QF+pLMpMQMamtKrPVph7p9VzM3dIhvAKoal0CYwufsBGKDT4HnSFzwjW5troKF6n7qP AfSpXEqutFKCPcC2Q6XP81mDui5CnOsVz9fXUyDa3CxsGysIkrMH7L9zYPbrW7enhN2bR/n+m53 H2uOt039BWQnoT6IbqQ+iE6XYvjIXLcKAIOlUbuXP40brpVs7RIwxPyD5g+lWCuPPr8EdilHsyb DWN9yI= X-Received: by 2002:a17:90b:2f0c:b0:39d:f08e:e6e7 with SMTP id 98e67ed59e1d1-39e1e308bddmr7165019a91.9.1789563910388; Wed, 16 Sep 2026 06:05:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 38/92] tcg: Generic expansion of tcg_gen_nor_* Date: Wed, 16 Sep 2026 03:03:13 -1000 Message-ID: <20260916130409.3382710-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::f; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1789564217476158500 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 613e844aecb..1fb10ffd804 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 f5edd77602a..edc3db83df3 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:32 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=1789564467; cv=none; d=zohomail.com; s=zohoarc; b=iwBh3qg4SzRb+U3wJ0sDwZWW7uMfgG5d/xF45YNb7lZWtGGNRzUGelRiLjjWMTWvLYo3o1X/XD4HdCkOrzbeuKobowHUdwgpcZBxqAGIr0Q3iUFWctclcDoPNRSupl7F4yLh6291XIsgVGReiCr+KCPaOG9c2JkDDu3T8ezdFzY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564467; 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=qvJBGaOSccZGmol6Ivf9fbHRDjhDeRvcxgwlCOD7JEA=; b=F5r3bR5gCPvRv/8yTGYZ7b81V33TiQboW8iiCk/NNtxzq4tOU+VmkJw2HhIjCbMlKl4D6NLCC3SFAH+ZZ0cZDdDyyogYzCYdHnKUyn0mavjqzWGvX0n1jsYUWfEybSSPh4wiZ64JcWHQ3vbdXcSlUqOqg/6mV0Ue+l5DeTblfhw= 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 1789564467048467.96221776155096; Wed, 16 Sep 2026 06:14:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pKi-00034p-D0; Wed, 16 Sep 2026 09:05:52 -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 1x6pK9-0001zc-3X for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:22 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pK6-0000au-MG for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:05:16 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-39647aa9d52so2254141a91.0 for ; Wed, 16 Sep 2026 06:05:13 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm6337196c88.2.2026.09.16.06.05.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:05:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789563912; x=1790168712; 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=qvJBGaOSccZGmol6Ivf9fbHRDjhDeRvcxgwlCOD7JEA=; b=zaURcFvraMfhbOwTcLBdEhlbqHmUqo/1L4gD56V64R+eKVZXotnMh0oEEm1TwtdlYR CVfbpInsbIofjU60IvJeLvVy96TpqhODRuDn1UkHD20Um0Dl3d7+IhFcyNY+mC9l4a7U 7buBmfJ+MUWgIWT7fc8qzwl3S95DTqmzbQFiVy5OCSvS9GwuzQ/gJtUrYsSKLvax9mIz iJUfFxS8FHGIwpCV/u5hvWJF6vwqXhL9vVXwj/y0ot+MpoX43lF4jBeN6Qukd4iwDPsa GhiZsi/tEy+yEp+s85tB/tHVA2umhDNfHGOFOIp6H7xcRSZfnSCPUweTzdTYRQwYLvzg 4wrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789563912; x=1790168712; 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=qvJBGaOSccZGmol6Ivf9fbHRDjhDeRvcxgwlCOD7JEA=; b=yXiOtoFay4ilSjwu38s7UQxjTRfy4585vFegF3h2FQ4MT5cM2p8VrShauUyYPYTdim PAHa4AoMkx8Y9Eruu2UmCSbZ/5fdyece/KqXbf3wJOW7jE9f8RABYKHD/Yr20lar9+lc A05xB984rixX4J7WumDsneWn6xfQzkE5gdRISQD0zQvoaJDUk60LRQfrcTfFmcS+p0VN C6ZcBBuf47oHh1h2jMoPEk0wKGxrfovtFM1h73nxKX17kaOi+XHSbSUJRl7hcdvH2/hb dpOK99d2YWYWBhwkxQ68jTYObC+HQCjm28hXm8EDP+ZYYlJKOe+NBbJFG7LGZDvCQQaE PIGQ== X-Gm-Message-State: AFuF++muXCvQ6Cs9MUUk0eN29LvUBpU8U2IMdDpoRKEbbRwlLAdolQI1 1vdAJ2AbOBKmLBSrYvcvR6k91KaVdf5Z3lNCMPGG3O1pDzG2DDtykRhuLg8A+KFt+7uZ1lzMS1y chbVXrGI= X-Gm-Gg: AYBFou3x0kBaIbgUR16fjVC3mXHi4OuSnKVg0jL2gRqDNmLE+0LU2+/12q5vdQYN+K8 xlHOVvaLUiMM6HlA/dKmqyLrWq0WB9oD2QODIL3AxD/FlHYPhoHGk5CvhA/EFen4mlIppTn1zYK A2ZvTmy+ZG7w091qRcOFp5TuBuUwGP7va1Xnp3nICBZtYXSVubYeDtVyRwSS/Thc9cAtUYICX8j SX1sduJjEOp6198kpI1hQ5mFgleWEWPDQPke/yIHTuGxCjBy++vPTe82lIHLtym/pUfZqPVwHj9 gG8lgFDi1reAKSU9+UuTP+HWwW9i29v09Lhh8C55C/GiyzRM6s28tQpfgEYYfx5hefzlIEkUdMx sbqXI5vNDJHk9O8G9g0yWZ8moJPx4Fy0cFwwTvUBvcZ8NskEuq/exe6+ihxetkpav61VW/BH4b1 dfkE5yZ52Ljp0RmYFbg3qVn1F1nNPTjH0y8+kKG0qOaXYqEa3pBiW6qgoiEDSeLW/kcgJV8s1Hi +C7RqU= X-Received: by 2002:a17:90b:5650:b0:398:9beb:a2b4 with SMTP id 98e67ed59e1d1-39dfe1c41c5mr8879375a91.22.1789563911503; Wed, 16 Sep 2026 06:05:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 39/92] tcg: Generic expansion of tcg_gen_orc_* Date: Wed, 16 Sep 2026 03:03:14 -1000 Message-ID: <20260916130409.3382710-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1789564469168158500 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 1fb10ffd804..a5b9e0da647 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 edc3db83df3..0ffe0a9930d 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:32 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=1789564419; cv=none; d=zohomail.com; s=zohoarc; b=IbPolGl6k3TDTviAcEC8gnkYmzVrztBKTSdvcxFeA637fzWMwm8hqtQbf9DifBQOyLr8PQl5VrQcAX08CkWB+nTuX8hrCK8NOmHvDWyxY8TtHnnD8jkK1E9Ik6afGKUs0nsf6fWgAqGR70lWsvOxSIR72eYLnnBKFMRNOv2s9j0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564419; 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=5YwEqAnTwXouhUTGoTLTBaQPgwUnM4fIITNQrPPDRcI=; b=c036WW1ORzEFBgRn4UIEZSb5RrlSCiZJ7Kgf9XtsqSFKVW9dLFWd2ms4RS7ioDTthjC/egT8gY0wN4URhiEs6asE5+CPEIFCWzK5VOFqWlGUhXdHE5G78jOpRb0pRslQu/mBzP5IjjSZTpzTUvOpl1znby0uJ0cVUl9xoUd0NYY= 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 1789564419503530.1266892644087; Wed, 16 Sep 2026 06:13:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNW-0006sF-E9; Wed, 16 Sep 2026 09:08:46 -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 1x6pN6-0006j3-3V for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:23 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pN3-0001OP-RX for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:19 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-cc502a179c1so1175332a12.1 for ; Wed, 16 Sep 2026 06:08:15 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564094; x=1790168894; 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=5YwEqAnTwXouhUTGoTLTBaQPgwUnM4fIITNQrPPDRcI=; b=NfHjY+bzkUsjCFjWsxuKLLnJL8eC2mgQ1sI+t6wGn2THkftQE1DUyVRoR/FlrGJhaq FrCBF+9aXpfucgH4LAC81M2ymQfgWAbecGknDFZq+4rbRFRHlTKLNRQ/nXFDwFBn9QeX FxlM2NecxYrQzu2vtS6L/1qggszgwlW4FUrYh2MEvdIyB8QHqQW5SQaEypmVialZqAyq +HZ3Hx9qxfJo55Ux20muxl1nrnBBkO1GhPav9bdSRNfMHBzB5kwzhRt0/A7sUKbGstLK bL3mteAYbea4i90zZKgplImLfMbIF9+fHaPm/mIw9jKKJpLhnghNSdNqtAWSe/vhEAOe aleg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564094; x=1790168894; 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=5YwEqAnTwXouhUTGoTLTBaQPgwUnM4fIITNQrPPDRcI=; b=YvYpyIMrUWz17TNp80p3jo9jXP2x8lm2kNAdI1qGukC5iM/N+Oevp+TL85qdnyFfKP yab+JwmqByAgJ0crRV7FCSDP74Py+Bx+Rau4OPjcR8CmhncDNXTiMk87ul50IjcwDgmU 9+Rbh19/IxzjvWJRnmYcv+w0GMBXEib53LQETFA1qpdLkOwLESDO28WsMCPmTsfwEFYJ H6yhPFiJ0S8oNt2JOZpYSevPP0bGq8c97lI2U8Si+HVkVUTIWlW8/jXGxst86OF+dmc0 HzR4WP2WZkoCKS2T5U8MLVjdi18mX45b5pnLej0hqZbzRMfLzvbA3X1IYgafxEzY7hUZ PfeQ== X-Gm-Message-State: AFuF++kJWOGHecScJA3Esmj6mUa/bV+S6N9TOxiZ3pFkp/nvVRrXgOA0 jXAS3w4Ex8DJTL11hJBHG/Y5ulTm7VJMIMhlVSxmvritoPiGU1MajdFvNID7DuDREKGCuLBnh/W WW8Wn X-Gm-Gg: AYBFou29esylChm76YfSTkDW5AbdnKkZhB9VXVYb4gGPfOoZH6QYn+ewnOK3cv5uoKK /XTrfFbD620f0iPJzxwWRCqHeti4ePZ6yxWcQMHgwFWOElq0zTEzh3CrmIqyD0SCBAiQbu7LC0L dthny612W9WbEgJJbT6MpYskTi9zXwsYglQ1D+Avv1Zbw55jjdzZeYQZqkqQd6EohFxu9iD5MrY spuv5ETPZYET0kdQvrlhbfWwef3Di8KOuoLmhAHThPMocgfCKIkGZj520S3ZR6L3Br9Ho3mRlqR Tkxou8TZWa//fv0U8BYUHeGdJKMoLHzY4zFifHvqp0uRQTb4k96rH9dUMinvqUxZts4bCBrdTN2 +gsdPIZbEg1jPYG+iT31Zm0IDa5NGN5Dr1Pwl3lifRR39pKFriWwT7Wjd5Yo5NC9eJKsbWqB1ZM 8Zl00iEl/dweqgilxQWuUFxJIbzJgeeRgZBY5QP9nJy+nfUoRWlM0EyMLuWdP4ukzQtr5MOf+YE eNNbZM= X-Received: by 2002:a17:90b:33c8:b0:398:c6e1:dceb with SMTP id 98e67ed59e1d1-39dfe036433mr12183997a91.9.1789564094006; Wed, 16 Sep 2026 06:08:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 40/92] tcg: Generic expansion of tcg_gen_brcond_* Date: Wed, 16 Sep 2026 03:03:15 -1000 Message-ID: <20260916130409.3382710-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.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: 1789564420783158500 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 a5b9e0da647..31d35780739 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); QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2); #define DEF3(NAME, T1, T2, T3) \ QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3); +#define DEF4(NAME, T1, T2, T3, T4) \ + QEMU_ARG_NONNULL 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 27ea86ce02a..55a2313b38c 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 0ffe0a9930d..e42ee3f08a1 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) QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1, T2); #define DEF3(NAME, T1, T2, T3) \ QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1, T2, T3); +#define DEF4(NAME, T1, T2, T3, T4) \ + QEMU_ARG_NONNULL 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:32 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=1789564374; cv=none; d=zohomail.com; s=zohoarc; b=lxqNi9ZNEbe7sgR5R73Bywkl5LzlI6qYgUFdRIXM1c+X484lCtc67yIDXBho2wWUrEOf1kl3HC65aBF2XHu/R66xNEoNq1jGZHGAc2q/A0+mkVsRbRzM7eWNYBdseUya1qrqk+d4HH9M0xd4SumiutdUDhpkjD9aSsDNCFEeJpU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564374; 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=l89D56q/18iSUPe1X0uf1ATQFmUbmr7VQsQm5oIDOzo=; b=URaTpsjHJRDkAyrBd+nqcWhYv2JtTzuFZiie3T7/IhRklQKD77xxXfmTc7nNYGXznUe97v/6hTuVNjpNCPmaiHbnhbx3BX8MjNjKfQAxXQBriUjHGzQ3UGk2z4FWz4d5UN2HhAbwgJpc5jU7aZVj5G5EMCVKvLi6OXZBBFsmEqc= 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 1789564374810704.0628013647822; Wed, 16 Sep 2026 06:12:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNX-0006vi-KK; Wed, 16 Sep 2026 09:08: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 1x6pN8-0006jP-18 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:27 -0400 Received: from mail-oo2-x2b.google.com ([2607:f8b0:4864:31::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pN3-0001OW-UC for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:21 -0400 Received: by mail-oo2-x2b.google.com with SMTP id 006d021491bc7-6b1ae736c64so723075eaf.2 for ; Wed, 16 Sep 2026 06:08:15 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564095; x=1790168895; 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=l89D56q/18iSUPe1X0uf1ATQFmUbmr7VQsQm5oIDOzo=; b=x4DebskfWPEEt3QE5u+x+uGkLzpl0ddSDKb9O8Yp6DInHdDY7zDQU9bKsNC7rpvgB/ UIxMAzhobfqmEzGqgOFJZ/mnDdTBSwIMaUy9LMY6LlI/1rc6ZS7caMCl0ksMvna8n7cB GbMX7nuT9PauVKHqcd8lMxqI3nAuvjnSA4zfjUFkzkrA60PjKXV24kTpXt+6/E5ZWvcR izH4iZzeoPQqg5gm500OXY5FmOYG5A21wfrvXYSV7XDcqjQdBynGcm47y+nUZSEDrZCE OKDXCISN/E5QYyVNE08gBKwPLlvWvBOrT2X0hAHkg6090QdJ8IE1dOwFZNeiX0iObqW/ VuQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564095; x=1790168895; 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=l89D56q/18iSUPe1X0uf1ATQFmUbmr7VQsQm5oIDOzo=; b=TQg1paO5s0mlAwvEhImQlNLBk4eZHvk2dTpDRm1AtVja9M7Oo8CX1VUM4szGP3tIDZ rKvsVJ1/c9Sf3q4O0xOZRxgJXNMEmhDNbDx4U/MZLFB/IDrALRNWBNvgulAYU/w/E+nP /v9QAkmQbZ9K3TkUk1WPvM3N+7XXb5nX5vOF4ytj3vAYR7fb2ZJzIeueaJ1rw8nfyfOs lvIx617Kw+JD0gCWDd0fkzxFfQPsgWyHYA6EsmQpGDJB9tqktYh2VweZQeuw5kGAGRtC F26fLKceDqn7vmHo5J0/2sLjpazsToeDKdf07f1CUYglF35UtTXAHVJqwpVVTglflbJZ JL0w== X-Gm-Message-State: AFuF++mEZYGPbvb+mLu44tnKSu3Gwbx+fIUtvjaW2Haut3LrYUYfTxx1 IX14QBg0ufPoA5KY9X5hXYVp+mh8n6rbWEPRH6JTKqb6CTKmBBwy4XZC6xF5xbAS/xSpTcbnU3S KB3Wq51I= X-Gm-Gg: AYBFou0IvJL7atWpYbTo0CraL2gZ2kG8OwnwmGBfdWP/E7YfItFA6CfK9eooCcluBB0 t7sSqFCi81mC9nGjXsxvMtLCn9v/zgG8i7GhSTJx8KUA+2tOYk4ZvMKIr2PFX/sJLx+SgzBdiDj orAzIi/tnqvn9RDzY4WcOsAmGxRGaGNe9fQC6lE7LTFR+aC7uXBMZc70cdS8d8zBK+H6abHkaSJ Ts8xY/gaIZQyO1TQC5AJjc3p9NeFYBnya4axgZOpqmFaxL9LN/J1eIeZ7/3+PqaX9SytFyUqysP MbkOKhD+56YSFHgMHEtxZuD3LFqkPLoxcuC0UKhpEJxiAyqK5TE7fldVsXOIl60I6F3uO2A+okx OlwC5a/cg2xz+N8T58sar0JjHde8JCSyDTGL6Xx752ZmP/MWO1XJYWC9r6+8JtlComTQabCcpvg Y9/pY7cTBeO5Vd4aJhcegC7GIKpHgVZqmcQPCBA6v7mwYjk+C8tuDHGj2dXcX6c2n7mCUYuixPM z/qais= X-Received: by 2002:a05:6820:1501:b0:6c3:bfee:dea3 with SMTP id 006d021491bc7-6c7d0edd677mr2771083eaf.18.1789564095050; Wed, 16 Sep 2026 06:08:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 41/92] tcg: Generic expansion of tcg_gen_brcondi_* Date: Wed, 16 Sep 2026 03:03:16 -1000 Message-ID: <20260916130409.3382710-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::2b; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x2b.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: 1789564376545158500 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 31d35780739..006f668aa5f 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 e42ee3f08a1..17251a8be93 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:32 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=1789564409; cv=none; d=zohomail.com; s=zohoarc; b=XlpCKlzg325wwgJ5DO24pFp1OT+VodGNnpmk8CP+fgB/TgZKkumKCZadrX6MvTbs+d9kW0LKQ2z6Jmp6DByuCv3oGrmK6IZmd2aRqS4/fzj1PxnUYXXfexsze60wgk9V5aPMOONVKTfwSq+r8wC7mq5AKmxckUxMvT6lb6Rh+LY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564409; 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=gujLJg/sVv452q6GQHWjQza8ihVHpBwl07DbYlsioeI=; b=EJvbiGyiiEAhziT0d2Rkt39p4dZmNB9APCR92W8dalLV/6ji97+PqdDp+nNXbFddp4xSHA8X3AaiSzvPenXvqw/kvvkalXv4lUOnun/PZdICIMpaHcrHdoZivmeGaxIiHiTR4LqmkXfF5+vJP210VzXzSy4qyMNh9yN+W6xVwP4= 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 1789564409549407.4391598160387; Wed, 16 Sep 2026 06:13:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOE-0008RF-DD; Wed, 16 Sep 2026 09:09: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 1x6pN8-0006jZ-MB for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:27 -0400 Received: from mail-oo2-x0e.google.com ([2607:f8b0:4864:31::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pN3-0001Od-VL for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:21 -0400 Received: by mail-oo2-x0e.google.com with SMTP id 46e09a7af769-7fcb425fb68so549731a34.0 for ; Wed, 16 Sep 2026 06:08:17 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564096; x=1790168896; 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=gujLJg/sVv452q6GQHWjQza8ihVHpBwl07DbYlsioeI=; b=x7Bt2WCIK4BQXhyaUfZEnLIewWfveDdxZRibgoVB9FjJcvlWPo3NCMOraCQ57LrVsu STsbbzPtSn66o0L2OkpPmFTEt+ZzHcewNvXiTSLE3rnzYgpDqIWNe0DumOlf4Yf57Jnb pFfrjfUuf008bHPwzJuaoxqp0kzv/eUokKaReuz57E4bOXxXLMxBIBRf6focBqoJVslo JPIxKiHKOk6k/v0QddUmukixR3TLRDYpQB9ooMagku2BelMu5g0aekoiH1rS9qNXF4O5 GWjo4bCfjwa8Twp/JCZIVbQAUD6exMpY3TQmc5vsO4SO633ctKvciii33mRnPMKnlwGf sgZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564096; x=1790168896; 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=gujLJg/sVv452q6GQHWjQza8ihVHpBwl07DbYlsioeI=; b=Rop4HLBvsVfuniK/k3WezOaA5lOFVkueWzD40CGMx0DnhzSuLrecaM0ojWjuCQKHPQ rBPvoGMGacpIJ+vP0h0y6tzzuMjFFACx0oeTyoQ9BxipupwaJ0t/vTRkLdwvuq8U5Gi5 XEraJhRLAXfN1vGEJoTBp2KN+pv8kulM/v2Mt4es4xh2AuTNlzV2t/2r5LFHDdXwaQgp t4ee8nQSYDgH6hhSBxcIQOujMG2OO9LkCLvzn0R3uWv4lfbIakz+VBTlWXU+Xk12G+U7 +9o4YCjSqHstdXrO4eYrs1JvxUBR/FIDVMX9oR9FhNYwy4Rt/GXj3BC3IcB0iX2zDFFD JecA== X-Gm-Message-State: AFuF++kEO1/jH4LA7YHgNnRszjG/rb48RFRIz89Yau/9gkVEumNQ30UW IRe+WFq+claS3ynF8xa35Bm4iFnCQoPB7/YlswyNb9gVIhD3HlxoP2Wb5Csyvz/m9dNqU707EYD XMXsBTVM= X-Gm-Gg: AYBFou3p2U8eH7U2t9yDQljLCzCWk8JoRw9aVYmnoFjCs8+UGTK3Rs1G1GHGUYoVwEV lkbm0/wkwCxU++ghBq9TRhwonDjCr+pdCUHLtmzIbYYOmwJacKJDeUk4OR/R2m5lQBeUwdXENNP oy+ynOgJnZCPMwOKjc2Caa2bFpQFn6mEt6vw9sA1rokD4iUNMFZo63M63EAlGlufdEt1i9lWiUS fEUTePx176EWa5bskBG2kxRJhKaF1yu+gPGPEYADU91/LQ+OU03b5+NqbFgYWOOwqNTXbtgxjyp em9SYPoMwz/JL3gxkeLmcn6snONbr6H4Uc/gk0IQL0d3LyUmtbsWGyj23FdKqilKez3lPW1FJ7e DZ3JfiQ7HxnZFVjdnWycC/bItm6hxaVkOpVD37DJFTlV/YH97w5YdokedmDzUOsmhN8/DfZ7A+8 Q2nTF4UP+zxBfvyHxzopyHmmQx4GFKcJC8EcLJ0qSRvi3RT1h9WNTThEokHLp5pq2fVGnB8kOtE s7qTjIMVVXTmt7btBo= X-Received: by 2002:a4a:e913:0:b0:6be:139:c031 with SMTP id 006d021491bc7-6c7d27e0c77mr2350385eaf.39.1789564095906; Wed, 16 Sep 2026 06:08:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 42/92] tcg: Generic expansion of tcg_gen_setcond_* Date: Wed, 16 Sep 2026 03:03:17 -1000 Message-ID: <20260916130409.3382710-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::e; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0e.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: 1789564410617158500 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 006f668aa5f..2df3fe5f6a8 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 17251a8be93..20a31b8bcb9 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:32 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=1789564177; cv=none; d=zohomail.com; s=zohoarc; b=Fo5JUQEHwVV4pFwy9Iu7n0465JXyUs1FNqRvtNCfGofFkbaPwbx7VYZ8paZt47ypQdgzN0zUYsrFWSahub4SiyMPluy9+17uqrikisDZIP46oHch6rN/jXJeMRwo2SDjqyaKYdKTg3c4hIEqbLbWGVr3vsD+MPoVuZghrSqtcVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564177; 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=UfmJDtDaFnpCyOj4++FALZYQUjRRwtXojXnyTUkotwY=; b=YnFQ8S8PrfOG8mGP2qQgOG331q3MPmwLNgz3YW3lCg1ib5ulZuqS3JVSHInkQQVoq3RydMd6wHwS4aikqX4/YbNyPFWzJZHIuneQamj41WK9HoTZr0juB+qz7MTmVzGR5Z4PTy4mhUDnU236lHvczQWqZdCjQQTXsxCB8Hz3eB8= 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 1789564177918817.2859805869919; Wed, 16 Sep 2026 06:09:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNZ-00072R-JI; Wed, 16 Sep 2026 09:08: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 1x6pN8-0006jO-0j for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:27 -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 1x6pN4-0001Oh-Ks for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:21 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398c066106cso682108a91.1 for ; Wed, 16 Sep 2026 06:08:17 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564097; x=1790168897; 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=UfmJDtDaFnpCyOj4++FALZYQUjRRwtXojXnyTUkotwY=; b=UxD59h5zWfxnxTp7jNjq8BOWApvKJQNTarjI+/8ar+nXDOAhM78d1WXWUbo9IOQV5+ zrbqvFEt/jGCre9k+9NiQMuI0DAxY5tB0CTnIYOeS62iAXlifGSmIVZoO0ije26HCgeZ I2OFqatBDYcbhFkn2bcq/8kqU8x5Q4/SaYwd3R0Sr1dAbc/2VE7FyTXESfoVo4j/MmN7 LpHnhz8eyS0snxLTeIWrgRpJMgrFWswg1+sPFxZw6LR4ZtCObXjAHmtHlVP7ANeJA+HD BfuX33VzfhZXC59A8yIjedEWXmU7rN3x+w7r9TUgNr7/YbnhJC2gwE69wqpz3ttYhTJx 5uFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564097; x=1790168897; 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=UfmJDtDaFnpCyOj4++FALZYQUjRRwtXojXnyTUkotwY=; b=n1FzjYpjkSEOYAPEK20faB9pZmLXmaXlMvI5AriwN6DTDI5XLfKS2LQNmvFEmNmtS1 zTQQ3b9+8sumqfgES4qu7ALWuZ5HDoCVGrzcDZQSVrxca1E2xELXmSQ16l43GUalUujY m9qavwxuGjMWMzKJ4xLFgO4c4XpLIaKOgOJmpKPx3WVWtrQ/IHk+GBLZY9dsPXt8rsFp iFf/Icr/pXA+aPWq+tUcZptEpSS351a/7l+CJTaIk1IPx47Ju6Y6LNts22PHBcjGwjQX UDjFHA90pe2gfv+OZlvghMdahELyX4nLA2Itp8F2TpqKq0Rpxf+w4QmQIFCXogH2O9aG /iFA== X-Gm-Message-State: AFuF++nxr9n6jlr3MaKoXh3WA6P5iGZUdF09hS4sWqRa7aC9vlyC5KSR UTNFxsb3/Ib2MTowKotTp01U1X/73HDHPfUR9dv3Y0SGfStZ5GPc1qEHPQo4BpiczyG5EPQdLWA V4GUVYwk= X-Gm-Gg: AYBFou2oy9Jdxp2BnZWoGPv0YUuXC2LGB68iiI4H3nVO5ZdCpmdu1E64ZRKerkOo0Qd EzeC4ANmKdWrFLnmfBlj0BQiqOcMxpRaqt80LEnCBL0A0LqBrJWCKXSs9NW0X9l7BBs1ysGlQHo m7WDFMnZd7muvk5uPftEpiZmZmaEA0TAusaMmIWN+GpxXSVVY0wL38eEpzvsqf1w3p8Z7by0FeX qwJfgsGsgNLVxJlvumys4UtFPWWzlaJxcNiyFNJkF9COlZqhKIHJGNud4H9nm5U2DqxedsJ7wY9 XxwDsdQJY9n3YBINoiS6ewn5/4qbfxRGqTqkn+QIORrhJQ/sO3OqfuFCuCEeQPfnFyis2dHNTZx YRRiiTnd3wELBcar2JTofD/L4mmHru2tKTeixFcUNUvPV6qJVWlHIpnzlBYBtAi8+GxsfJp3rSp qnyKsI8g+ChqQvQMB+EaqaO45C4wtflU+UbUE9NFo7rlVCI8i1bXSbJBiv7lihAGfPx9DlX5Px+ ZXYt3M= X-Received: by 2002:a17:90b:4a51:b0:39d:ee20:1e28 with SMTP id 98e67ed59e1d1-39e1e510f73mr6045782a91.21.1789564096810; Wed, 16 Sep 2026 06:08:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 43/92] tcg: Generic expansion of tcg_gen_setcondi_* Date: Wed, 16 Sep 2026 03:03:18 -1000 Message-ID: <20260916130409.3382710-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564178939158500 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 2df3fe5f6a8..c3fd467400e 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 20a31b8bcb9..d49ddbeb454 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:32 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=1789564216; cv=none; d=zohomail.com; s=zohoarc; b=E1z23D2qx12gjjlmZqP4GgVY9KZCeMOB7mEgb9fxBA98fuCrFgQLi3ArLan2lc428rOo/MS99SEcpJKY44WEIvpvqNDRVwkFBj9Scp7SZ6ac5ZYIFaxBa5PrFbBZWURknAGA9nI+RYOdWnMO2VAvZwyUqe7U/9CMenMrTb+GiKI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564216; 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=0/433TiAnz5/pppLOHUA8lXRzQi6KXKZ1FyAmUmZNzo=; b=hKoeH25J6mUF6Wqv7atPq2Nhrs5IWrmcuiqLHpBOVW3v1a8mXS0e+OfaeqoLjDNQgT8u9o2SVU/G305pXgXdzoskWc2TO6ha3nZwSuN6Ed/9dU8AzzIiGgc+QqkB4CAy06tOFtolLexo8stkEdpl5QcZye96abb+ZZq07q7J0aY= 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 178956421647266.99292767043232; Wed, 16 Sep 2026 06:10:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNa-00077T-OU; Wed, 16 Sep 2026 09:08: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 1x6pN9-0006jq-TD for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:30 -0400 Received: from mail-pz2-x0e.google.com ([2607:f8b0:4864:3b::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pN5-0001Op-Rk for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:23 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc1cebad4adso731549a12.1 for ; Wed, 16 Sep 2026 06:08:19 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564098; x=1790168898; 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=0/433TiAnz5/pppLOHUA8lXRzQi6KXKZ1FyAmUmZNzo=; b=CRQ05jsoAjxZhzCFcRDhbQZ3uuodj3xMvz9bRDAwf8CzyEzlpksuepOWQKGe8sO4fn V7lSVyEs2bPST0SXOUBWb4ZAuR7acNnL0kS/N5gSeFIvRoWWe2r8B95OrjEupwD1n3u2 PprE+PSQZJcfE9Kp4yafb6/ahg7fstsMF6eRumyeY+A1t52Z/hLtBmJ4KOHW1rvGjcYd hpmJdIy6HfHB0xy3PxUW0Pd4+cGNMaJ7ELB1ReiK4nr3WRkQla2aI36HJD/AA2lSV58b w3nX0+zCsJ4heXjf7TnWRZWxXoCa2f6PynvGlaOULDvp6dC590oRwjlgIM9MAx20VcZd 0AXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564098; x=1790168898; 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=0/433TiAnz5/pppLOHUA8lXRzQi6KXKZ1FyAmUmZNzo=; b=qtfM0YptL7BNXrE33opc70XlV94kmh+QTzIe8eTjAmZeynjq74Xh1W9woNxMeJ6Q48 307Qwq/ZSkv8f6ZK1sajFG93Tw/3NY9f6N4W7ekF62HBDnciJU0t16Gbnikn3UU6TdrS LUVI0KcyN1nTmMeF+t9y+OAsmDgrefOpJzOEdVRHtqWAPEwxMEp5Nwr6CqZBUhUvwG6H IpPJwtabwqdqKqTdYNCjCHWXh0sgKS9juTFxXKdsHVMHxsseuw8yFDXsahELfLpum7JI geOfvX3HKFQDlAbkEVS/rgb5sUXWw/Z7pjWS0s4kwATfDX9JsqhjOJmY+4Fv+/ZobqUC skHg== X-Gm-Message-State: AFuF++k2OnXh9yFVrBhBtdD4NYIFOWHMQzR71ojqGJOAh39hGnZn1kAO mstAelErp8oyrGII/EC/kty4vF9ksbDjk5IakxXMTSk7eap27pZ1Ovq/HuY4XCSvutgXJx2fA9C sue5x4fg= X-Gm-Gg: AYBFou22n7QIZ8DwanRfQOP9jNia1eiJRHgLVnr+5OOZDXThiAtX7OMEoi1UZv5mV+O eWftE1aVTsGP/BZH7e3ngUYLUVQomQ2hK8h0k7ocptrPX7sQmdW4GYAjzBY/MLXvdNNwFjx88Xd xflXRcZWEWJmiLzj92mpazzOeOf6+pBpxFlKunRR34uiX7T+6+4eQqZPYZLOPqljapvKC7cRwM4 45Au8heG5/4eaLDV11kZupecB9Oom1U/ahXizx04CLJ9Iphz9ofGvCrzMttiBCg13+CEjXRp1FT VK6+jlHdkOPDjEt331FWor8/9pYQF6k+jO2XYy7w8KXRokDEouAmmtojTVZxmrWZS88XYfRbHF+ 3eO9jKbs7n/mnIQ2wy/yaJ/dJ9/YRu0/vk2dJhGbwm/ecOi4SIAyGvkCMPqowQtBVRLqua2P5I5 1/SOJ2t7gvhfjDuITXy82QdZbIWKD5YPcjboSeUvalG3phb0Zh546EolbLISB6bE8K/6dAljm70 AizEsE= X-Received: by 2002:a17:90b:586f:b0:39e:28dc:3682 with SMTP id 98e67ed59e1d1-39e28dc380fmr3424619a91.21.1789564097893; Wed, 16 Sep 2026 06:08:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 44/92] tcg: Generic expansion of tcg_gen_negsetcond_* Date: Wed, 16 Sep 2026 03:03:19 -1000 Message-ID: <20260916130409.3382710-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::e; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x0e.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: 1789564217459158500 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 c3fd467400e..6ec53bd7a15 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 d49ddbeb454..2799d4abce9 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:32 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=1789564238; cv=none; d=zohomail.com; s=zohoarc; b=j5Ne2xiVGe/ME+sJiD/hmUR4tNpdO2lUMO8asJ5xjDIkiBNfCAckM/zqR95mbkdOlhvQN1gKjWCc5Wr9w+Tz/IZSb80VTwIJwfJFgHLtql2/ElXQzNguuoeoSte7AVtT0gJpQJHSFs79wqjlNamSMx+IXRw7GYTdO0pahETgSDM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564238; 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=nzAneHqRTA+05iXMXqGEs1fC0iACCWL3/z45R0WCK3w=; b=FtQYD0JTh9nAVkOj+f4LJKt0iDtnCy+4Xk/K5glMAVWoo7KpCJfPp+PvR+QRmHzH72lo3RJ7n+cXmQkImcoH4YGvZr3yQ+q51WYFSDTfRVefXjAV0aaBF+ugewxGbaMnEaL16aOX6Hye0Xu4pSOb2u3uxkrGChctr6gXdH1sg/U= 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 178956423861270.52948349626638; Wed, 16 Sep 2026 06:10:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNb-0007AI-Kq; Wed, 16 Sep 2026 09:08: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 1x6pN9-0006ju-U7 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:30 -0400 Received: from mail-pj2-x0f.google.com ([2607:f8b0:4864:39::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pN7-0001Ow-Bs for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:23 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-396ccda24a3so703381a91.0 for ; Wed, 16 Sep 2026 06:08:20 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564099; x=1790168899; 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=nzAneHqRTA+05iXMXqGEs1fC0iACCWL3/z45R0WCK3w=; b=HVb6w9xIM9eFxOMceAcczoHfgRRulTgC0+LhGnLUFtxNrHQnnmgEiWzCTW/NJ4pp4Y SSeLZx0Zxnd2uMiu672zFeGgT325mItFTdUzRb19BTnOX47e1WXlCI8honIwKdQLSSRv 1E2F0VOrwOOXYe5GInunLHZMsS7e8n1gCCutrZxjICY9CEXp3mUnGyftjzv08cTqLlOQ Vd+tZLUS+s+yGfrBtfPBsIswZYCdg+6v2b7qcaqwOUU7WOsFSw5S466Yud91UtQW/9sD lYszidb4MmUPK/fjQiVXGhjWaLydTX87eByJI8uDkqG3x7ZEw19BTWRV5TAkUk8VRLra YdCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564099; x=1790168899; 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=nzAneHqRTA+05iXMXqGEs1fC0iACCWL3/z45R0WCK3w=; b=TLAhKxR4TVY3G1pqP7KA+ewmO8++mFZY1haX7wTUoLN76OJyMOg0Pkv8EADBWd+jaa /wkK2BmUr99ETDyWpKYYmH5Rd/7j+sgu31i8jazznwg9YM98GKfqYF6AjK5IH7b5YGcl n2UdVBQ6yMKCOXmsd9DqUDSanNg5rQfhIlg1W2JdnRtkpiJvC+ZoAjj5boA848Caeicq xRxe17flfnUWLU/hdQZDvolekQTKy2SXe/ksS5qu/fZDSfRRZs3V6XbQbcL0zF87bSSP 2GsvZF1odOonEKINE3goD3caqD0GLOD8oBs6wg9Mnl9k9PAkKZ8yeHTjGmGgbsIu0ccr ytOQ== X-Gm-Message-State: AFuF++kRtINRe/zUhc92INl4IkHT3CsW6pSHahMwgX9RqEmEp51WNem9 UOta1w7DqurzaPDjnuRLICg1p6pK+TkI1qOEyjQxRV02FVgCpH9XcCeGI8FIqoqcOjcrlsKe60u j9nSnngc= X-Gm-Gg: AYBFou3X1KpH8y8PYDVfECJKoqoAbtvDZ9I+rPpxkGNghCxKlFltEvfxnaRa6YMUUND Ne3C6CQilsk9kK5o8daRrjUl5cBArI61ib8+oC196gsAP1fUdvE5l21ea+JdYbqcF1B41NpClH8 I1jqRsV9aEzP1E27kz/wXoqfSe2ykgyYdgkZVehvEQ/07DTewWRCt3HGk0uNfTmawoWl8M455U4 tujRXOQgijhXsUJ3/2o1FSBpp+iuNP3H7gNQ8wle7qJm1PYeHX/5rDQBaX9PGQZ+fqXCi7LNwU4 54KZrsuDwlKyAI8BzRNFXAqSMJsm+ZF4Di1HDWYUbBMj1XaIJAxyljr1GGKe12vSLB08cSbqGra 4W+6kv+ALV9YdTUzOdl3YnFQleQnSNmEoDekfn5y4No40yguxrKRs+As6ZOjenwaWH8bJ5LdV5R /gdB3AulMSy/2Qg/NBe+od/SpxZwAyK3iNgtaB/eo4MFK9ZwNk2fM5romTJSgPG2kidti0pkccc ssqvfI= X-Received: by 2002:a17:90b:5281:b0:39d:f050:a010 with SMTP id 98e67ed59e1d1-39e1e263d08mr7547606a91.1.1789564098862; Wed, 16 Sep 2026 06:08:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 45/92] tcg: Generic expansion of tcg_gen_negsetcondi_* Date: Wed, 16 Sep 2026 03:03:20 -1000 Message-ID: <20260916130409.3382710-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::f; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1789564239341158500 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 6ec53bd7a15..9834a70cac9 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 2799d4abce9..ed746fe13b8 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:32 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=1789564292; cv=none; d=zohomail.com; s=zohoarc; b=mscNyxC8o4N4S8gr0UjBFCp9gtrmgtw3r1VK7TYFvmEsaMWAsT09qfMw9DcPbVHCxk67Cul3Elsj9zyJ+ML/ZnTCh+mpvD1Xp27gzrzJbStHpmuuECUz99iPRWRkiJUjx+zqZyHvRIGYIREeCvgILCe9wtCvjZ+C0AcExXC5fVU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564292; 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=0aVRZh5nyKvaYqV5nbAy//bu8jYCMuSFn/j5OVI+HBQ=; b=R40ohlUCIuuT1khTrxENtgk+gvkiHrdrRNNsEP36gW5Sgsb0vL3IJK69T+KsaBYdZSZA0gZC4+so3kLc5V4fi2VLddupxA62GXVioaVD413jrmPPL/hpvuC9auSu8zGtCkSWLSYCSzcMLkUUXfp5pYNIlKWo1q0z2uDTaQLwA/M= 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 178956429235556.34526941575905; Wed, 16 Sep 2026 06:11:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNc-0007Cw-SA; Wed, 16 Sep 2026 09:08:52 -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 1x6pNB-0006jx-W3 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:34 -0400 Received: from mail-oo2-x0e.google.com ([2607:f8b0:4864:31::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pN7-0001PE-Od for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:25 -0400 Received: by mail-oo2-x0e.google.com with SMTP id 46e09a7af769-804ef461aedso556895a34.0 for ; Wed, 16 Sep 2026 06:08:20 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564100; x=1790168900; 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=0aVRZh5nyKvaYqV5nbAy//bu8jYCMuSFn/j5OVI+HBQ=; b=DyrpeCcs3L5QOf35Vw0Gx2SBD40H67cpmxdbXJVbXS0G6jgxdiND/jUkfor2vqZAQz cioyFpf2C56mQNyzxoEQ5E4o0xObOp5mfcFQ8tRH12kEgHwTeeMF8c85OHE5nPHZ5fiY y6uyVI2H1D2hMywlafHhm3g6nWGlBHkBxAIoV5NGqPB8AkNbp6awHJddC7cg351eq9l4 S+0fJGi/jdHpftLg6aAunyDca8Pi1IoD+J/7PdCrZFHCUoEZHcdmy41njPtpEpHVj374 TXhTK9giRpNJvMbLPa2eDuynQpnnStNbyFrOqHJoBfknw+QQNhwyZ6sJ+Sl7dhOwJ6Ps o7mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564100; x=1790168900; 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=0aVRZh5nyKvaYqV5nbAy//bu8jYCMuSFn/j5OVI+HBQ=; b=y+ntM/ySkYLVJmEMyQHDhy1HH8CVHWMutUZLTtx6KCWmtwSPvYdUQGoTZOOIwfD5U3 c/m4sBIG0HPwbiGhCLwl3c1Ig6+ECPerzkok2us+9DGBf0+IGxSgcERWEP84xACc5QCP 7IkMj3W0r1FKEsFSSn8Gz32W2dZjieVAhc5nAWm4eCBotS/i3EPX8OvVaSNweX2xUJQ3 21ND6AuZ3vo5xXKSxA3NB2T93rzwyz3lnKZGI84l4+olVGFwFWkXn3//d1uTf9F9C0yk 1qS4F/Kz2HEcluqGKeHLiN1sssUXwF2o0hE+jDmAQDLg+1lfdVoPMvd4sGmoy2Lz/GI4 ad2Q== X-Gm-Message-State: AFuF++n/gTK2E+qRci5jP3FeVjJTPFhSBaOA1ExmnnRF62TRq7I/7L87 dUD7sRDI4hhMk4FgITZpGCEEDr877pq+zvkOH4TN6987WdxVqwQSuugJYiaKtyVKJkSGQwUHqe0 cJ7zLP6M= X-Gm-Gg: AYBFou0kHh8cdMxL11I01mlTvhl9mIfd4CzZFTZNpt0CM90Wx1t/7kgJGmi7EmHCHQH eXK/HiBGOnzjvPEggcRIrR6qJ3WyHPIfaO4jecJ0zjGcTsaTjjscpRF8nr83ibQXORvRPd/YAfE R1lO86RO9pSwr3Xk4asN+NKX4FzLRF0y5hZ2CkEvLPRR3n0mUpBwTcgg0We1Yihd8rkGYzATn5w CiU4QhRVEMaLrXGCRnn7Jb79QupJ/YU9nC9BsNsru/mr96GXoXHPSfIinrtRGsosIvMhMQDpgaK GLrpjT0V4taLzCu7D9x8gEAUVM72vA3CksWxrwSL1aNxZW2UoOM7pcxilwcVgqqDDsDH3t1xrIg rks1nAdPHqy0es/3R6SRE4lF+ic7AEf2mCjn1nJSzVTOEcqKIi5x9wKqqfSTuoBwKR2XW3rFvXv kP+cBeWt2GxyUOkUygEvq75Npyh22TR/AlivcXKxiU4Gw1ER5ekZ4ggX4HGuIhPay2xTUPyUpmU G3DHavU X-Received: by 2002:a05:6820:1849:b0:6b7:83d6:2933 with SMTP id 006d021491bc7-6c7d3fe456bmr2662325eaf.54.1789564099815; Wed, 16 Sep 2026 06:08:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 46/92] tcg: Generic expansion of tcg_gen_movcond_* Date: Wed, 16 Sep 2026 03:03:21 -1000 Message-ID: <20260916130409.3382710-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::e; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0e.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: 1789564294091158500 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 9834a70cac9..4d660ca2db8 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); QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4); +#define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ + QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4, T= 5, 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 ed746fe13b8..002d629aeab 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) QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1, T2, T3, T4); +#define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ + QEMU_ARG_NONNULL 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:32 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=1789564348; cv=none; d=zohomail.com; s=zohoarc; b=H7nPt0i0I0pqZv8oTHxclPpvfbCqYiM0iaZur/NoaxyVsqt+isSVtZolntkA2rlgHAJd4Wi+iRmYGan0+l/Kl8VVEc5XyQTrnm44z3GL6L75wLTmwm32MMCWDx19TwwFxiCxJnJutXpV8slwzZIiPkEGElyykRK5Wsg9MsL7amo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564348; 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=dg6SBhTcgYneB6EiS3pEoz3QxKzqFdxH7kQ/6gE6DUw=; b=TRrfMtx4N/2qW2eVQNnq2nZZyDtNdap+vI8mwJBQLzB4UEJ5K8Q5MkIkAzzZQDDibg7ms04DmJ9tuscub1GkXGAf0FIa+RPoeOKJQ9cuUtcZ4DPv59MTiM3QXixtnCivVm4WZ/a+jaC8Nk5jIMhYXRwepqTwGE0/PKdCp5qW1KE= 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 1789564348110843.7230612220222; Wed, 16 Sep 2026 06:12:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNt-0007zk-Fv; Wed, 16 Sep 2026 09:09: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 1x6pNC-0006jw-01 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:34 -0400 Received: from mail-oo2-x0f.google.com ([2607:f8b0:4864:31::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pN9-0001PO-Kh for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:24 -0400 Received: by mail-oo2-x0f.google.com with SMTP id 46e09a7af769-7f4f0d37f9dso450248a34.1 for ; Wed, 16 Sep 2026 06:08:21 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564101; x=1790168901; 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=dg6SBhTcgYneB6EiS3pEoz3QxKzqFdxH7kQ/6gE6DUw=; b=Fd+fOaFJHff+btXi9L6+tDsUGkfKXYGCXaKDgcNO6wcCsjS+BUB1x6xmOZBThooxn9 9DgxVN8cSwrqOSpOQIEeCyDmCdQJX1ldEeWe1XMCaJtJBIyr6RD0+3v+4nFqlArXn6kD ATIRPZqYk/wmX7JLHfAvYzjGl4M6nU32FVOe6AK1btNRzMjhsSopXxPZ9Ctpeax5sdy/ z2MwK2eTjQ4XMSLvLsL/TJI6w/2AglIobECfD+ELhNwauOrOORxl2OjnhXRP7TNNB35/ BU0RNviVnks7GDCnVxFovo4PG5KV/xoH6gjtCZRyjBg5yYnYg7o3YkzTHSd13UvMB36+ /rgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564101; x=1790168901; 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=dg6SBhTcgYneB6EiS3pEoz3QxKzqFdxH7kQ/6gE6DUw=; b=NyffrQcd3KclY9l5Ts81HtgFjJ0lsG1wV4bgmCPE7hSMjdYzmNbbi51Y/yFGrBU0hf +4ZTGu7SmB/KGETC19l3SYeaGtL7Ea/yaxPoCCBrLgmphIyb6hGKgwBetKJclIcaTQLM rY9ZlNoNupIGpmQoFrQZ7C+WXYCglGAPo9V+IB4h9fzGJ9lkcKeGAe2Tlt51rO6+SBH0 Iaffw6ggdEpqrBdx2KJfJN7TAY3UowrsXtT78J8zPgbcYKFx6SoK10VVzi7o5tQ4LutL umvIuVG0xvqQXKlLKZFlzebD+I+028Ca8JMv8FV0Ae0rC8UfixSNHSfYpRsXIXo+dOZ/ scDA== X-Gm-Message-State: AFuF++nG2C+0YtKlDwEMYAMRcAimgIyqweV9MBXpjT+AcKRkpRbZgw2B n9foCHE7RjbJ/XNQtbYRnZclmwyS0HgWJXn+YaGfLlZtm4U07cjiYfLf40rcvZmko85FBt8j4Qt AnZaHLXk= X-Gm-Gg: AYBFou3Qv0cmGunKi7NODowgndEAMeJ1prP/1B0Njj/hr49KQZw3auO+OS/Br/443s+ UzWmjoWLPIsUQQoiw7vwV5C/r3TOkZyp/f6YzCzkzxhJ84D/uB8bZAzFbcqp44FrGd2cEpO9L5w PQ1dWkbHcUX7vAUQWvdNk0Jn85d6Nm8mZ+U2TT52WCfkWn0YmgyVzS5LnT63dsCwzbrtNdpl4d4 Ho+rizvGE3yAAO+ZOSgdGC1UY31mqJ3oUeIkFpk9kRYcUq9oP2Xd6GnO9uMlFt77lWIJRCERoxe OkEf37YCDniDieeCvZXwAcPssGMGsnT54E7RzsBKgSYJS2WG8sWDIWg1WYNOxMPdzqUx4ids9Yb OKQAY5rhy4bPrbp6ZZv6oJo83tGTmMBU0RL54h1K8fezPPOdCNgsQ1IoRjQTGQqVWXBsqOGOp1a J8O17NZl5i0Z1OAJIbjqvXvp9M4CK9IwpGcLjCYLwAsGbCnOJgEychlz7huC46uC2Ryoj0/S5A4 d7jQmY= X-Received: by 2002:a05:6820:1897:b0:6b7:46fc:1d7 with SMTP id 006d021491bc7-6c7d41de430mr2544728eaf.54.1789564100748; Wed, 16 Sep 2026 06:08:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 47/92] tcg: Split out gen_extrl_i64_i32 Date: Wed, 16 Sep 2026 03:03:22 -1000 Message-ID: <20260916130409.3382710-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::f; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-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, 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: 1789564350134158501 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 002d629aeab..861b1ede949 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:32 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=1789564504; cv=none; d=zohomail.com; s=zohoarc; b=HMwayaYc+1JPN5waaut853w6ygOqQ6cLd2iURbl+vgj3XwJqED1pGgkgBDoM5zT6MdK7/Ozn8ajtIsjQ0+wcdo2UYdS8v4fQQj0sCvtMZteKeSeo5D9or7u9dBI+MJG29V7ZRIoA1CeMvlpIu9wV+oEcMfoRbf/eMczPmpTLLlE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564504; 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=04S0qWop5fX0Gcp0Ft47jb0t0Af6HcVbG2drnJ91rdE=; b=Ob+HCpzuT+CAux76AM+wK/WGGUiwkCkS8OxL6XdEPP2OJc+43aVd209p1FOrIlsp8jqFosm40vYDkzE6ry0VE4AgmlEbHZMA03Lu+KdiKEGRrEFmHUy2MAT7fDhf9d1My6S6z5wHQ1t8VJXSJIaL20R9OCj6bIW6aprUVT+X7rQ= 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 1789564504461579.4900161814031; Wed, 16 Sep 2026 06:15:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNg-0007Ob-QW; Wed, 16 Sep 2026 09:08: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 1x6pNC-0006jy-EW for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:34 -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 1x6pN9-0001Q4-O9 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:26 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-39647184c73so1749653a91.1 for ; Wed, 16 Sep 2026 06:08:23 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564102; x=1790168902; 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=04S0qWop5fX0Gcp0Ft47jb0t0Af6HcVbG2drnJ91rdE=; b=likLCPKjKRkNg66k3Z4DcaOuV6U7KAGxyLGmnlO+10OBBNe93LS3lRi1ST6AGym8mn o2rHFnvIBY5Y1w1kD1+lFjPnBm94IGCPwp+j4eMc4SqwqpTkHTrtzXc02nCHmsvQxSQh OyHNrSJtRa/VXoCKmy7PwD+/7Id7tFDRaALv6dFjM2YM8TAz4nzbpPPVtG8mwZcCqKp7 /JRJaeoJB0VVLgme/guUXQoHw3iRin0E/wDbKO4SyqmBmTrM0ILm2DbRP4lCYgIqSwm4 DB5EYPEQAIHrd5W7Sf74V5I9NJ01ClHN3HGIRJ8QyXbe8EHHWtAMjUP2RZuoqDcqoFHt 7JSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564102; x=1790168902; 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=04S0qWop5fX0Gcp0Ft47jb0t0Af6HcVbG2drnJ91rdE=; b=iURwiQETcaHR9n6CPgNkgg7Wl/5TqRPteKlONj7RaPnos3uc4brUoOYFw/x4ZoYIIR 6iV0LNVQiokgZSQmVZlBm74vwxAJmo2Fsf6Q3qXab7amcF/P4MlhGHWPTE2U2J9NnGzg ySQKvNOQ/aSkngMQ+tg2joWkZMvkYCG8EJZA9FmFSIJ7d9ygY78qB2W7PdNmogy68G/p TR/AcAYV3e9EyP7GU4uu2Srj+vyPA6CIFAKr81YbT8KI9o/QokV1dYSsMOO/Xg7tlYVk iH+nsZnkwL5xNLcpXZPBy6RRTsw84OcPpNT62H4br2oX1eSbiCV96dzJrj5Z3xQsgeDV C25A== X-Gm-Message-State: AFuF++ktakiyHPKvMvWBjb+aGunhBAEI79dpVGrQ/h6Aim1AaEJRWqaW u13ncZO5Cbne1iqcFFVTgKA7y66EJe2vwrwu8Rwm/bp0Ca1cv4nMx72jpIwk/kwylw2MxVOccum q+OaUIbM= X-Gm-Gg: AYBFou3RTK+7EdDWm7sSGpwcYKTUT1NcE7YShxvl1fARyNltpq7hjsoQFj8dPvL9nPr jQ+OeXiDRFZFIDSuYqbDGYHmBYXE1hkEX47Lta/JVXoUUpddvWT6lrZAg5VoDBPCNHNt2R4M9/K 0gfn+QOfUmVe2Z7mYevODITC0/OC+W7QunugOPFbjuhLynDqB8AhOlSj63ny3+MMxlPbweqBcjI J/UkuczZY4hM3wF3bxbhVvQM2xcfnaNkvWFgb14NAzZHZq5FHGSMExbfenTZFS/Py/4EdFZWT9I BQySJbidJNOCtRE2cR4HnXYbfxYfJ4Dw3qYoGXZkrVWXzMYLAg9W5Bs0o4gEvq+XHn9AgRrf9z2 55mHYHhmx1P9hW4Y9IoiqZ3ZXDt3iubkaxFPgUeynXLHb/4J4C0lscqi6D+hdF5HwXxKkyg8ozY g5T0bH6TCC8dd/FnFaEdclzaNKINgMquVMqyDuodXc/zt4L2U1QKzsivNxjfxPsLlNRjhamhFpN qNSMUs= X-Received: by 2002:a17:90b:5650:b0:398:9beb:a2b4 with SMTP id 98e67ed59e1d1-39dfe1c41c5mr8906327a91.22.1789564101758; Wed, 16 Sep 2026 06:08:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 48/92] tcg: Split out gen_extu_i32_i64 Date: Wed, 16 Sep 2026 03:03:23 -1000 Message-ID: <20260916130409.3382710-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564505428158500 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 861b1ede949..017bfcdd3e7 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:32 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=1789564378; cv=none; d=zohomail.com; s=zohoarc; b=L/LW4EZ0cHuuLTb5INajqnt6YzKEnZaZmc7ccBL1nFMv1buzXk8pTHRFi0IARDwIJMrkrJhSb8JOgWrdgencyiTdHU6sXODD3FroCPukNgXZYJd8Bc8f4aZo/fnHUYQxNY+D1Escc2HiJTxmXOUGAybsHeB1EBcdPu7QkuQ85AU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564378; 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=epXRE3Bhlave264mRqO7H5W/yKgUDy0RT7IQiUe3bHM=; b=WrnYLBzWwfyG+XHXdb+z0ON7zFbpqMa7aJFkVk5OkKeR1n/n2cW8IXS9s8scadHrs4LPUsNmBgk7LPjxz/niJS+fXjgojYP3vItpF9Zys+mbX9KgeWpFsTh9GIy/riIzUxLGt4RkdSzHP6XrcESm+5/DOGjHJvgufeDsPzO0rn8= 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 1789564378662737.9880378968919; Wed, 16 Sep 2026 06:12:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNj-0007Wl-AR; Wed, 16 Sep 2026 09:08: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 1x6pNF-0006k3-K0 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:37 -0400 Received: from mail-oo2-x0f.google.com ([2607:f8b0:4864:31::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNB-0001QM-K7 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:26 -0400 Received: by mail-oo2-x0f.google.com with SMTP id 006d021491bc7-6b1ae7089c1so497760eaf.2 for ; Wed, 16 Sep 2026 06:08:23 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564103; x=1790168903; 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=epXRE3Bhlave264mRqO7H5W/yKgUDy0RT7IQiUe3bHM=; b=EG1YSofb4Y2PiWqFHXxKZrlsMhbmpfqZRg2t055aFkNnsDTA2eVyXrXGQsL/mciuNw eN/QPJnxq6MoSxqcDTpAN2HFJ6MiKkeckUJyePUkMeEPJVEDV+dv40iVUmP4T/xnbXI+ BeqXGFYgcoIWKkDFKLt2jEZyjbgt9B7lF6CBYgX5x/eUHuENBLrZF/rWqGNVhdghH6g8 QxJkFSCL929Ac7KmCA1jYZ/W6pMChYpCHysi1RObdrnH3GWZ2nvFKAY6dPz29+lsQC7Z gtJvi4PPBA+J0UjwNFL6yOKxXe9fQdCy+IIfI+DlH+KUoMWxHiJnM1jIKDuDvpLwtO/s yqPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564103; x=1790168903; 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=epXRE3Bhlave264mRqO7H5W/yKgUDy0RT7IQiUe3bHM=; b=gEz8UhrqMC6E/5s92V7MwHT2qk6D7UzskVpj2XnqI/8kZ7Wohu1wGw4PVnMJ43hiDg 2sKrbcj0MOn5KTwszA1onhZ95et+2L/If9LL6lULNwo9vh14ktEc6qwABF0AuGIyvhOT C7kjfJLTz5Ni9nSc0QJgX0PGt8kYihyPNymh+/N7dSCE3PEvGGQL3IK3quVn3PrXODGH PKbqMFNOlpYMsg6zf+gEYJCMWwvM+CR+JfQEuuehPQTa7TwB5r9XrQfJImafBgWqIPdb VVeD4ryQa5vYE4q4RKuIm99foadBBIuVPv5VzEhPSrc/KESf0jhlPmTG7Fu6cUqSkCf+ aOAA== X-Gm-Message-State: AFuF++kE7cCM3lmd46qwK8gzkxIjVnzt6txfFX2dRuX64FPfOmvikK9Y 7Wam+K4k3NwjxFkILOZi9QsyHnhQYumjkrmHHV23iUbmEh/Ua2HYCuDVLj7koQ5DIDTlLI/bjwD kuKM3eLY= X-Gm-Gg: AYBFou3qzvRsKTGLKO0tISh7NWm5JrGOUc89Wg6B4FTGyd/a08FBYPayUdx+sUik3yt oBKcqseN8DCbq70/9pulqEzoSgVwPqqxyp3IevahMZCVOA/44vfMsJuHaonYRO85oh/2kxNg6t/ Nu4Cr8BGGNrLm7lzaE8NrPT39yJ6iflIQWeLWoLhi5QL/zDwCxj5i2DY1qXxM2OzOzgbrRjt3/P IrbS8VQdYbUoLJBcATx+YAFp3WfJozcdyNqobebHjYyEkllMVfANWRGL7YnlimZOGxQz7vj1WKJ W8sgq1+41XNHCnd0trI0ifxBKJbEwSR1KxNSRzaFiTFfDG7UtSbS84bBV529E3bdKB6DRwp7qBQ vVEWnj0ZvQLXQ7CQ3HyXWscT2eH9ejhjlbyZdSZ/OPfEg+ZcMlczsBAQHE80jqWGPhPZWlvV+jM ky8VOMA24j2AdIIIjAIzm9TI/lYFgYWuPLSu9/ChOaJVqNh/9e1qN4AQx1dy8QV0EGSs12xBECL mdfVBU= X-Received: by 2002:a05:6820:180f:b0:6b7:8396:f3d4 with SMTP id 006d021491bc7-6c7d41d7f0fmr2697575eaf.54.1789564102992; Wed, 16 Sep 2026 06:08:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 49/92] tcg: Split out gen_extrh_i64_i32 Date: Wed, 16 Sep 2026 03:03:24 -1000 Message-ID: <20260916130409.3382710-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::f; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-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, 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: 1789564380388158500 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 017bfcdd3e7..710483f6778 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:32 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=1789564389; cv=none; d=zohomail.com; s=zohoarc; b=lpgHoFnnd5fmu0fkqjeKX1eV0b3iengr3DAVUaulbWbLpisX4XTXkST5boSMQXHR6o90ryWQRHA1RKTIw0+rEbYtmcTlER5/r6m5QtaI947x4MM0vMbSuag7aocBA5uz6YZVsg17Tw14Jaz5icCgFJTmzEpie+1IRaBSpIg9AqY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564389; 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=7LYdt6m7FB14qiKEL+WXglE6YcOPLNsRWr1SK6gRz3s=; b=TXJmkt2W7no9lT9eiA/Q9UzMa/nq6OHF1RTimaIlS9XN08bw4jt2eci3OY2XkXx1OEivclvYDXNQpfdyTt8GLgnjA8czFs42te+O0qrgPsZy7YXUAxbRAQd4atnVgALIUrcRD2JZYh+BLl5J2y4irSR8rlNwFpeH6xnH4Gs9STc= 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 17895643886943.9015615930741205; Wed, 16 Sep 2026 06:13:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNe-0007HH-Vt; Wed, 16 Sep 2026 09:08: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 1x6pNF-0006k4-KO for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:37 -0400 Received: from mail-oo2-x0c.google.com ([2607:f8b0:4864:31::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNB-0001Qh-OP for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:27 -0400 Received: by mail-oo2-x0c.google.com with SMTP id 006d021491bc7-6b1ae6a9960so807270eaf.0 for ; Wed, 16 Sep 2026 06:08:24 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564104; x=1790168904; 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=7LYdt6m7FB14qiKEL+WXglE6YcOPLNsRWr1SK6gRz3s=; b=HK5SONtugIkTNqb7r6rmNdCb4TULOjrr70zX8vUnxwcB9TNbHT0btsTjVjDCvsdY7x ByB9T3EVHHuMeCrnxM5uzgxgAoS8uqd9I2G5f7E+bqIL6aYnOMjrBnRVLkt4xWl5k2Iw eYIewI9u6Uj2x2CsKTmg5A+i8cEooM77weHsnoGD4nJaHxYlWCQJ6w9BaumwlpkHrVJv +jNidbolHnEfQcU7Re2HqWzaCsr4P3CpFljxED1PiX8nwg69qtxWvtCjLpep/KdujsEz ICNqp230Lmwm4eN1K37vB+H5uDuYBGkp2EoeqDca12sMTtPfCuwmDuEo/CYENTo7P00k LFig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564104; x=1790168904; 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=7LYdt6m7FB14qiKEL+WXglE6YcOPLNsRWr1SK6gRz3s=; b=d24bDYmw9hWIy7LyHGQ/xrT0ZAWk+E/6cEQDJqnnEh04k7c4xAANszyvohVCj1+p8/ Vd5j5PyqAsCGtdmmWGof62JYW3Khz7oXpbhCcc4qe7nYsrNPDjfI9jHledpCPoan3GCw IA3oHegoRd+ahc/j+5kTeyHW8Qsv4E6FHMZ65hFvL0n8e91n1ETuhl1Emj52Mh2WIj5z 8MQbrD8n7k5F4qvvAcQz0XNngdvG9qwtKdZ02VZwk8fkBAU0BnPLzkL7AygzMAb7mr7S N4OHa+WWzNJ2QiersROzMNXI+9etiCgqS3zDohT75AxnuJNp2M1H3Jo3DlOCl8JCFH2j +8jw== X-Gm-Message-State: AFuF++kAPRtQyQC/44Pck4LksL84a7JL7UMSYdAfuRW/a90ixmdeTW5+ 0BT0kKcLbGbrFHBeVuRGms+9IUgJ29a9kioiBZoONYOnXpa7fLMrOdaJYoxXZWL/6Yw05jEePIx YObcYSdc= X-Gm-Gg: AYBFou2cCjDKa39jVQGcWlVacBKINiRXuyBYc9q4NrZzsdj6ImLojt3XaWEF4sGIqmx bZP01UksAU3G+2moaEwcx6vXXXUJeDxSxUxLwtTwV0QhySSjuCtBU6LcrUVVu9Q5c0xuqjXv0Fw ljkFDhYpMA9SS6US0KJahA8G+0MPakNTlk24yDCoQKf4UlAyieW3TUdRQLF2MMB7NNXtu6sH/K5 /Qo0SChro9thZtyFKV9NxCP860HfyET/dtOd1PldrLHBIGqrPpMJomPmMfCKkt2M9dKIIVdtMwR UlMA2KO/tIY0eKxYpDQNuZ1eebyNgT3OzT5YiKycGPcu5IUsF/SuCNw9sPWerdE9LWfj2kr3IYP KmOfq5ypmn46/wb+Kc+coaolaT02aYKGHTYonpvlTBAw9GmBhAAlD+Mt6q3amWvO+Z1CVvWspWe HjIN8yW4dfUgEj3PBRSxbhBm8XU364Uq0DBQnPG9GD0+WCFxaBbQFifw9ltKSQM61fKenEtz8y/ tnKU2s= X-Received: by 2002:a05:6820:f02d:b0:6c7:cd95:f107 with SMTP id 006d021491bc7-6c7d1bc8413mr3007242eaf.21.1789564104035; Wed, 16 Sep 2026 06:08:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 50/92] tcg: Split out gen_ext_i32_i64 Date: Wed, 16 Sep 2026 03:03:25 -1000 Message-ID: <20260916130409.3382710-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::c; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0c.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: 1789564390428158500 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 710483f6778..6c106122f6c 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:32 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=1789564272; cv=none; d=zohomail.com; s=zohoarc; b=bgLCbj9+XgcTaAhfKn9r+nUktqw1FNva36zZ1Wk83DpHhlKuEiolD0SU+C2UlNghuIBa1f7UuJoarJmtk0A5826YkjShNFV/unsSdMePLL9b/0BlPPJGL/A7KNANcXUW9gn7Kyp7TQbJ73mPX230EjmQCYWMdTYWEQ/IqoPY5hE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564272; 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=uw33vFrpnQVm7BsmlQfhOrzsbXCh8z/lnCOUlk8pdZw=; b=Rz03cqr3bCejgh3yandY0cfO/I2Aaxc6yBwQwGOQz3oacArVqQ98GOYuarVpDKyr1SqMhmLGvctQ4tKo6Fklai0Nfh7qfZnfb/Z8og4eu16HJ5lLlIQib4TRYg8vpgNElA4qRSHxrJ8guO2JynX9abrk/FrjTD8ShRdzwOjQx3c= 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 1789564272836292.83799605763375; Wed, 16 Sep 2026 06:11:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNk-0007bJ-Jd; Wed, 16 Sep 2026 09:09: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 1x6pNI-0006kG-NZ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:39 -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 1x6pNE-0001Qz-7A for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:30 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cebad4afso894859a12.0 for ; Wed, 16 Sep 2026 06:08:26 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564105; x=1790168905; 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=uw33vFrpnQVm7BsmlQfhOrzsbXCh8z/lnCOUlk8pdZw=; b=w46YHGrW6i6xDJVPCfyLBvEmwp3iE6bcxKwWLzs1SJw91yXQQx/dK50jTpkoDvpoCJ Jz3ee0rZx8GRYZEd7q2PMacI5qrrzsU+eU2wSqND0nt+s6QqHeS+zmnCosDVZQHb0nqt qjdWkHa/j8i4m+ji94pLqknlqttUfu8syEayJzjjFO2UNk54wZQF7c0vMch2/sJ5ers1 7YNrwcpQuGTu5YR81+7T99NypIWt8C0KYHGMjcBFrVChEXX4phQOpjCJK0Ki1iOD+q0V rTJ9ulBqvf5uyT5HgNHjqkVy5J123MW6+WicjLOG1yKNG1VwIUKq8tAUTHS7PqE/2L8w 2KyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564105; x=1790168905; 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=uw33vFrpnQVm7BsmlQfhOrzsbXCh8z/lnCOUlk8pdZw=; b=nBSIYFWkuCE5HbqEpH6VTmattKHWIQ4XS12P81EJWEOOg/ua5IV2g9AyM1fddVy1ui 5wLk3WVz+XS0bwCghBB5a2FKThZ+ELzOnDTaRzwsdaix37dKlPArZskp98m0zmrKOuzX iKHGoGNkfFEcShtpUE58IoOl1efG0r0xtX3XYm2pb5uZsguM8cGHePjht1fRAs85X/GJ RCL7DPFuuyVyM1AJUXCxPdvWu5ZGRjuYgNT0QiGk7AGCWQPH/EjOCyXyfI0uSkWXBEYE 0hM26D6HKekiTtsLIvpIBTfDVUjQdAmrTfWRRPR1G2y4jOcncQ9Ov/qvUyALXPzICJqW rBhg== X-Gm-Message-State: AFuF++kHc3m8UphYWE6vVyMmdy8TQBeeKcbzmBcRlTLrUQaUvqbPaRur M1DLjAXyuoepaTLWT0TYezvl6bAjSiGFTYIk8YHs7wI9o6Qpldr1ZMbMjMOszBIAuUJvqBg7pdh +W4ex X-Gm-Gg: AYBFou2wveP2JeaGOUYpdhqTsCbX3HjcAUsupBFWu/OQrQWwWYoBzn0nb9LQSqKGkk7 TJ/A2hAkEMNJDPfjX5Zmu56sSzgPwXiBSwsXd+EH4qPUD6nLVS1/hXu3inDZrmneRmgPXDVldtM m6LhTiVIS16QZUxW3yI3ucufKN+hIFNkeaHy0LPnhUVESIIsFtk2ncAjGaWydXES6/QjO5880QP SI3+IpeN63ukN6R5Hvzzg/x1x10QinwEUj3j2Phmucr1adRhH3uFEv2ZKESjcy49YjWfIBS+h64 fLboP+SS/w1hLkFDfT8FLyhn903oRrsMccjT+ajax7+bbY2VV961A2BeTQIBOojC8YurYMkximc +IDogZe0jCt+qUna3wfkVGyTZfoagnlFx3F/skGQ3TbenIK+OqyXFwOwEMaTSvkzX6j0SVvp0Kq ZQYWvjNOujPJzHbswnxcFBjshv6P8TFZ2Q0qg4OuWFxLG/77EJ4TJBxI4MX2cw5FEKU/Z0lcA2D R4rev4= X-Received: by 2002:a17:90b:4a81:b0:39d:f773:37b5 with SMTP id 98e67ed59e1d1-39e1df6193cmr6158599a91.0.1789564105091; Wed, 16 Sep 2026 06:08:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 51/92] tcg: Generic expansion of tcg_gen_clz_* Date: Wed, 16 Sep 2026 03:03:26 -1000 Message-ID: <20260916130409.3382710-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564273841158500 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 4d660ca2db8..d882bf5d0fc 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 6c106122f6c..714e279a453 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:32 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 1789564373168762.4675422871351; Wed, 16 Sep 2026 06:12:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOL-0000Jq-0G; Wed, 16 Sep 2026 09:09: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 1x6pNI-0006kH-O0 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:39 -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 1x6pNE-0001RL-Vu for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:30 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-39647aa9d52so2258050a91.0 for ; Wed, 16 Sep 2026 06:08:27 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564106; x=1790168906; 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=d03CGrhOIEhMRaHaJDMgUqomQNEad0BRJ2NGs5rp1P8=; b=YyH9ckBziPnhRSRIyn+FiqiSwl9A7afD3lES1aExlZotwUwnisEdadAF3z4yqCaPCt iac4DNjnIXFuYTaiDvWlk3gRKI0fe2yn+K30ESHpSQPA6S1+4zaim7xw3Ceibpwsd32/ K+FOz70kl+uTCSqTqvGlo1VXUrXOL990TVNK4cp/2+adAGm45y/S+yHbwvQnZo5bRU7Y KYzQAOwUS3bOB+V5fRURVW5BDxVaZVhbppf3S9LFzprb2f9akVxFNyQhoStEF9d/FU2G 4lDXh8az4ST/MJ++SZNjm51KhgG9ObqoFfLLIhguFS1HSNCtlwtHvYtTX/ktL/LRzml5 YLCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564106; x=1790168906; 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=d03CGrhOIEhMRaHaJDMgUqomQNEad0BRJ2NGs5rp1P8=; b=ag8FvGkVrv1jfnXLCoCNXkmu8Clsr6q4m0vPqpol/vKMfI/ucs9Q7Gw1vLe+RxLV3Y 8JQpLDwCkmMvFi0vNCCNNXQaku0U+QFyrdMmvtVv+0AvHieU9deDJK2MRzRDUY0N+PV7 O2kxv370XepI4cc2KqaDYfRzq6oMj6ye4kK9/562ee7hV/DDFCMqN/l4Z87dFOpVCzb9 bPlwIcehDtDI2cBWo/AGWJeCigCJXgCTci6p9vO8XvyuOXcroDl0TzRf1lXbbPe9vuXD x4fxuf8HHS+cq73oefLQm7jeq3K2UoaOJHPrJXWpPBiPgXstVWowfHD8URqATMp7CW/Y /sGw== X-Gm-Message-State: AFuF++mXZK+bDR10qjxMJDfNWsnDdc43qH4HETtCfxAxzAD+HNA48kf5 bcqWm+Nm3EXEagqM74ZSxGzUXzWLbjG48IQYSO986L0fu5DLtw+RoC7MVx3G01/RlBtvNj6SuGj 33XyjFg8= X-Gm-Gg: AYBFou3wg9pHTXxjYk0WHnA08i2yAG7wNRpNfywq1m+H6yGnLHqJHSH04zo4UKmU05l NQtpsQ92AFyW4dEK4703Y7afyw8JWoWN9J3S51RyeOQ89r33Y88G9h2BSDEDYTossYg694fIdZk bXh1pfEYq5Wv6+/7IKZyPFxTPtH8yeQD2kZjFg02EN12PA+jAT4nE+SiJI2L4m3s4gpM3QLGpP5 u/XEwXEZxh2bfSwfO2v895a4QPjhnUPAtR7vUYW1GQzA0bAE+TAQCc0vM/RItV9R6dVIfASMreN BkQZHRpachlc/YhicREgwHxGotJm6WWyMDfSSkKEJ6fM5GId5zgRwrKVl0AVqknqnWYFS65M1eQ /yXPRlG8jyNaHM8BdR/WbBF6CIbkXOa5G+X8RlP2vj5jDh1SRE1Y37cnA0+icF3QfcjSF7s00kk +ptp+s/58H3GiNEJtKMifGPJ7byvuCaMrYBV2XtpqPIIATmXAIyClj8ykBfETlP6hZgsg/wOaba DKO5dI= X-Received: by 2002:a17:90b:2f08:b0:37f:e5b1:ec4b with SMTP id 98e67ed59e1d1-39dfdfd409amr9484983a91.5.1789564105964; Wed, 16 Sep 2026 06:08:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 52/92] tcg: Use signed integer for tcg_gen_{clz, ctz}i_{i32, i64} Date: Wed, 16 Sep 2026 03:03:27 -1000 Message-ID: <20260916130409.3382710-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: fail (Header signature does not verify) X-ZM-MESSAGEID: 1789564374391158501 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 d882bf5d0fc..0e8203fd836 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 714e279a453..0a2e92d53d9 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:32 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=1789564216; cv=none; d=zohomail.com; s=zohoarc; b=mXszKnuhI0Nmb0F3yaAff/FH9AG3dK6RwOlk9+jCyvLynJHX6iC/5n8j0hnORxTwqA5cUY/N584ns0AHFLtHVPzQda0Ijplb5kljGNEXzKR4FdLcmWHCZP+FYFRUQ17lES2vIjhoj6c3lraoXsAAmyxJoASubLxzNTZwznbm390= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564216; 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=RNLVWHJbOHYwr6+vchucwTrRkycNA9wJPdmPF4L4TXk=; b=UTJ5PrgyMY8OuYab2QYpiY7ce2Mf9CfgI7gbuM3oOooZ4SCBw12IPUoaFtHsSt1UWNtbCiRZ8WPYcmjlC3D4G0xKIasv3WNeAhpLCgQN7cdvXn46y+8StAO3Mtf7Wfa7q9HrRSPQRO/UpFQgcR1J6v99qucE7gULFhbK0oXDVrc= 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 178956421629862.91504025642621; Wed, 16 Sep 2026 06:10:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOJ-0000FK-JK; Wed, 16 Sep 2026 09:09: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 1x6pNI-0006kI-PM for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:39 -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 1x6pNF-0001RQ-Bm for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:31 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cea4bfd1so667998a12.0 for ; Wed, 16 Sep 2026 06:08:28 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564107; x=1790168907; 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=RNLVWHJbOHYwr6+vchucwTrRkycNA9wJPdmPF4L4TXk=; b=x0td+JV20nimvhbyGAYdkqliSZZyqLRlcCrK9LciSwZUSEHOezDLyDTh4O8OixuApG j7wDAEiF4Xe4XWfsNbgek0j1gYxGYCpHkdRQ2pk6g4iqP1G87VgGIi+uVWAqwIp1Xjn2 aI5VPcoMmwd9fI0KQNswtWWYFZCecrHC3GIlsOWV9+YJ3OFCf/xZ0Knc4vf4zZxaUS6l 8JkP1S/VXwmreu00YX/aej55MFocW+NmvkkC030LSffhcCX1KU1xMZmZwGkzqkspIfuB 4UQP0eVbWRv7WR4ziXrRcA5lhTtO6pzNEtwFk5/7nDCM2Gk7NGRnMh/onu2cChCzvYC9 JKLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564107; x=1790168907; 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=RNLVWHJbOHYwr6+vchucwTrRkycNA9wJPdmPF4L4TXk=; b=KvQscJlBdWOvQOFhfib29w2SM7y3T6GfEmjipW4YD3R6068EZ0ZF5neiLmLfb3+KC1 5eydFEIcsETlS8Eh+OIWedqaskC0pXxSfADoFp+mCKXx2MUOhsIa+kUjBp8ibJ/iClA7 9oCDcoGdtgHEbWuGabcrSKQ4y8mjzLtLVFATmiBtk6k5pKZkNkrSMw4SIOu8l7ejMTVE QyAKXK3jkOx02sLgSXoxaeG1fNWBnIrLMmPeoTidiHK0Liqb6bPwWPuKajHmYWdMKiiA qDbueS1eUX7cLYz+Dfm6AJelbQ3K6Penzu5GOvsadEMMd0kd5Eb40mgf6nEcdkv7Yz8i NB5w== X-Gm-Message-State: AFuF++kzdM1bGZU7M0uQqiBT5O+ufegrIiRl4UMffkkby545imHk2Oam xpNndOFWdjpOKxXcb6QV1IdoQVqypopd23v2QbL1263/a7Ig3RiM5kOWqb5L586TUcAArxEoXPn MJdcD/cI= X-Gm-Gg: AYBFou2sXC7nWP77lb6lpBDDAQ89Wc/oOuKD7UohH/ODWwu+u91POCJeeb75It0wiCn IwExELfQFVKaDWtTvox9vW+7Tj7ZFsMENQdfMA4f5pxOrH7UUiTm3eiTkXVBhsYKGRzykDVGug5 FGFkdiY+lE5RiaUXR464Gr8cVkHV/h3k1jC9nLqjSu+KPxlZwnMGQXIi2Jz3z9dZvU7rx5X1iRE 7uCukMnKoDRuHqL+uavXdZUNo/FSTE2hq4xHGoxghIroKOqSxyj6J377lUOuRdFWpi/cbZ6crXS 2/nTQuDgOtG1+5IyW578zRUemYjtCux3CLWK6apQuoblPOIPIOUkKSfRgdKBQhNPSIidDiwVeEa YG+S0P2ycUtEPdQi0xVOIOb4GI5E+TsMYkiWn7wMiu783JSj/x67feF+KQej+xJL2WpvYi+WiL5 59PzOeWM9hdS8Yjbfk0Ng7LhHOkoelH4W8GazwYKNaz2GQyE6/hd/SmOvepITvrr1pHK0/10QU9 Qw949M= X-Received: by 2002:a17:90b:4c49:b0:366:3517:1aa2 with SMTP id 98e67ed59e1d1-39e1df6e4edmr5857843a91.0.1789564106878; Wed, 16 Sep 2026 06:08:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 53/92] tcg: Generic expansion of tcg_gen_clzi_* Date: Wed, 16 Sep 2026 03:03:28 -1000 Message-ID: <20260916130409.3382710-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564217264158500 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 0e8203fd836..b477d980a3e 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 0a2e92d53d9..e43b3cf4f76 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:32 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=1789564338; cv=none; d=zohomail.com; s=zohoarc; b=ZJf8JFLxtgKH0cKw08tbjXKDT/jpGQPbwU/d4TNe3yCvfjdyGYWjqbaainU3vGj11MQps2ZLUcXHX7lyBeH6FuG2Y1PjZS/VDsW8Vt9RXI5DDfBm7nWdGBi0mKe27LAwlRUt/5P6w8vNpuXgHRXH3qx3TKQQcpon0/oUPzcQylE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564338; 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=mpJLFvW1CmSdR7nI8UnQp9sUj66i1dqPnjl329KIM/Q=; b=lmOWTF0SgvBbmKRkFUviIpOQWKkd6xEXSStC2XN1uHalPCZDptifjJfT64d6gM0e0G3ABYsLZYwHFodTzdJundhmfve0tTqjKKaSSuNfD+8ov5upOMHaIIcvzBK3ytl6qO/WUG3zDUP8Pm4dzYqaYipdZXPmE+qEfRD4vaKM0tQ= 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 1789564338777419.8985376782274; Wed, 16 Sep 2026 06:12:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOI-00008y-8R; Wed, 16 Sep 2026 09:09: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 1x6pNO-0006mG-Ce for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:41 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNI-0001Rm-HN for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:36 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-cc147d86bebso2935635a12.0 for ; Wed, 16 Sep 2026 06:08:30 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564109; x=1790168909; 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=mpJLFvW1CmSdR7nI8UnQp9sUj66i1dqPnjl329KIM/Q=; b=ZwNubSHehKhr/s2GnK689VsBuiivCp5WFeM3ez6JzMdtFIfcAgbXsj4nwaL5Kv5Ppv A0ZLK+6SoCDzqSRujL96VkQgWjLWWvkbIUIt14+/0goXsOe7tYAB+MmeTNNMM73knwaF 3CY+5P70/oQ/NwoDZVqNX4XL6H3TR3JWSUrLPEVPzQraJ3WOPrTqq73swGkL+y09DNTa 1ab/J6ujV8vqDZVcAfiZVQdZO4ipqajf3Rek6Zhqm08PUMTgRndzVs+Xv8tyiG8EWGPs YJ2AopTMEj7HN0Q5xcyg0GNrxDwhBWFcfvQO5rYbrzdkiOsaxp3aUM13+HEx1rHnk0pv lXVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564109; x=1790168909; 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=mpJLFvW1CmSdR7nI8UnQp9sUj66i1dqPnjl329KIM/Q=; b=E7VpcN1wYM6LYrMxQpsUli0Q5aUK2/cXtv1bRPT9AwsePoLeu2T0vGwyyjfxmKlgGi F9NFtwDJ6isBnwYkj0kaATI2YbaaIQ19bRs36rDud8aOTDFmgGHM7SX5TO6oquWI3L9+ Jjr/5KsUDzOwHuiuBp60yJjaiT2QuL6ygsxDf5c+hPohibnDUBKXinA48qBAlY0lJklJ xF375BiDfbs6o/l+GCPY6IA/0yM4QxKz+00Jh6c1iTjeTS910Z/gNmla/KwfgJivk6qq 2IweU5ya1BwNvVAqazpWhPRfOD7PGOwN97wZQHxFK0i6sGWn36DgTNsvc01F9u0erzf5 tvSQ== X-Gm-Message-State: AFuF++mVbFLK1Y6YKXwVTdt25fUNvEhuGPQvCtNW8fzNPkw56y7eBpQ3 2pfIA+1y/DlJtWoLbgoxjm23nwPOn6vslWZuGKNImQyuPtLxaYXjfFRjfHKG/uULN9Y0y2zDaCl 59Em9BFM= X-Gm-Gg: AYBFou1X8pm0GmFlmvv2XSXGFt640BSTylMqMaqUgcziB4wrp+2cACIKxyNTD3v3aIY pBgq179kVsWcmMgnK8QLeiPu51+bM0D1+6wt7Doa4C75LmlhdIsoAx/wPdptj6OodQYU1xgkAsl 5ew1C9jN+e6DqD7yOyYEgNi9F6mJ/SeT9DSz3B3xT3iB/kKhLCXk3gUW6YFZgxngdBzRXhZKoe+ mHMPSTKPW9Dx/C52/5hxyJpXFTesgOzxGQaEgXIPwW3Oab7S24sB9krAufbHx2ZNLO1VKTyALvr wURcL/Z6G+JOpg8FoDSONc6z/EJ4ENqZDV0XV7E9PyMwUoYp/dUhGUMT/2HWNfb8pGDtA5nJBht 8bp3NS7tr52Mj78LJHzFrPTjas0b2ytanBhgdy5uE9u6rnvrLIq9v+7X0n1P7FtPwnVeTyV2+gV S7NlzHAf4Z+OQgEy/+vOvnK8efp6gpdgIvqt1k+4LltKn+6XSu55xs3ny6M7/2spzrw2hecWBJb Un2Eg8= X-Received: by 2002:a17:90b:4a92:b0:398:9beb:a2b9 with SMTP id 98e67ed59e1d1-39dfe1ca2dbmr12207754a91.27.1789564107761; Wed, 16 Sep 2026 06:08:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 54/92] tcg: Generic expansion of tcg_gen_ctpop_* Date: Wed, 16 Sep 2026 03:03:29 -1000 Message-ID: <20260916130409.3382710-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1789564340192158500 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 b477d980a3e..b3cd4bbf63b 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 e43b3cf4f76..bcc176e3cae 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:32 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=1789564386; cv=none; d=zohomail.com; s=zohoarc; b=OlJ6QF8KyM/JMU7TcjTHsIjhBRxaodyvQTRyDfAlnEAdFhbVd/WttLL2ToAT9v8S0nzTFvZHsASCJGnh6YuU6otENbJgdfWMManQdjNo+zChJqMU14+xbSxdkQ8ZptP7nVM6u8kRFG/tOWxlcm5Rzm1Fwf6pTI0mvTg0o2NLNBk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564386; 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=hRK0ZqX3WNx2IBHHgNS/qv7nv+nVKBKyUCE+RY53kZk=; b=UcasvSRkS09YZ6BVq5JMbD+5tMQlHG+IvywbPNoI9urC4B+AEhq59Fp1112rymf3sSXs7N/nE8idtBAcltPmiijXkEUDt7fTonv0r4KeW9c2ZCTOIbfzzpKc9QYRmb7dBCJ/B1zLHQWp/Qo+YBgT9Ldk/hClovmEuC4Mz2S1VHs= 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 1789564386140712.8327573059288; Wed, 16 Sep 2026 06:13:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNo-0007lz-80; Wed, 16 Sep 2026 09:09: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 1x6pNO-0006mE-Bv for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:39 -0400 Received: from mail-oo2-x0c.google.com ([2607:f8b0:4864:31::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNI-0001Rk-9S for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:36 -0400 Received: by mail-oo2-x0c.google.com with SMTP id 006d021491bc7-6b4bff33ceaso590161eaf.0 for ; Wed, 16 Sep 2026 06:08:29 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564109; x=1790168909; 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=hRK0ZqX3WNx2IBHHgNS/qv7nv+nVKBKyUCE+RY53kZk=; b=caeEfyFyNdo8Tv3kSU5dDs2bJAMAgfQVxSfHit5RprpsgFnaXDxCZJzKaLHEHbfNtv bN0BnudqKjB7RTzH4RGunUCYOuWmtiri/wQK9EHdoBGmUvEwLyPwAFbtu7Tk1r2Lwuqw /W800MEkCiiLqtWyGiAyPNGTaJfMXQedct7VIA9kB/VftPcsuhegHAU+yQZd1n1cVqFE ZpR8yt6eMwKhBSLaWQb/o9EEj0sDuGrEqlstTdBqr3i5GBsZl39wTP29vXHXa6rJgb4+ 6s72kQplBj0WjiJmbseLlmw4WuNnnTpY3KBvn+z5OFJJeyXoKm3UKWaW6Jd/NXuOj1gy 06PA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564109; x=1790168909; 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=hRK0ZqX3WNx2IBHHgNS/qv7nv+nVKBKyUCE+RY53kZk=; b=Ik0pNn8A89wcy/pUV27cg2wg9l1acO6UFzbZyKeO9OGJ4ZH4NqXeLs7yXB/k3kzJY4 uz2GI/ldDKVd0CLK91y5TFAMzRJoRm0OPvoULpi/WuUxGHnRwXuhkquJCxCHzVrQ51/8 YNBh7+X+F+ZX1gYO9+lqNW4qgtTMX37477qyVLT0UgN+t4yVEHw4ArUBaOiw2qKFxxRu YGNeJrQ8GOXMMR/WfCaEGZlkndTynD5lNOe2pey7Rjytzdvn5Mx7DZVOgN4x+PSsSuNq TdF6XmzGTH0+T4amdEpCrsKcUX6BfhlASOQw9mh1s+Hd4I5t3wQn5+4+kbOfkQrbqx05 Ee5g== X-Gm-Message-State: AFuF++n+v9O4vmJ6KuSyf2y0GTE9r61PBcF4bfjFj3zeGGLeyQQEHuuq mWBLOe6wgLqiXEU3dt84Eb1w3tbRCrRR2eDPtGAw7UXi7sL5RYBeG7tcwBqtVQ2rjPCADr5Vkuk lZjvNqsc= X-Gm-Gg: AYBFou0tn+dZ79cXaO0zPYd1FEm0kS+P9Uat+R5mdvmhZi69pjFXuX0BwfSoDl8Tzhw XYCUoq58QjUENT9QLhjXwJH4S+k8hVjDxhGZafBaL6GQA95woT2NMKY1jEIfU9Qpm6dMjDqD2Dk Vx5C2ysSDsS0I+DmogC5ZSz8qnWosC3YIzs+mRGOqk8bZFNGp63DHPbCWLrSq85pMhFIUyrb13p P93jR1w+RqfJnSHL+MAc6znRXwap6SwQVjM5+eElRxG78Bt1s7e+6THz9yCaOlzjTOSmjgu2Ftv O9H5Ry0Pka3MM/2VfdYR1dc0howpJpbXdzhPRnAJN9AeyEXyP25WmMYlVQDcz6HDXxPxJ9qo/HS eENj3JCWlxQyQlMKG9wIFrSWaM2SmPqqkbvegIy/EmmfxYxjd0d+PcAD4514/46E6qtp8H4lVLm 0gJTZHGVGSpXt1AIXIaDlTuqRCQBBV9EGg0ukT/J50r6dYlS97VuVAjjbV2fp6eYeRg063Qfc/C MQoheU= X-Received: by 2002:a05:6820:4cc8:b0:6be:e96d:73fb with SMTP id 006d021491bc7-6c7d49f498cmr2707611eaf.66.1789564108946; Wed, 16 Sep 2026 06:08:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 55/92] tcg: Generic expansion of tcg_gen_ctz_* Date: Wed, 16 Sep 2026 03:03:30 -1000 Message-ID: <20260916130409.3382710-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::c; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0c.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: 1789564388466158500 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 b3cd4bbf63b..1f31253263e 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 bcc176e3cae..0f617a3099d 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:32 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=1789564488; cv=none; d=zohomail.com; s=zohoarc; b=htsUWHITVf9b8P9PUp4Iu2fjXdwqwqvz1X5u6i0fejlpU5Vcyx8lHazJUzpju0A/Q4S1nQl79twIRU6xlnoV0d4oEyrNqtv46FWnLhPRJ4lnW3U8IKlBk94/JRXW9igXcoRclELuo/tGNubdeDoLDr72By9GwYvLgvla4ZRkPxU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564488; 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=FtY+bgVSFFzjKOkjI2Q5lnBb7z/iX/hr0z1edTE2pa0=; b=TwVRc189bu1m1CdA4k24vQRsTS1NirzoOHKlGPgpvzZCyM9EEjHSqQslhmEFAr98Nk9Nuq7+v+xm8gSbLpF8u3IQUAQMyxz7QqqAWm5NAsgHcpK6rCJaQ0NfVPCPtLGmsp5lrhUzv4mTHd/HaP3hefnLSwZ5pXRZ5FjiKkMU+58= 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 1789564488577555.3084410301966; Wed, 16 Sep 2026 06:14:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNg-0007NW-Jk; Wed, 16 Sep 2026 09:08: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 1x6pNO-0006mD-Bn for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:40 -0400 Received: from mail-oo2-x2b.google.com ([2607:f8b0:4864:31::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNI-0001S0-GR for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:36 -0400 Received: by mail-oo2-x2b.google.com with SMTP id 006d021491bc7-6bcc0c495efso568787eaf.3 for ; Wed, 16 Sep 2026 06:08:30 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564110; x=1790168910; 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=FtY+bgVSFFzjKOkjI2Q5lnBb7z/iX/hr0z1edTE2pa0=; b=vtSo5koVN9DPjo6nl0w61p4p+H2xB+CV+51uIJPPNrDmoXHenPqrD4jNJ0Kyq2a/iG yMn0ryRajIj8cTsUtcgqBC8V8DVA1x8a8UcyU8+sBB/451AXiR0PPhgVXcyHGF6R9KBh sdz2ad2T4tqtMQO8tjMRwK5Uvz57R6QNp8HW4bMA9lwg3xXvFUtQKad0Zl8DwCp0Vio6 XENhcOfuDsxvLawnykfoW6izZFZIfe8FSzvubU1WiBJ1Dl8akersny7+zmmu0wf2xsRy eTfCp/yN8PbaiKX9d1raXT7xHT/jXbC5Dh79aX8F0tK0ZG0TmLSNLpR64eFgb0HUfLpq gGJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564110; x=1790168910; 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=FtY+bgVSFFzjKOkjI2Q5lnBb7z/iX/hr0z1edTE2pa0=; b=SvHkIXpET3Pi3d3C69Kv1EdKFQ0O3R1bCE9iG3YY2tlfc+SHTHUGLR1HEVOO5iZgDx VyZH43LzNxqsOG1aLwitjHFk923ypqG8MCPMSVs+vjCo6TUq6/UM77cd2S4jHAZzja1N xObWz8VbX0MsUaK564EnhknSYXzwG73cEHszCsKU51ZP//39RE7ghwAma7ZT00cgsh2n p7wg6OyLw7SfZY1DQpe2FVdlWYyIBA3BiDAE8uAfRjXXOMK3Kgajrv44YYrcwGUVsqBh eHiHA86CySvGsSfWRRsRCG+VNo3iDI5AmeQjKOHK0uR0hf78HltQFn1rJbA6IiE06Ap0 BxPw== X-Gm-Message-State: AFuF++mxto7EjlriDTospIKGNhOisb5+FU/LGZ8ZxR8zzaHoBvLIxHwh hNkMuAK+1BX01UYwsr/XzrCgH+b7yEJ56ffGmVlch97MMwskHs0GBsTYRlpnu/3pYEtOaabaJjt oT9eD+nw= X-Gm-Gg: AYBFou32pshPB08qGj3JV87XTzDNwClD2m/UvnHUTCNUB8qFZ+uxAR/RiXzFZ+3kEqj dZnh6she/y9cispLYyFzGKihGzAeIV97P2SjWfTAm9Km0leex0ey9q7TU7b/J9GGhV924A9HZBN jP1ZlJY0phIQm56BI6cmiDfKETZ/+UvFoXJPa3rDnEUjr9HoRLlSATBArrXgV8058MOKhydet3W VAF4Suvexnh45lEUnh9UadnJpW0ipFKEknLrtJeuROoh0D5WdNHWjai7QpAX5Y9Acq4/XuAZIuL s6eHbz6bTVRC0IBBhtpwc8d6pwhIJ+MsDZPw0K6Mm0H3n9yQoEa8pTXxjjM5rj2TYkOMhXeQwww sbf6u/w5TMErKcp5QVoGMWv5RKZ5lp0pg06swcaWhqYFHaDE91SKWeBZ31fG/XLgpIywbsZILj3 fJolrXXKogx+jIJa9sBEfsRvOk903OReEPxj4sJtnm809lWFK4Hvpgq5MR9Z6wXmHKIN1kee/ck +ml7tQ= X-Received: by 2002:a4a:ee0c:0:b0:6b7:8415:d78b with SMTP id 006d021491bc7-6c7d3206a47mr2632915eaf.54.1789564109854; Wed, 16 Sep 2026 06:08:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 56/92] tcg: Generic expansion of tcg_gen_ctzi_* Date: Wed, 16 Sep 2026 03:03:31 -1000 Message-ID: <20260916130409.3382710-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::2b; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x2b.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: 1789564489303158500 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 1f31253263e..96a8ba3026e 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 0f617a3099d..00f6e7983e8 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:32 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=1789564245; cv=none; d=zohomail.com; s=zohoarc; b=FJr54NkWGlcvoikfmC3rHkXdsUId+GUBy+hdv2zRgsn0xnyMWssl8k0JLN+rw/2HVQlDPZvq31JlvMuQluWABqnHuXmCSaZfATFTa72OAVlfYlJRs0JqzXRtmJvDHXrsuPs0VDI8eP0Q3aH0XDLUWXz52jGZqzwuYgWPkHQMpXY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564245; 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=kCg8AkOuHKsO98eKWzdK7y3U9Jh0cctJSXstXq47QjE=; b=LHB9eAa5D4BtNvoAwhJnNVJn61pjfdB9AljYDHrxcaEONlt7j5RHFAfSfyJaiKcmmVQOBlrsd+Qh08JD28LBLNLalNL9X+yy2cGPB0dqya4OverzIEzpsIGrI/cewITcijBQZwJH6sH3UKaYu/voEovsSgPqTAOKbN0ofCGQpoM= 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 1789564245788793.866808490553; Wed, 16 Sep 2026 06:10:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNc-0007CV-OF; Wed, 16 Sep 2026 09:08:52 -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 1x6pNO-0006mH-DM for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:41 -0400 Received: from mail-oo2-x2b.google.com ([2607:f8b0:4864:31::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNI-0001S5-HA for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:37 -0400 Received: by mail-oo2-x2b.google.com with SMTP id 006d021491bc7-6b1ae6b1b26so507786eaf.2 for ; Wed, 16 Sep 2026 06:08:31 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564111; x=1790168911; 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=kCg8AkOuHKsO98eKWzdK7y3U9Jh0cctJSXstXq47QjE=; b=VISivfo7xBjphPovVHARlh8DWA0mg2q7skHJKtdL6S+u1z4zAWv4gHAwFISZHjV8wY YqRONndJrKphW7tHlVSePjoEp/MWcdMMkC91eWgqhrxlPbmcK5/XY9O6n4i4ymt9vaQE oLkoeXKrFPbRnMd1mFdACPPq4CFV0VIKdrsL9IjZ04S38HLWYDy3uP/ifCTaKDMsbkdi gOiOun3k1FRbrcmXMeYuCkhriGMigy2WLJcHSIfbb2R1R1HamCpzM3nLI0SprSSLCqh+ mx1XOAJJ71pmI3SzDEQUPkHOxrl5T/wsa3FRxTeoPzsmXxfnnFanYOJfXRIV6MjKooJn V/mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564111; x=1790168911; 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=kCg8AkOuHKsO98eKWzdK7y3U9Jh0cctJSXstXq47QjE=; b=LTSulsyCOORnXe83uzbJsEzuVhzeoakIM6aGEIMMG0E+zN1Qq5zlwWfkIVYN05fX8k uVZITupysuU6Ou9NbDXKruJeNCifSEx+W6O130JEITrIugWldseB2Q89x0EYUpbQsjk8 iJ0EMBkT6zrgSkHNWkP/+qzr7lVZFaMRv797HP9msZe5HvYYs1zrWJOH2dAZacFfbd+D ZoBFMBwHfKPNT2XYfzGiVtfPkQeV2FxMhkKXDmQpttp2sN/5vnuO2T/2cQNUzn1zqObO AoafBk7XtpzZZjiS0sqG1wuhwn+wsZGpXzgCKKYrHuFstsfv5ZZTbfE3Gsi2Gw+WXGyL 38Mg== X-Gm-Message-State: AFuF++mDatqIl5wvTlMOt3u+LMFHF89bCZu0vHcm1TBd1IpLTwgCW2du 9PHCXHNHbNHswsqoBmVbrfX4PS9mG/YZoK8CXwLB2CgNH/CiIvL0nKj/eaR9x9sTIkAxfK9bqTJ Na4X8viQ= X-Gm-Gg: AYBFou1My73RU0udEIvk35x9Su8NU6WjOFcsmF7OhFfcQHTJ0OCAjyy0H6zEWfM+ZLQ CZLQsnkZlntnX0GTfX+ZZbDPyYk8Tj0q5QxIt+B+eIyKl2GREb9vbiFZ/pzVFrdhCon7dq/bUA1 tQmPomHsD8v3qoWRwUhY/f8smztDsiV0zSHy2l/AfHgQRiQDOR8r0pHpUa8as5gHJVub2/RJi77 bWa5i45eaIjfQDH5x6t2AtBymgdkV8r9yaFWzZfPS3k6Z5rRfL3pQMYX8n1XlkwVKq9PQ1WPJKP nU5C3uJRXypZi0BDdWaOMy+5ZBMXYkxxV2YQeb+YOdQBAereXD3i/0ETslL3IyMmK7iYzIVKCaW rjg+vnfEqh3jfEtkprB+pEdS0kbe8D3lEZ5a/fRdvOOU2ytsA5Y568jflgzjiyPoTGwzsigQ57j XQjeAPQOpojLUrStrAf0J5T7oS1uClkvhvL9dOlWIACXn/394YbP/Lm433ZaiN/C8eGfpdjS8jL 1Iy/ZU= X-Received: by 2002:a05:6820:161f:b0:6c1:6940:9a7a with SMTP id 006d021491bc7-6c7d52f75fdmr2474242eaf.66.1789564110762; Wed, 16 Sep 2026 06:08:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 57/92] tcg: Generic expansion of tcg_gen_clrsb_* Date: Wed, 16 Sep 2026 03:03:32 -1000 Message-ID: <20260916130409.3382710-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::2b; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x2b.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: 1789564247656158500 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 96a8ba3026e..79bb00b4a5d 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 00f6e7983e8..424ee358803 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:32 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=1789564505; cv=none; d=zohomail.com; s=zohoarc; b=NW1zvjmm/PCYMLs/zlSzACIKr1VW1p0xq04Q/EvdYeA2v5RoUvikaspwX9nRdMfsbpGeXLzYFwvjoUy5Ly50GgE+nPHXPvIexfRLFpPgH2T4hYAnEuSHp1VsHQwtjWQArQ+WIbUOwMCvAAETrRn/HuJMInpHrM/Vk1067ufBPYQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564505; 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=yp5Ek2O3IweFGooXyDjYcPw4chPNm4YtEfla76rCIeI=; b=M+pJduDp/yMzvbtLIK4OHIaSalWVMvVh4prOgj2VsZPxtbIVK86sWTm2Xl+Kp7gNw797Gg/LjfxbQsn7VcONAicruvKuXyf/BY3DRchmJjedYqDolcHEn032V4zQHjfOxnwYQQsFn9KqMiq53Jo9vlEN/Qb2XNUN0pwKanOqgWk= 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 178956450509355.46760429268079; Wed, 16 Sep 2026 06:15:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNd-0007F8-Do; Wed, 16 Sep 2026 09:08: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 1x6pNO-0006mF-CC for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:41 -0400 Received: from mail-oo2-x0f.google.com ([2607:f8b0:4864:31::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNK-0001S9-Fv for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:37 -0400 Received: by mail-oo2-x0f.google.com with SMTP id 006d021491bc7-6b1ae7166edso731718eaf.3 for ; Wed, 16 Sep 2026 06:08:32 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564112; x=1790168912; 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=yp5Ek2O3IweFGooXyDjYcPw4chPNm4YtEfla76rCIeI=; b=ws+ZddXshfsq1QXAmav8gdJqNzsJgtkheI9ClwmZq2xmSR1Y0OM9LxMANhaNXBl54Z 4yQuL4FM0jy+0SXKKVJDXP//M5ZSj2TCon6V9aEfjtDFR4xYwd1jt0f+HMrLbYI2pY3M ZU/AgIiCGYpm4m4SME3lIvqxHChhClo3Bqxuls78SNPkiL88tIuPhkStmsGtb2DnYUpR JKoU0qcwf2WMm7SvA/4C3hASCNYq3jwhWUAi8PI8Pchc6nqSsiqGX41mUj+qWZLeJcga /S9wyy1XiBaOhPtY+OY+qrs/3/eo/aNmrxtWDfcBOoSGdK1K0K9dYv5o5B7Y44y7R9ud peOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564112; x=1790168912; 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=yp5Ek2O3IweFGooXyDjYcPw4chPNm4YtEfla76rCIeI=; b=DwW9+shHZjR4QZBYg8NnX/vBJSbCEG9WwA8b033f/vHyzwBfdMTuxXZXJebWdmhW0p aj2lHQTjHbf8knlgVYtL3ZuG1alEN0d9RuGVGWk5eYZnJBcvg2urbzc47F+H6uTscE03 7ox3d9tHb9rbcP6DhiWd05JBQoou/HkZkc/GnT/T2GWuktaAdNW3WGgP3rG2OPZ4BrnD f5ZGkinWJPdnIV+SPtqGCy/EgkwYJ9PZs9IW2otAx+JIoAmOI5hsISIM730rU0B2uots sgm4r7eA2AZQcAu4lVofQJL+i/zQkfOEQPEaGxO4sckndtASAt0YqcRaLxiSDY9tKMNk dO1Q== X-Gm-Message-State: AFuF++mTj71IjYRvZxRfj9LHjZm+1nyTpvSC0vbfLPszZ4M7H30oA8ng RM2cgdGuoRIPKCb+/QS8KQ6bZL78jPUX6o5OI77L8ROpDBMuxU1Wr9EjVKyVVZA8riiddaoh3OL v2297tVY= X-Gm-Gg: AYBFou0qGm6gNArFhQpnJaKaizuThRqU886/HkMYa/FfkshWBYbtJiAXz8uDz/ukQZ8 zDL1SZJbQpe2LC3y1y/h4o9aZtvP+U8ynJq6U36LWd+zk7rK4uawnRL11WsT9fxFs8QUT9dnhxp GMSt7YhLLTlRD27AOEHhmmSAy/VwrNk5ctowsUQtJ+/3DtVdqPZ6LPrBuMo73RPynQyRlcLIS4Z M3PGo7AUbRuw+A3Ih1nwJYSziq6Mv4hEiWJjYWj4ZHc1uOnRBJzeAb+FMW7MAeJdPlvOnDxXF9R yL7d3F3kPAxzb28ZQ3z5JXgugHVkhwdLZ3eNelBMg4ZsZ1VgMDJCZFaT4fpqYLZwL1CpE5eNZF0 00xyngwZv/uDjTnoWhSJ0aCv5qxowvc94cmlcUZYbyympWIaG6Bt2/3KVxCoTKMG2ozzn2qAOET Z8EsORPxinB1mzcfzvbDe6yLRKSo0O6QlXvQjzXA98iLE51VXjVNdRSmKSNqH9yCFCqziCsoN/i 9yZryg= X-Received: by 2002:a05:6820:4c05:b0:6b3:5475:4861 with SMTP id 006d021491bc7-6c7d17c4d3emr2581259eaf.18.1789564111651; Wed, 16 Sep 2026 06:08:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 58/92] tcg: Generic expansion of tcg_gen_rotl_* Date: Wed, 16 Sep 2026 03:03:33 -1000 Message-ID: <20260916130409.3382710-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::f; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-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, 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: 1789564507413158500 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 79bb00b4a5d..bd1c76d9556 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 424ee358803..2893f5728a5 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:32 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=1789564373; cv=none; d=zohomail.com; s=zohoarc; b=QPQeie6ThmW5Q1nuOE9Oor8bjTUwgBL1eD8zMLsSiXsoRSTn7OMCQM0vAxXMtqH+2kVjYlB1JJBo60Sxi/HsMt/qqoKof591CZUhn30m0XrrFSjhesTdds9gII8Q40udcFV5/r96+UhLeULgHK5DEJJ0IqRYw/Rds2EmpMzea0o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564373; 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=9TS9NYSz5lLDhijItqF+xKJhMNx3JxEktLWlDwVCe6A=; b=UUXU8N0Opu11Zrk0GDT1S9zozHwhq/fhLyaRumn2JwfI9blAyukX4kCnat8PHcZsSYrD4hI0X5J39CKOUMtRsy9nKJ/BBmQ7tG400p8mdO1GxOSWJXwkB2B0hlmunN1nS1etYk21ripSgi66AY81tURMNZCamu82Xo2H9b2aB7I= 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 1789564373879570.2662931315921; Wed, 16 Sep 2026 06:12:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNq-0007sO-3F; Wed, 16 Sep 2026 09:09: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 1x6pNO-0006mC-Bu for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:40 -0400 Received: from mail-oo2-x0c.google.com ([2607:f8b0:4864:31::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNK-0001ST-Gh for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:38 -0400 Received: by mail-oo2-x0c.google.com with SMTP id 46e09a7af769-80199394f52so624489a34.3 for ; Wed, 16 Sep 2026 06:08:33 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564113; x=1790168913; 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=9TS9NYSz5lLDhijItqF+xKJhMNx3JxEktLWlDwVCe6A=; b=hnHxQECXCLW/Vm2Tt+hOoO09Esk+m+On9HMY/9oRppLbRmnHtFH4LxRf4W26nMZZ5r VHS5ckH7lKPFonvn9W/3oCMUlooTu/vPDCCXdyYXjKWMO+QccNecBQzHfUCQJPyIXZtF +ESa2XFS3kB/5Dt5diamkksqBlrnUq9R1PlI8IgKz5m2OY7ceOij47UUin1YRhYmh1QO UmfSC8T0vlB87XWmpHNg0TJuG3C505sqw9yuvwZyfQfVy/tCl9offfd95NDdkeui9G4j VLLYUwiL36MdcadX8GsfZnUp9kfpYvAwGsr+jgQ6i0IEpSHRy1yZuRiDMEKIEF7yzLps U/4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564113; x=1790168913; 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=9TS9NYSz5lLDhijItqF+xKJhMNx3JxEktLWlDwVCe6A=; b=UTP/qvoGvF51OhnbJu9Femrd1VwmR61FWzZ58La8Shp27IzDL6oxvH7uxKknk/fsSR 0COZVnJHiIZ3fbFPwiQaY4UeO1xLBJOi2TwnFESuSOjRwbNbmbmkiP4J71l8foymoDT6 Jo27W/kEdhJLpNJhShcfTJpsIWl85d2Ri0nkcQGrfqjczQyZ4Fd2X9+oc4lqrsq4V/tZ 41sSM8ez7UngxOKMt9byPD1rgIacSEsWfJPJ9CQAk1q1nr0ZZPgeojbK4ZNIMU0wOY01 Id8WiQWeXS/rUU9ot2+fhItKIFYzs1jwUox7KAjJa7VhCz1qp4X/sluBFmvfIAfum2Hw uvEA== X-Gm-Message-State: AFuF++lFDjeVvr9280mqhS7m+ueU/q3Ikeitr+KqD/sLflX3MXVyauqd CKgbt2ZFl4kaSJuSRTfMD3WbvMhYeFEhOcfj+DduAAd8JTNU25u10hjA558ia6lar8yJu9rqYb0 s+ZbtJFc= X-Gm-Gg: AYBFou2/WGEhXj2NIVXP4GAhNptaoaKsjBu5pE8I7t9FPt1FfrmNn7ORe4vGvh582cc Heyd5teVM/2+Li178OmN3u+xMnEc3OCfifYhaMAmyYUIXXtNihF1s2+dQLmLh+jQ9OTTJAXK4Yo 6H6WO73U3gJFJnFXJPu7SeMOIvU96lm7dMMsZ2tADYr7ebyARDIfCzzFD9D0or0IO/OvrqJVueJ OcW2Xra9BZiIsvVVYhQctJwKqdn+UQA+gp2x6G7LCfERUhUy+2vToks+FwTW0bq9xiwlfqBdPoy WrJPaeapneIT+501TV+YIVqEUtfiVRwUnssX1z/4eAIcDr6amdOmIO88Ww6K1e6t9CQZ1bj1TwU jXhgJC/xMRrRHciOVa0PagfE13l9Th1iZq7L95FQ/ukTWUWQKZsfwHcWKWsqJABURsPl8fQprQn pfvoxOD9Y4UPQIXfPhAZjE9uyrY16I9qQrBeRr2j+dNCu15WWhlsUCTIuHarJ5Wc6/2LoX85dTI HFK378= X-Received: by 2002:a05:6820:3107:b0:6b7:83c5:fe01 with SMTP id 006d021491bc7-6c7d54fe2e5mr2582932eaf.66.1789564112628; Wed, 16 Sep 2026 06:08:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 59/92] tcg: Generic expansion of tcg_gen_rotr_* Date: Wed, 16 Sep 2026 03:03:34 -1000 Message-ID: <20260916130409.3382710-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::c; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0c.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: 1789564374318158500 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 bd1c76d9556..a1c32214723 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 2893f5728a5..66beb4a07cb 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:32 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=1789564359; cv=none; d=zohomail.com; s=zohoarc; b=FteHYgWdGCtvfX8dXBMKUWyZTEV45KXlD73U91wzPk/iUeTqL+G1DHS5XuWdnspmReY0/G2iBdiwxWQ/Lp6G9HPegHo+G+Jyu9wfVlNZxnRzvw+TiQm/FveiHPdm7j+dHJ+ogltEq0DTlh/XQzn7uS0RBdzp6C7jUawftsyIdfo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564359; 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=N/lRvRtzfXec1REjTTMLt2p9CVJCr5BwD560QR4opcg=; b=QlpH66Dgw1VdcGGEyLRQLPKEYYV5CrdbgEFYFVpjCiB+N6iltISHO6a54wi3MHo00bBbtHtYXP77G/KWw2r2j9rNQYePlbUXfCdKEhjyn+mgA9uVF9MhSpECq/1SmWtdxjUFNdO2WEkxJ+NnC6FaoyKLOh5o6CvhV8pY7o8hXV8= 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 17895643597654.4386796791674215; Wed, 16 Sep 2026 06:12:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOA-0008EW-OO; Wed, 16 Sep 2026 09:09: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 1x6pNV-0006sZ-Kn for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:46 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNS-0001Un-Ne for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:45 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-466cc88a9d1so501532fac.0 for ; Wed, 16 Sep 2026 06:08:42 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564121; x=1790168921; 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=N/lRvRtzfXec1REjTTMLt2p9CVJCr5BwD560QR4opcg=; b=rIICU6hH+WqQZhoiI5gDU8s7Z6wI3LwTa+df6WHjAkMToxtdUm+5UVR7JkwK2VhUOg 1VdIJYusAvMqeybgPq+TPj5BSpWrShaG98BfiH8lqqACiLRd+6m+vHKNZZNObDoRF06k x+iqJ+RmHIGsGgGNydsY+mGoOn1xXDQIflbklAzIac5kk9UTAtxyM6NqPp7it8142ny2 w3oZDExmwblfeEOkuxwtmglgz2kuCxBZRtK7Gwx87XgWlL9CTv6fFnr6HPyhDMRb0oX7 CRU25xHqU2Tbyz3c4FHNbUPE6or2xJaHP+ncf3wZDHNZV7sPBlb65EJ4Eo+WVwHm+uvM WgZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564121; x=1790168921; 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=N/lRvRtzfXec1REjTTMLt2p9CVJCr5BwD560QR4opcg=; b=P08kaMolmQ2X6BxIu6XnP4I0wCL4YVZ82emhaIykCX0k8tokVg8MekY7SClE2jCBcQ A3caFOS+nCySdhMSH+K08dTgKRclg6USnTf8vYShK/VG0m8G6OXP50HE15Fhxgf+zedI iaTwjFYuGfjEFBoMlwjbWKi+xBXmFIvkwaIhovMmawTgbFGJ1o3SqPtkPCbbRVI4eVcJ k2c5LmaUHQF20Wqjmh1VgRgVU5hdAs8HiZ0oNZ8UmpDV0x7GN0DvGq/tD7dQZ47SNh1f ioIbAvc7IvLacKLSgacm71HHvxik9IF99hxVAJWOIy8OwSasYENBXa8/O7gNFxGyOzJi JOUA== X-Gm-Message-State: AFuF++kpPECEMXUQyQ0qGwtjnkrXkFUU0s5tW5+MhXecutrP1+F+IiVI E1T2bJzzGV1ei4jktZ4jOSjqdrTq4mtejNkcvpChomQKf05RseTrubKFP+FWxMZV1OMgCyT1XL6 +va1GNsI= X-Gm-Gg: AYBFou1R6vpkQJbJWE6V0/7QRAhGJxIH73HLIoe1Xk+u0uhTRJJADY5FrYwfoBmDiZy OCmkqL3UXFmkmZP9Ag2WKx3fXhP7Hwq0eZA/Xylh5cg7h9YRt84rYBPk6cHSpZWtizh3ZdZMzzF zzpI6S7Jg3tRt1iYoFKT3qTONJ846sd4pXeBRrsZz2oKhhch36Edbg42T+H51GqKJr2BXt7hBXs XcyRJplrgjphDEIS6DR2WHrNjmXLFoM1OmL7SODzSShmb+aIybkNcEU617Pwyyrv4E2lSwt/SRg OkitFMMrUmNnNF14Nfzva8tnhhnBY9Pd9Q8Y5wRwVBOXHlV97PCcu39vsEjVwHnzwURxUX9OdzL jrj2cBrmk/U9P6k/OCLNfaEUZQPtOGL+qRu4ZR0J+0Xe+Ac1K+7lASeduBmcq+XXtGeepg16HCV ciBv5Cwo97PRDy3qHLUr+u480N58mbxJRVEHr/VPzAmdkSjl26oKbdOnUksntXr8ZkboDuzuc3w 8lchJ0= X-Received: by 2002:a05:6820:198e:b0:6bd:a88f:c8c7 with SMTP id 006d021491bc7-6c7d2df70a0mr2421158eaf.45.1789564113643; Wed, 16 Sep 2026 06:08:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 60/92] tcg: Generic expansion of tcg_gen_rotri_* Date: Wed, 16 Sep 2026 03:03:35 -1000 Message-ID: <20260916130409.3382710-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564360434158500 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 a1c32214723..aa5257d9e31 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 66beb4a07cb..1d31a1a3f1d 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:32 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=1789564373; cv=none; d=zohomail.com; s=zohoarc; b=HNPStbAkX5tbEtd9rG9I9TXyfBhAFmdjOU72RMoZlR/mqG0XndEnlTK7342yzATyYHWjAT2ZJ1+iGOIzNeASC5YStXrrcy3RMGP66gvAOykDv75HWZ1IU3YhImFv+6fJzW4ayot4NJTXtLBalBN/aTLMtd4dZ3NYC5MXii1EbDA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564373; 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=CxofCjOeWFFiSa/MeBCuy34Bn9m6cyF7qDLcsEEIiQg=; b=BLK88fGjVMxBuqeZ6oe+Uio52uP8oeVAFCswRo9hg90qbucElq0Evzt7jKC74wWOHImhj7nDk4KMfrunjfcZwBJNuJN0BVR07unjuyv7XtIGbqUpkvbjTXlXSkzOrcbLbhnhbbN29MnGXoe4jCTq32wSAT/PsbN3OANnuu3GlH8= 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 1789564373077696.2179160612714; Wed, 16 Sep 2026 06:12:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNq-0007sP-2W; Wed, 16 Sep 2026 09:09: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 1x6pNQ-0006n1-8r for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:44 -0400 Received: from mail-oo2-x0d.google.com ([2607:f8b0:4864:31::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNM-0001Sf-43 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:39 -0400 Received: by mail-oo2-x0d.google.com with SMTP id 006d021491bc7-6b1ae7089c1so497953eaf.2 for ; Wed, 16 Sep 2026 06:08:35 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564115; x=1790168915; 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=CxofCjOeWFFiSa/MeBCuy34Bn9m6cyF7qDLcsEEIiQg=; b=wBmuti5npeNzLDTismeCB/DYiEzWmXnJnTaTi3FTX5o5zKYgbQZUNUMxikMdPKR9y2 /oPn24QjvKYT0dFvykpJccArnMgnHRmbpwHqoayDi+AY6ilEjn6pRhFlWqTLTcC6jkp2 PdFlnv8NPxjEf0+BqTt1io2mqmwM2N0n94VkWWfpoVjIGf+j1M7CxCelkb7Zdu/M3VWV ZjVx+mZt4KF4jchOnt/lI+KCm52qmv2bd6CuW2u8y333ZQ4Bgsdg9iSNGH85E4U7yiHN q85idYX9nPcqo1HZeSUOhfRTivXegzPrs21+1bABtj1tVEP0VYuOIdacxMyodwFn4lre eZyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564115; x=1790168915; 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=CxofCjOeWFFiSa/MeBCuy34Bn9m6cyF7qDLcsEEIiQg=; b=Z5YYvOc4qKtOmC5ZYIMgG0ijOLPmeYd7/ZtZO3xqLhRcVB+OC1aAqmzXdT6QqDiu6g f6j0HlPnEF60kCH97VGoDSXv/b3wi4WH6spGU165X7eVsUzEQuRylexUGAynorXU/qU6 XLI5Q7BXcolLd24vu+r0fl5gUUyvfUBM/IC0FXcUIAE+ArLifNCc6aHRJNRy9IJXSlYX 8eydQaP+C4ID+NMDuoagCzWKx7uAyyXAHSCDNrVIg/giM+gKlDeEi40kdzm5irbKUrWZ kvh3q2tGKEwfrHovHocfJimx1bOzJ+b/KzexGzlUA3DhiDBhTULHYTvhZcshLLrggnTM 00Cg== X-Gm-Message-State: AFuF++nExuro5yEJDCGSPrEP954fN9/neNLK2b0wavdiLlAjPPu4Evz9 c3Zgb+Cr7rB5li/8x+QEUHEtvvaHx9ymkW2xTX+/Ak5CFS6w0FNa0yqYHypnIGE/+2aiEourRZy 7UzmMqAU= X-Gm-Gg: AYBFou31U/H+3YkDokHmH5Ruso6NP4ysEFLFI1Q0hoUjR9kwFl6huUSlAhZqE2wLsYa sMHPED+DRAMNKDaXzwf3ATPVU6NwPIVOTUOgV7tp4CzWa8B7DDGt3EtxcMjfbXD6VIgm+w0eRMd 6TNdO+xwyNa6auitBEFbu6wPHRDI29biywnGsK03djpoAsKyoNAvXjllVM7hPvH68rsUhhk4BPD JZT+40/8wrKKKRL47RZft//taseMKw1Aul8eXbBc8H5deE6Q/6BfLrdQTl2HDD4q9XAF5SmPBmQ mcr32A8bmF7LOi+aQANr9OrNFWN3i+6P3Bni/CO3CoFNXLKyOKaZ2P8MWBK+xlgx63mN4bTpr/u I/EQnmoe0G0DVe6OrWetKEdDGMhlCRrNVR987wTa/ODMlpNZFHOqepXjNWQhPUMr/RvAFnjDWSW Kvl0Yv/b8NNZRk0TNCQIkhrPvLJQZvEg+XfneqdfbHeUHDDTLimXKd0Bj/TWYbno1ey+S5p6aNa Umtq5I= X-Received: by 2002:a05:6820:a0e:b0:6b6:55b7:38f8 with SMTP id 006d021491bc7-6c7d17cc7a8mr2432987eaf.18.1789564114543; Wed, 16 Sep 2026 06:08:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 61/92] tcg: Generic expansion of tcg_gen_rotli_* Date: Wed, 16 Sep 2026 03:03:36 -1000 Message-ID: <20260916130409.3382710-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::d; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0d.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: 1789564374426158500 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 aa5257d9e31..2b65e996acc 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 1d31a1a3f1d..de42f536b80 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:32 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=1789564398; cv=none; d=zohomail.com; s=zohoarc; b=iGT2nITK4Xki9i9nnP4idkHihjEPR3AxtKarHUKoV5GNgjln271OAIoQOxoS0ROgan6xHTPDFYWcJB0tqAC4Yn2PkoFdGatP7Dua0yjrGcRN1jOFx+edUjIvL7sbL7cnT8Rwymm0R1Lt8pw4rVRZae/hPg5Cme1O7DrqiePbuC0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564398; 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=V2A1YfSR2UwdlFtstVbStfy+u0Luf+pJp79dO7M8aJY=; b=bcKxbbkQKrq407kADQe5JjAOG/E80dLqfhRfwbeAqlxsz48H1+7AArkchcrZ0ILh/FaidWMKjcFwHcxmgfPZzqCkCzRQw5Rz94H4hjF04FHhyE7BkxlnwOm1cTPz/BfGATQ6ManbZWTqRNKm2lzuRYB83LqQ/GvAUP1PFxDyR+0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789564398031620.8772486450671; Wed, 16 Sep 2026 06:13:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNf-0007JE-UB; Wed, 16 Sep 2026 09:08: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 1x6pNQ-0006oN-Ud for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:44 -0400 Received: from mail-oo2-x0d.google.com ([2607:f8b0:4864:31::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNO-0001Sv-30 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:40 -0400 Received: by mail-oo2-x0d.google.com with SMTP id 006d021491bc7-6bcc0c495efso568864eaf.3 for ; Wed, 16 Sep 2026 06:08:36 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564116; x=1790168916; 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=V2A1YfSR2UwdlFtstVbStfy+u0Luf+pJp79dO7M8aJY=; b=lHVomeawYSB67+Vj0K5cKqKSY2k7KHiR1rl0rAa5eVKjdQQoFtcciwKOR7izmgmU7A 0d4nz85uts4h00nAXaNJe19uPZNpuQIGWU/1uHywsQRLJfGb9Xko/MB3dQGAUJxz/XWT mEtyPyzNlb+QpqtcSpTxvVUKcyzLZuneBaLqbzuj0Ac6sxQjK/bDLUL/ySadBAVQKVsu E69BoUcUu1cSKA32ILcZPovO612/AjhMXhW7w1e8IeL137e2KkBPui8vv8IhF8DoTCGD AtVMGVnj/VpQPRXRcgW+Bm1VilocIjZEDt8RuwzEOxlLY4Xy8Hi955lDQOEbCQe0qn+R 1wDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564116; x=1790168916; 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=V2A1YfSR2UwdlFtstVbStfy+u0Luf+pJp79dO7M8aJY=; b=XgF2Rt6ZoyTcb9QTLTAE9lBRHt1IKEqwWfujkko1KYG1Qz4TihULeTmBxYcC0rmvT8 vhwcxKy7GzJtSlz3aMCbPlp2gArUt7LysgB06OhMCGUp3mDR2PPcwODvxmBj6+EGjDfl J2fBNk+SyRJQuXFKf7Eznmf/pNscR5ODWE3I6sx5p2xqz2mXIxIPRkSG+jvqZzcDN+xX PBE2RuNMuEv0yaHEWFtXJBjA6n0AIbO+7DdO2ro57KNmzwlHOuk/FxQhS4ovK9dxi1wM BFBBuZkU8l+8+tts0NO0hlTJzDIXvf/gXScJ/oRcgw8uDHWN4I/jUW5icFmgXhjHBfnx kpdA== X-Gm-Message-State: AFuF++kx44MTk/tfWIc+oabn1VwBSDvofcKSDq343UW3nG0MAlaZadNk HRgg+gFU+wf4h+jeilVrejcysbyk+cvRhuU35YZxsHyJQvX88YsqfEnKxYOqdMUMAk3AVgaI6O7 CSvtuLZ8= X-Gm-Gg: AYBFou11IdWyIeEhE59h3oDybwiuXBY1vNKIAlsxy+U3imP+7UP+JBSWdX4nY6DlAlH l2KM8k/mtMiIEeHAexr2phuGmN10dAHdxUjfdC2NDdfPZ9P1d/ZZ3bIGGdxXySS2xR8tisDnB0L Ily0KCCcWNyXOElvv2pn/XEXDKGubNavIuUBqMflf7gp8sWRKYnfew09WXfoeP6FNnM0+U69mDf e1GB6nqNorhL4cI7ZQJnuR7yvFrJHoOVTK00jpyGCwMz+L2EL21T29nGondM7cBgyCqh0BCzR0o zU6UNsLPk0S7NHzolKLxhjJB7Zy17JoGC0jJcHV2RRpUsSUFnMGQRXl7vGeTQiQzWn5ChKV59R1 +cGcOJ2GhI0c3vBV5TXDNtW0U1P7WDiVtGczvr6T0/DxS7+yNdCearrKPuFkqHwzhJU9BVJBo0m 4/xgW0sCYk5AQ7ZmhqShtIn1DA/4PyxjsPKvnhNPeQqg8IgxeDpfv3bbtqmJUXItxfK/cGtdB/s bAwsEU= X-Received: by 2002:a4a:ee0c:0:b0:6b7:8415:d78b with SMTP id 006d021491bc7-6c7d3206a47mr2633439eaf.54.1789564115479; Wed, 16 Sep 2026 06:08:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 62/92] tcg: Generic expansion of tcg_gen_deposit_* Date: Wed, 16 Sep 2026 03:03:37 -1000 Message-ID: <20260916130409.3382710-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::d; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0d.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: 1789564398490158500 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 2b65e996acc..b9118a6df08 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); QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4); +#define DEF5(NAME, T1, T2, T3, T4, T5) \ + QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4, T= 5); #define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TEXT)(T1, T2, T3, T4, T= 5, 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 de42f536b80..4cda5496077 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) QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1, T2, T3, T4); +#define DEF5(NAME, T1, T2, T3, T4, T5) \ + QEMU_ARG_NONNULL static void glue(gen_,NAME)(TCGType, T1, T2, T3, T4, = T5); #define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ QEMU_ARG_NONNULL 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:32 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=1789564370; cv=none; d=zohomail.com; s=zohoarc; b=AURUfiF19Rz1rskhX6atXP7aeSd5fgaObiqF0SVTiqr+DqODsRmrhPc5r1fcocNdzdMcwAI1y0eMNPZeqDxreYItauH18xON3U3EWsdU8CpvaDVP28ERB9Py6WhMDE8Ml5Kwn4qtpc1iyohKsR/hRUrJYQph8H9oz0pNN3xpGss= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564370; 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=LDTwxOw5jm7KSHZ01q6+YyZ1336mHY86wJnX1AW8yUM=; b=VAgjkbO3TSAiAoSxk6ClC/YlrdUYGOZ7kHtZEzEVr1/YfCz1XCB0/HZe+FpbF/FJbqYye7QkL5NjUrw7w/ePSAB1y76nxRdpLwAJ7PPmYUr2o3vvZHLdeWRUFgCCmsgWKXAtsNW45gGpo9s9IY1IQy4TxVBC+tHBW+1FmUQwtSU= 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 1789564370043526.4372463955148; Wed, 16 Sep 2026 06:12:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOE-0008SP-Jn; Wed, 16 Sep 2026 09:09: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 1x6pNR-0006od-4O for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:44 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNO-0001T8-7g for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:40 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-466cc9ab667so1095766fac.0 for ; Wed, 16 Sep 2026 06:08:37 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564117; x=1790168917; 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=LDTwxOw5jm7KSHZ01q6+YyZ1336mHY86wJnX1AW8yUM=; b=E6ubywWjGuKAxwJcopuTFDVZBWSKi2ASEedVYJeTF7qce+XylfiISHg+Yz9Qd0rbbY K9CCDSGy0L4emhvl7AFo/5hqWh/iho08ObIivhTMdLCKSK54HYbOXOR24kzvj3oMU1b9 ndpBnn9q5O26g10WMPsC5W8q0IcdhjgsbqebNbXByu/rZREIIHCbMhK2cJivI9zaY6ZL eD7FNRFUoF+pIMN7hp1KdvvJo2I0WL++9mufxyXFqKbjApF9+mBfyjENs8qYsQDf8Op1 UPd5V7Ol4J1/krSe/7FB2hmRBjQOhTE/HbAZC5tQ0M2Nl8FCu3HhcVP/imSJavTOzfme 68cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564117; x=1790168917; 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=LDTwxOw5jm7KSHZ01q6+YyZ1336mHY86wJnX1AW8yUM=; b=SwH564Ej1g71ATSxf+oL/q8fZsNhjMBsyx2A1yVhutaAzcqTRZV1KTv+iuHZWB6D95 R3I6lXA/wh89ieuC5xjuTl4zcVZYWpiQWFCMw4ni5AaTWwbp4XLxfv4t7JcsWrMQczgv BBeuoLTL84PPQzxgz9N2RzNCJb/JQJpmO6T9msdsmVhW4zpzNkSTVJC9jUh8ItaFjfEu 6hHQ15nEMoRmApoUYpJ/k//apMRStAEbW5lNhV2bAUY26VcoMdSpi0z7+QgyZqu3xVBo mHhZb7iU3fZE2+12FKLXg5epsUxcRx5nvIEXPpVpohibyhgAXddHFjKd0a56cHj7kjNl V8yQ== X-Gm-Message-State: AFuF++lTBNPS7g0wth7xqKgMhwql6Y0Qd8slnaqHtg36FYeC9Df6AqtB +pK4BLktBHMWr8lSioHEPuPBqbb3NZwIQMRcUM5jddSJsEpGmsR9kTKZL/N4l2054IweKeT2Q22 +nSbBUMc= X-Gm-Gg: AYBFou3ofDr29c4VwHwo36ebjzxAx+rvpku0zExa/ikPhw0Cs1VWsgmC0DyIi0v1VSf cyDzBRjipCIFif8t4GJAWJIRLaH44u0Zck+dXGZX/cTY84aiCO3fJEfR1XLOEqtIiuObwsuZbmK 0rS+ld5osy0CkvTxvZiGQENzt4eQZ52JaZwyA5ywUsc4opc8oEEfH/VsYuO+4D2m3Ee3Ra6F5Fo cKpoe314oIyeJ0TYxsp/4TIY5ae4MNUhYQ9/T+G6bM7Qn83DhjOsA1R18PGXRO/cOgwBoFnbo4v sPE2mtLhqLI7leBmz7M9tBHknSXwr+yiWlJPHXcvz5RI6KZDYJkxg4iFy+ngf18DJHeDRxZ+7fY S9XLQEV3lPmmo5NGm2PdBc7vtSVS8IW7pZblGEWyswz8cfVIwgzMHTE3q4I/GYUYPHOfUHLoIT3 9YFyYmjwPr2dfkrojPnwqBQlgM8EIpq8rjHgSeOZoIHCRXGk3PAt3sdbThELLj3llZ0itEYI83x 1vA9bo= X-Received: by 2002:a05:6820:4b0f:b0:6ac:8e23:3078 with SMTP id 006d021491bc7-6c7d15d084emr2528142eaf.5.1789564116374; Wed, 16 Sep 2026 06:08:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 63/92] tcg: Generic expansion of tcg_gen_extract_* Date: Wed, 16 Sep 2026 03:03:38 -1000 Message-ID: <20260916130409.3382710-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564372500158500 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 b9118a6df08..7973738331a 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 4cda5496077..1f40f121239 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, src, ofs); + gen_op_ttii(INDEX_op_extract, type, dst, dst, 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:32 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=1789564320; cv=none; d=zohomail.com; s=zohoarc; b=l2LY/S2ZFaSUhWI7l0A8//a6Vp6+1aUxIfTur/Wff6fgsG9P+8bixgtE6BDa8Zci2aQHOYCTPbQ6k2KotoKLit80ihw0hT7HywJdpjiO7164pz6Ohj4r3tVVLE6nrPRZVXS9cRpqmcbMAiLuzH64AQsRzv3EOGVJ1M75r6cWZSg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564320; 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=cnwwh2NmhhmsnHifeT9ed9U4UJIzpka2Wgjf67Ch1YQ=; b=AA9RKLklST0llZqUMk4j3tvLaFmQk1J/HXmWhNke60cihRBYJpOos4DdpZbke0x6cVmYSnuNgUH3Sq9+FD+cemdxGhgcOq6t+SOtkwgyUdQqkMFLQ+mkfiASkIfmmSZmZct9uH1mSZ4NMahmIAhEOWlz3w8Pzsb8xWe9PL2vwtQ= 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 1789564320594375.5765946281052; Wed, 16 Sep 2026 06:12:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNm-0007ho-FH; Wed, 16 Sep 2026 09:09:02 -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 1x6pNS-0006p4-CN for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:44 -0400 Received: from mail-oo2-x0f.google.com ([2607:f8b0:4864:31::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNP-0001TT-UX for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:41 -0400 Received: by mail-oo2-x0f.google.com with SMTP id 46e09a7af769-7f4f0c89e33so552952a34.0 for ; Wed, 16 Sep 2026 06:08:38 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564118; x=1790168918; 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=cnwwh2NmhhmsnHifeT9ed9U4UJIzpka2Wgjf67Ch1YQ=; b=BE7jjegDQAQIdbqZs/ZK3lKU4sHuV/SoX+YcZPue85zD+azA5w/xSM8bj0j/Dw0k9L SiTuO54Cw2/QoT0rZGhhtJm8i+1Ve4tmFRclYOgcn/muHGCKvkB+A1o1L22Onr7HG1gt G0zjfY8JlGx1ppUm/BluBtBDQkwVu/c5h0uWEJui9+kHoyyZgqWPN/JrE3yFIkTxcRKR Izr94Oce9KmQBSRaaD/schMRJMX2P04A2M53QMIaKXIy4wI6V6612Q6ENG6IbDEzjlnb /joHvqmM2R0U4dxNmuPuh/X20RuyVZ1A+8esZlRPTPA/MR7uUZn/8Uup+V+5LJ64m5GF by2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564118; x=1790168918; 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=cnwwh2NmhhmsnHifeT9ed9U4UJIzpka2Wgjf67Ch1YQ=; b=NsbSYJYStPX9FF2IxmT1kUEb2LLoJYQOuuc0BJOcqhyhyUuBscbEr32SDW3HwZI5x7 sep/FRAmClvy0g1ZpFg9mHv/10OzX2JS7t4Hm+yExJmOwuUHSMfcNDbZpXs7GUBQynE3 s7KJPqfTO06GlcZ+8TgR+tLMeIsVRvL7AenrnLZBVoNlFsk/0uBQoDDcqdjaCMz+vmLZ ifKtO8JkGjxoCSA0rWUCaBblyxyvj5onPDh4hPxAhP3mLxHcuEvSKNI8HdE8tqyhOFQb q1tAFZ/8rcAnB4Qf9aitd5XVmqFHpRXgOKL3BYmVAjKwhrEfMCk91u3PSW1QgHPveiGo nlBw== X-Gm-Message-State: AFuF++mCsvAyjRaqjXiJkmmv8RhNnLAf98QMG32kiamYLslQeR5v3Pa9 N42aDtzH/oxmEHykhctn2MSljXWrcqxc0pFyEHR8diah8B8MgZ+64xxiodbz1K0W5iwfxDHN7g3 EgjUDGBs= X-Gm-Gg: AYBFou2uY6e7D+vVzVD+3N0sAeY3xBxoRPaoEQ1JjLpOMtIZ9JHLgU98WkUOkSU3VD9 jrf3JppgcbhqtUCvE02HDk5Up8fI3ah1obm8HtJVcXrMiaA1SWYMgnnyKSt76SBUV3yUm2LvTHH 0fb6ZFYHpqZ4QfT4Yep/JLGniiuhDbdZkEg8IgvX5rKRCQitu05tPAMSZOA30w+gknEJ9Cb0ovh V2Cr4S6TrSF/rRs8nja5h0vtoEKXPuNS3oc6il6LD0piXQJNUHQoHOMSCmaZX4KHnFnz4PrpMCH BZiAD87AelbqguijTlK2eVUw4NENFwEd+3CvinmLjnDAWjTsEH+WYmbdUaz30I0JVqOzWp0UzoE 2p6ekAmPXsw7/M0e2zGXM7+/ZqubOEsh0YtD8hGEYWjSnKTmJm3CRR6J6djGViJvBvuGkl2/uZY Yf/ESYVdy2XNe53iVwzBhabc226MiA9VOaFwtGBhpd3xbA2HqtXtz9+9f490MUF1Qkvpaivi4vi phygDSS+XLGfjYDYw== X-Received: by 2002:a05:6820:4dc9:b0:6c4:6699:53cf with SMTP id 006d021491bc7-6c7d45e6be6mr2521624eaf.49.1789564117635; Wed, 16 Sep 2026 06:08:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 64/92] tcg: Generic expansion of tcg_gen_sextract_* Date: Wed, 16 Sep 2026 03:03:39 -1000 Message-ID: <20260916130409.3382710-65-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::f; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-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, 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: 1789564322098158500 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 7973738331a..ceaa4b7fe01 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 1f40f121239..51fda1409c1 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:32 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=1789564326; cv=none; d=zohomail.com; s=zohoarc; b=SJKNrZMqQuhf63d9JXIDlBxmVabZrTkM8v6w7KT68OpQ1vIkgHpUi6qvMqvL9ehM6S7bZUqP3jUYjNCuZ8jWh3RsXrS4OCAmf0N7JDzerUiMQq1Hj7lMT3/UAbgJQLsWH/U8RgyY33BToID0EdsStQzc5ofXiI5Kokk6+Th+GAo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564326; 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=+xoOozy8Kir6BVOEzD5pz7wc9DskKSMpwK+JuLEBFBA=; b=CtIRJtC43/voXe/XBdYk4IkB+NW7xWL7UH90QAzBXpM8Q+APhrscBLVQVY2Mof19OVq5A1vhJ4pBvD4lSAqRgZ9CzzhYbjDaR8UUJEfIrKn6sfOsJPYkYeusXTmOwMTwKU9uWG6jjYjLoxPxR9uvYue0YFBfvRhuI/GWpdnK3B0= 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 1789564326860718.5646091563221; Wed, 16 Sep 2026 06:12:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOK-0000Ic-EQ; Wed, 16 Sep 2026 09:09: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 1x6pNU-0006pY-0u for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:44 -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 1x6pNR-0001Tx-P2 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:43 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccafb752so824099a91.0 for ; Wed, 16 Sep 2026 06:08:39 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564118; x=1790168918; 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=+xoOozy8Kir6BVOEzD5pz7wc9DskKSMpwK+JuLEBFBA=; b=t0LBPydDkJLf5xCtrnMVBKwv/8BXHP4S2onBmk064ErzJF1vW2bMg5LtPEWOJmHExc fIcSxbWiTYCzQuwKvpHYkLucXegkDFVnRQoYPWhDrxvZx60LLRyUF6c3kriNJhajPFxO 8SzmZSBw0qT4cD8SQUT4Splv3t0TFjpolhRIrLgKxOifqAByVDkwR5nPlrASOJDV8EU7 RtFZ9AGszAbucrzan2YVYV6NqeVxDH48ZgFblSb0IE0URUoOucrSyb9uKe3jBXSKtKb6 ql07aqvFp8w4veSvy9+8Li5Xq0vGY5rEnteTQFBjDUtEoW+ivVmHJCAJgoK7bcbNySPS pQ+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564118; x=1790168918; 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=+xoOozy8Kir6BVOEzD5pz7wc9DskKSMpwK+JuLEBFBA=; b=zn8cpg0kC6nRxdTBnT28bOCz1QiGpJjWBultC3w+87+23hzwfx9mQ5QrRkgziY1qyS /mSICv5F1H241EvqpcB0fY8fahGLZy/wAdLtbOX6jZkbKKfMRZknS4D2ZZ1ovgWP9qjC 1seT4BuA3+cb/akK92ti6OtNSKP8mFvlNz9eUexpfQg9nut5jTVP6qvZJb6TgVuhhs76 pmZ3LWYoa6h3g1n+PzPYh2zxJW9LhhGZtFc1jCKxBt2wJ+sAV/JKPXfN1D7bclz8h7zM BWhq0ktsNG85TeyzmyIKb9rW7ESqnkDYwgSfd2Y8acCR0fgWhT47KhQJ3zljOVOCuwVE brhg== X-Gm-Message-State: AFuF++lQMdezPZyQtmcnUMGELovw1N1EPERwdiLkyn1Hu4SobykEsY5D uXrQtS2F/Lv7dN0rVgedsZGG/vfpCBLVI5cD/Zil8JGkqHz0tk+oa2B6CxI/h0lk6KTtd5wVS6v ps5Bn4SA= X-Gm-Gg: AYBFou1M3LI0WqfVa94T71BRtFRuuwclJkTSKWO16pUiHerkrSQAFTiWx+MduR04D0O 5gEYdEOOyQgiQXayfbADNlnLNhOnRVP+rYjPLGvNRH/zwYmHY4AcK9gAAv71wn657eBoRFRpwSt 4h+0gouGiyUxOdm8xx0lhw6lDA9qdQSsYTh8mCQu6bYIhIdQ7TKMux/3ANgKKVSqaeHZufxhhNx 6iOIBGuuF0nc2mhUSiMNrAzcbgOmzOav7Q+nNBi0xqM/a+yvifTjOt89PpLogK1jFHgbI2FJ79M FZpLG8I3HHr4MhF1FqvLimg+UBScZkvNiuhxiwXqZF2vhRXjySgbEf8fqiQI6Vhntuhy7aOc48c IlF9fTecP1Rg6U+u1+SLMo6ziJfxTSbhiqWyZXQfwpp7VD7D55a8GQ/rZGIqy01pG+mARxL8AIC OBkh6hlPDpEyP7bdN/SrVgItuh3bQ4Tz795j90xQiGiuWKv+GlFUBJgoOt9gTxjmRH7huhm1+QL hTnTZOx X-Received: by 2002:a17:90b:5785:b0:39d:ee20:1e2c with SMTP id 98e67ed59e1d1-39e1e5042famr6762146a91.18.1789564118464; Wed, 16 Sep 2026 06:08:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 65/92] tcg: Generic expansion of tcg_gen_deposit_z_* Date: Wed, 16 Sep 2026 03:03:40 -1000 Message-ID: <20260916130409.3382710-66-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564328054158500 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 ceaa4b7fe01..4838e06f1d4 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 51fda1409c1..40dfaab5670 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:32 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=1789564181; cv=none; d=zohomail.com; s=zohoarc; b=Y49kd/+2ZGCfulfe/H7ZHPugZityRQvjkK1I9xsNRhHQ2j3Z/P/w3MZGQBWT8yJoXbgV7duCF1vCbSj0+eBYabSybw6PzawCPAG64vko4JhOGZBaNMwYl5Y8Zg2Y+hsShFnJPXE4++fH3aCNzrD6hlNWOb8fUBt1wnB5zx1RmDE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564181; 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=+7jQDthd6qDrSaal31YI3HVx8YsrquoYAL1EE/MY/rg=; b=Fl7zrBIwkRsnXg5Lj9xyvog2OIhoVFSCwsyTCFs5H1OCEo3fCcWcqw04agXbcLQxFmWUiY0ncLgEW2yuSA2sI0adtdrU3HuLMoiHKc10yq9AhQ90XbmTThQiYNysm7MVKMjMdQlQao1ragDooMlH1Nz270m5/oHtcCawC9NPk70= 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 178956418128487.21479173710793; Wed, 16 Sep 2026 06:09:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOF-0008UE-Ss; Wed, 16 Sep 2026 09:09:32 -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 1x6pNV-0006sY-Kv for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:46 -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 1x6pNS-0001UJ-2Q for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:45 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cebad4aeso753327a12.2 for ; Wed, 16 Sep 2026 06:08:40 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564120; x=1790168920; 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=+7jQDthd6qDrSaal31YI3HVx8YsrquoYAL1EE/MY/rg=; b=VxS1+mGRjUhW9ysuLnPFbas2242B9GMplS8ul7V//jIenisND+3S/t6XC5n+Bi1zED YQt6gOhesVyBQcdk9KOCwZj5ILYPsI195FyZpy8YgZqV33fDqQUnzmI8eA5zuaq2U3UF l0VcCR6Yts/n6DFv3V6rs5ybvWJDf2oEUouQ8ZxeAyxthLX3e9xTDmL5PZmveOhhsp2K tpot0/EntcWu4nmvFtzlISZgQo8Pdov41GYlCr7x6AWLBQBALnqurw2j9uJQJ1ep0K4j 513FM6aqaM+/TSvB8rswuZrDGXBCF/l2z3CAPU8Glx1QqsL0ZMCBbkiKqUej5rJ65Aek Pd3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564120; x=1790168920; 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=+7jQDthd6qDrSaal31YI3HVx8YsrquoYAL1EE/MY/rg=; b=BcabcIK09dwdA8j7k5gocey7R3HhJTVo0OK2wrlrXcLaMZ6Zg+OFJ+Nv8e1nE7Ma1m BtErXf/QJp57k7T9tR0cAexhTnFlw4oxIoXkM8HuXWOgxQNmLe9Z97yRD6j2FQPS4KU7 8N7CaKCx2eU9apHSZW0emtGsZUL/6rjWDzq236Ek2A9IYMA1xEdt+J0z+JnbbYmUjdDf 04Oz9Vr0wJ8fitbAAWcdCFbGLPjwlTTuTBEo2wV93iGn3DI+5qEjZFIDYxHlQYM0dAHh 45KKRSJkT2xfVnESbI2xiWqD7P7OpFuEhd57OJ/F/Z+PO/Q5gxwf78KG+9j96FbcJs3k IICw== X-Gm-Message-State: AFuF++nrREipTGIskHTk1YHpQb6CvwS0wsgGXSLRewvwUjvJ2Kt7bQU1 J0kauaV0vKK4YUAfCrs/Ywe6zBanusJKKbYeABJKGssmv2W4HCk1NJfKL0cXCPP6yLCbZ4U+l8Y 42eMPhN8= X-Gm-Gg: AYBFou0Pfapv98IoV3sePMyaDeNzQ28dsC5ZJiqh3krJ1VxOeYX36k+ZsSpei2lQGG6 ulVZKIOkF1f1LhNmLGtkhcVJSJSIfZAmXB+ffBoendxQnZ2PIBer24oAJTEjFENKXORCUXYJh9q vBUPcC7IWgeM5FinDu3PsiDab0vXxafKktb0G4ELPAAhWkvGAyO7HHkmdcPrJKshp0tLLUl4y4S Y0V8jw+eCsy8SRw3x/Lx0rjdSEtZcQMMF6oWuG+ak3Jd4mLhx+nYEeVY3ehbFc52SgA+fOkU3Lf A5/3OUDlqu3CFuorACjlWwwCtSy6gT/SE//jPkVQz4m0Qe/Whd9tFQQlk6wvojOK1r8KmV8w4/8 cF8Rh+Dc/0Mzj2gAWhF197MbRnoMeedGuG0iKEsqHrJDq+JeRDO2/hQle0He65CywrbZ23T/9jK DHGRrahj3P7qdEtP6UIibLg8WeDv8PrLC7KPuY1Ey5wZH4dTObK9yeWnVGX6tf77xfAerQrh5ht Nu3lr0= X-Received: by 2002:a17:90b:510a:b0:39e:423:bb8f with SMTP id 98e67ed59e1d1-39e1e24fa7amr7078483a91.1.1789564119315; Wed, 16 Sep 2026 06:08:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 66/92] tcg: Generic expansion of tcg_gen_ext8s_* Date: Wed, 16 Sep 2026 03:03:41 -1000 Message-ID: <20260916130409.3382710-67-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564182957158500 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 4838e06f1d4..cae95b3d42a 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 40dfaab5670..32c65e38d17 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:32 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=1789564392; cv=none; d=zohomail.com; s=zohoarc; b=YIldm4ivdKY4Yob2onhtzny07M1PwJGj2wj53OLlIKGsH4/XzluQLQwdXflA1bFApWWJZ+z/LsTIUQl8q5el0AZhTR+OruD9xNHjBS5GX0azFlzWEaTN54KOW6NcZj2ei4bDRWPHJfLe5j3IWzoTBNtbX+yVmC2rxlHGoptyubE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564392; 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=JY69n4RidASFaEMke1aPjNGTxsA8yN/rDVnP23X9eLY=; b=S17SiqtVe9z6ptXipsr+w02K73AKWINbfI+S5HC/N77hOCNbcyBHab6MJ0N8fGsE1/ybzceUKv39GzCWuGHdW1b0yRqORmoW6ZGZ6ixEclcicunRGnWDyuolnU6gfMw+kEBbUJLL0MfPwa8pYY0myL7cOW/Klti+q1OUkLLR+1A= 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 1789564392793554.4375248281787; Wed, 16 Sep 2026 06:13:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOM-0000Qo-8f; Wed, 16 Sep 2026 09:09: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 1x6pNV-0006sW-KV for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:45 -0400 Received: from mail-oo2-x0d.google.com ([2607:f8b0:4864:31::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNS-0001UN-2V for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:45 -0400 Received: by mail-oo2-x0d.google.com with SMTP id 006d021491bc7-6b1ae736c64so723570eaf.2 for ; Wed, 16 Sep 2026 06:08:41 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564120; x=1790168920; 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=JY69n4RidASFaEMke1aPjNGTxsA8yN/rDVnP23X9eLY=; b=DyS1gPwSIItIGhPmmvK8QG03k/yGVEv2o6EgxuurCBG3+BCPRy9a423Gbvtf7wB6NG HnXT5Sb3fiI06nCgZPgWfhUl9fLbXq6XaRQBy+saj/1FRzjuWJNwzppTkw0cvo1gGpVK k/EXvEkQHXEGxcZ8OyY35fkhC6enZ28IW/HL7vLFXFiN3RttIboD0evLUyZTgUhEzgXk P+t/yUI4XxrNFIqOJNlM+j3V3yvdv27dIZ829FB0cP9NyG1eMlPXkD8BR5nxJX+ippjL kw2DAn0NO7SY1GKCpxNK+yLzDvZXX2CPOzvstf2iYZW8xiY4NANumG9Q8VU56GgeUiqk wWEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564120; x=1790168920; 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=JY69n4RidASFaEMke1aPjNGTxsA8yN/rDVnP23X9eLY=; b=ewUfw+vE3If3ZXtfyzzgxwXhl1JVk9pmdAiZOShmBS660WoCI6tYZ9SfEYnODqHFCC HG6+SGc4GlvN7F6Y+qcmqmo84qoM3thAcpfX59orzId3e0qlIHUfLLplgrHDKhRPu0DL c6Yp5X2cflvUnqryvYLXR9GGo6YPPHND4EI4xiLCW6tQMoYJuWa6VVdvi310wCdq1y0M FKytuh+ayExm6jYYFeVg8IrOFZe6JAjAk0iJUEUNb8eXeyZyOdypSXaEWIy0huESJgmd 5bdL+Ks9KH/OFwNFwbalKujpi1IvYF+nSlMEhBoaA3d116UEbw1+VRm9+bG6keur4IxJ GK9Q== X-Gm-Message-State: AFuF++n2Pfb4ZEWMfGD/HHOp+10Ehmu4cKPRrohDWc8qj/sCidnF1/9W Cr7KRR/gHVpHtxJDXnisoGaigvljXrAgJspc/xj57O2ISVeB0CHDE6HH4yTKqdnDG/bNPe2CeHL IgI2C+0o= X-Gm-Gg: AYBFou2qgOUzPsKiRHQyN95pTVcN6GH9vJR1wwmBDdRVtdQR4wwIQxYNEAF+4jdfi14 TQp7TZNCJD5GOG1bDrR5Lp7Wp2WXsZJLRb/rmSLLbcTKaatWTm8UC8lPUewmPaUIbVmVgLN/A50 y1akDrQ3XBEIBocsqbBpCPX+xWaIJ9U4TgMRQeFgEvohxKfcVBXReu0yGUeiBTSomHXEKOJNn2m cH3ieRU2jAcUo2SQ6IKHzUxTEBMGy4WOtaNPiQVOgsFZV0aiAvo4NmZ7s9oX7AlJyHwoasiNTiU DL6IDzDDVlfBz6QPuK2CfMUg0lL/6SaPNenn6CeRCr/PQs/GiIxoHZBW60NpdjdFphX0gYTyqoO fEJO/I8cmeEvIaveR9LT7JsD/o+Ubev52yA3lfG9t2vzLzRl33WrGhshj1NaleldLahyUwbxAeB yxfXIjie6EBxH3F8zD63Lg2ShfYWitw/K2cpRu6TjUpOCIcIx1OgdaPlrXN9eAPgAHHONqPPaU/ LXR0qw= X-Received: by 2002:a4a:e913:0:b0:6be:139:c031 with SMTP id 006d021491bc7-6c7d27e0c77mr2352328eaf.39.1789564120260; Wed, 16 Sep 2026 06:08:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 67/92] tcg: Generic expansion of tcg_gen_ext8u_* Date: Wed, 16 Sep 2026 03:03:42 -1000 Message-ID: <20260916130409.3382710-68-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::d; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0d.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: 1789564394435158500 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 cae95b3d42a..cabcd394ab5 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 32c65e38d17..b666073df34 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:32 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=1789564220; cv=none; d=zohomail.com; s=zohoarc; b=fT/CoFXbQTxZmSraTuIBvQCSgTKU+5DoFY3LL4vPDosFNdfjMO+0oEeuiuZx8Bs6F6TFc6b9+bern8pFwadbUjME6M/0/aYY+0Z8fwdJ9fvQNGZY97qoCNGfKxrIIV943WmApk4bQ9EJwgkWZ4yQmeAAXC8j+4D3trOQFDw6L5o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564220; 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=Bbpp4CXmX7S0YDcQDdhqpit66+4svnuOLfDQx+3XtIc=; b=Yo5Ss9cj9qmVNMji9vrubaRRLyNe660cC9zcZgO2ghkpB5HvK4ZtUPEJjbxM6Rg5qkYp95qjGzJbbaMys7fcUrTY0m12sAH+lGU9Q/xGF9U0D6nFG01F99vXzmoDvQXA6JXt0I/sQtq73BDexD/tBpImPtAlLiZGK9W/etBJJBU= 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 1789564220128694.9983859154149; Wed, 16 Sep 2026 06:10:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNu-00081F-Ba; Wed, 16 Sep 2026 09:09: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 1x6pNV-0006sX-LO for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:46 -0400 Received: from mail-oo2-x0f.google.com ([2607:f8b0:4864:31::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNS-0001Uf-MN for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:45 -0400 Received: by mail-oo2-x0f.google.com with SMTP id 006d021491bc7-6bd42f1c01cso655143eaf.2 for ; Wed, 16 Sep 2026 06:08:42 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564121; x=1790168921; 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=Bbpp4CXmX7S0YDcQDdhqpit66+4svnuOLfDQx+3XtIc=; b=PyKlANWM7f1V3pnO733DJZYdlb/wQkrGA3CwxW+88BbDm4WzuRJdj/kJs7Qjt1dGjN XwkCgbqowasUBM5kneqWdbLAABz1M/5Zr0OVjn18hfXuH4Dd6k+3tsIgL9a1hZYaC0t6 xjdCneqGk205/LJWrCsDGbWJ4m7t3qLWwFhVBjqXu5U0oaH1FO3CWxUlDonZ3x+Mm37s 38vWotnvZMuLH7rujv2BIdAFUnVqHWDFwETobOgCbhxa4DxaVVI/wajmLAJrnaVji/b7 o6OMtolUH2cAFkGpQZlB8ONXV5KitgnrqZIuTv3aI0upUZn3+UDm1fKoK67z4MYjSG6N cNMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564121; x=1790168921; 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=Bbpp4CXmX7S0YDcQDdhqpit66+4svnuOLfDQx+3XtIc=; b=uc6SG2nTFyqNhaQp2Jzsr3AmkWF4Bi/kydRT2mtHKkxvR3r2IhdykgMUlv2BDNEJQZ Xk1fMNKAxm2bwQc3hELIf0J9/tRfvuxM+rZt1KJPpe/Mwk1eiWRE4I46r/eXvfK2Hp9A R0dmbKpjrsVE7+C0nk3gBlgelbO75J3Nll+UZ3LporkI778775GaNHVjm1hzmjiYzxpL FZEbxrT5wmbesehGC6BGz5hNmNgKWcFR1Yk8t6qkzOwHUzZ+fOX3HwcJciJdvj5baRrm vnhoaBFUdop+0tb/YMdXNevYHEhEb+Nt6yB7JZa0fNv128xAGQbTu3MQUupOyCVdPZT/ D8KA== X-Gm-Message-State: AFuF++lUWZqwHqleam5dg9E9Zs/N53WtEUstkE94RteBA4JVVVG+IvH3 G1mpBS4d0Lb8f6ebks/14PizO/7HFxFiOuRL7ndRRCD9nO1X0PM3izxs6R8iaSVHQPzd6zPZDM3 cU/+ZV/4= X-Gm-Gg: AYBFou0PLR0VKsXqiJf0VNVHUpjLOg0RnL2IDlGRy28W0obtg2+ixUJuC0R1myxnd1C NK/jeRr7KI5ZrBvoc/035n1Mi0d/bZeN49WkA27FRrE0+zqdBaIh0aaNt6bmLqjyL8P16Iim8fY ViRqN/A2osxNqrKvCcVNF1KdKUxedIfZ4o1ymKSQE0sMiG/Z4GddHteipAHtnE9rUYPXu5UAb2V bNLp9JjpEO7f/E5aQqv5sysJSidC51Q3z/ukowps7QlGoYg1gAwhddQFE0LiBkGSp7QP49eVha1 GhpxhpbbrWLqX0hr5MlJRjmc0omIevzHxFYOo4TsiIQ4r0Ke4R049csqejF9bai+6J0ohUPTICc EXKlLExQ28ZpwcFquiY0QsZm/YKZJlVvvN8QLZBwwo7vw5CxrstaOLsVnKTENDmmndRXeTdUcez 8O4WfJX4iRxpaCdFceozoGsCs3Sgb3dD97ci6PU8xTCRzNHJ3ta1qV4OiHw4YgrfMya7Wlb4Rnc 7xR/FI= X-Received: by 2002:a05:6820:628:b0:6b1:a812:9871 with SMTP id 006d021491bc7-6c7d1ad077dmr2728369eaf.18.1789564121271; Wed, 16 Sep 2026 06:08:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 68/92] tcg: Generic expansion of tcg_gen_ext16s_* Date: Wed, 16 Sep 2026 03:03:43 -1000 Message-ID: <20260916130409.3382710-69-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::f; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-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, 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: 1789564221220158500 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 cabcd394ab5..8f4d1dd633c 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 b666073df34..3c4074d860c 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:32 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=1789564416; cv=none; d=zohomail.com; s=zohoarc; b=JpQ8H5qJMtarnGVOV5E+3+dQgWDP2o8Mzih4Pe4v/j2ya3DlwmeZx3JWCnw604LrYGMXcRMTr8OwnTOsL6r1RH35In5bpHkUI64UEmZrUzPtl3i33PYKiN6jd8Fc0s5ANA+y9woHtEiRea1TFtzEAgMxXoErZ4Tc6XfCg2tRI1M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564416; 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=0bnSsN9p+L6doKH+UU31+jNB0nqiEgr6lxmAGJ82QcY=; b=LR70b82jX/afMPpVZAJDho3O+n4L8V2F6SFMZ5zmOKAWLIX4LQCtnig/5oHs7heaRvAiMkeUfejr93jZExiK9bTOWYYgnMUb4HMYLxdZFCpTiqdmwlPf4LdWlidsA9t8BpJDCeLdmZZsjt/nARrHgBhe2BoE5oRRYeybjRmhTQY= 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 1789564416067179.0873609029628; Wed, 16 Sep 2026 06:13:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNe-0007Gi-GB; Wed, 16 Sep 2026 09:08: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 1x6pNV-0006sa-Mp for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:46 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNT-0001VK-MK for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:45 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-466ccdd7695so393757fac.1 for ; Wed, 16 Sep 2026 06:08:43 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564122; x=1790168922; 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=0bnSsN9p+L6doKH+UU31+jNB0nqiEgr6lxmAGJ82QcY=; b=RKJvbZrpYw0QQHAKUzMubBHw66mDnuMM+O3Yf7fgRf+Ff+7HhCABCetTClA09uco9E wsZGrmXKEP/BGlrP29kxJQslCth8MOH/8FFZMB2N2K9d5y8Z6Z8ycxeld7Repzq5az8k Mz8kIw83YrsHMKsiEA2tP1IrXHzcaGVj+UFPpsLSe9y8GcGDnoqz533fwGadlDbKsEmd 19eO4Bnx79T2HtVr24MNcViuep/EXZRoDXt2mS0Ve4aRtV32OYBdofRABoxojAxym12U eaqcRiOUZu6YT4FQA6c69lJyyjwTmfOmz8fmw1zlC1afqWxZ6Qn7QCYNJX9qu/IChRXq RNUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564122; x=1790168922; 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=0bnSsN9p+L6doKH+UU31+jNB0nqiEgr6lxmAGJ82QcY=; b=D0L15StSeKBMk87J1QrULJix8pW2/eomZDfMC7JVEwx967xkF67ko9zQ0OdHFYmdoK ONM3HLP7B2rSIM425r3mz38AohUVaNf7yC36zz80Z55IXzxMFqEP6DGpT/t3nL7GnMLe K4zg6SzT4ODFRuu6WbIURwo889XUH25v2dZnnQ2QMNI2y52ZEwk6ZGx3o7vN4RmQdA78 fHD21c4JkPZV5QjcOpOgald5O+a/Q6CeJ/kAffYazh07CpYDNEGuzRfXLYDTrzUXMyGy 1I7OVp1ptDjclVBXhTPf8q8qFpSu6S3DmZZFtPugvsci5URFa2xDG1GBqVH909O3bUFs s9qg== X-Gm-Message-State: AFuF++nK/aA/xoWcSX5JW5STu4H/btSrkX+OE2VW0xwUruc3+k3OzPLV GUm83hC2uX91y0ZdHkGOOkxDbX9dAJbX2LGOuP5nMIXOzICd2f2DSR6zibd+5C7nvkQ9Y0xg1Cs M1Yea3Pk= X-Gm-Gg: AYBFou2J77UFGdYZgMn+ypIIDkhe7+At7VfxYw/5/bGRV8uLUU8JLzHbOIUB4SYnHxc 4yhQ2P4DYfGzdoxMc1JyAnyNaAZvQRZCrGJ1O2rbdz+pVg4ZGjB01VHn9Jh1YeCRb2HdF1H748W 6jTNJB0Fjlfv7di1dOaqzrFOzZrQ36Sy4e8H/l6PpF1DjMMAVqB3NNU+r6B/RfIg6CXUyOr4JrP xiQdsBRKnvsPZHGQcoBM+/SzaQbqQmJbkT2efJwjfJqWrHG2QkkCAds8qpLbSm4SfM+4x5CQZQ/ LeA2Zf6FoIfexLFgH5wZ+RHh/vXxFrejAsSsM/Jwp3E/X/M9hGp4WqUudm3ndfOwCtoauS/JL2D 97rmsI17HUwfvtPJfLYNuGCqH/rznZ/ST/u7z0zZZqsAumDegu9SPjWLQiOu3tl/2mS5dysuDAI zrUziFK2116/qPwvUr2Zq9ArVxsxzzzaxJ6QM51/lDTX5oAoW2vhr7bFSyP5lMhvlK+dOgJEPDo yIKliw= X-Received: by 2002:a4a:e910:0:b0:6b7:46e9:970c with SMTP id 006d021491bc7-6c7d4af22d2mr2408741eaf.60.1789564122214; Wed, 16 Sep 2026 06:08:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 69/92] tcg: Generic expansion of tcg_gen_ext16u_* Date: Wed, 16 Sep 2026 03:03:44 -1000 Message-ID: <20260916130409.3382710-70-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564416680158500 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 8f4d1dd633c..3d01609810a 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 3c4074d860c..1feb5352648 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:32 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=1789564381; cv=none; d=zohomail.com; s=zohoarc; b=JB/4CCTcyJwHG5jrTCMiE3atrKbrxQSog9iuRYvqFBc3D3QewqgmUQt29aBPiTRNDxA2PQ4XAOKxP1XX4SWkMZTA+VgZNnjqa9XXkUhYPNI5f0BpiS9DYWfTzY1HjAFAFVSwEtSpRzOrzngmU3EtcLo1xHEnybd4pCyb0+s/2y0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564381; 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=mj4YDzukAqHAZD+kr7qud+JL0iR+gcVcf8N+HV0aXys=; b=Gjx+LnLdFMKhdveTjpyQjKk2sECH0V4RtOqmvkiNW7kzRxqUHx5HMjj+7bLIL0e8H0AlSAQSy6qBt9vPr9bLGVQRJy4Jwu0qt0sSnO0/41GlIxev772NuTXrpuWBtFU7a8FY6S7dY6Ne+gvLe9wi7CBmfeHo0uo/KJxhBr9VFdw= 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 1789564381375456.84467162659325; Wed, 16 Sep 2026 06:13:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOM-0000S8-KD; Wed, 16 Sep 2026 09:09: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 1x6pNX-0006wk-5d for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:47 -0400 Received: from mail-oo2-x0d.google.com ([2607:f8b0:4864:31::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNU-0001Vj-IQ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:46 -0400 Received: by mail-oo2-x0d.google.com with SMTP id 006d021491bc7-6b1ae7166edso731940eaf.3 for ; Wed, 16 Sep 2026 06:08:44 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564123; x=1790168923; 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=mj4YDzukAqHAZD+kr7qud+JL0iR+gcVcf8N+HV0aXys=; b=OgdZOlhikU1MkX2bZBosZTHYnNFnSnjH5hoysc18lgbQH11e4TdOEpovcwSieZjAFd E1GrV6em3JcV9FO35FrWXguGmOIHIgEWJPYyrq7k4fSobICwtXdgGVlMP4V8tUSMkYus 0JTJ+K3zVa/uNqYotGC6s4JQ4mS7jMOf8Lcz6ypUDDIQff3jZw8xYj6vfFoVHakOQGB8 eb6Fux6oLFzrWEyl1R986AlzmZNXaAzHTBi1QRWEMea+bdDhEHVyeNiD4QD/MojqhF6k U0JbxEqOUAOqNTtwTv3j0dN2JULdeTxGiksL/Yc7JFIrWYzxl1Dgs9mYTkTjgqB4ot1P RCcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564123; x=1790168923; 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=mj4YDzukAqHAZD+kr7qud+JL0iR+gcVcf8N+HV0aXys=; b=QVylWE9d9e7A9V22KaaN8JmxB17T6e0x1X7eEzTaH2CCcKywzH7p6ylJTUzoPWKBJx 2B3MmyUXobQJEjy5s/NZY/cZVifTzd53VctMzSjmbywFZ9kgm9YYJwrk7mDZ9snvxyU2 AjijT7iwm6AdGOES+TLIL0adqsScKyhhG4YYL0vwoVYCJgltBNsvxYIbwBi8dgoe8kUz Jac/kqw3wyoMDCbPUGdbhbTo4Yjir+k+LfQs1V5OtM6+Lr8Xh8oWTmPG6/8n0Hpy3hgn IJmFsoYzzmhZLhvSvb1sXWDW4RvMoXtCVs96T0FHPabOlglSRMx6nLKFbuA8QU/56/d8 2oxg== X-Gm-Message-State: AFuF++l/PhYcTfpXXs04K/5oMHZBI5Sn2fo9wT5OMLHwdLmnMT22WE4g oVej7ySstWYDXS9j6dx/wfNkzBucQ9GiaLjK3Um4j0lWr2g+RtrEYct6PwRK3YRPP+3pM1xiOJQ AQ+WGyLE= X-Gm-Gg: AYBFou1PY5bo6CxqOHsXiGdKRmIELA26/QsujXb+9b9tYePywzTjM9SMFgXTJ1Pj4SV DE1n4QKpuPPF9QmE/NsxAhktWgUDL5PQFWDJHpPwRM8gPZz+KyKbHMwRbcSyCCm/x33YogMl8W9 etCXkiQ+UIGbFco5YuH5htLtDb9rE1na47LAtDvY3xdJXi0rUoy0kYGvWuuR+WlAbjCHn9WkqL5 cX2I5RmaQWhqF5m3R0cIvASRNI4KgoGNcjJUGJCceJ8p5CETU+3JmrKzWbztkDez4viV+oAh+4X dh94unK0Wit0bInxGU36mUm7/hzMz/AlIGji/j4niCSKUF9Hva8VH7PjKk7cUhUUpEBnU0SxnPZ nb1oC4IBOLy/4Ksp2XMOqUlutrCudW38CrVxCrz068CwksF06I+K+xHOZmaX0rhCF3z2vkt85jn JjORDHx9VodpDPuk2rSDaREtYfObEyf1NvtAMxnim6RcqWMGLwGewIb+r55KNQPv5kCUb9o36mb D5QsSA= X-Received: by 2002:a05:6820:4c05:b0:6b3:5475:4861 with SMTP id 006d021491bc7-6c7d17c4d3emr2582405eaf.18.1789564123148; Wed, 16 Sep 2026 06:08:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 70/92] tcg: Generic expansion of tcg_gen_ext_* Date: Wed, 16 Sep 2026 03:03:45 -1000 Message-ID: <20260916130409.3382710-71-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::d; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0d.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: 1789564382498158500 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 3d01609810a..84902f5ef72 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 1feb5352648..cb729a07789 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:32 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=1789564315; cv=none; d=zohomail.com; s=zohoarc; b=SzrgYBJm9nDFEYsSMQYIZDSWy59Q90M4CRtJBppIRmMIl5G53EMrCJ1cirxCZ9AJnvY2hqSkxPyHnZLU07tvLDo+fnNs00zZSse0nbodeQKnv96XauSrhMq4DhusDRNwZZ0JZgMsndZHD14MFAc3bg/nAEXf0eurIcngokXCP/A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564315; 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=iH0DpoHspAJZ8ewpz8NyTpdAhIjvq3CgOw2ddD6E1RU=; b=Wc5PbvkCspSs01hKCMxoXQK9yffQa9svQKLIcv+4k7ASS/raJFwL0Mg9x9T4SJaGS0SGShl3dvWDSGHyQ7o3To25aqRvcww683az0IKTzKvfu2mg1r5sbMh3XoVLXcfgiDBposL3JYeo/18EmkqI1jB5i+T2iBTxb2sY0wUpuKs= 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 1789564315918963.4856547998012; Wed, 16 Sep 2026 06:11:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOO-0000YU-Ft; Wed, 16 Sep 2026 09:09: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 1x6pNX-0006zO-KF for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:47 -0400 Received: from mail-oo2-x0c.google.com ([2607:f8b0:4864:31::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNV-0001W2-KX for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:47 -0400 Received: by mail-oo2-x0c.google.com with SMTP id 006d021491bc7-6b1ae72186eso609754eaf.0 for ; Wed, 16 Sep 2026 06:08:45 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564124; x=1790168924; 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=iH0DpoHspAJZ8ewpz8NyTpdAhIjvq3CgOw2ddD6E1RU=; b=qezE82GnWGGlq6GzuL+po0rfXZbVer5LV+4cdmJ/Vpty1aWUEGZ+3GtCG5Hs+EKezZ /Xfc5aEhniho55wSzc/TbECGUHG0hwHlexMVftVoXYqAF8tXxd+X8YH38cduzPREIt14 bJGsoKmWRbpb03KsrRnDe0ioajx7VIrrsMTNp6gVdxfu+1SVR7wTac78AotE3+0A1oQu nSlK57zjjgEvVjpgL2AByWnHoFIVThoV1yJUcHTiPS8kmEiDR6DFsgJ6r3AOpMx5hpPc 2n6n99RTUDzW7eFQE/JZ7CeG1ZSR32Och/oZJx8k8+HE9mJfJEJQkNmSca7RU+AA13ti UpEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564124; x=1790168924; 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=iH0DpoHspAJZ8ewpz8NyTpdAhIjvq3CgOw2ddD6E1RU=; b=vDFtpf2xhL7y2ndHKsaiJ6OKLmQgfUtWSkbupKO9Aa2KnZeTVYYBqm3jWJpHWU1IMF VlZg9tKNmz4WBr7CSLpYyZym8o258EFV556BndjM1eE1MGVQMctmEp3dCz2FufDHB0UE sOVptS8osSjKbUQPvrGWDUH1euvbXODoTN+0w+l9jQAkcXqKFSBE1LWuZ9CquLVxHmeH GY7au85GVkGha0g9rgkiEjNUOMD9kN8/cZHZhW5TREsN+VQfcLTKTYvPcYW8s7RFyENc /C8Ewk+elsFcdt6pxWAVyXO0leL57OM8wQttLGMtrBdSAe9MHlYyqQ/Cg+uFUtAIBe82 j3vw== X-Gm-Message-State: AFuF++lCX0xRI2aluNvsPvVSxeNiDUus7ukAI35+ulemj/fexkNHEbso ORcksIrJAmiEGFsCaVM+cE9Nh7nsXWlTa53MKR5pvJjT+4uSCs7h4vumzLuj9gkpTeYAP6JJz8h E1W9gIGI= X-Gm-Gg: AYBFou1z/xvC7FGCiMgPbRzCsUoRaeQC111kqu+OStMgePHb0cE3WyLGeKXo5pBT+20 MdycV5blG+C5HEOJ2suf2IqXym31CP0J/DjH+acuGmWcZut/ywAc+7/FHe0XWeAVFZ1eP28+s8y GBcoECJcL96F6W5A4W9gLX77J3p1T5hNL41U2Jw401NG36ooxYSvR7CHmuvUIWD3xZeu2DEzkha 6Vi6i1WXsd9HVLasrF0LCHOpaavO26uUDS8w0u79ooE/nxitAhJXi40hnPKx12ED8k9n9naSb+5 OLCTn2L6N77c8E4VvBl78yRnW/bjhdSXdxCmwg8TUi2R89xFZ09Yts98lrJvsJBUX8MdUbXVrHR 9OcHdKT/8fzxbaduEaom36x//v4P+iv+jzlzyjXSSrysjoT3ZMfdFtS62plQcFlNnk/PwkiH7Hs JfkN0K0CoiFbBiNyzI7D+kBg7KrdwMa7niGJhq5BAfu003Mg3TItcz2ucoX6JITVeK0SjEHAPtu N6uMqc= X-Received: by 2002:a05:6820:610:b0:6c3:2390:dc55 with SMTP id 006d021491bc7-6c7d15d09e3mr2507976eaf.18.1789564124037; Wed, 16 Sep 2026 06:08:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 71/92] tcg: Generic expansion of tcg_gen_smin_* Date: Wed, 16 Sep 2026 03:03:46 -1000 Message-ID: <20260916130409.3382710-72-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::c; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0c.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: 1789564318027158500 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 84902f5ef72..ada613805fe 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 cb729a07789..2882593d909 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:32 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=1789564489; cv=none; d=zohomail.com; s=zohoarc; b=I6OH+glQYkWosgaIZBf6RktPRF4jpgH3joThxI4zUa9OHiCn7vB/lwSq+uYD8JsDzwimWO3BXDpLqGlOkSzE4z3YnIYFplLTeyFGgfpWSCbPZBh8nKMpXMOVVMbW2byQueob3wAqLzKpzCB3FLOZtDkTqqvq3oKh3zWzRgLsVa4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564489; 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=CrGKcOH+b3vtXiaqkZW0WTGXzEC6kzDENJmOVSwMcEQ=; b=GMJFCvhsJJuyBC9cAafi4udwI8GZ1g15X84ECf4Yejk8RnbLSkyQxnvOpglfSxDx6laR0x+5OJ0qMtZa97YtleTnlCJQHVQ83BGZaYuLX2tBWzoCeD9283A6cyIeGMlHktaN91GUf5J1sI9N92AwOGg3qX+xLNwr9AM7g7gyquI= 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 1789564489336339.2481321547077; Wed, 16 Sep 2026 06:14:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNl-0007dI-PC; Wed, 16 Sep 2026 09:09:01 -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 1x6pNY-00071y-54 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:48 -0400 Received: from mail-oo2-x0e.google.com ([2607:f8b0:4864:31::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNW-0001Wf-A4 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:47 -0400 Received: by mail-oo2-x0e.google.com with SMTP id 006d021491bc7-6b1ae6b2010so672214eaf.0 for ; Wed, 16 Sep 2026 06:08:45 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564125; x=1790168925; 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=CrGKcOH+b3vtXiaqkZW0WTGXzEC6kzDENJmOVSwMcEQ=; b=WKew+ltfj3G01jv+cETibVGXJqeLDILy9rEi//yc6x/Pd5ZHfzxYPcnxLNKhE1wvoz 9m0FxQoHXWpe0SWOjzX03HWr0drWMbDOwbMQjACN+ODeQlcRq12YW98SaM42h1eITiDE oQA5czu9TxmnbY2NC0WFAQRDph+eIiDdJRMDA+vINg888JpulRV9EmttTqScXXzozviY qOPfiHwzGf03GoX4phUPIRnbamDdMJzpv3JUK0LyGmzE8IzYRvKPs2Dz5sG8qq68ZQsW KDtdVHXhM3ZhJT8i/uL9p2n2qxCnLOfKo/Mu0/f4F9wwS252GqgZQ1HxhuLWj4b2ZS+j s9PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564125; x=1790168925; 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=CrGKcOH+b3vtXiaqkZW0WTGXzEC6kzDENJmOVSwMcEQ=; b=jRyIUQa11aEHT79UHzQaMsueryPEosCYt9NDJfeFoA7k3vYzWQLUjZ/6EMp7Wm1HS3 VbhcmON5d5xWbmSc7D5Gx48yfCkEvjAUdgFGtGK5ziSYMoFKAv9AxZ7kS+q7BHUlOjrq qAILl+QUPkDetMFnGd9ilbAJc7La9RMtLBWplld+zGi4CP+8jsPUD4ZkaiMXv1+klgpF t6kMqlfIYp+D3TY3wPpqmnvo/PDbYiVtmMcem8/XPDLLNUz85RlIGYcaPvLy7vbRQIuY pXv2me4Gjegg7dI8cu/uqXhIbSTl8LFoCIzPsvUo9iyeGxXk1iGzyfz9fhmtM/fjvR2v gPRg== X-Gm-Message-State: AFuF++kF3qhhE2xkx6G3T0UFOsLTItpq4HxrAL/6kUWUsXePody0GeAU vgWVnhgrdF7NR2DDUHI7F40ajdqwUAOqkmsmrzvqGOtjYWHJzn4P9Wt7kCzJ3svyhy0h7EI/FxQ Jha8gs/k= X-Gm-Gg: AYBFou3cB5ev4WtL5lxoW4QQmFEbC+6Wz0T+stpm984u17NFGgob+N5ryChNvDT8GVU FeKF/W2qC19qpQkaoDJWR38+Y9T1mO/z8E5ciiE+PZcORYGVJJMcoQE0AA4rEV4/kMAT/BKX0Ab Tw57Uv1x25RmwRcdFupur29zvqBnZsbtregt6MfX726BTljHrsW956/vRhgGaKWPdTaDxW1Tci2 VwZm7oa/AOvVdzjRmU0D6tdfUghiPFWm2rjZ5PKXzcHsz8d1c6k/k61IvgFpDuRfABjeOlOA15i onRJHjSGvGMO2MK/Ufaxlid/0Wsmyghof4thAdu/Wgl5o7hIaOE6WIRkc9ODSGLDbZqBqB/kc5e rxhTAXhDaCHeMA0V2ceY4XWx+RJlyHOFLOtlhIgcHvmf4yfcR51S3zJMzLplxqQgLBhHA8FJEFn GFjqFdcKWy5lYHU1o9sdcIjZgAGQaVu0NRyH6SbAJdrtoFHU2d5EWm9IBpSpm5C38aU53ZguOpo y7vbv4= X-Received: by 2002:a05:6820:4dc9:b0:6c4:6699:53cf with SMTP id 006d021491bc7-6c7d45e6be6mr2522464eaf.49.1789564125019; Wed, 16 Sep 2026 06:08:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 72/92] tcg: Generic expansion of tcg_gen_smax_* Date: Wed, 16 Sep 2026 03:03:47 -1000 Message-ID: <20260916130409.3382710-73-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::e; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0e.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: 1789564491557158501 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 ada613805fe..997f04ba3a4 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 2882593d909..1af0f284d02 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:32 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=1789564478; cv=none; d=zohomail.com; s=zohoarc; b=nXbnAmi+S0TjO6iIGl6GBgq4Yt206jDQ6jlWR+U+0cGUReFphCxRAxyS6Afhipq3nYV4jmRJPKR3UQz+zu6E3ScTCilIivgT+8o+eQrOROMPgury5oRjg3lTS721R3hmLYTIxKCAc6Cd03GaPGoNx6pZRbY0XFeqMlpT1Oyr3fc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564478; 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=s2mDB3Z7m3NCS1nl9nwnDzwb5cV//ngEUAVA8p1aI8Y=; b=VsGZi0IZ5W4QUzliRshC+vSTIU5iECz3fRKL3EurJUWDxvi7i32pqf7NFkmJ93nUGQgH4RJ3LFAXM3Sz0JOijVNs47oxFqFWo7SOk4BHpjfHsYe7uyniuadJHpREWr/O8OWdOGFmiqJ2sYJY/T5xZ+Dlul+wWshh0YCv2cJyzVQ= 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 1789564478193183.50750796619184; Wed, 16 Sep 2026 06:14:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNl-0007dg-Uz; Wed, 16 Sep 2026 09:09:02 -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 1x6pNZ-00076G-QJ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:49 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNX-0001Wr-Px for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:49 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-39647184c73so1750005a91.1 for ; Wed, 16 Sep 2026 06:08:47 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564126; x=1790168926; 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=s2mDB3Z7m3NCS1nl9nwnDzwb5cV//ngEUAVA8p1aI8Y=; b=BemINb5jPsvwEq9WgIBrGfyLTkAT4dXeLluyV1C8TmKJpNuXIR9exIsOHzpV0Rsgnc BrZYp9rae3x+pQrlHerwjO+a5FnOF+Ky6XVI5WgRfV/RWDwk7VSg6klafgXHVrjroZfA oTKxZadj0RkFkv6IFLE9mlSS0aK05BhDmTqlWMwENP07Ul6TwzeFZcNO5IfGPz1IWavc 6+NHg/d9zuXHvm69/LAtuWM1fZr8l1JLsWDhP4roeyZ1j7kN+czfhKq4qp0mcv0sQHmw mop9/hrAxhNWu/9engWCQw9XrdfpeesXUCCA+6M7VqxXyAehY1bCxKoIAyehywHm7VFn qlrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564126; x=1790168926; 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=s2mDB3Z7m3NCS1nl9nwnDzwb5cV//ngEUAVA8p1aI8Y=; b=SYQNBRMgJs6MKaMAI3W4vwP/Sv/03yjW+/6PKumdh1oYlTv7v2quQXJdPkOmTGb9DQ rWp/c/CVElTNxxEgWn3EXCxOuqdzDM4aweuJbpBMZc21a76LPfqKCNaCzQPgZVm9pPdK jpK8SlBTtjm4EFPoxDrnIbneytMsN5E+AYLQwfHNTZKmJDq/f1gRVtp9a6oclY/7gKJj hiyVeOa7SRVNzPcoanhGPD1YjlG8PZ0LeDmv9CqbuOeKk/GCFquykJ+wqElzSm+9pBrJ uAjJGLJh3s+0QmTv7AOgSiiEZHN+ftoH6NR7isaYL5s+K3FOUrSXhhPVinRx06LvYuJ6 /O8g== X-Gm-Message-State: AFuF++kAYY/tf5+C8rAcpBLVos3aLjkIEqL+M/2mm6YDyALquiAHlSBj iMldxYv9dW8b+VfIKcoUAolV2bGilJCTJNdm0rcT4EopxmsuOZurIGYswQQqTkolpFeNJrFz39g XzCMYfaI= X-Gm-Gg: AYBFou2dl1cZ3C4N64IbI+ffYn2M7JIoHCbJJmP5fn+mmGfZsOomeTdFEPvMBXsIPSY BQdJcAr7tUxc/C3dKa6UWMtLRaC+pgobq+YaTCKaMq2c2AVdACbXb+vRazctxGWh5uX2UTGOC36 9m+xuoJrCi6AkQfBQIUVl+uHZ63LI5PpvskIcYUNa9JHsM63+tyZFbUlEQ6yARyWnr8N0Y/Xf4L Lk9Y928wcAkug156nwP22XQKCACzGs6p3zEKPWQdxvB4Ur9fp0eEvaWJDv9ZdVshGfIPCbCYXK9 10v4NnJx4jvDA3m1kklA/UA6ylNUhZ6HE7xTsnPjFBLE09FGMzsRHV2GjMN1/v6W9C7F21tEU7d kbMEPQsc94Pq8uKhrRq1uC3g0BtL7E6KIYpVYGkRl7s21FDYtavXeVh2LaRxTZscDtT6xGj6OQS o/X1Jos7zX/Y/t20XFFFmJBGScJOybX//a5EAGSkxrqNTFnWRrafrzINJRhskmTplt+W8ONBi4o hKwF/Y= X-Received: by 2002:a17:90b:4a11:b0:38f:a81:15b1 with SMTP id 98e67ed59e1d1-39dfe188cd9mr11838513a91.19.1789564125981; Wed, 16 Sep 2026 06:08:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 73/92] tcg: Generic expansion of tcg_gen_umin_* Date: Wed, 16 Sep 2026 03:03:48 -1000 Message-ID: <20260916130409.3382710-74-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.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: 1789564479198158500 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 997f04ba3a4..e9f7703b687 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 1af0f284d02..0ad6649a355 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:32 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=1789564363; cv=none; d=zohomail.com; s=zohoarc; b=dRYEhGnDzRTuQ4/066wNXlHZ4euqDs5S0pPMspKRx8KHFnlPslt0N2yJy9qA2zPMRE2/mYW/N7sdKfjWDCvy0t/UO5rBdaDnkMRo+r6liOtlHXfWjn5Df8p5AiLeR2anl/3DG3+7k+vVuvZN7gYTCtP6sOm+1mULoz/2tMmI1zg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564363; 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=TAIqV0L4pcsexZYXYg2n1SLrwSHAalOcoQCJhMfQtx4=; b=a9gFVnHniRGjeGrIzW5br8xzo7VOXpm98LGzFzT1nIls8gAi9qHhiYiNz8avPYHbKgx6klOy7W+6R7BetirTt1XcQKGxeegy1bywe5jxfFr+mZI2zj+don1Bq5IN2JsdOI8eNFVVwxusagWOKQx9iwNoaFxZmLaRBFkzBglaweA= 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 1789564363119278.87534424411615; Wed, 16 Sep 2026 06:12:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pNp-0007o7-1Z; Wed, 16 Sep 2026 09:09:05 -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 1x6pNa-00077q-7c for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:50 -0400 Received: from mail-oi2-x11.google.com ([2607:f8b0:4864:32::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNY-0001XC-CH for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:49 -0400 Received: by mail-oi2-x11.google.com with SMTP id 5614622812f47-4c4bf3dedf3so615688b6e.3 for ; Wed, 16 Sep 2026 06:08:47 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564127; x=1790168927; 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=TAIqV0L4pcsexZYXYg2n1SLrwSHAalOcoQCJhMfQtx4=; b=EReh1nZ8eAS8+6Z1I6e807/+fHeDNir/qaqhl+2bu1hhEwloS44eNf8zipg4Q7B5A+ 7OGPMpQrZ5FUr49hnFaLEr+3obVb6vtN5fqYzdrK0H8D/ZFetkXMWbjRhBJZFTu303dW dseuCli9vouqlxVtjDk2uq4dsvgWxypjl6Tqgp9wsnT4fJ2ZeFXVMyqF19ZI8dAWNn0Q Zxj3I4FFjBy9RoM3xUHJGUh5b9Xj0gcsPkEERF98QxHxDny3qPQ5U2G6HaSLv6jnGmqj +BFKQOLXV02wG0OZduKxBS6gXNUxyAWbtAoteQjv8yKaQdCqI8z9lcXPauIaTkXB7yoP jJ0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564127; x=1790168927; 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=TAIqV0L4pcsexZYXYg2n1SLrwSHAalOcoQCJhMfQtx4=; b=jwEwlSGQJHRr3hFtZAgOS2foeWvjcSXp5yvvBiDWgbQcZ/IhTvTsMLx0UGIAlWiof1 yEMk3MOrhtJo7ZyU9VZn0nMj1tNu/v1mPx9YVzWrVMcbx6YpwLJILbwN66a8oom8uSjD /aPl/2K7BVPy83HZ30KuhHCtD2foORbIkhtbn6wtsGRxYQGMPNlH+6OvuVxohXz/JV2Y DrTjNsAvkyZDD/WgIk7u/sTbWJNxZzYLOBK6qPsTitSG85WUQQFGlV1/1f1rp8n+FL8Q 4i+dXWZI26iN45dtJkOKOXnco1kGYHnHAlGGRExqWchlDOInVt2diyGRrOEsKA7Nih9G E07g== X-Gm-Message-State: AFuF++nwiAU0Bao6/67QTYj9s79NbKput4T3QGtAPvO9or8Bi8/AAeNs myOa6rt3Ko7x9cYfO665HZz9XYTDBg8JqbI7/Dc2xNYZV3kcQBm3xCwJFg0RfMNp99qIdPu4qaY 0qMUgEpQ= X-Gm-Gg: AYBFou32vECKshop53r3kxuTjQoYSvQQiOZX0YVDJUBh8YxKr00+g92HJ6tT1a7BBgu gTmUKdomRGJJvwMgMhYC9pRPFqcjev1Jm2g//6PQqaqdi4kmaU9l8e2MVTRu7T/s5dKJspOKtUJ Sb2e+CTZts9dUI8UbBSXM3caqJe/XPhxmWbbWYYK0TVkrxmGncEcjzJ2JTyf4/AjDT24Q91oMTs vyYuq9UGdIJ/tAetglZ4vGqhrZnA7S1PLHJtCAY2QBsZgnZa48LmNfOqdSSkICJuI+EnpyOBpN5 TpawTEQ4QpllULF3cbJ5YSE30xlZNlLBJXTcFkytHE1uLFxYNgjMmmqYzMPUf3ICpI0lJrYMYYT hFQq/1KLeeqgTSOq+/mCZxBSFJgQpvqUx9uwv88cZaXoI7r5t+1ipcDYs4KxI7d2h932KJHRgxU k0miI1t5KCmuAajlDTipB+2abL5iprQ1s5AEMJ3kPRRCeI8O2bKE6S9jzW8u4w/SW/Ku9gouMlR msVfQk= X-Received: by 2002:a05:6820:6ad0:b0:6b7:83d6:2924 with SMTP id 006d021491bc7-6c7d350308emr2284569eaf.39.1789564127020; Wed, 16 Sep 2026 06:08:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 74/92] tcg: Generic expansion of tcg_gen_umax_* Date: Wed, 16 Sep 2026 03:03:49 -1000 Message-ID: <20260916130409.3382710-75-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:32::11; envelope-from=richard.henderson@linaro.org; helo=mail-oi2-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: 1789564364299158500 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 e9f7703b687..79a3e82c98f 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 0ad6649a355..d8b205812f3 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:32 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=1789564389; cv=none; d=zohomail.com; s=zohoarc; b=bxlWU4vozNQdCuhWYdEl++14kmVlktS5lGjTJk1eut/eQiXwgo6mDjgAiUIFuUwfc7W8wJNtcacD40v42YKxE5eshi5AiatwRr5ytd3awAs4Mhm4Q0pkr6qoUmtC4q5rVC+k53osz+RKVS2EPagGBKNEbXkT2yRldFOOUOu62dQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564389; 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=2q5sf2s1P3PkxCTzT6w2tCdJ+EbExa0K90Doyvg6ZLk=; b=kv5ffCdIEnvGYiKYYpTOtJsG1q+kcBPU78hxL76mHrP1mh4DYAbeG2GLvEcUxQSJLWn6VHWYGNOTw8f+x3OrM96lzK3Avkc/w8GkusuMumPeuv4/RA6UtSLWSqqMNnveaBMvk9t9V52gAjqBURgrpzZT3vJJSRH+wdHyWXyMS+4= 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 1789564389247383.95317586664714; Wed, 16 Sep 2026 06:13:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOH-0008Vz-41; Wed, 16 Sep 2026 09:09:33 -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 1x6pNb-0007Ad-I9 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:51 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNZ-0001XQ-LE for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:51 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2dd68a16955so22364415ad.0 for ; Wed, 16 Sep 2026 06:08:49 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564128; x=1790168928; 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=2q5sf2s1P3PkxCTzT6w2tCdJ+EbExa0K90Doyvg6ZLk=; b=gxSNAZK0phze3bnl+qQ0vA9Bgxz0ONJ6nZn3UCdUUKA8WiVY1maaIc2FLq+YovtfQg 8dpAQ/GYaF9Tg9RD2KBSn36y9W2mI7ZULe2t7JRlkZ/hIbTFYdiOjBLXTnBqVGkaQJxO FP1/hfBrMXB+7pjTbtagYRYg5dbfNSEyoVEXYYxto/tqsRUoKiAByherExgofy1bT8Vq tjOestOqqjz/1oSyH7iJ+vyiOLKkX/oDpWMUseNh6NjJ5lx/dnZnO7OEdi/79SP/mA9U OBQN9i3PRMm3IXLbRU6IVrhFXpifs0ndsrGDnw1Yt9y3MfUqQ3v1+CB1iFwIn8oAPnZQ mHrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564128; x=1790168928; 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=2q5sf2s1P3PkxCTzT6w2tCdJ+EbExa0K90Doyvg6ZLk=; b=opg8aq4OFKkfkuFkDZ0Eh+BazD+GFuHrfRsr0XdFpQrbnsoaWHwjDIyMGzUTrezfwI J4EkEgtPIsSgMtpgTs6VD5IwzuVhNbTn2HaAvdKiM7kVseZ7Dxi6CsxbF/fmD2eoGLsk YskGJZ8HQizWmqlVri2kCYwv3n53qYagTbwrvdx/jZCI3HjvOf8tlJOwSOI2pZ1WFhFw Drnaos6aITnhF7d/qnKljHrJufLtqqkVwAkzlbCOhvWjsWRB+IoqHbs2Yya7gvZ8Rz2O rdcqSoeMcmG14nEWdyp4bNo9hFZJlszQ1zZXsb2jZvAhEiVTS1dEOEy1z67yRbeafNAw w14Q== X-Gm-Message-State: AFuF++mt1A3yohfciYi7CzLvBtkyiZjm2Z5dOXa2v+GCUxAO/g4zA13/ iywYEtOxTNeClCSS8eHHwXmvuZNUQCDfw7qadBCpALH1yfKbDG/B8XAa2W3PJNoeFdOlSQQqtZE dMCigM2c= X-Gm-Gg: AYBFou28xHUi2dGs3Dqo4JEaPhBlM6qcd2NPeKCC/ZtQGhNZ+r4fSXcYuiWZL2yNpOR VS3xDq7aPzGWBic3UV5vCxDoWg1REL18JSts6wThJiL1yyYlPhoMzaDGArjV01K3+O0s3S+oB/0 aLpEWqAa/2dUkbfpYwc7WlBN0MjdNrkQcsq2R7qnT0SMVU+ZbOxkBAT7buXY8cAOeRIdmTjs+Sq j8toYuqjfphjTh8XgM1xhCw6TjCHp9N/cEZsn4RSr05JtYGRVKH0rl1P/0fwZ6sNMET4AjrNDqF GJ/52bKlnGtLTkwNAwHOGjlDfSeq35uU9KNphAHr5QntS6G3RjQVnk+soQ2+vk1D/Ewlf19n2vX 949HmMbSwsh9g2bEjMvAtJayNhTDFd/xSZ5hsIIlIv/byGrok60DwAkWhuyAkzGFw3qA15ePN5Z ipHYm7G3Mlm7J+xgbv0g31DNvAtPG89GB+YSXdG1IWA1irM7qXGrJ3igXEWUMkZcOUwcTimcQjH AaZ7Kk= X-Received: by 2002:a17:90b:3848:b0:39d:e78d:32d2 with SMTP id 98e67ed59e1d1-39dfe06cc54mr12058917a91.13.1789564127962; Wed, 16 Sep 2026 06:08:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 75/92] tcg: Generic expansion of tcg_gen_abs_* Date: Wed, 16 Sep 2026 03:03:50 -1000 Message-ID: <20260916130409.3382710-76-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.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: 1789564390479158500 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 79a3e82c98f..b64b54fcdee 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 d8b205812f3..0993d100f00 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:32 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=1789564341; cv=none; d=zohomail.com; s=zohoarc; b=cbTO/8MQfmKAPepbl2wHieG0IWdAIeFiOS8ndit9TcWZyWCPobDfUvl0b5JOAtTH10D3mmxZkuJymfDDlQXWY/8zJE3KtJTlFUDmOCKtCiwhCy7aepTzw1Uj6//lHzb/xNYhyRTkBxFe7aCdTfHurYlgvw1i25tLeLW5U1rEuno= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564341; 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=cGXdUEQOC61/qzWZyYSkL07ZmwnJ9LrsaDSe4ilYxYo=; b=DhgkMz6d+5+V1Nig+8fOtYL19VRkaHq5OS9ZKL/bbyOYzvUkmUH3ku7LhC1fYC70/jdgeKJAHR+g+6CBT+cgX62En6GrzAwFHasw6nwVfsvEj3G8m6BvR/CNBOEJ/uMIOjTKwVffycWtMLTwJSyX3ABNazpMprA8V2cdx3BXhfY= 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 1789564341932595.3239096634358; Wed, 16 Sep 2026 06:12:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOC-0008Kd-HP; Wed, 16 Sep 2026 09:09: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 1x6pNc-0007E5-Tq for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:52 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNb-0001Xm-CK for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:52 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2dd68a16955so22364995ad.0 for ; Wed, 16 Sep 2026 06:08:50 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564130; x=1790168930; 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=cGXdUEQOC61/qzWZyYSkL07ZmwnJ9LrsaDSe4ilYxYo=; b=ZoRpQlQmMrVB8Buk5J4EfA7fQyNRz+J9EWsta2SOUXfgNjvNvexENdvjSyxVy1bciP MPV42eIQ9k6AYvPB7sfHFlmLQzP5S5JUOThlj9PIeaoAeFcgUEQJlUwMXmx3a5v7dAeF 5XCrq+rcF7BKeBLxBCZWu6MsTtgiosl+ztO/w1hDWnfJJYFx2OTgVTS0V5njV4qeReWk ISURUE0oX1JJDbqwD1JnG7U7/fnuKSB3HCvd/SFWmLHgvRxAruythfx/5MX2BHkWn9aT YDcERbdI19eCIAf2OOUv9ru0AKq6op6WGA1yuHW4C1oOIVDCMETbBBMgCAA8c+u/zTuR tH1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564130; x=1790168930; 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=cGXdUEQOC61/qzWZyYSkL07ZmwnJ9LrsaDSe4ilYxYo=; b=YefL9Nk4oFt+pfVTjCasa3IfbykRqL13Rgl3cthANwR9uOOjq/pPi43d7CyCNNiCBP JmWyqPbvkpuyT42NcveCNBm3AaeJbyAhVpuqxc5xH34UDeMOnyqyE4nbR/THqSF5Qg+a Wz+rLznMjKyJZD6iIE06DE+yYg0gCQrfeOy0aRCZ07d5EdFC79k/X8fY5KDb2kQfP3P7 n8BUqAy/rjLr5ltK4pEqaTQsPhk6zhPbTwyDLe0bUsBTAn+11EcKusDa3HsVUHYo2p0N I7E3zfWeE3pWUtjqV9OEeHGyCwHMhQee6i2to865qhE2ZW1ty5pRB8e3TBIY21M87dP/ elWQ== X-Gm-Message-State: AFuF++lKL5hgWroOk1gpde74pyNRris7hLEaQhN0phg08PLqUUi5tz8S 0wOZAv+YZhFuJEswEZCmf5wXjWqyeyC8SwJjnWRlajo41Ufp4y1DQkKY9e1LOs6AuGfjrHYpqza Bhp3IHk4= X-Gm-Gg: AYBFou2psZcqk58RhFuVaAz24SJq4XMopKpU0pLaxsFKjBpe978nAA05XRxsX7wuVYB Es6ieb7TW6WFdXkfoiBWdW1SEMbmFZewgSP4A6ZjYVTYqzSNT6F/MQROQ8EV0rNPJWJ2uOqI0GF MWCFsblLWmzEMibkkGboQmbQKuMukVQnI2+jDmingVJzrhw9MNk/W3Yg0pyOm3FK41BqJIcYzRO 3vhl+uaJnzabYO1Oh06nzl0zelCewYa3LsrI8Yu0/O5mAB9aTnpq+qWEanIQKbXQu1xZcCt4LiN tFy6EmBOtMGCqgEnW+9gYPfEQFxNJS5gEUOpGjUddwcuBnQmW+GKBqcseJBIajLF+xEnMOpITWm VmWAHi4TA+ULwRyFRD1tkFbXXIwjUpZRgjD8ly+GjJ0KB4m74iay0H+xa0L7Su5NR4+E6rZA5GK m+0zrADNAMsqvYYrs5bFdN384d7TIeAEdM4hZpeavWV23eO8efXsMbVvodm07qoE/yk7fQJQ74J Aqf/1U= X-Received: by 2002:a17:90b:5706:b0:39e:1a96:bbb0 with SMTP id 98e67ed59e1d1-39e1a96d303mr4992297a91.29.1789564129752; Wed, 16 Sep 2026 06:08:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 76/92] tcg: Use smax in abs if available Date: Wed, 16 Sep 2026 03:03:51 -1000 Message-ID: <20260916130409.3382710-77-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.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: 1789564344331158502 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 0993d100f00..335af620dc3 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:32 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=1789564541; cv=none; d=zohomail.com; s=zohoarc; b=jctWBIMYP2Lg3c90KmBG0PUNq6A/2zJld0hokcKMJYWv7sISnndYKm4GfItvnlIDIuAZJXjQpt1EkwJkHlZK3rbFmImka8PoW45TPJA5k4fzehejTZfcia6EugGhMeK3/rb2quZhy4cZwkZCJzmkKQKvobrsYDvr3y4mxDqCP+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564541; 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=l4obvJtSnioODCzECek1RrGUuUO0M4fUpyaE9GEjHrM=; b=flmr3LennYfFpxgtHq25WVaYOmMJhDWGtj0q6eDkg+LiMu/7NU6Pj3wyJ7GruCar9MSoHLzTb7i2Z1c7f56i+CMFRQ3NAg6hxnu3eytv9elgHumGZ0TwbhqrzswP8ooLHQJ6uS8ZAw2kI+H5LfZFebvUDBQyvrMx56vfjbcyJdY= 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 1789564540988891.3657045392104; Wed, 16 Sep 2026 06:15:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOP-0000e0-JL; Wed, 16 Sep 2026 09:09: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 1x6pNf-0007Iv-EP for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:55 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pNd-0001YS-EG for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:55 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2db710396ffso17071145ad.1 for ; Wed, 16 Sep 2026 06:08:53 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564132; x=1790168932; 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=l4obvJtSnioODCzECek1RrGUuUO0M4fUpyaE9GEjHrM=; b=KNXSbWz63Vr4IwqZpn6jl+n8kOCDrZgMyEa28i8owZKcyjeZ/MqhZBTjlxgaandvLK /h9gIGiFqoVuK92kShSehYOUewykWQhKU7c1Zn81VCof/+qmeSmpTaGq5qOh6V+UzAae DQjzyNS6bWkKdjiuCOhInxEsLc4nSd4qgm6l7N+9UugxLq9NKKIoNhF61/S9h/zm2/V+ nQRIC6iHgDhXkT9w9//LSAwuOkyGFfovUdxKliNQELD6PwaFGH+tImOt1TT3rEiHqe5i 9jkBD7d2lwSOQ3KVE2lbuWnzzWP07GZ90sbpRCAEAYn9eVvTM2lT/aYA4dNcIK0jq+11 3jzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564132; x=1790168932; 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=l4obvJtSnioODCzECek1RrGUuUO0M4fUpyaE9GEjHrM=; b=sILlKgMyZQS4LVgi8a5IhkyoQPcKRo6cTgz/obc4jBZoqEdpARAqgc+yVw/yVOKTM+ hcEhKI+oW9UHumZTWL3shseHYD9ZHXXkICTuiJ26ce7nPv8PfIBJRSirXqTdwXieUKJd tsqSIktjfrLafaw57K6BZtrXIXLjJsJ/ieFQwjHNsFCgKSwRreA3CMDxo8MmwX7ZGKId HVUSL+i6xR/Y0J/0vVAdcwYCSGJ2xNREsMIIE5GbWmOEfifPlT+BRdcmjE7IKWGY6bxr 3P9EZhlCDNuNaMHZY1IuDuQiTZuc3xmNZz/U+7GRqhWdWYk37c8TvY1osmvIfM9czeWD ysoA== X-Gm-Message-State: AFuF++lzfA4aMSxIKXIBJjzq+cX8gBx+Nnq6vLgsmYaglQNEubA8QYdI Dvgy1ZLb59ExcqTqJsQQ9HvxY2E4xAW5RUzU5epDEMI/LM7FYDH8Une6qfDmxzMKTQ2l/CMK4hM fT7nXIxU= X-Gm-Gg: AYBFou1y7WIfB42+Sb28JeAZuQqUCK+A9yagMEXHrdHYwg/3Ax9XhHon7r3+sEXSerg 7/Oju+c3KumXA3+srIioR0ZYZsDQTTKNFxkOeMgg53Xc1btXDCgJnMdNI9cHazvlMzX9ZA0LBA9 AckDoiht3mHrx2qVZ6AGBT7HO9GbPIvgpu28mTeiD3XcI39LJ8Vbs7YurBQIctamzQ+FH9uFQXU nb0kETjA/4lPTBurt1IpCBw6TUS3E+4J+53m7K6NKU7kaW6IQVbKwpxQDT9IEij+IVZEDyVh2tD 2NZxeL+KPv9uISRZov5Xn2yyvV6YIZICrKLemFhjB9hWP193OiYGwg9qY3fWFotVHsivDYPYOBE B3OVGL1YeomVuKZDEzOCiafbil2sxR+Xh7Q0vviHjHhAzimbcsNO5P68JUEne3DlXl4IfRv8Ue3 rjpwjsOv7mi1eRpn/MayK1FKZm2HetZORokPgDOJSX0fPxXYANdpqFIu1ZUHnWwip32Ds9eaLuG tQo8w4= X-Received: by 2002:a17:90b:2d8e:b0:398:cb8f:c308 with SMTP id 98e67ed59e1d1-39dfdce1f86mr12012232a91.0.1789564131662; Wed, 16 Sep 2026 06:08:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 77/92] tcg: Generic expansion of tcg_gen_ussub_* Date: Wed, 16 Sep 2026 03:03:52 -1000 Message-ID: <20260916130409.3382710-78-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.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: 1789564541889158500 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 b64b54fcdee..f547dc14365 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 335af620dc3..1cad8bcbc69 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:32 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=1789564297; cv=none; d=zohomail.com; s=zohoarc; b=GMLE/Idd2xhdhvXAdtLx0OP4BktsQ4H0Vg4yrcw7mfWEd8TvFaxqjxRnw8B0+Z7t+c8LePk6ChO8Ean4pVQ5j/VfArbKlTZ9hhNXjrT3YAXZlFNf1wphvMNd4ugrRNKkgOlF9jMZNsK9A7WTAFHPATQPIMsnbAwJze3PuCCbypQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564297; 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=I3PfUMEgvfCYkyvMoeTPYYREMBNAetjBzMiu6XOaCm4=; b=lffbMNpmHM+S/r6KOubX8illE2b6PIxFm2q0R9awrChptI2lgeAhv5Gf6AQ121rBsMzp+UpDntKDYr1Z3RJ/T9f1MVVnf8ZN9ewUH8qUwMTa5xYckh5COHFpOd17rOccg/TUKunjRGYTKOIbYwjXY2w/dpmXw9v4AD9PO1dE96A= 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 1789564297410259.4364325536694; Wed, 16 Sep 2026 06:11:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOA-0008B5-F3; Wed, 16 Sep 2026 09:09: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 1x6pNf-0007LS-Ra for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:55 -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 1x6pNe-0001Ya-4M for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:55 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-cbedd5aece4so1607246a12.0 for ; Wed, 16 Sep 2026 06:08:53 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564133; x=1790168933; 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=I3PfUMEgvfCYkyvMoeTPYYREMBNAetjBzMiu6XOaCm4=; b=lcngLwUhjPeKbcmDoZQZm0X44pyUSBC9MXubrD8iEuHSt57wSVGknq94YqOo9xUftQ arm0Ek5B91yjMopK010doKT9Q0Xr9uvysPbIGqmoRSKMnzI/3DIaBx/R+th8uwwz5oY2 9HN2m2bLT2hucVuPZQUwlQls79GE7f+p7RNKJOVRniQBqO3akoicn8Jnxl0Z2r32fqsJ aJX6L5pNfYb3M5tHGTNhT2N2gwy3oCBmL/ugAoP+DLHUr02koWKYXaYtae+Fj49nUG9H MDhXqQZd454LWw7entEO59mUYjhynAQXlQDmH0PcJmE2Nf6OmyKjS1YQcLLBtyi89AMa Hg6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564133; x=1790168933; 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=I3PfUMEgvfCYkyvMoeTPYYREMBNAetjBzMiu6XOaCm4=; b=Fd0kHTsqMimNAqMz/AtflSI/OPOy/D00q5wE9/CySB9sIh1vHOZOyX3x9ENyn0zLYe gNMJL1wvkq6kUyJtm6YXIuhedHMttbQMjFf8Ki7X5wob/z3fzVRjKMq8+779pKqztPLb PRUv+ddQ1TzNFIZyGsGQV/FS0ZNuQWsGODPCGkt8rdPbU7XjRk0/ckZ/l30lYLhWtVTX 9Ry59IPp40SCzln9Axdof4XNlFykA7+/nVcMYZwZxe4iW9HGi6AKYWxBGBZyrirrLfmY k5vM0P/Zthioybb4bn8x0B2JZfZrutgaSNg3kCYjYqZY5WEIl+UDq3J1D5JuYtgsqg0i 6FvQ== X-Gm-Message-State: AFuF++lfJvhQL7A61k197rsuzRJXSCpglD2jcdNmr1egKgZSIFpYXtQj hZENbTKte+XOBmh0YXtlKIAwit8kyycHANesYrOBKdl8Kbo3WcnyYlNtxNKmJeyOKMXqpGF8o9t lESdyP4g= X-Gm-Gg: AYBFou2F+n97s/sqjJLGnYY/9+8P24wkEjIrexG48yi13AUEdHxjqJ1jYCgMcgKpx2J j4yW1EgJwYVSDPFpH9737/R4YwAqWZ99zly9wGgPcf8f9d3Oq0RKnZAX6ExcIOQpdEXj6s6gvDs Oi8m14wJEJKhVKvwFhMY4kLEDV39b9EZqUf7O6aKtpQSbE3yW0+e+neKpU7RYEJTNEk1JnVGiJf rlDT+/yvO2FTn+9ALgTCmomn5ZG6YK/HGmIOB+JliGCrL1zuPzHG15y4QXGYykHjqLAqEcB2Bnc q4tMOIDNNLnrqe/6GgO0FOHGtDgtfdTaocXdk948oyfkWWWbPnZrDJdf9bzN9VZjY6fXoH9LnuG BsVGavDZHnD5XaDPMXVX0BOJBOqAvT6Np7Frg15LRoMxp94BAWWn/MR2bKrDkg/Srg/hMYXXY7K nYZ99V/kDXRE+UTtfRewFn4AjLWvoP8qS4/nIDBPopKjloRl1tWecyd6xLYFyWqxERxfCl/GfPM pts+H0= X-Received: by 2002:a17:90b:3c08:b0:39e:fe9:c5b8 with SMTP id 98e67ed59e1d1-39e0fe9c653mr8111268a91.10.1789564132592; Wed, 16 Sep 2026 06:08:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 78/92] tcg: Use umax in ussub if available Date: Wed, 16 Sep 2026 03:03:53 -1000 Message-ID: <20260916130409.3382710-79-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564297863158500 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 1cad8bcbc69..6d32552391c 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:32 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=1789564409; cv=none; d=zohomail.com; s=zohoarc; b=U7PnoLOwvX8q6GwgEFv7gZYgYfQZlUm1VbuQHP2bebTkhiBpmHrEBxKcVTuMZcoDuAyTJ/WavAwhaA1NMwfLiKXUTZMaM9BNkuqru3tVlwzIjL+8hyUgItRe/1fhbe2HK1x/hwf/lLbiRVPEpzjH2FWGa3OPyNDPCI5nBdWEess= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564409; 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=ZTPeHB7FGRaEU0nkE10XLLOEMMwe1608YGGgNjyzdZQ=; b=gA5Etra7367mS40cd+QBiex/O+XZE24+lE8ZAvJPSZBgs1PKMT6fXKtnAU/mwhUvbe/GfoJgQ8YRFoINotnfglcoyxiJZkF41wqRAJexNqWBOPKFAow2Y+47eiMIpXjESjn+CPwwynzoWgGlMxXdckK3BzrnNws/iYQpcgDPjgs= 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 1789564409007164.69816807722282; Wed, 16 Sep 2026 06:13:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pOB-0008IH-OF; Wed, 16 Sep 2026 09:09: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 1x6pNh-0007SV-7y for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08: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 1x6pNf-0001Yr-6a for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:08:56 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccda24a3so704120a91.0 for ; Wed, 16 Sep 2026 06:08:54 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5aa1194sm9398056eec.14.2026.09.16.06.08.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:08:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564134; x=1790168934; 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=ZTPeHB7FGRaEU0nkE10XLLOEMMwe1608YGGgNjyzdZQ=; b=LTyKntQtHeeG48WYVckHvU06wigoLIClNBlx/ldsqcNPFLs47pazOlsf4TY813gXdh EMDgngva5DnHMBUpMgAxiVKq5vkt/5Wn/Mx86Ua+kwz4C/Lr6MFcLtjDx3owM6kd7W4G E/3x7GUBo8ZA8YWHsYJPE6UDqjbgHK6+/B90BEwz3GJWYQ2K+2UT1Jx9vHvXFZyU06TT Ozf5Ss0r3/Ya2/H281MZnRRgjo9tQm/KQD8spmZlfMIvWaKXvXUPGWMQZw39CPZbmcjI Jn8c3NNyCqP2aVfPEdQ/oXgXyxxKu2MF7jUIUAl8uMnomTvUvOAFyrbfQqa3Gg1tHCPg s3ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564134; x=1790168934; 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=ZTPeHB7FGRaEU0nkE10XLLOEMMwe1608YGGgNjyzdZQ=; b=ssXh7QHqBdLpZVfTa6O8Yajben/8A36sqJ4x4cKtFlHTgqLMh1u1YaYQ3vx7EZ6SMg ZBAm1Q1MyhTFn5Cy2KMS6jR2DBrdV9RGuVDLQkfKakwhTUeuqJzz059t4uMA8T+BPEgq XGjazt+rY8Jd0hG+Mj86YvG9Pc4yGKDp/K4pVCrNcFzk/uVOzZHy3t5GGaS8wz7cNbLC 1yp3zsEFeyKw1ohABnrIXY45nrXEI0DGTc7tfVpkUlrAt9DNykF7CAM8UySsUWGrC8LB kDY6+B3JofgMUu402Tjwpwv+msgeVJuL4vUqVbMkqbtieFYE7TSuFQqtyaZIxmI7xyDt r45A== X-Gm-Message-State: AFuF++k2FSPaNhcrHUFZmBloPX9xX5/ecqJCP7RSrCNiYb75TQSasmjZ 1u5CVjMHbIvo++QQID4OL03RPUPhUgLqWWB8SFHqjaQzKs5k/it/S6ZzWM9t9ICSEZORjnz64iF TwyMtmc0= X-Gm-Gg: AYBFou3SnrRO3JkpJBNy2Ug5S/Yewx4dJo8+oavLQBXiCpHse1X6+72Avx9kdaHMrbr ccxjkoS59bn/9zX9YC386Z0YM+laaCzY7teSDgNu3YFn0BDlk+1X+kLoYB6ab1ZghX05zE6Rn8N Js/GYad0W35ZakpoKf4WqTeddN6xwhkYuGJy9URCJADHM8V7iYpmrK6ODjnjtMe85vA0S/7dOLf mEgskJPo5gYIAO4JdULszqi+Flb2mtTxQP6pRO4tRKrIThkVB+teAYPgcvsBd6o1wK/VxaaRjaQ 4R9rc23lVfPKJac0DRQ0CuRvebsbcejNAMqeEkBbP1Uig0/xswfkM14f6I05cHc6xflade3ZubE S70SMZiqcXvRZtQNFo1kHDe+sauyfVvze+rTVL9mtEQr0JCs7LWWsZ5pE4h1F1YmSShxilQUn1W n3gpjj5vdUUPnHK4Du5IOsTDd5ZOqPi73OFIIDXst/lYn2jvCwtC/FR2CSB/5aHUl+4JlmOAJU/ mmKKl7RpZEMjrnztw== X-Received: by 2002:a17:90b:390d:b0:39d:f66e:1720 with SMTP id 98e67ed59e1d1-39e1e4907e8mr6357269a91.13.1789564133618; Wed, 16 Sep 2026 06:08:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 79/92] tcg: Generic expansion of tcg_gen_extract2_* Date: Wed, 16 Sep 2026 03:03:54 -1000 Message-ID: <20260916130409.3382710-80-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564410638158500 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 f547dc14365..c60135d2fe4 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 6d32552391c..88cf2e076e0 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:32 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=1789564347; cv=none; d=zohomail.com; s=zohoarc; b=O7eu2ctBDmHsVtPuqoX6VuC08CSSThN8BdQ1WSgASi/CjULONCQJa/bTPdPMjgkoC7gqBnIQ/QBLmBE68R6xsZQmQvvUxj4Oe1QIZMWP8SwEX7VIu+NFPmmR9rU0VxSBKx11Kt11JCX91m4Q77hASi8jx1k28LQvxll+Jf20EYA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564347; 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=IVaObsqt0ns7hxKy9cnnzCP4PzBs/LIDna2n/5S6srA=; b=bT9Fyrjkf+4+aOUMQLdoAFJenxLaG5U9UjPRpmHNpl63mL96MKwYdrDey4d5fJv2AC5HroHR1xzWt+Ls7BrsRCsN0rVWxxsPyhWvA+/EJzSu9Bi5xqWe9Xu2p3dJy1fgLhUcYZJ4xxSHQj/PlID0pE28KTvviezOeQ+Gc15JPAA= 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 1789564347705234.73952280842104; Wed, 16 Sep 2026 06:12:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQh-0006Uq-LX; Wed, 16 Sep 2026 09:12:03 -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 1x6pQd-0006CI-RI for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:11:59 -0400 Received: from mail-oi2-x11.google.com ([2607:f8b0:4864:32::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQb-0001zE-Sj for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:11:59 -0400 Received: by mail-oi2-x11.google.com with SMTP id 5614622812f47-4c537df4daaso458931b6e.1 for ; Wed, 16 Sep 2026 06:11:57 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.11.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:11:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564317; x=1790169117; 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=IVaObsqt0ns7hxKy9cnnzCP4PzBs/LIDna2n/5S6srA=; b=sHFyeQZMMhGsKPQ3MjH9ZlQSnXn9AapUFF7/jHshSzOlF2oG1cWZ5BWbLYcvdM7cHK hRtTnNq3rAb/PcDDBV2q1TgoqCndavE0Pl0fFh18Y4QJCU/m9vNbP09CCY3LpE5AWhky eAK8UKymIAZo4SgPC1VxKTH9ejZaxhcjZNZKXPb2ikKCqk1NOPCRqA+H+Z/weZAJW+mT pw6jZ3e+c6DWXWYKVVhz6hnm5amFD8gLz8OnSSMW7KX6/6dfwcA+njs1lIgC9+CrVHZO 4iMoJSpAtmqMnWO+NaQWejkvHd8To7P1pZN7Nf6AruqsTMKTjgc4QWu2+pOrCICsuKAC PRoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564317; x=1790169117; 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=IVaObsqt0ns7hxKy9cnnzCP4PzBs/LIDna2n/5S6srA=; b=kbXCYsEhxriJdY1EKIIj9WSPXiEZYbt/Gv1q6XZUjbOHckmwpCNaLQTE79GWnopzGk TcdZLa6K9Z0f9ufQcPfBMA9/AZWHjo25qAmsIJ9+cnLdAncf3yn9dkTflg7oc6e6zkD6 M7JJ4mOYVwKt5QYZ+8zqX+dN29n5KBOnH8pH5Yx2Kn4sMQK260AR8/ARVzrdQfguAYI6 7n8S7CLPnoRG7QG4yNyTG0feAisOUsgOFXkwLc9xRz41+HOlOdqNvVI/sGMdZ9B7736m QD/6swlrFan/7dN1oyti2lv0Tn/lwu6DDag9Q9wlbUcTtN65aQkVURo+R6qnBAtKxgXQ MdXw== X-Gm-Message-State: AFuF++ne77OKyz29owgk7pyVWS8EQrRxoq6Sjlc84F7/v4Uf/1tZ7Vu7 RpadmuqopTB9sFx0S5jsSf9op5gXggeSZ0chufLkD4kGp7YgDl7xg8ccRLUm/ZjprjhItQS7AiS 3GkoQBSo= X-Gm-Gg: AYBFou0DTZUNFOti3Z4bUFCF9YtkVtA01qwulwKQvVNfp4s1x0ylrtUSM4iyWe306Y/ Bk+ESEC6S002a0Nuv1LwxznHzWkY0PNTPJQ6J5zvDW0a/ieJxB8VkFP9riFgoQ4CBMRT0KIMt7N xDVNnV2tbtIsypfL6WiB2vc4EHSEo0WBIsWq48vjgO1eyepW7w/xjEURuafGZFAnxkSbycPchiO /O831FoT+QfGtjCfBv4runn+QDTrO5picA929KBa3njJlFj7Tvuaf7fYJ2MB/Bme3jUYwyfDnZL Pqdo2BE65hXMzUTmZM35iQjC7swYWyBMpRzFbov7oyKfDDnHBtCGg6EsEM3lva+GQS+dXRSykJc 32dCA2snVT+uMnrTXDQpXCM30twbfwEXjQxdSUlwJNKqjYdGqzV9R9NhuzIGOtqvtD/cP4SFtzL D2hFlbQOwKrgO7RnCQ4PhnhKY/Jvx/EjyOnUqb63PX//4om+/D/goopZRPzUQkqmB7zs/R9mEk9 0CfDMw= X-Received: by 2002:a05:6820:214:b0:6c4:a3da:1a49 with SMTP id 006d021491bc7-6c7d4bee190mr2482221eaf.67.1789564316425; Wed, 16 Sep 2026 06:11:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 80/92] tcg: Generic expansion of tcg_gen_addcio_* Date: Wed, 16 Sep 2026 03:03:55 -1000 Message-ID: <20260916130409.3382710-81-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:32::11; envelope-from=richard.henderson@linaro.org; helo=mail-oi2-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: 1789564348198158500 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 c60135d2fe4..60a0dfddf25 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 88cf2e076e0..c8b5cd2b502 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:32 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=1789564359; cv=none; d=zohomail.com; s=zohoarc; b=n6Ljfi1XiNKecCmUjgpVjxy7GN/7jGKAUrVWpFDHw70uBYRWIIY3z4mUUFMB1tJn54g0TLFNhkyVAfl3tGAh8HUo5ldq6OK/zJoCZA9tGeg/Q2oEfCG+FccGHdeZiqe6wF5P5+8B39kO88y2S6NAFIoGrJVIt8IukqEPkXZUIcM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564359; 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=pd0sWaJOCVXpfAiLYxJiYpW0khwr3sBzEOoEYqJ/8oM=; b=lokO4zwqQ2NBKHUoTFko42B7UwhKPkfmY+gabXOhJwMZ0n8EfZ9FgJVABBm8xdW/rBHm2XCqoFlc0QZ7SRzbp1pmhgDqalGalXGeEGMHJvhicRDm3393G/upLjcENNbZSaHXQRL4GyXMVjpQbmy6zIXCOpoB0wdK/oXz5sqniAs= 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 1789564359640224.69561099487862; Wed, 16 Sep 2026 06:12:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQh-0006Ut-NO; Wed, 16 Sep 2026 09:12:03 -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 1x6pQe-0006Hh-QL for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12: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 1x6pQd-0001zI-1Z for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:00 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398c066106cso685972a91.1 for ; Wed, 16 Sep 2026 06:11:58 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.11.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:11:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564317; x=1790169117; 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=pd0sWaJOCVXpfAiLYxJiYpW0khwr3sBzEOoEYqJ/8oM=; b=KjszqoFwdJ0v24HG3WNqhzk9ldJB/Cn4LmTbfMyLu4z/NH5OzzhEG8sWbyWk91VnTt KzdXAVhHc/qRF4suOcab+g+VAyTiqMIppSC+RFWiVoMImtG31bb+ThAoVf6otxhQzihk lMBuiAXIuT/Oe0m5Vr+8jblOoJkI3loIDR7JDezoKrPwwu3yIpIzKldIB3jvVRMj5WRA 2IwdbaWXlQG/P6ag3Jf9WyoWpd1zbQ4LR+XfmSmppsxre0KclNR+G0KSmEq4dRFFB/o2 CbCTLlc5uEqvFAC5eR4bWHG7x7T67WJqcwbPGuadCzDmdbxY1IuUHLUhpecCJ7U97rHg HuPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564317; x=1790169117; 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=pd0sWaJOCVXpfAiLYxJiYpW0khwr3sBzEOoEYqJ/8oM=; b=09id44/cZlwdtDV3BToB+nXHqPn9d4m/OxpV3q6wCB0O1XOib3NHNhoZkngNEZAILF R0x4FFYFYRKIbGmZt5c+F4SZtQqv2pDmMo8BXEVbKDdAX/diGZpsCSEg5T0Fdi89aElR zKWLTMK7fpzTk3/zZVAThS2FXLsokyJy3q+jyUwkIxehf5r1rgOY5ewPp08wDat2iii8 zM964sM7NbB5ffCqyQWqpmiUe33kS5xxN+p5K1hRTlEKSPXEhafCRzsuRGKTgXD7ulx8 agBwiMRBL4h7kW8tzqUwAeeaSenvaqwYLY4HiQEr9MtklwmE5NVHZaxTfTDdVwzXFrzY HlrQ== X-Gm-Message-State: AFuF++mEvoyDhFqT5Bc9KKSHCWStVAuk6cjcV+MAIb7IjI4CHE9t7w/a 1bzQtNx8zypoELM+3LGBIb2YrazHT+PClo/iKYONX+vreMcfDdY58TbLeCoavs8F2re3Q/Vd/IN phaEbVvA= X-Gm-Gg: AYBFou3JRvRP7eVzgDYYFIBgvRHssQGYQ5mwrCjfa0yERg8d37smP+xO+td57iGAP4v awaDRfi+BpPMAE4ygMJK+l3RYGUYcf+yIRhqTf3GIQ5jApvSBDrXo05THz+PdglYtPVfFusKxEY BUXTVx0rfuDdhskA80OrQShkbQby76W9FB73p5LD2LwvI1cnTkeHs10gYbCPFzAFzD3Tu8qc93+ OHDI6M+DAtSpn/HkF84xLZDXBdFMVpmZmU58KCpEIupqB54bgtr7u5oKhbLFic1Axwejxd1eP2T KJZq3+/E66pW8sEfe0EJJ3Xw/focxfKj7jupjCxFTCxjS0+gaw4FQgdgBpubvSu9prGY1rAMg+p AYphR+NmVF23KhmYypJntbkF8lVmHw9x0W7tp2tZnUtDh6/vQ/Q2Vp+fzgQj1baNFNBmiIJQR78 XYrWNGYjoMosKvxqIKMkNvUtNYiEu/aVT+nAorVdGNYwd09qubLSbCenzDC0cp9JTdaH3SogHM/ uPXT98= X-Received: by 2002:a17:90b:4a51:b0:39d:ee20:1e28 with SMTP id 98e67ed59e1d1-39e1e510f73mr6082750a91.21.1789564317330; Wed, 16 Sep 2026 06:11:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 81/92] tcg: Generic expansion of tcg_gen_add2_* Date: Wed, 16 Sep 2026 03:03:56 -1000 Message-ID: <20260916130409.3382710-82-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564360389158500 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 60a0dfddf25..d6e185580c5 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 c8b5cd2b502..6d8f14038a0 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:32 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=1789564355; cv=none; d=zohomail.com; s=zohoarc; b=YpWZM3yNE2YyMjcyOJif3yNwwwB+sn1iFnm2dbHmv1sGl95mHJgItBevexzi+DamuJjXW/y98pMEOZCBT+WLY6CX5y/2HHaoJRpDoM1EenQVW8DqRWLB9tr1BifxSkMkuH+ODYxa7xCI1dtGWIxI/NsP5BdtFPIvobTFrDSGLBI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564355; 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=d7LkeCdJ30dhmzl6U0yMsnXpSoHJk3RNAaUaAekwdu0=; b=cdJZ+sGH9jZfa5COhcf8MXWpCjAsoVaXUllMrF12nr9Ek0/h07q/q7I+0C4PC8s11BylVMpAlpsHaI7rZFSNW1B7Re6Ue5RDq4nwN6IffsI+RzPwjAmb8oiIckQdSS//oLwb8Sxq8HiwSCQ7QLIqCL8qE3yFNA1GrHj7b5EKalE= 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 1789564355254991.2600343033017; Wed, 16 Sep 2026 06:12:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQj-0006ma-QF; Wed, 16 Sep 2026 09:12:05 -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 1x6pQf-0006QW-TL for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:02 -0400 Received: from mail-oo2-x1f.google.com ([2607:f8b0:4864:31::1f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQd-0001zM-Te for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:01 -0400 Received: by mail-oo2-x1f.google.com with SMTP id 006d021491bc7-6bc475ffcbfso402840eaf.2 for ; Wed, 16 Sep 2026 06:11:59 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.11.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:11:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564318; x=1790169118; 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=d7LkeCdJ30dhmzl6U0yMsnXpSoHJk3RNAaUaAekwdu0=; b=LKaGAhv461cuxbW46iL5NjSEQml98tMYVPd6My49fhGmz3adPN+9qMikz2NKsvY0Qm 0rNm1H20XLBAf2gfDznzzXwOHflpGafbite1mpi+VUkxKrQ4qnPBbhtZw+q/w29fbew5 6eHersZsJCpnv0VhCqsIWKWQww7hTIftM4ov0m6kHd3gId+bmXLUllpw3nRR+eyu28I9 XUnpBlUaI2IXjYdVYJtobHnI7IAzyVQkgcIaRznUhQtXAxxEFGvXIgQ1VZvqBC3dbh/4 MBrO9PehxyVVf9Is6jxrOYj9ssOAI/E+7pKGFHZH4H134SfWic0YGaJpDD+rhjWiKDxj 6Tew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564318; x=1790169118; 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=d7LkeCdJ30dhmzl6U0yMsnXpSoHJk3RNAaUaAekwdu0=; b=MkmPcVu051oiGDVZJhpEw1YiHUuKQGq0ogZIK56jcZNl2Hi3DI6k5zJ+tohfb3I1j5 CSQfwD4Pkdh2dPzNIhDPZGXEk/xXgLaNPBqAy/b6x/YWdJaWUjHSVWR5/oAmlSLLay+q 3fPFLGKNnOOpg3jYcQKN2wAIZ1S+qjn0DelzzQMvKyQLABfjPzAYCauBjKBoM+BKovnv AI/ehg2mnFLXF7TvjtXGTJr5ML2jSRLZJ7rAjSbL1cCdsqTW3kD+haJ+bMUic3ir1Gsi v0860AB9XTZKtbz9FFuudcGgE0ykRkwJQ+/2SCQIU9pGwe7py9WX7oX92BrPwIi7TyNb wFtw== X-Gm-Message-State: AFuF++lgYlVj9KbQCT7dNb/1UH0kLv8qQhyALObH/xQqCvzTMyEZG95C R6b62zStH+faKRX4jb5/nTu7WM4f9MvmEEgRs7M+jK5+yjg8+Yz0xgv9cHezTYYcfQqmTLSXO9b q3bX+bnI= X-Gm-Gg: AYBFou0oTUxkna6Wu1eY/Iaf3aT8SrL47tE6+XFeOAiKF12FKdUl5NkdbSeem2fgz/L 5oTKhbJcgEH6hS/w5SAppIxNsr22qlhLGCfXLi/nlSkCXjtwM4UGOJ7OXKzzNad2AQsJ5G9axSH DykBvz0GlBO1l2z1ki5gNvDcK7JdkPDUzyb4vEurLMxzc2T6UitOzbp+vF7uc/pAvG2nK5uHeFJ NOClNtq4H0M6eInqLLgfi1v0xjzMGWNpGlOuxvrDfYmBH+oTfKgorjl7qXi0m5KeO+KeO8CM49w 0NRF3urELj7Hyru1mUawCj+dfMXSdRVuJ4KWQlWGx5q5kDnQvWFwdAyB5eOtnh9yxqicnjWWtqu UoyMN6Ku/QVuRSNY1vA5b3yIYQeTHJotln6tgrX1Xto7o8FSTBDuBjEnE/jy8JU70EkN4s7Ayxz QKNptXboIFnrOX8SwMeuCqvJqV13t/SqcE8a5xImOPwjk0LJwqGsZM01UDTBin+GU/rNielGfEv XtNZ+s= X-Received: by 2002:a05:6820:2213:b0:6c7:7668:a290 with SMTP id 006d021491bc7-6c7d15cb485mr2486412eaf.2.1789564318197; Wed, 16 Sep 2026 06:11:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 82/92] tcg: Generic expansion of tcg_gen_sub2_* Date: Wed, 16 Sep 2026 03:03:57 -1000 Message-ID: <20260916130409.3382710-83-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::1f; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-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: 1789564356767158500 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 d6e185580c5..1e5282af98d 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 6d8f14038a0..a38a4a3aeae 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:32 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=1789564491; cv=none; d=zohomail.com; s=zohoarc; b=NnrZkdA1H+p+1ilFiniP1pW2F7bXLU2UYn2rLd8yvsHSin//fN2s9yHrvUmBz4YasBfxPmvxTg91ibCGXkCjThCVJVlZBd2lo63GSLOuLsaaLXd0IkcgZT6QaYrhyqbYkvqkM3FCyqpAeiSy4fm8dtJDWH8R4/rEJae2Cn4eTS0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564491; 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=fgyuZJ5ITSZRqw6wTAZbkIoAXNAs9Q1TJauabNvEQak=; b=nfqtavkUFL0C/ezQaeCZuA6oLVmZtRXFzhruW54K0FiIjei9YEzbpLogt/DU+KHoVC8m7MvujNE63fF1Q4oHtElrpNBsCArgV1H3argUHCxeDalOutFsT7cHdL5QANEfc3uDWYzTv0O/Zem33sZECMzvYnJkKekf5V1RSQZiJlg= 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 1789564491980514.3276014744847; Wed, 16 Sep 2026 06:14:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQo-0007Hs-1I; Wed, 16 Sep 2026 09:12: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 1x6pQg-0006T2-Pu for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:03 -0400 Received: from mail-oo2-x0e.google.com ([2607:f8b0:4864:31::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQe-0001zV-Lq for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:02 -0400 Received: by mail-oo2-x0e.google.com with SMTP id 006d021491bc7-6beed321ad9so628247eaf.3 for ; Wed, 16 Sep 2026 06:12:00 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.11.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:11:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564319; x=1790169119; 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=fgyuZJ5ITSZRqw6wTAZbkIoAXNAs9Q1TJauabNvEQak=; b=HGi0Mhi3qOwFl00eqPBuBYbi+MTzMLGwoiAlLBeVJNHUToCSNRdhahXBCTTspjm2No iEWuzChMBkWg0EXrDApAlw83oTVBg+h3i3jSyG5Z8wv5sfuysG0NCkIHxT3G87q6XhNV bXmlYjgBBEBFIzAWG5HWj2AoXrZOetrgcf55KWC/ujIPKYGfwvW9w31tjB0Nfv/T1SCk hRxfncN8Qbrpd6Ej/2yu18c6ioBCcTwux6nDQrqxl/hQNu9DU70frASAFuQmEJIfB+95 sH1iBNs0kcVrunUhSRpfZu0fkW2PtAowFYjJLXviQu2vRH95VN1tidiBW4+KhPFTbLUV pdfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564319; x=1790169119; 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=fgyuZJ5ITSZRqw6wTAZbkIoAXNAs9Q1TJauabNvEQak=; b=JMilxcXP8ZRLzuYeb0iT1o76Q8pnY2/tBnoXILL2MI4JdohtWDY6LymKpOJgqictVe 2IBdtKJEW15rls+x5IlpeB3t4Vpwck5/jawmoW58SbgRN9UXM9OhDcU3go77J7bskDuf DV+kSubyun5xU2dFnMUXjXKm6MnEDDkw66uzL7GV9STflf3iHFZy9PpENZkRHluKlwhH NLYTSoXNMsvNIHy9nmA5H33WWZVKvrGUXSNoOOsgCQBxojyTInfyF5TXQZznJF+371l7 HuAcpwczMkvtRA0lW5vPnnXAURDzzBdi3jmeRenej8fXIkCxdsGxAJIsrU5jMX6047kS VGWg== X-Gm-Message-State: AFuF++krW8UT0kkrzVnPyb1nshDEWIvHRGSNgPV3bp9D/Nk83P8K7k0i ZBm+27mtw9ksClMEnsyqc8tPQiA2fnuh+ZYPXsVSiwCTxreTnI3EkzYJnWsRfc0/f56r53Arbo5 lSe6Ropc= X-Gm-Gg: AYBFou1zatQKa3Qr3XpBxOImhPmpWmWvfBPy6Gb/Cqdj2kkBTiOMbJ2qjUihbMOOOeZ VqC4HqC84Rac00YNyu8RVclM7uEiosDC2t3PcQXMeOmdHOVoCouoSQcFkuSeZERVhj8o7apdYkl qSZpxdk2sTydfT9zWxFrH/X1WBori0LboAeTzjRNlBf5tNYYevJsmLGwV8smDqvl6/1gln3ah+W LSDKU/xe7j0Uk2J2RAuZDRo/iPJ9T1rmifHTzHYR9O8FRfVGSjEbnx58b69cv7j5hNtcYhCUO9V Qf6/6F2+i9fOndGPcnV+CqKIkmCJjSfHPD/BVpHp5ssjXyTdc9XuLfGyDC2B42oKQdL0f0E20cr 67dcXK4roAJS7rtaSnxVXcFISEbT6bcgG2EmQ+iwuhbfCbP94fctY1fqTwNMJP5Y9KLvgGiq4KL dYxEdAJnqV10+MjUnA6iOhm7netGaKyDRQhLFkfbZG6nRqiHVuoiXw5+v4N5MV5zZX8nbQecb0s BhMxUI= X-Received: by 2002:a05:6820:2085:b0:6a3:c6f8:4caa with SMTP id 006d021491bc7-6c7d15cebaemr2480105eaf.2.1789564319234; Wed, 16 Sep 2026 06:11:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 83/92] tcg: Generic expansion of tcg_gen_mulu2_* Date: Wed, 16 Sep 2026 03:03:58 -1000 Message-ID: <20260916130409.3382710-84-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::e; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0e.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: 1789564493222158500 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 1e5282af98d..3ad966b72c1 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 a38a4a3aeae..dbdb3bfbe20 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:32 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=1789564541; cv=none; d=zohomail.com; s=zohoarc; b=D++AQ2aYIGDNlHaeQYqPwRqWJQC3Yrg+jDQO/nRibjCi3LpliqeDpeR/gJfmROWEm3Z7YEIw/ubeHIA7ZRkhTbGKxCy3t/ZfQdR/lxpsz+vE5fZjkGZ5X3lKHrKwUKcB5v5vdE/wbsKYi6vJ3ymF320BYL6tYvhbPS3+LQpMCX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564541; 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=4O7ugbydKPGgWxIoFojK4yQHnX/2/nzAqZYKej5Hl6Q=; b=iVP/2pqm6BuQblv2SizCC1PHIvWsjUET+ND+M2gHA5H8QJMfbyyZYbvJHmD8YjHDLRtZdsyKZBktA/e8fTPyef65WS1o6kreWBZo8vrh46KANZWI12AG30KePJAhlezADaeNuONFCkxY+T4HHfIbELg9dQDZ+7qgy4X3BCEfToY= 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 1789564540991641.5658380680513; Wed, 16 Sep 2026 06:15:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQm-0006zN-28; Wed, 16 Sep 2026 09:12: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 1x6pQi-0006dH-DH for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:04 -0400 Received: from mail-oa2-x10.google.com ([2607:f8b0:4864:30::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQf-0001zl-RY for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:04 -0400 Received: by mail-oa2-x10.google.com with SMTP id 586e51a60fabf-47be948a50fso756201fac.0 for ; Wed, 16 Sep 2026 06:12:01 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.11.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:11:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564320; x=1790169120; 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=4O7ugbydKPGgWxIoFojK4yQHnX/2/nzAqZYKej5Hl6Q=; b=OPJUepxELfaq+avaWMM2XLHJhkgc74kL8j7NJf1fjdrQLnaq0oQpBGRidK3dlafOCE rKD1fmffOtByIJiAGgSLhC7lLYarqu1nfHFhQ/9BWpx+UdabhP3p/aZQCqVVCe016zuR Yxg0qSrePO5at9bbB665BKXrsmxVCTDKpgV6EozuyUZudAQ0sJ6ntHfk/MMsQcwzzWYY SDdRlEgPV9BPHxn6PKqDWx/OAdKFP+dnPzaOwPu6KLhOFwgsk+CyqwYAWau6cqZQqbuA oh/kXOZF+3C/fv2S8nyH7+zkqVrFc8Mk2ioN+VdizkeEo1uczyf0uWU9pUrxlbR89P0C kSmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564320; x=1790169120; 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=4O7ugbydKPGgWxIoFojK4yQHnX/2/nzAqZYKej5Hl6Q=; b=wF5Gc8eD05ga87xdHG03RoTa4PNZdpvqu2NDEHHu33xG8uIukMnK6jHDuTuQ7lg+Jv BWXXNdIn35kmcSrtSndmFgi5ZRSW8jggy4a6SdSVNS8FIElKIVlAfzlRQBtnut3pKDQY iOrt0MQE/8WvIDmfjBqqDskbmjSkDMPFJ4izcLgUBwSO3gN5yU0dcOs/EUdt4LhmwFxA uSzflkXaAbnFv3GLGWRRkNoe0oeB+DqyhZWXOadqLbWz858X85H3LoDmdOMsJX2sKE4j p51JvBn3Bo7k8F09If035M2ePvUBuJa0mGek5tskunfR7m2fyFvVa3QFM0pvd+Bi/cqZ 3QUA== X-Gm-Message-State: AFuF++kY5cPOViX1flxcHYa9NFNAnQy2YZfaz6rVA1i71vY5zXON1eTu C3wqls/IUD6Xu4WmNot/cVEJjheHJW1WNP2mfeDzwxWlMNVtpubcpX96PMUKayvoV4/IfjxAm9n 2amk3r98= X-Gm-Gg: AYBFou0J2u25wwi1P5RCxfKq/ao5sePoOy8hWIL3rNUvf7xNbYaUB8pV5Fq8Xd5anA/ zBCcdb+GsYcMHoswh3LlrVhaMMUwOHw4dBvMP7YEI1hrYQ4gQ36Iajzt8/vCTrZpZzLAA/iimlV Owj95S3jv2YQh/rldPNwpGsPvdhiAUXnOgfOotwLkrS0ikg7yrEqo5FBjiUBAO9fgh+BfGwfgCB 8rtexrDOxHdpQ6X6HeHS7iwKrPgLeb+7zUSIDPsc+6YUzTbgkW0AKjN0uOSBp2y024xkiYu5s29 mGBuVabAsJvvJaQs7Eoiq5FNFkrtE7xUyQY8uGioHKNdq15FHd6HhUfMHpTUbaKUFIG6Vd8OznW Qychn3vnC+mACRVwav8OmWk7YnXr2arjwrnXtJ4QjLveY2Pq4ovIOxXgxZKANx0lZZjTzgR8M/K dV28FR1LDgA0qkgMq7BKqnLZk+5vORTHAeuHK0HP/hjFGcYnP5ejMXIRZJPACUIfkSt4+js5f28 7ac0v8qkWCXAHnSug== X-Received: by 2002:a4a:e848:0:b0:6b7:83c5:fde3 with SMTP id 006d021491bc7-6c7d3defbdcmr2908413eaf.36.1789564320159; Wed, 16 Sep 2026 06:12:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 84/92] tcg: Generic expansion of tcg_gen_muls2_* Date: Wed, 16 Sep 2026 03:03:59 -1000 Message-ID: <20260916130409.3382710-85-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:30::10; envelope-from=richard.henderson@linaro.org; helo=mail-oa2-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: 1789564541723158500 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 3ad966b72c1..b0ce35df411 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 dbdb3bfbe20..27fd7469545 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:32 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=1789564466; cv=none; d=zohomail.com; s=zohoarc; b=BnrNxWUo0hW21cSQw4r/CHDi91Uj1OnVNJ9QI7Dp3y0r2t6TRm9OoAWJgpCRa3fiH5hqOgZSnhDaSlF28nGw+f+CNZ/UG2ptAgrRz4alyFTYCLujvhYibJsOx2INRPjw7nSO34C1E647RpGNo4C9rV4bxesnTtXwoY8qo83vsfk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564466; 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=glLv504VFhTMhB7phZn1cRYPE+fD+DDkgUDC3CT2ZDo=; b=DmTXifjJh1vXD2dGAVRgjx3yy9Ih6d3JlY50eHm/TRL51qkmxH30j5+CZavrvJ6JT+J8SI0BIm+IpiwhnvRg3kNKb1V/6LS84o11Vm6OZjTDtwRu7mTJ7l0xSe5FfomRCiP3M17tLkOqYjFt1uDQ9XEQVowVS+1w4c26DcomYvk= 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 1789564466823402.02219072965056; Wed, 16 Sep 2026 06:14:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQn-0007Ee-Ms; Wed, 16 Sep 2026 09:12:09 -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 1x6pQi-0006bC-9Z for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:04 -0400 Received: from mail-oi2-x11.google.com ([2607:f8b0:4864:32::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQg-0001zt-9t for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:04 -0400 Received: by mail-oi2-x11.google.com with SMTP id 5614622812f47-4c0776592e3so544317b6e.1 for ; Wed, 16 Sep 2026 06:12:01 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.12.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:12:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564321; x=1790169121; 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=glLv504VFhTMhB7phZn1cRYPE+fD+DDkgUDC3CT2ZDo=; b=yoecbLljwjqjufLEJ5X1dxIaY12f6q70qsGKGN/N2K3uoemi1tzTMLeXFOK0nTttqN pL2VFCunbWPfjTTLrdmzFbWhxHmzgP4lRfX/lNds8wa37ccW86arLocfdREX1dPOOC1n tA9wwvKWhl/2RBAMLJYS9lWbPECTmp/nY/HwOjw7xiwWymWP2iyffDiL0FvsN1vFd2/H sF01zmErA+HXRvmHNWGK2GKz2i4E8igTdk+02eCt1sqZkVSrpH4sE49bN4UdC3k5GPc+ PdyaUPm9PPt5e1Sh/vuHsqF3n4SXU8rVzvuQpGyTwxdE1tR5bXcwMmYvnKGf+Ec8BjG+ eH9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564321; x=1790169121; 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=glLv504VFhTMhB7phZn1cRYPE+fD+DDkgUDC3CT2ZDo=; b=XK02iTQTS4Gy5w9HQpjFgPV6gP8FAqWNMGILqRuBS+Z//RiApacPdODTusXEHTySx/ qBq1U00CDTlPBtCspypG4GtP1191oTsrHllZ4AOPEUyer1cLg/tja/YacjmFYvpMT4PE ehdIK3jLeihJzZz/kzzqgpXOwFkSxpBpuYlaMqYEWFRNJwxaHfTay32bzkxnJ6JAQvAY BKXCZUdCWT7v3/UzjCSuSp0B9+ymbvjQmsxVBwkk81MRbeKoLPP6XrCubz+IgZtj1p5/ st5bF1SaN3ee5VBsROKEr+KakOaJ24DLtPyD+u5Zhi1Tpb8E6EOYUhtOLsDbfWzPEYn6 alNw== X-Gm-Message-State: AFuF++n1+PsQNwitWHNmozYvMsFHNMhtZPyzIBhba/09V2Kaoz9sVo4r gepScuKv7RkiSA0ZiwSRN7+FPRIrNhHe/xh2N8LonvAPZ6VXAQdi5Qw+LiDamANIdNJI+zFibHD JeufaZJs= X-Gm-Gg: AYBFou26sq+zeXQI9ZTLxPSzbiSvMnMgpaB/6dKInbZJ7fpgVQCTv26lYoNoTD2qGUZ o5GtbsvGRwfNoPnJL0RDqi5/Yh0glyNdfVvmURxZq/JpwVW4EyyexlMoVKxCKjm1hbXSXsRA8Gi cybaPlx99XhliqVanOtJZIUvvtkL6I/NlyxJXVCFmNaLISxYyWF9+2HY9NhTkBea8TdOX1EMyYx Qn6JBEIZM/HbkW0cARQIkDKBvtyAMeC1n/lmNwg8gjOk6eVWuw46ecf22HeMW/CG4Pi84U+UMaC 4U2MOaeKNp3ExTz7HFFlNDfl4CfCbKfYyoTv8E9J/onmM+E+LRT0IYAqNGohGpU4cfluIz2wEL5 I9z0ge4HSo/jGE6Wv0E94hwaclp7ZBCcSQIhBtbJTg6wDRmipDGCxNbhxcjvb6vDRKMstTE3jaJ 2iixSf6tAqGVPEe3zHB7M9kJ+EC/bhKWgHrMowVM7JOmcGgoD6YTpAjYOeg28yx+CHW1prQwqt3 RKDdW0= X-Received: by 2002:a05:6820:f006:b0:6b7:8415:d794 with SMTP id 006d021491bc7-6c7d39fa918mr2238924eaf.63.1789564321031; Wed, 16 Sep 2026 06:12:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 85/92] tcg: Use unsigned for flags for bswap and revbit operations Date: Wed, 16 Sep 2026 03:04:00 -1000 Message-ID: <20260916130409.3382710-86-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:32::11; envelope-from=richard.henderson@linaro.org; helo=mail-oi2-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: 1789564469067158500 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 b0ce35df411..9d83d70a798 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 27fd7469545..bc61a4ee3f8 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:32 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=1789564486; cv=none; d=zohomail.com; s=zohoarc; b=gLPjDp9sxFVdhcPCTwrB1bZqo+ZgGgzhHgrnzwXZ3NqFBFoJGJ/i8mXyYbSYDtSc4ylr4lb2PGjkAHQSMDwcpQG2a1oepHUROQXo4I9eYx1u38G9JrIbGfNbWei7RYSkfpA8wdn/i91qN4tN6SLLY0mSq1ECIAHwmKWHjnl05Xw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564486; 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=zCW/5ygdur6frMsyP2rNUp49dE4PnOK3SbCeRUfDNzs=; b=TQF0YblqqrBZ8V+adBSl9ZqXZAe1n52gYEgZaBhBp2+81S1XtqQpSd3rZuO7uIWNcnTKZRjlFznoZxWW1TT8uDxJiUxhPmcsNes0PNE15xCH7wOCGVA3nV+rra+WtlY/u63qnyZ+P7S2xK3VOjsQ6fA3yH/0NtimPDVozCVQV9E= 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 1789564486879442.1519083966025; Wed, 16 Sep 2026 06:14:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQn-0007EE-Me; Wed, 16 Sep 2026 09:12:09 -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 1x6pQk-0006pZ-3Y for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:06 -0400 Received: from mail-oi2-x10.google.com ([2607:f8b0:4864:32::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQh-000208-Bq for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:05 -0400 Received: by mail-oi2-x10.google.com with SMTP id 5614622812f47-4b37a368895so575033b6e.3 for ; Wed, 16 Sep 2026 06:12:02 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.12.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:12:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564322; x=1790169122; 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=zCW/5ygdur6frMsyP2rNUp49dE4PnOK3SbCeRUfDNzs=; b=ePOjtt7ZUjhWsWo5oAEoFuNGJGuOG6r2GEWUyA70/RKURM7n5fo+sONgJ1yKGrZyso qnMvE2EoFFbmI4R2TkVXT2z1Inkl4AGj5xaHMODGwZa9Ao9X8+MPAjPX07JHGGWAR1xu kM4Zm5kY7UNvFCaeiy+s4BvycdL9bjenLOEZ1jHN2D7FSI6qn56cL+UJcMYLZr5fMm2J Z1TC6pzAEBZUrSmPKd8DCz7Zom1SmBVEZQ1NxuMEV6Sw6GRk2fZzR/0kpZh/I4NsFcne ManmNK9ytY/1x+gE8gZOsE93wdW+fLo1ymVaizm17SQnw6vn752eF4TlOqsdLhPrt3Xk Wncw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564322; x=1790169122; 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=zCW/5ygdur6frMsyP2rNUp49dE4PnOK3SbCeRUfDNzs=; b=cLejFt9ZCPkFCn+IrE9ZNlIddOM6Py6mltoLFbPW59EVZ8iVrcwEDHK5uQoaTvoAEL ZNQm8xx0sAjC9nmnZ6/8p0s8LGrDk4XreGKsxppPaLQNCbm0C0i04h1sEl0As3IxhZSc WmAsJVVL83aR7UYDMIkyN2mx+9d9h+S6oFWV6yK2ZjOQ/rPcyltz1OP346V+s8JjAOzl YxTQE/qB4aDpYMXJeksxOAUgq9Rx1rd/LLKm4L3gkEyv9qxPye5DLA2ZORUi13EXGTXl MmggFUQITVhQlToRCRSy9MaA4JLRooRumZrILhQK+Jju36bo86ktEdJDax8stD0NZtic DOIA== X-Gm-Message-State: AFuF++nKW/RcUvFBTQbvCLpV0XNV7UR0PwnbQFya3Q3ejjI0fUnt4XaT 81LzoQ2yfnbgpDeKAgin1fdenx67za3IXCS0UeEC6k9JYNvVeiJRuYWOQaiuQ5yYFJZzgcA2VDf 2u1QmnZo= X-Gm-Gg: AYBFou3201u/QIoTmaBXmuwwTiMvpGsqK3f9YnI4mFPbwMKl4CeMrkPWfRfIk8WTBBj ByEc0T4Lzw8m8oIjcFphBPL6fejDRoNx0LzQqdV7U5AKABc0oQFi6jaBs5WgLnk/XzckQZaSmPh E51N0Hh588nSjLAzJIWzIKumRoZWnlvTL7sWUdhi4i+YPPrix5LrtxbakOD6QWz5SsxI3Ag5JQS 7rmk5ISsmklIxXXpS/Hj/0eX9vCtUyJ2gRjcqMct4NCwc6O4Hn+/3qFAyJf9UFP3H4Ogar3V6xr utOBMl/yw8ufDyU+qu+MM+skikQSBpgNSSzO32wnAqtNIsVLk8n2DO3yD/7MRiborsL89rTjQNu CS8IL6j60wfnZ61BtXcWx5aoWKXga4Q3gFVHQ8xXT94ga69Js14alHxelnkA3fIXJPcC6YL+Uin lgKjoYkjhlvYquv6/GwumvFN3SFLQVME0aDPcnPjhr9pItJK2nmfwi/qLsosVtztaeUYl7Iy2lv bNs8qU= X-Received: by 2002:a05:6820:4b91:b0:6c0:2513:3ea3 with SMTP id 006d021491bc7-6c7d21e1150mr2359001eaf.26.1789564321965; Wed, 16 Sep 2026 06:12:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 86/92] tcg: Generic expansion of tcg_gen_bswap16_* Date: Wed, 16 Sep 2026 03:04:01 -1000 Message-ID: <20260916130409.3382710-87-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:32::10; envelope-from=richard.henderson@linaro.org; helo=mail-oi2-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: 1789564489304158500 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 9d83d70a798..56bc8ce4ace 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 bc61a4ee3f8..45e158973d7 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:32 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=1789564355; cv=none; d=zohomail.com; s=zohoarc; b=mhOgwwILWwXol2Dt7UZYZr5nsRieAyMujw+LdhxB3QGr1paI0ydin7biGWV8Ajrn6OmAOCFSb6p4dAs01Uyg35it7BYsmxMbbuqTKEvUNlZc8mp732B5O5YZ94mHrKLR4UbRyyT5/5vnfHsBjn6/5/mTtu2SsKaqKItGg8qttjU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564355; 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=JeFPsFC0IJyY3nMCY5fPTu3OYcqzkGjCs3HXhg4edko=; b=W9mz+GCUOnEEC0cDnyxnzfOC1yPQ4ZxXgh85jT4Eoshrg3fwa4liJlf9g8SxVPk0TYuHaE4Rz2/3QEcyItfely31MjUN9SDzXokb90/Mo8lhlYuBoI+hNZcWL7djbEzglBrzZci1NEsUGX9EBQipmKp5AsbxrYPDPeDM5DD0QOw= 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 1789564355725489.32403452024437; Wed, 16 Sep 2026 06:12:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQq-0007ZE-NA; Wed, 16 Sep 2026 09:12: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 1x6pQk-0006vE-Gq for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:06 -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 1x6pQi-00020H-K5 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:06 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccafb752so828139a91.0 for ; Wed, 16 Sep 2026 06:12:04 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.12.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:12:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564323; x=1790169123; 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=JeFPsFC0IJyY3nMCY5fPTu3OYcqzkGjCs3HXhg4edko=; b=EHIcWMDtVDIPEvxt6NOO6QGB2UL3Ch6BS8Kg9lLQl2KJ7EkYaE1/lOqmHnUOMxwgmj SV3bYCf0OFvqudHO6P7OF8kQucIQoHfnVy68g2YUPpeltYWI3/qnH982S0qmROVs3BCb 0SCw1Kiikh90qNebCU+OL65P5rFOpt9xePxmbFZ2o+yxH23/MWLP+1uQI+MaM1CqHNF1 Y0POaE2zJeeJprM97x1lGS6j2z8Jh5TfMFpTsXGFDGP/oZckX4kDoKKBtcy27EPDmkkl G8JAb7vHYdWq7Jd4qx6vT34wMrA9hb3O5aET24Nj25nSt/zssCMyq8cZ+7XlbVVqELLP la3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564323; x=1790169123; 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=JeFPsFC0IJyY3nMCY5fPTu3OYcqzkGjCs3HXhg4edko=; b=ZGOKE4YDPmKpZGF+/zPF8n0wu0PnBOXLTo+HBAF6LcSDH9RQ1R8SG5Vln5Yz43ngwp YKddbccmXvX86rwwpwsJQ+6MHMhrcoiUH/JA/9CCpKN0o+COBfgdeSp9gL1/XSWJr30F Y2XD50jrLIX7Qht0MOciuaYhBnXAzmS1FcQeD8KOE1vpFI6NIiSSqxqJMjkGP90xp1lT fPzmvfbiMoCviswuBAc9Yun2FRI4+zTvxhRYyfZIL28e2ZA1pLT0o9h3CRH9c/Z2/mgx fcJvffJtueGGnCYzFrgvgoHNJN8fVV+SuhxAFL4HexqqU1587Wvk2ka3MULJumJe/Nk8 stQw== X-Gm-Message-State: AFuF++mxDfov84r3UqmG738zGqxxYIbSf7ZEYMIndWFIlgpoXjzACcd5 m0NA7tlyh5JbPz2bMKK2wF1KIcUHY9Ng4Ufpnt7TyFhKXvd32J4C0CJ0eN1Sxs+Ehn7nkjYTU7D N5YkD X-Gm-Gg: AYBFou3HPFZL8AD6MrsJ6TfURnPJWiKe2XjCvPFTrx73idI3RQ+dQMKU8tc0gX2DLtw oT2nz9Wod6L9XMa1IvWKDv2v2iOTEs4H6yugaoe26vwCGr78OQaSjitwyNoMbvvn+URFHoDpy3G RE5F7MFUFQsF3+PKPfzPDknGId5/INAy+EI1Bmyk7HCkcIYB28rH81nHiMD7o12kvAHul0jAzbG kwiHW5UCFHA3VW61eWrK8T67G+k69B7Qc3nXnoDSKIcC5rDu5RUFY/12tQkNCGNtCktAZIURbTT vdfc6usGc6kG6ygHMRZ7TwTcr9pPPHoynL3WXBZek0woQuDX+9EdavdW0YEzAObPJGkqzmO/B04 AIF7qyf15AF/XkswUDUhZbDrykPx+gWthYzoscOrDYj6gNLAqO3yTO4ygQ5s5C49Ze3GFKerhmc cUog3cb6FPxP8gJh2gWSuZCrHcrLdZlfv9v1z3mBF+WRpRlXPLFnMp3N212WmVRcWleEN4iB0iX juZioHWjhhfbe6MSQ== X-Received: by 2002:a17:90b:1811:b0:39d:e54c:8658 with SMTP id 98e67ed59e1d1-39e1e250230mr6331535a91.5.1789564322876; Wed, 16 Sep 2026 06:12:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 87/92] tcg: Split out gen_bitswap Date: Wed, 16 Sep 2026 03:04:02 -1000 Message-ID: <20260916130409.3382710-88-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564358441158501 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 45e158973d7..c77d25cfa75 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:32 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=1789564533; cv=none; d=zohomail.com; s=zohoarc; b=YBcIylYPmgp3TVrRdRr6XT09WkNvrvSJ+sHffN5EVy8FCgheP5agFjXJPdATtZ2K8MAEPwUYrxecQKdRvOHjEwdeXUX0NDbLqk/n2XFlDOxRS2ftWemcC9IaZ6jmuc9fyA1SgpgXVppM+2yCNBt6Do6gGlcgZ6KUr45aGNx+WCg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564533; 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=DjYmYwBMbxBqNOl5TN7j1zkbJH9NFU/KIkmYxr+nLn4=; b=ddXETl4Jvm83Wbotm8Pfoit2d8W+I2ebMB4o7wuuBazV/sCB232mx/BGIaaADRFdog1U2LfM2ygLhqkYdCipmcCbWoeg1U7au5ByQaRtsJgy/Dq2Riodo9ZcF1f0S3cpnKtz64uysqPl/oYXYv/cg9pC16LObXRVEW2PqRXKPvo= 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 1789564533624109.1554407640889; Wed, 16 Sep 2026 06:15:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQv-00086d-RX; Wed, 16 Sep 2026 09:12:18 -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 1x6pQl-00073b-Pp for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:08 -0400 Received: from mail-oo2-x0c.google.com ([2607:f8b0:4864:31::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQj-00020Y-BG for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:07 -0400 Received: by mail-oo2-x0c.google.com with SMTP id 46e09a7af769-7f4f0d1779dso845449a34.2 for ; Wed, 16 Sep 2026 06:12:04 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.12.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:12:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564324; x=1790169124; 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=DjYmYwBMbxBqNOl5TN7j1zkbJH9NFU/KIkmYxr+nLn4=; b=LEv8R8GUQoD59cwvBvI1kedpCAFU8DS+1+utrO1wk1W0Ivkg124b3RtDl1tGvDfgWG qN5gf/7+NId3E+hQfBN33Q9KcuzVPPwvxa3xIVEdnGe5Vu6wBNabnwOlkaH7kXBDmZ7g swRUTcwUR9In7W6kUncJSXfdZKEF1C1TO/jc8b6Gh0mMV/9p5mIneCoov64KXmACSz9C hOUlqC95R6BZZVBgOpAZs+XWEBwYCkWoDaZEr4p65xUd0SgVJAaO5aCXXJfRzDMA87mo Ud2jD2HvxOT6Xphjs+ms6FpxRZqRRrMorR8eoubW/zp0YQXZ+lrgU5IpN50l47X4Fqks IzcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564324; x=1790169124; 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=DjYmYwBMbxBqNOl5TN7j1zkbJH9NFU/KIkmYxr+nLn4=; b=DIbiSCPvBUZ4BEdR8PHPnUWPSWdA/p6zBMGGjts7c0TgJjbPGopAMS4eZXr8dHVr44 V1TntQZ6dSEf7lPeWYbhftPQ+qnxzPrX4trFEUvxR3yXbO0v7N9i+jgS8uOlwn62mz+F 6p6p++x7EkeidcJDzL6Bkuk6kkqnzH3+xQwqtQkjeTbo/qwFh2BCFfu4glfENVX22dj2 nHijxpNV6EvMUh8af2CITA4vHO6KDboCFn3JBPVyxPqy8MjFXYU4ZHPWY4xhTN0sovBm qI0DH8AU+a2Dj9eZIBh9QvWITLXfz843cf9tRedWXjAHkS3Jz/GUHNUf3d3OTSRPddBC TReA== X-Gm-Message-State: AFuF++lmcXzUe/CRVtI69KneOtkVhL+AVsMwODPvfKVfOSp1QrYukrzC xBWgdxT2kM9C91wK/ecX362M4u1hXpivry9Qofcv8kwPX/9TXV9LBAtDrAT6hqZqJ2ssf1VfBft MZVaC7Ns= X-Gm-Gg: AYBFou03IFTMHAVv4ZeubShstobadNngaWTZZUGOt9FXylNhUsZanLpPe6leg6bUtu+ snJmq2XkeZzQAMarzxC4t31AmneRbTMWX7MFlH/ArIqjoEHULN3uSgVhtZELMF0xJC+brE0E5xZ KtDrUwETh0SFm4kqX85bFaFq/MxnronqVqwyqboeUtI06tn44xjG3za02o0hQ28URdPPJHIdC8s 3m28RsRj3PaJkZe2HULnGR4VQ2+4TllS+gbm+tE2/Ji5coUrAw78FxP95y1zapIxigAvZpwLFdQ jMOnidf6jSeK0e/22tfX0+CCJhxCDmnF4wS8zzRmwYVYlPtGOTTyT/oe9h/QCiIUWIFhHgJ9IP9 s6UODFq9aZTfUOi1Hnq/Ds+6srmmxEV18H5O0oCYcMRnGWCohDUuMC7J4bSTvTMqf1tkHYAtOJ8 2vKr2mxQ1n6tICEvfeMjWmLqmjucJkbMpg0Tj/6K6qMTUI1P7gfpxwBfXu5JumyFbgwVi5sXoql ooXw1s= X-Received: by 2002:a05:6820:8c7:b0:6b7:83c5:fdef with SMTP id 006d021491bc7-6c7d44e804emr2445815eaf.48.1789564323791; Wed, 16 Sep 2026 06:12:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 88/92] tcg: Generic expansion of tcg_gen_revbit8_* Date: Wed, 16 Sep 2026 03:04:03 -1000 Message-ID: <20260916130409.3382710-89-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::c; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0c.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: 1789564535788158500 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 56bc8ce4ace..c3d080222d9 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 c77d25cfa75..555af3cf24b 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:32 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=1789564523; cv=none; d=zohomail.com; s=zohoarc; b=YSRVn8oRjHB3ce1ZPWSI3cG42elZ4jgJMBoPj/JCVOUI6uovfkhsoCxfKlm890YN4pyGrCNd3CK1ZVytOJtojdFSe2+4U0RldNV2Ablg4zIHUUNKL37l5JMgmkrv90PEROFdgUFn5Wbo4EsXh8J9rALAT/Qk7L9TY6L2T/fj8vw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564523; 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=xRsQmFDwHhDojWxumr8osIy07oDRi66+ow38sPhZ0SM=; b=Bi77pph/07DPG0GnIfifCPlp14aZTbJdCRK5eToISz4ztZ2NoUsFL0kt9MkfVuYT3du3qHCJ17mzt5ezlhsij0z4NMGaoz2SixxIHWzEIb71Uc3vEH+zzx78udot5cfgDawNH4gPn5ileNpqSXRLTqVUrWp2zTm7uDsWfSSbZlk= 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 1789564523464196.7234461651086; Wed, 16 Sep 2026 06:15:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQs-0007nw-VE; Wed, 16 Sep 2026 09:12: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 1x6pQo-0007Jo-1W for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:10 -0400 Received: from mail-oo2-x0e.google.com ([2607:f8b0:4864:31::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQl-000214-GE for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:09 -0400 Received: by mail-oo2-x0e.google.com with SMTP id 006d021491bc7-6b1ae6a9960so812484eaf.0 for ; Wed, 16 Sep 2026 06:12:07 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.12.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:12:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564326; x=1790169126; 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=xRsQmFDwHhDojWxumr8osIy07oDRi66+ow38sPhZ0SM=; b=UqbrWumGZYTOStrDyWPo2E3PdzfUSeistwX0SC5ldrS9yeDR9/g/KFwDVPYlBiKWIv bsLh+k2E9wyC2tIGdnjgfm7h8p1d7L9A6j+w2j5QL9hln7h84ZbOakNyjeGIxfNXmagp RLXGEfeXu/jW8GIdzsxvREMgLLBU+kq8HhHrDX5QxWDNPyUJrgmpd4cS0xtkA4uYQvh7 oJYnGpBrRQUG8DZvezqF+zuexRs9MfVS5cNCl8IxVn4bI0OgmY5iERieHpXqQcDZsHLN L5hyxeKosZ2FllAtG4TJNO8jdWKzazSH2tjM3zXk3DZJ5Zi3lRuvQ9ZDqBJnR7M0Cffr xvJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564326; x=1790169126; 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=xRsQmFDwHhDojWxumr8osIy07oDRi66+ow38sPhZ0SM=; b=eSqhLdV1zbud98getWMlwwZG1SCOk0W63lLEkxfZod/zZhC5+GwWr+dnyom7RUfNlP MI13lPzYYsHsixhsB5eA4ohTtgtT2p7lWvIeJEll+RH6P/7FgZTEZSa1hHS8M2YaWP79 3mLUpvEyhEnNVA0VIr3RXpct/gqI/3vdyPmWiYqdpiHnwqPFkfAuF7AHhS/AUo2M3uNi uoikXoFqBsybUfue87r8dhf84mTlbxYLc2z9B1B9avdP4Iaztrc4cEcHph3Oaf261+Ga DTzg7LeJY5WqwZBU10eSFmgitYqz4vvbPdHscfhyys7vcqCPYbpdlXNa7j3vSzvyMLg/ FRNg== X-Gm-Message-State: AFuF++lvMrdWTyWkWefa5pkCrhPWtAisIsLhb5xX9fKf3UNnPRW045Hc Y7leY/uYu8w6QJjDpmgJvk8J+gBYghD6WnE7nLbCQUVy94mT6ymxN91feSgeZihSDKWOiExy752 uZCvJHNA= X-Gm-Gg: AYBFou2fImtuc2ACiXOQ5j/WD6oN5YYB23pk5BChd6J+SXlko+TfDUFePsvjcHVma31 Afldcxf+14tI3+cA2g1WCqnv3eAbthLgxQfJ6At7HUIoEYKUWz0ieBkzN8Ag/P8QQ21AaLmsEEH gXCS7nwYmZky+Xs9leYIBq+FrCKjsLEYOWQ/x9w8fcrba3QJLFddkN8E16aGRVsvVvmNhcqhudE koKo1otpSw4dt9i9kZom0PEAqXhisVumU+oCIt73Afi66S4KZCVKDW/nZUCwirq1DtPybSuat/w lB+Q+5Exoe2Z8ilmPKLzBfDPo+U8PScuSq+zfpZ/7aIpyLUb4+UpcCD9ssHCT0/X67ACa+Z3LTE SDEo/9g4tYyeAmWt8m2yhZeaUfPZMXX1GUjOJ0QyOSH+aj+asHhG3TOGSqGmscSzK3RZO+26e+K 4qjsTrGR42FuE1XYp3jvDKgWT7+dTMr7BUDo4I3xhbuBJx5F0Yig186D7055G3NeGK+HgppcrQk CP4Lp0= X-Received: by 2002:a4a:e841:0:b0:6aa:de29:651 with SMTP id 006d021491bc7-6c7d1ad0793mr2983126eaf.16.1789564324833; Wed, 16 Sep 2026 06:12:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 89/92] tcg: Expand missing mulu2_i64 during liveness Date: Wed, 16 Sep 2026 03:04:04 -1000 Message-ID: <20260916130409.3382710-90-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:31::e; envelope-from=richard.henderson@linaro.org; helo=mail-oo2-x0e.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: 1789564525899158500 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 555af3cf24b..0fff27a4e60 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 From nobody Sat Sep 26 20:52:32 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=1789564521; cv=none; d=zohomail.com; s=zohoarc; b=bktRSNFCZG9gcT/I7/tuoebTCww7d/Mi8pJA14v1uvtrsotXyPFz7Y98nXhIaIQDDBI13pgptfuYq1U58XR6dr8hKJChMc0h/RSI2PNczTGT/eSls3UzFTwkimHcgMbW/hCDekwhAepMvZHuuLozZzyfe4Uts7CnruXTyXY32SQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564521; 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=a/IPU6OG8DNnwykMcPfCw/JVnRhv9fHLr5HOcMID90c=; b=L2s6yEyBaCY32b8f8n0H+oCWR71PHl4ZLpA5lVJg5HKQl090oFXphYxH9Ahl2Kpl4IhIzzQ+8p/jCPLwzMH9C7F6+UyjfV/h3YkIhugANK+LKZpAZr3DE1xwdrWHoAu3a6a6HvbtMI51jVecBBJezkcQW4nPbhCNymrDsxGAlX4= 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 1789564521624531.4605325745143; Wed, 16 Sep 2026 06:15:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQw-0008KP-RW; Wed, 16 Sep 2026 09:12:19 -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 1x6pQo-0007Ot-SE for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:11 -0400 Received: from mail-oi2-x10.google.com ([2607:f8b0:4864:32::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQl-00020x-Em for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:10 -0400 Received: by mail-oi2-x10.google.com with SMTP id 5614622812f47-4b37a29bf27so404051b6e.2 for ; Wed, 16 Sep 2026 06:12:06 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.12.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:12:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564326; x=1790169126; 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=a/IPU6OG8DNnwykMcPfCw/JVnRhv9fHLr5HOcMID90c=; b=ou1DNVksxVax6KLw+v58kWIc0FOdla8dUB17H7X41vKwmJw+TUvkDJzN+16PkVJPS2 s24L5ojT5DwLiiZt0Ml0id0MXLD5IvCvK5fhpfGHkKYMSBlhwSnKuGfDbIvdVlVS5wO/ vpRIqJQ3TjNmh+rquD1IU3L/2kOs+ZJPc+vw06qPYNT7260wC8OZdQsxTAjWL1JeQWR0 bgB/Mq2rKuhqwmxt0y9rbL7p2JiQvxOWEXMKp4B4g2RWMXq2ywUZkrPR5wVBvFImMcba IIJfD+1C0Pj0YeOrhZ8Wg9bsR2ABj146Ui3mwOtOpmGWEAfyv/fckYNSJk5tdsxLA8Bo T3aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564326; x=1790169126; 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=a/IPU6OG8DNnwykMcPfCw/JVnRhv9fHLr5HOcMID90c=; b=Se+kj7d/62+rOfgdclTGfgnxldp4H5gcbSuQQoL6p2txtxleRiCM13JlGTpNlPPjGM 3nNV08fOO0qY7DEtF2SEMm9N3SfxRcAaNxUqIfXnQxSSWFiLNsCE7YbTfN6ytC+t51GM UGAszWAHA9gDjCS7WZQpnWoO8hEQX7ZortCunsdLryI6Ol/gU2BMa54FZf0wsBFIdhY2 VW3BLR+p0s6lt6ESkFYsLf4kRVR0ZI5KysS7EOxr9wwHfYjcK0psG7c4b3enW8mAQXkG 8IPHCYpTmYLmwLWPnyyzL3NQawnNg6iNLJhTRafQ6Zb8Pg0wE8kLBJnzrSFPzWjj5LTX 2CVg== X-Gm-Message-State: AFuF++mvUSva0iZ8ufiKKWu2K1MoUR17snJN+umyqxIhc6jx8llZ7sAe 8qR4WredXgyflLEufqcOuL909aAiv65lfNK31Q4a5gNFaiPXkC28wHJAGqWoBQxCWAEa/M5tZbK /DORU3lA= X-Gm-Gg: AYBFou0xc6K3JAZQkWMv1jtXTzdqhrIpV1dzIeO31vMOLzvFLE42rm7UowT8ASz2i56 5EeG81dPW6FCT4JL83ucZkaBkGDnJMomzw5KBehE4x4BFvzu7sRUOPir5RYVtTKMIDrZQGbt9z7 65wIdMGkasTrsHMdDJ7ootglP0wMSSF4mAIi/MLZmiVGbioCan1/+gFeODUwIAz1M+igScGC/20 9BQiqxyw/mQ3cMCN4zbCRdN4DvvlafFR5eFLf9hJoFyzXA1CZZwlg87/9O9zkcL0q059196Trg0 8V3cnzIQFf84+2qewQVvW3vve9ELtmobRbSD40aEw/ZEa72yn3k4/Vd25/wI5UMMCE1rKBSQ7y5 BAHpeVPJ5VRVZKKdecK7OKPyUYY4lnuiyjXMeCwH0NOkMcHVnkWrSC3ZW7cCRejBKiw18R7NLOO a6+CE/H5tBmCHnxJOn68EP/dVz/+r/2+R8meIxK4b6Sz7hDkbGkIUlCdB6zAqipJsSQZVwaPHbL wGC5As= X-Received: by 2002:a05:6808:bc3:b0:495:feaa:9e3b with SMTP id 5614622812f47-4ca49dd32e3mr3027543b6e.7.1789564325871; Wed, 16 Sep 2026 06:12:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 90/92] tcg: Annontate functions in tcg-op-common.h with QEMU_*_NONNULL Date: Wed, 16 Sep 2026 03:04:05 -1000 Message-ID: <20260916130409.3382710-91-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:32::10; envelope-from=richard.henderson@linaro.org; helo=mail-oi2-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: 1789564523778158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 278 +++++++++++++++++++++--------------- 1 file changed, 162 insertions(+), 116 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c3d080222d9..77955c3af41 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -12,24 +12,24 @@ #include "exec/helper-proto-common.h" #include "exec/helper-gen-common.h" =20 -TCGv_i32 tcg_constant_i32(int32_t val); -TCGv_i64 tcg_constant_i64(int64_t val); -TCGv_vaddr tcg_constant_vaddr(uintptr_t val); -TCGv_vec tcg_constant_vec(TCGType type, unsigned vece, int64_t val); -TCGv_vec tcg_constant_vec_matching(TCGv_vec match, unsigned vece, int64_t = val); +QEMU_RET_NONNULL TCGv_i32 tcg_constant_i32(int32_t val); +QEMU_RET_NONNULL TCGv_i64 tcg_constant_i64(int64_t val); +QEMU_RET_NONNULL TCGv_vaddr tcg_constant_vaddr(uintptr_t val); +QEMU_RET_NONNULL TCGv_vec tcg_constant_vec(TCGType type, unsigned vece, in= t64_t val); +QEMU_RET_NONNULL TCGv_vec tcg_constant_vec_matching(TCGv_vec match, unsign= ed vece, int64_t val); =20 -TCGv_i128 tcg_zero_i128(void); +QEMU_RET_NONNULL TCGv_i128 tcg_zero_i128(void); =20 -TCGv_i32 tcg_temp_new_i32(void); -TCGv_i64 tcg_temp_new_i64(void); -TCGv_ptr tcg_temp_new_ptr(void); -TCGv_i128 tcg_temp_new_i128(void); -TCGv_vec tcg_temp_new_vec(TCGType type); -TCGv_vec tcg_temp_new_vec_matching(TCGv_vec match); +QEMU_RET_NONNULL TCGv_i32 tcg_temp_new_i32(void); +QEMU_RET_NONNULL TCGv_i64 tcg_temp_new_i64(void); +QEMU_RET_NONNULL TCGv_ptr tcg_temp_new_ptr(void); +QEMU_RET_NONNULL TCGv_i128 tcg_temp_new_i128(void); +QEMU_RET_NONNULL TCGv_vec tcg_temp_new_vec(TCGType type); +QEMU_RET_NONNULL TCGv_vec tcg_temp_new_vec_matching(TCGv_vec match); =20 -TCGv_i32 tcg_global_mem_new_i32(TCGv_ptr reg, intptr_t off, const char *na= me); -TCGv_i64 tcg_global_mem_new_i64(TCGv_ptr reg, intptr_t off, const char *na= me); -TCGv_ptr tcg_global_mem_new_ptr(TCGv_ptr reg, intptr_t off, const char *na= me); +QEMU_RET_NONNULL TCGv_i32 tcg_global_mem_new_i32(TCGv_ptr reg, intptr_t of= f, const char *name); +QEMU_RET_NONNULL TCGv_i64 tcg_global_mem_new_i64(TCGv_ptr reg, intptr_t of= f, const char *name); +QEMU_RET_NONNULL TCGv_ptr tcg_global_mem_new_ptr(TCGv_ptr reg, intptr_t of= f, const char *name); =20 /* Generic ops. */ static inline void tcg_gen_insn_start(uint64_t pc, uint64_t a1, @@ -41,8 +41,8 @@ static inline void tcg_gen_insn_start(uint64_t pc, uint64= _t a1, tcg_set_insn_start_param(op, 2, a2); } =20 -void gen_set_label(TCGLabel *l); -void tcg_gen_br(TCGLabel *l); +QEMU_ARG_NONNULL void gen_set_label(TCGLabel *l); +QEMU_ARG_NONNULL void tcg_gen_br(TCGLabel *l); void tcg_gen_mb(TCGBar); =20 /** @@ -86,7 +86,7 @@ void tcg_gen_goto_tb(unsigned idx); void tcg_gen_lookup_and_goto_ptr(void); =20 void tcg_gen_plugin_cb(unsigned from); -void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminfo); +QEMU_ARG_NONNULL void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned meminf= o); =20 /* * Construct operations from templates. @@ -132,234 +132,280 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned = meminfo); =20 /* 32 bit ops */ =20 -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_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); +QEMU_ARG_NONNULL void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i3= 2 arg1, TCGv_i32 arg2); +QEMU_ARG_NONNULL void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg); +QEMU_ARG_NONNULL void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg); +QEMU_ARG_NONNULL 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 */ -void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_i32 in); +QEMU_ARG_NONNULL void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_i3= 2 in); =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); -void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset= ); -void tcg_gen_ld16s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset= ); -void tcg_gen_ld_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_ta= rget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld8s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_ta= rget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_t= arget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld16s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_t= arget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_targ= et_long offset); =20 -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); +QEMU_ARG_NONNULL void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_ta= rget_long offset); +QEMU_ARG_NONNULL void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); +QEMU_ARG_NONNULL void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_tar= get_long offset); =20 /* 64 bit ops */ =20 -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_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_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, unsigned flags); -void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); +QEMU_ARG_NONNULL void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TC= Gv_i64 *b); +QEMU_ARG_NONNULL void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i6= 4 arg1, TCGv_i64 arg2); +QEMU_ARG_NONNULL void tcg_gen_ext32s_i64(TCGv_i64 ret, TCGv_i64 arg); +QEMU_ARG_NONNULL void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg); +QEMU_ARG_NONNULL void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, unsi= gned flags); +QEMU_ARG_NONNULL void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg); +QEMU_ARG_NONNULL void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg); +QEMU_ARG_NONNULL void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg); +QEMU_ARG_NONNULL void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, uns= igned flags); +QEMU_ARG_NONNULL 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 */ -void tcg_gen_dup_i64(unsigned vece, TCGv_i64 out, TCGv_i64 in); +QEMU_ARG_NONNULL void tcg_gen_dup_i64(unsigned vece, TCGv_i64 out, TCGv_i6= 4 in); =20 -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= ); +QEMU_ARG_NONNULL void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_ta= rget_long offset); +QEMU_ARG_NONNULL void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); +QEMU_ARG_NONNULL void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_t= arget_long offset); =20 -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= ); -void tcg_gen_ld16s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset= ); -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); +QEMU_ARG_NONNULL void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_ta= rget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_ta= rget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_t= arget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld16s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_t= arget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_t= arget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_t= arget_long offset); +QEMU_ARG_NONNULL void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_targ= et_long offset); +QEMU_ARG_NONNULL void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_tar= get_long offset); =20 /* Size changing operations. */ =20 -void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg); -void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg); -void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 low, TCGv_i32 high); -void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg); -void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg); -void tcg_gen_extr_i64_i32(TCGv_i32 lo, TCGv_i32 hi, TCGv_i64 arg); -void tcg_gen_extr32_i64(TCGv_i64 lo, TCGv_i64 hi, TCGv_i64 arg); -void tcg_gen_concat32_i64(TCGv_i64 ret, TCGv_i64 lo, TCGv_i64 hi); +QEMU_ARG_NONNULL void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg); +QEMU_ARG_NONNULL void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg); +QEMU_ARG_NONNULL void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 low, = TCGv_i32 high); +QEMU_ARG_NONNULL void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg); +QEMU_ARG_NONNULL void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg); +QEMU_ARG_NONNULL void tcg_gen_extr_i64_i32(TCGv_i32 lo, TCGv_i32 hi, TCGv_= i64 arg); +QEMU_ARG_NONNULL void tcg_gen_extr32_i64(TCGv_i64 lo, TCGv_i64 hi, TCGv_i6= 4 arg); +QEMU_ARG_NONNULL void tcg_gen_concat32_i64(TCGv_i64 ret, TCGv_i64 lo, TCGv= _i64 hi); =20 -void tcg_gen_extr_i128_i64(TCGv_i64 lo, TCGv_i64 hi, TCGv_i128 arg); -void tcg_gen_concat_i64_i128(TCGv_i128 ret, TCGv_i64 lo, TCGv_i64 hi); +QEMU_ARG_NONNULL void tcg_gen_extr_i128_i64(TCGv_i64 lo, TCGv_i64 hi, TCGv= _i128 arg); +QEMU_ARG_NONNULL void tcg_gen_concat_i64_i128(TCGv_i128 ret, TCGv_i64 lo, = TCGv_i64 hi); =20 /* 128 bit ops */ =20 -void tcg_gen_mov_i128(TCGv_i128 dst, TCGv_i128 src); -void tcg_gen_ld_i128(TCGv_i128 ret, TCGv_ptr base, tcg_target_long offset); -void tcg_gen_st_i128(TCGv_i128 val, TCGv_ptr base, tcg_target_long offset); +QEMU_ARG_NONNULL void tcg_gen_mov_i128(TCGv_i128 dst, TCGv_i128 src); +QEMU_ARG_NONNULL void tcg_gen_ld_i128(TCGv_i128 ret, TCGv_ptr base, tcg_ta= rget_long offset); +QEMU_ARG_NONNULL void tcg_gen_st_i128(TCGv_i128 val, TCGv_ptr base, tcg_ta= rget_long offset); =20 /* Local load/store bit ops */ =20 -void tcg_gen_qemu_ld_i32_chk(TCGv_i32, TCGTemp *, TCGArg, MemOp, TCGType); -void tcg_gen_qemu_st_i32_chk(TCGv_i32, TCGTemp *, TCGArg, MemOp, TCGType); -void tcg_gen_qemu_ld_i64_chk(TCGv_i64, TCGTemp *, TCGArg, MemOp, TCGType); -void tcg_gen_qemu_st_i64_chk(TCGv_i64, TCGTemp *, TCGArg, MemOp, TCGType); -void tcg_gen_qemu_ld_i128_chk(TCGv_i128, TCGTemp *, TCGArg, MemOp, TCGType= ); -void tcg_gen_qemu_st_i128_chk(TCGv_i128, TCGTemp *, TCGArg, MemOp, TCGType= ); +QEMU_ARG_NONNULL void tcg_gen_qemu_ld_i32_chk(TCGv_i32, TCGTemp *, TCGArg,= MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_qemu_st_i32_chk(TCGv_i32, TCGTemp *, TCGArg,= MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_qemu_ld_i64_chk(TCGv_i64, TCGTemp *, TCGArg,= MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_qemu_st_i64_chk(TCGv_i64, TCGTemp *, TCGArg,= MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_qemu_ld_i128_chk(TCGv_i128, TCGTemp *, TCGAr= g, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_qemu_st_i128_chk(TCGv_i128, TCGTemp *, TCGAr= g, MemOp, TCGType); =20 /* Atomic ops */ =20 +QEMU_ARG_NONNULL void tcg_gen_atomic_cmpxchg_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGv_i3= 2, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_cmpxchg_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGv_i6= 4, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_cmpxchg_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, TCGv_i128, TCGArg, MemOp, TCGType); =20 +QEMU_ARG_NONNULL void tcg_gen_nonatomic_cmpxchg_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGv= _i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_nonatomic_cmpxchg_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGv= _i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_nonatomic_cmpxchg_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, TCGv_i128, TCGArg, MemOp, TCGType); =20 +QEMU_ARG_NONNULL void tcg_gen_atomic_xchg_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_xchg_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_xchg_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, TCGArg, MemOp, TCGType); =20 +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_add_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_add_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_and_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_and_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_or_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_or_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_xor_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_xor_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_smin_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_smin_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_umin_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_umin_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_smax_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_smax_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_umax_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_umax_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); =20 +QEMU_ARG_NONNULL void tcg_gen_atomic_add_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_add_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_and_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_and_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_or_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_or_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_xor_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_xor_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_smin_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_smin_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_umin_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_umin_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_smax_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_smax_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_umax_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_umax_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGArg, MemOp, TCGType); =20 +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_and_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_or_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, TCGArg, MemOp, TCGType); =20 /* Vector ops */ =20 -void tcg_gen_mov_vec(TCGv_vec, TCGv_vec); -void tcg_gen_dup_i32_vec(unsigned vece, TCGv_vec, TCGv_i32); -void tcg_gen_dup_i64_vec(unsigned vece, TCGv_vec, TCGv_i64); -void tcg_gen_dup_mem_vec(unsigned vece, TCGv_vec, TCGv_ptr, tcg_target_lon= g); -void tcg_gen_dupi_vec(unsigned vece, TCGv_vec, uint64_t); -void tcg_gen_add_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_sub_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_mul_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_and_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_or_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_xor_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_andc_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_orc_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_nand_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_nor_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_eqv_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_not_vec(unsigned vece, TCGv_vec r, TCGv_vec a); -void tcg_gen_neg_vec(unsigned vece, TCGv_vec r, TCGv_vec a); -void tcg_gen_abs_vec(unsigned vece, TCGv_vec r, TCGv_vec a); -void tcg_gen_ssadd_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_usadd_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_sssub_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_ussub_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_smin_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_umin_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_smax_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); -void tcg_gen_umax_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_mov_vec(TCGv_vec, TCGv_vec); +QEMU_ARG_NONNULL void tcg_gen_dup_i32_vec(unsigned vece, TCGv_vec, TCGv_i3= 2); +QEMU_ARG_NONNULL void tcg_gen_dup_i64_vec(unsigned vece, TCGv_vec, TCGv_i6= 4); +QEMU_ARG_NONNULL void tcg_gen_dup_mem_vec(unsigned vece, TCGv_vec, TCGv_pt= r, tcg_target_long); +QEMU_ARG_NONNULL void tcg_gen_dupi_vec(unsigned vece, TCGv_vec, uint64_t); +QEMU_ARG_NONNULL void tcg_gen_add_vec(unsigned vece, TCGv_vec r, TCGv_vec = a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_sub_vec(unsigned vece, TCGv_vec r, TCGv_vec = a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_mul_vec(unsigned vece, TCGv_vec r, TCGv_vec = a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_and_vec(unsigned vece, TCGv_vec r, TCGv_vec = a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_or_vec(unsigned vece, TCGv_vec r, TCGv_vec a= , TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_xor_vec(unsigned vece, TCGv_vec r, TCGv_vec = a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_andc_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_orc_vec(unsigned vece, TCGv_vec r, TCGv_vec = a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_nand_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_nor_vec(unsigned vece, TCGv_vec r, TCGv_vec = a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_eqv_vec(unsigned vece, TCGv_vec r, TCGv_vec = a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_not_vec(unsigned vece, TCGv_vec r, TCGv_vec = a); +QEMU_ARG_NONNULL void tcg_gen_neg_vec(unsigned vece, TCGv_vec r, TCGv_vec = a); +QEMU_ARG_NONNULL void tcg_gen_abs_vec(unsigned vece, TCGv_vec r, TCGv_vec = a); +QEMU_ARG_NONNULL void tcg_gen_ssadd_vec(unsigned vece, TCGv_vec r, TCGv_ve= c a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_usadd_vec(unsigned vece, TCGv_vec r, TCGv_ve= c a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_sssub_vec(unsigned vece, TCGv_vec r, TCGv_ve= c a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_ussub_vec(unsigned vece, TCGv_vec r, TCGv_ve= c a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_smin_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_umin_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_smax_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_vec b); +QEMU_ARG_NONNULL void tcg_gen_umax_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_vec b); =20 -void tcg_gen_shli_vec(unsigned vece, TCGv_vec r, TCGv_vec a, int64_t i); -void tcg_gen_shri_vec(unsigned vece, TCGv_vec r, TCGv_vec a, int64_t i); -void tcg_gen_sari_vec(unsigned vece, TCGv_vec r, TCGv_vec a, int64_t i); -void tcg_gen_rotli_vec(unsigned vece, TCGv_vec r, TCGv_vec a, int64_t i); -void tcg_gen_rotri_vec(unsigned vece, TCGv_vec r, TCGv_vec a, int64_t i); +QEMU_ARG_NONNULL void tcg_gen_shli_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, int64_t i); +QEMU_ARG_NONNULL void tcg_gen_shri_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, int64_t i); +QEMU_ARG_NONNULL void tcg_gen_sari_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, int64_t i); +QEMU_ARG_NONNULL void tcg_gen_rotli_vec(unsigned vece, TCGv_vec r, TCGv_ve= c a, int64_t i); +QEMU_ARG_NONNULL void tcg_gen_rotri_vec(unsigned vece, TCGv_vec r, TCGv_ve= c a, int64_t i); =20 -void tcg_gen_shls_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_i32 s); -void tcg_gen_shrs_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_i32 s); -void tcg_gen_sars_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_i32 s); -void tcg_gen_rotls_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_i32 s); +QEMU_ARG_NONNULL void tcg_gen_shls_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_i32 s); +QEMU_ARG_NONNULL void tcg_gen_shrs_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_i32 s); +QEMU_ARG_NONNULL void tcg_gen_sars_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_i32 s); +QEMU_ARG_NONNULL void tcg_gen_rotls_vec(unsigned vece, TCGv_vec r, TCGv_ve= c a, TCGv_i32 s); =20 -void tcg_gen_shlv_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec s); -void tcg_gen_shrv_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec s); -void tcg_gen_sarv_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec s); -void tcg_gen_rotlv_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec s); -void tcg_gen_rotrv_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec s); +QEMU_ARG_NONNULL void tcg_gen_shlv_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_vec s); +QEMU_ARG_NONNULL void tcg_gen_shrv_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_vec s); +QEMU_ARG_NONNULL void tcg_gen_sarv_vec(unsigned vece, TCGv_vec r, TCGv_vec= a, TCGv_vec s); +QEMU_ARG_NONNULL void tcg_gen_rotlv_vec(unsigned vece, TCGv_vec r, TCGv_ve= c a, TCGv_vec s); +QEMU_ARG_NONNULL void tcg_gen_rotrv_vec(unsigned vece, TCGv_vec r, TCGv_ve= c a, TCGv_vec s); =20 +QEMU_ARG_NONNULL void tcg_gen_cmp_vec(TCGCond cond, unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b); =20 +QEMU_ARG_NONNULL void tcg_gen_bitsel_vec(unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b, TCGv_vec c); +QEMU_ARG_NONNULL void tcg_gen_cmpsel_vec(TCGCond cond, unsigned vece, TCGv_vec r, TCGv_vec a, TCGv_vec b, TCGv_vec c, TCGv_vec d); =20 -void tcg_gen_ld_vec(TCGv_vec r, TCGv_ptr base, TCGArg offset); -void tcg_gen_st_vec(TCGv_vec r, TCGv_ptr base, TCGArg offset); -void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr base, TCGArg offset, TCGType t); +QEMU_ARG_NONNULL void tcg_gen_ld_vec(TCGv_vec r, TCGv_ptr base, TCGArg off= set); +QEMU_ARG_NONNULL void tcg_gen_st_vec(TCGv_vec r, TCGv_ptr base, TCGArg off= set); +QEMU_ARG_NONNULL void tcg_gen_stl_vec(TCGv_vec r, TCGv_ptr base, TCGArg of= fset, TCGType t); =20 /* Host pointer ops */ =20 --=20 2.53.0 From nobody Sat Sep 26 20:52:32 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=1789564424; cv=none; d=zohomail.com; s=zohoarc; b=Fjsj/4DcQjiMgPvffflKVm9k8CnJt/Xsl1Q/0+VzsbVcf1SX4TzH3fdlkscqI6G04x9l5C/rBwgSRggwGL1Q99WaSZ1odwfl7LQf8dGRmVBFEOuHJJPcNE34SWeNmxpUY6oqg7wzU4CDncjaBUq271B5RG513QYMVMUY3bvCQrQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564424; 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=mvlxbvvBT6L4tozjt59kyDDd3bACtbqGjYtcp/gb1fc=; b=CLEaZzH8oDuJWRuACqb8XK0PStuuHhJ8WVZjicSkkKl6pujldo764lZNm36imJ8skcZY2OzjCImzrpdpOgJxjuw+pg2kV9wj7+10SRZw6GvvZdG21MPVU30l6jDVCjN/wvF6qWaE8AvfXKTSjrI9GBxSnOULZOWGG2UnnwpcZXk= 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 1789564424245359.1039604207964; Wed, 16 Sep 2026 06:13:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQz-00005i-Bz; Wed, 16 Sep 2026 09:12:21 -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 1x6pQp-0007Tk-BZ for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:11 -0400 Received: from mail-oi2-x10.google.com ([2607:f8b0:4864:32::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1x6pQm-00021F-7Q for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:11 -0400 Received: by mail-oi2-x10.google.com with SMTP id 5614622812f47-4b37a29bf27so404073b6e.2 for ; Wed, 16 Sep 2026 06:12:07 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.12.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:12:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564327; x=1790169127; 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=mvlxbvvBT6L4tozjt59kyDDd3bACtbqGjYtcp/gb1fc=; b=xcPPC4uPibwrR3a454FF15FO8zWWHfAYTh0L0WeyfoEq+fZM1QnIUZzreDDsFDC3to TMZWOUK41Lm5wHqTd99UrAuguxc98Yz2P3s3FRXjPwCiXTq6+8Z4S+xnIrtqjz5sC0L9 kSA3goegMITM5RuB4biCQnVplZcQB/0Ov9L9nRG1wLX19gdzQvcUJfp0oHrMStFBr9fB P5y7ygmQj/3HDoFBHvuoqL1K1Xlswqb7DvebCLtIiJvmbzbl4cN4opKs6bT+gCW66ly5 xWgIqsGs1zmCQ4H7M9hME0if8mISLF/e90FZtTOCRYhDjz2jMCng3k/KQW7fOVflDp7n 6agg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564327; x=1790169127; 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=mvlxbvvBT6L4tozjt59kyDDd3bACtbqGjYtcp/gb1fc=; b=rmutMLfcIuEKrTvr5C/Ak4pfVflwWnPBJ0fXEaQEv0DMhEXODBKHu9paCyI6zyfFNS +4xpXOQwov/pXymhPe2cbQWEI9ko9A2u7y0Am9/sxd73WadQ8odQRXywcypGgdADzZtb dO8zHJwXXh6adSeiXmGHHk8HicWbPGBiYSIhVmR/TSMh3X340rak8AtUEKXMM/8XHf1z amGImqmYmyAtLACJQ+3GwHF78nEuUNHoLS10VccDsL9Ptvawbl9htx9tK2Voz5Hebpfj 2gtcFy0HYH1gEFU5RHh+kbOHMEvIIH/u+WstrOU0ctL8M1YA4VBp+8ThrPKtpQbQAzLJ jISg== X-Gm-Message-State: AFuF++m250zjjKgO3fy4cvwQgnp1yA1YCOd3VtqOvR/s468/EaM9U2qm rcXiYz1JiNItP25Otdur2cY4UjaFV64it/oeX/WotgxxCVYN1Ktp3SbcZhiFP+QSUYPlKpvdvR/ S02UYAMo= X-Gm-Gg: AYBFou2oLH1IA55n6azZbREi/bthTKDSt87Y3PELHK4cOhzRyhPjMCdyysJpYqSgvAW mYS0npATSm4+gmWgbxdQ9uwvYhkuYmWZuGm+L8MdsBiRyBERy/Z1ZpcJ5CDPVlOIbK3EXMJ1We8 D/JPz+DAb9wEHjtaZDuBdrJLQwZ7bfZaocvxI2MhatakDWmTkl1S9/V4EisMuB2iCwyns5ffu+x ZOOpd83dH0ghpNVV9wnVQl3AC3wG74gheEzA0NjlQhJIPtxgrAX3s+C45i+XIlX/XkWOTxOaDuw 6JxTcFGZKLO4EXnHv1mpUDnfbO+eaLdxhmjaWzyNTP1s278gsW3iCQddm+7aQA/MWU2iT62XsG9 eArdxxBnjBKtBnQDE636cNOT3O95x73W8l4YUKaZoFDVzjclTWUEUk3sp26KqyBwcsjShr4U2w7 TAy4vzH4mPaiXBccaeuAdCg/pRq8PS3KtKnz+XQEdenKZ2MlhEWA5vOozUNKaP1K5K62kR8hzcK svn/IEgZJ/h5WcU6w== X-Received: by 2002:a05:6808:30aa:b0:4c3:b3e:4e72 with SMTP id 5614622812f47-4ca4a2ee24amr3442029b6e.12.1789564326836; Wed, 16 Sep 2026 06:12:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 91/92] tcg: Annontate functions in tcg-op-mem.h with QEMU_*_NONNULL Date: Wed, 16 Sep 2026 03:04:06 -1000 Message-ID: <20260916130409.3382710-92-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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:32::10; envelope-from=richard.henderson@linaro.org; helo=mail-oi2-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: 1789564424762158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-mem.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/include/tcg/tcg-op-mem.h b/include/tcg/tcg-op-mem.h index ea35a02fb40..29e7c02f256 100644 --- a/include/tcg/tcg-op-mem.h +++ b/include/tcg/tcg-op-mem.h @@ -28,50 +28,50 @@ typedef TCGv_i64 TCGv_va; #error #endif =20 -static inline void +QEMU_ARG_NONNULL static inline void tcg_gen_qemu_ld_i32(TCGv_i32 v, TCGv_va a, TCGArg i, MemOp m) { tcg_gen_qemu_ld_i32_chk(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 -static inline void +QEMU_ARG_NONNULL static inline void tcg_gen_qemu_st_i32(TCGv_i32 v, TCGv_va a, TCGArg i, MemOp m) { tcg_gen_qemu_st_i32_chk(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 -static inline void +QEMU_ARG_NONNULL static inline void tcg_gen_qemu_ld_i64(TCGv_i64 v, TCGv_va a, TCGArg i, MemOp m) { tcg_gen_qemu_ld_i64_chk(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 -static inline void +QEMU_ARG_NONNULL static inline void tcg_gen_qemu_st_i64(TCGv_i64 v, TCGv_va a, TCGArg i, MemOp m) { tcg_gen_qemu_st_i64_chk(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 -static inline void +QEMU_ARG_NONNULL static inline void tcg_gen_qemu_ld_i128(TCGv_i128 v, TCGv_va a, TCGArg i, MemOp m) { tcg_gen_qemu_ld_i128_chk(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 -static inline void +QEMU_ARG_NONNULL static inline void tcg_gen_qemu_st_i128(TCGv_i128 v, TCGv_va a, TCGArg i, MemOp m) { tcg_gen_qemu_st_i128_chk(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 #define DEF_ATOMIC2(N, S) \ - static inline void N##_##S(TCGv_##S r, TCGv_va a, TCGv_##S v, \ - TCGArg i, MemOp m) \ + QEMU_ARG_NONNULL static inline void \ + N##_##S(TCGv_##S r, TCGv_va a, TCGv_##S v, TCGArg i, MemOp m) \ { N##_##S##_chk(r, tcgv_va_temp(a), v, i, m, TCG_TYPE_VA); } =20 #define DEF_ATOMIC3(N, S) \ - static inline void N##_##S(TCGv_##S r, TCGv_va a, TCGv_##S o, \ - TCGv_##S n, TCGArg i, MemOp m) \ + QEMU_ARG_NONNULL static inline void \ + N##_##S(TCGv_##S r, TCGv_va a, TCGv_##S o, TCGv_##S n, TCGArg i, MemOp= m) \ { N##_##S##_chk(r, tcgv_va_temp(a), o, n, i, m, TCG_TYPE_VA); } =20 DEF_ATOMIC3(tcg_gen_atomic_cmpxchg, i32) --=20 2.53.0 From nobody Sat Sep 26 20:52:32 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=1789564348; cv=none; d=zohomail.com; s=zohoarc; b=QIid44PjjKXLpL4dRP4UCI83Z0KyFX7GF3SlcKzVS82ef2GiHqeotyPCoWlr+IZ/Qfy9eaymJtOLLupiFGL5B2PMMtCMhCuAkUdBHNsKKtZ/KXgBlnciVoaGUdh0qsGv60TuvXxMl9qLREz6zqUxAcN7khnfUAxVjKYoQGwD5WE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789564348; 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=zppA5F7u5jRNskJwrLWeML9tlG0yJ4S2s1Br5DXJWCE=; b=hZGAZuqZvZ3CO23t6ZSwJP6X2mU0inkuOf+V/c+N2I7jAg4zmTwFn17GlVgrtMT5tb7h+LbeAjcgbWgnnzSeALCe2ehb43sJPKi0tGtorxBAClfTdqlgp0jWY/IVHUOTr71NmjKjSvOSTvSYRfNLBXB5dxuKZ+TwYiXvUvcRXAU= 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 1789564348319879.1551725650115; Wed, 16 Sep 2026 06:12:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x6pQu-000840-JW; Wed, 16 Sep 2026 09:12:16 -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 1x6pQp-0007WK-Sb for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:11 -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 1x6pQn-00021P-Kk for qemu-devel@nongnu.org; Wed, 16 Sep 2026 09:12:11 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc1cebad4adso735308a12.1 for ; Wed, 16 Sep 2026 06:12:09 -0700 (PDT) Received: from stoup ([2603:800c:7900:ed00:845c:f507:397b:9b72]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33bf5b22b74sm7873110eec.30.2026.09.16.06.12.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 06:12:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1789564328; x=1790169128; 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=zppA5F7u5jRNskJwrLWeML9tlG0yJ4S2s1Br5DXJWCE=; b=DgHI/NFZnrEmbFX7CecLLAXfZmwfBUjIFKmi1iFk17GqTThpYzwe5yFWLEkSWhnPBV 418XhtpGU8yaysCgmBNNsk9+JWuGbCFUZwWLDXotffecuiVgjBkeCyXoL46Lx+AyG3Zz 3MU8u8Rs8Vb4PDDChosvB3Hd6wx33I+MWY4DVn3ODmMN36pi7CmtzXO/NhHE4Scn/sOH rmX6/nUKKacmsS7iUHPD3UjpGs3pGjt2IqLSLW323QT63VaLUegc5fzfbEsnB9mSu336 G2UIgShHVrBYCNSXSvuwfcnPxucvxlsSqLjYMyO7EGSDX7EYzCd6fe9oArwRKikjzYCG cdhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789564328; x=1790169128; 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=zppA5F7u5jRNskJwrLWeML9tlG0yJ4S2s1Br5DXJWCE=; b=i8hFuTiC0c+vmemcTGcdIbNFy+qu8Y0hWWZEns/oHUQ1PUZ3ZdD11cUPIPExFUFSTc YVReoP/lhl6cDU984ZMehfrAhJOOwX/z6E1G6811pGGbAyeevnI2db53qy4V4BJ8Fqlr 81H3eKF1pupqAX9rJOkKjbf2FRqD8QdtnnkaX+7GaNRdRokAAWblp/U24lkeu9UJLj1m aVHmUiqYTU7YlJErGf1752Ns8zHZTM28fAb3YYTXgnLpO6+RqJkQh40Bx24UgCoIZ8Q3 YVp2Oz0yW5ipowMDACbfCQP1rYhMl3I+WXPgRvn89pUwnopu551cc++k4IAuvaoO0xGZ 0hnA== X-Gm-Message-State: AFuF++nbUDuYNmi3C/UcjmB23UgV1ooY/LMUFh00hepSFQnP5p5D4aXD EFeMwVVxAK3IJ9T0/IUh0WQk5SD+n2m377eSSWpHvwCIkRvutu3Sr/0Yx8peFaGGEI3ogKtp6z2 5ir9K/Os= X-Gm-Gg: AYBFou0yU1cjJaMcDd311AP3rHiqAOR+J8T8RQhNwUOmcAa8bX7yT5fecMqbU3gzgnW IdrNzrb27trcjRc2xnG+VS3XVgf1wIOea4d9QyLXS90Y8qOxZNj3Ii1O5j7DJpQIEHc5mAQOek7 c2FrDlDMNDuRPCc/FYR6NXF7StkvD7yBsd1gL41eof0nyXsryhPfsepJzdpG3j5/NjCJo77UUpt vB+Wr5d8A8uhc1MTgSQSNKU2mvlwZmyy8JmVWlIvdl0lx9l4fio/8svnhPYUZHxMbzdoogyN3qr CgwwdI1q4OKX7uyNO1oKDz1tFrHtoJLdSYLUaLz+DUDqiHXGRvZ9dRyl4ZzCEcHQLfgBikpU5OP 6S5kQJj3f9JipHIz2ZiTzY6sfhAWuux/JpYsL9+5OcyrsyYsqtCxXqgvOIqHNugtb6eKN5KKT/b MxxZXwOsarmQ+eufacUgnNH5fVXSLA9IWG6HUJbLU1IiWTIoZTExB1yMCEHEB645+EsAyJ6zsLf mLsUms= X-Received: by 2002:a17:90b:3c42:b0:398:c150:e7b3 with SMTP id 98e67ed59e1d1-39e1e24fa59mr7095815a91.4.1789564328004; Wed, 16 Sep 2026 06:12:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 92/92] tcg: Annontate functions in tcg-internal.h with QEMU_*_NONNULL Date: Wed, 16 Sep 2026 03:04:07 -1000 Message-ID: <20260916130409.3382710-93-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916130409.3382710-1-richard.henderson@linaro.org> References: <20260916130409.3382710-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: 1789564350242158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- tcg/tcg-internal.h | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h index e35440dc8c0..2620c23b448 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -41,53 +41,55 @@ extern unsigned int tcg_max_ctxs; #endif =20 void tcg_region_init(size_t tb_size, int splitwx, unsigned max_threads); -bool tcg_region_alloc(TCGContext *s); -void tcg_region_thread_initial_alloc(TCGContext *s); -void tcg_region_prologue_set(TCGContext *s); +QEMU_ARG_NONNULL bool tcg_region_alloc(TCGContext *s); +QEMU_ARG_NONNULL void tcg_region_thread_initial_alloc(TCGContext *s); +QEMU_ARG_NONNULL void tcg_region_prologue_set(TCGContext *s); =20 -static inline void *tcg_call_func(TCGOp *op) +QEMU_RET_ARG_NONNULL static inline void *tcg_call_func(TCGOp *op) { return (void *)(uintptr_t)op->args[TCGOP_CALLO(op) + TCGOP_CALLI(op)]; } =20 -static inline const TCGHelperInfo *tcg_call_info(TCGOp *op) +QEMU_RET_ARG_NONNULL static inline const TCGHelperInfo *tcg_call_info(TCGO= p *op) { return (void *)(uintptr_t)op->args[TCGOP_CALLO(op) + TCGOP_CALLI(op) += 1]; } =20 -static inline unsigned tcg_call_flags(TCGOp *op) +QEMU_ARG_NONNULL static inline unsigned tcg_call_flags(TCGOp *op) { return tcg_call_info(op)->flags; } =20 -static inline TCGv_i64 TCGV128_LOW(TCGv_i128 t) +QEMU_RET_ARG_NONNULL static inline TCGv_i64 TCGV128_LOW(TCGv_i128 t) { return temp_tcgv_i64(tcgv_i128_temp(t) + HOST_BIG_ENDIAN); } =20 -static inline TCGv_i64 TCGV128_HIGH(TCGv_i128 t) +QEMU_RET_ARG_NONNULL static inline TCGv_i64 TCGV128_HIGH(TCGv_i128 t) { return temp_tcgv_i64(tcgv_i128_temp(t) + !HOST_BIG_ENDIAN); } =20 bool tcg_target_has_memory_bswap(MemOp memop); =20 -TCGTemp *tcg_temp_new_internal(TCGType type, TCGTempKind kind); +QEMU_RET_NONNULL TCGTemp *tcg_temp_new_internal(TCGType type, TCGTempKind = kind); =20 /* * Locate or create a read-only temporary that is a constant. * This kind of temporary need not be freed, but for convenience * will be silently ignored by tcg_temp_free_*. */ -TCGTemp *tcg_constant_internal(TCGType type, int64_t val); +QEMU_RET_NONNULL TCGTemp *tcg_constant_internal(TCGType type, int64_t val); =20 -TCGOp *tcg_gen_op1(TCGOpcode, TCGType, TCGArg); -TCGOp *tcg_gen_op2(TCGOpcode, TCGType, TCGArg, TCGArg); -TCGOp *tcg_gen_op3(TCGOpcode, TCGType, TCGArg, TCGArg, TCGArg); -TCGOp *tcg_gen_op4(TCGOpcode, TCGType, TCGArg, TCGArg, TCGArg, TCGArg); -TCGOp *tcg_gen_op5(TCGOpcode, TCGType, TCGArg, TCGArg, TCGArg, TCGArg, TCG= Arg); -TCGOp *tcg_gen_op6(TCGOpcode, TCGType, TCGArg, TCGArg, - TCGArg, TCGArg, TCGArg, TCGArg); +QEMU_RET_NONNULL TCGOp *tcg_gen_op1(TCGOpcode, TCGType, TCGArg); +QEMU_RET_NONNULL TCGOp *tcg_gen_op2(TCGOpcode, TCGType, TCGArg, TCGArg); +QEMU_RET_NONNULL TCGOp *tcg_gen_op3(TCGOpcode, TCGType, TCGArg, TCGArg, TC= GArg); +QEMU_RET_NONNULL TCGOp *tcg_gen_op4(TCGOpcode, TCGType, TCGArg, TCGArg, + TCGArg, TCGArg); +QEMU_RET_NONNULL TCGOp *tcg_gen_op5(TCGOpcode, TCGType, TCGArg, TCGArg, + TCGArg, TCGArg, TCGArg); +QEMU_RET_NONNULL TCGOp *tcg_gen_op6(TCGOpcode, TCGType, TCGArg, TCGArg, + TCGArg, TCGArg, TCGArg, TCGArg); =20 void vec_gen_2(TCGOpcode, TCGType, unsigned, TCGArg, TCGArg); void vec_gen_3(TCGOpcode, TCGType, unsigned, TCGArg, TCGArg, TCGArg); @@ -95,8 +97,10 @@ void vec_gen_4(TCGOpcode, TCGType, unsigned, TCGArg, TCG= Arg, TCGArg, TCGArg); void vec_gen_6(TCGOpcode opc, TCGType type, unsigned vece, TCGArg r, TCGArg a, TCGArg b, TCGArg c, TCGArg d, TCGArg e); =20 +QEMU_RET_ARG_NONNULL TCGOp *tcg_op_insert_before(TCGContext *s, TCGOp *op, TCGOpcode, TCGType, unsigned nargs); +QEMU_RET_ARG_NONNULL TCGOp *tcg_op_insert_after(TCGContext *s, TCGOp *op, TCGOpcode, TCGType, unsigned nargs); =20 --=20 2.53.0