From nobody Sun Oct 25 09:31: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=1790499655; cv=none; d=zohomail.com; s=zohoarc; b=OL5VJ9IwDd/i500MOibnGnpefxbj3/AC903w8hPp1b73uuyN0ORwtGNq+Od84Jw4PfvVTYxmCTIvs8eEL93yr7NXI3MxJCByDncMdKdlw4RNGvj/qJsNeFRgD7HSoMCndXZPrc9hAKK4KM9c16lbOMpHmr1gUGCdOT02OKOECp4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499655; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=K0rAvylJFCDebhzyBWGh1HPRhJRm/GjXARu1Rx20O7U=; b=FjfESepj0hU1Zks9VCPXyLbFIqk5XECDf5TuxNtSX3Bxgnt6YXPVNY+NLOAOKXb302UMxG5Mhy8a5UWpBzeKyXZU4QkePuDSfFUPRNb1n6VCxFmNfEUG9GfSI00r0zKwy436zjtDMRD3dQYdmMjVPmWY6cBIAgVPHHFpIe0sEf0= 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 1790499654837710.4048000703139; Sun, 27 Sep 2026 02:00:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkA-0002Pc-Sv; Sun, 27 Sep 2026 05:00: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 1xAkk5-0002P6-9h for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:18 -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 1xAkk3-0007O0-TB for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:17 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccb1a98fso1602219a91.1 for ; Sun, 27 Sep 2026 02:00:15 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499614; x=1791104414; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=K0rAvylJFCDebhzyBWGh1HPRhJRm/GjXARu1Rx20O7U=; b=AekehUuFXpzrBANwrc+6Pv9gzfXxMboLzt4zzIK4znck7YpOdUmt6ZrYfKqxVwxTnp P2Yv7dWzgg483V5u0wpwWqFVZHzeeNgdF3UfEWJA3t45KS0bKk/0Pn4Ta7W41lVu/uAL cWSQlWW/jLH0KUlhBD6k+xC4r5AFGmrAkj8AZVvhnfGUuBwmp4SIuNOmNM4LEXneYyT8 2eliUPe+ydOHWqVBEvORioCHSEPZd8rBb7ABBgF2Vt1HHu1tDNabVC/n448FIjGXGwC1 SHquwMM0ogNuNOXGUxVFL7APQJMcF5p2WiPOY4KG32Dyg49y5zFsPs+cUfBO9k0QWEC8 JboQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499614; x=1791104414; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=K0rAvylJFCDebhzyBWGh1HPRhJRm/GjXARu1Rx20O7U=; b=VbOvexKJtmeITH0rQL485m56BBVe8Nz/gLgJiAicJ8QuDhY7c3SSidA+DOGnPwKLj8 W6w3Ij3uvCGsVhHtWZR527f2fBQz0aWAPtzyZaptFn0cV/jRbNdWY5zpnMvT3clHGgyj 8bRRR2XpYHzGcHI0zZuS3dp5RfZ8uiP4FNMwnZ/6e1cusCP3DvaWCIDROgmcCaOv/p3Q qjVmC/W0nQDmv3ajK3gkgbsuQBX8ev6gmUlbVLJd+nFf9qOTET8faaqik23qVXArBTOf 8LteR8MdwcttoqFq+kGmMz/FYk0L/8e7OWMaOKlsCTkI2ZOhs38l1iGFxgsJUfImufHl aeew== X-Gm-Message-State: AFq9FYJlNjhobYhLC5aS13vAB5h8h7sLn4Eqm0yp6ZpJyb6rnZp8YP11 i42gq1jgmUlJhKicfFzrac6mtA6pWR4uvAfHOa1+yoZrvNBMFTOgAQf2v1JibY9gmY0YeIYAiIL wgr5O X-Gm-Gg: AYBFou1OmXTinFLC2R5dPUqODA52th615DnFx8nUGcXRCpeXVSQzSLJfPWlLwqqyQeW 5szTymPfJCdLVbSzDlxxZ7YPKEpS72HOW6gRRzasECrhX4m1NaKyDjscV37kUN5OYYur8z1t2vZ gfTJSZUugaPFgosU7f7lvk8d4k0uWys9ajeHAWm3bQQ3NUg3pX0bFW9LxCNW5o4e8ngz72lpj7L 5DxokrVXVPb3Oi8qb3J/lOVEQgGqtBY/L4E+IIRYbeuOjP/Ac+weZ/hgZzYokR5sVlMoygnaZ9Z 8y+wYTTVIC3onf78ZTE4bwyeprhNJAqIjmlVuB3CwdfiMOhC5ZbPxjSJnAxiF4EOh9tmybeon3Q VtvFw+MUUn2LiZSBvFFYsk8Z75qwGd7mUr7jOUke1E+yLKbK1PaCwvhgiGF051vPICMcIaM7f1h LbTq0RoUhjEuglDc6T+M6cb7DECaRk6ek33UFUNEU8hqlyycCCFRI0hMHpZQpaLIF25UK62n/5F xsEwIFPZnKIX+sZ6/7PFPUekUl9yQ== X-Received: by 2002:a17:90b:4a01:b0:3a0:b50d:50e7 with SMTP id 98e67ed59e1d1-3a0bb552f31mr5595734a91.1.1790499614200; Sun, 27 Sep 2026 02:00:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 001/101] include/qemu/compiler: Add QEMU_*_NONNULL attributes Date: Sun, 27 Sep 2026 01:58:31 -0700 Message-ID: <20260927090011.10724-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499658235158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 Sun Oct 25 09:31: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=1790499776; cv=none; d=zohomail.com; s=zohoarc; b=J4O25xQbdt+kbRMgWtQ1cD/Qr7lkJN1hVj03sF9OYK5NfRjkjhStsC2JLJzPvqcFVXc+9GtjmFL7l4mNTTa13L9JebdwRbVkOMwPF8Y+SCdXk50Su8JZOrz+81XUIh63+j+p2dHGF0HcuKcEcUcMxBMo46Ab3ddhS9fG6v3Oiwc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499776; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+yjjV+A7iYyzKjGgR+UNc4f/t+ifl8d6M9mByR9w2bU=; b=dNvFI1u6dmrjaXP045V3KcARe8MfnhdCpsDsg+eXmvX6TQAey7KF+D3ly1wpxYom2A5h+sZCMjd+uQYjr3+xS1KqTgpVJyKvStZfFNbFApSo908i9cmZykT/Q+10+t/uXq1jmX0CNWj8TK+MWLJA462lNm0k0LkqW4oc6L0GS+Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790499776544963.1561748548745; Sun, 27 Sep 2026 02:02:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkH-0002Rq-9j; Sun, 27 Sep 2026 05:00:29 -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 1xAkk7-0002PR-09 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:19 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkk5-0007O5-Bm for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:18 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0eeda3e03so309230a91.1 for ; Sun, 27 Sep 2026 02:00:16 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499616; x=1791104416; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=+yjjV+A7iYyzKjGgR+UNc4f/t+ifl8d6M9mByR9w2bU=; b=gNq5YHMKYxoUVkXzci+Wlz89vYAktiwM1SBpSjyL9r+mnd3LfKQ6Ae25e/jdFZPKcW VfBLW0MO+zH6SKQMQqrOnYM9qoa2R7+1rSQAEMzHtvtg/WV5iqnkqZDUaxYqtguuJJ7T SEf1XtwdgHgB20QBxGwVqcJ/6nsuptc9Bf2wCG6mhA2vzrRnULIspxw+chKPFGkHFZwf xXfhTuVldpDtljYYJrFcrszwCDne6YKIP16xyKXB/EodnmV970ppzG3egRTuUpz/+FQE se8sa+Oly4pozjxV2RxWobD04bPpMepd0ruz/AnUyCJjaP+SIOo2twsma8NMvYPROYrx bCWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499616; x=1791104416; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=+yjjV+A7iYyzKjGgR+UNc4f/t+ifl8d6M9mByR9w2bU=; b=XItDvQ59WEeBsq9gJGjrsPClegfdGPTAohEAGljRodiW/Q69amfQ9KX1ygSQum2a3a FJWySa94BQ+BD+uKvbz50O35HayZXoo9wI5+AZEZ5hgOWmbVOZsMMid1MsHa6PoI8dJT bUfpdn2xwF+K2UlUQhW+wgee56t46JqkcyFl3SJnWyTg6m1e5sTbxoLv9s4S3j+QdEuH YCS6QlFrpL/09x3mbkQ9e8VK/W0UD1VW6wK/FxQ3eL/9qK6iOPc8eSiYtAsKMznIy8vx OFILAQRD+/RYwQ2Z9lQPucm/EHaw+vAL4Q+fRJqKe40N7YjEeFBpCkJbUntBcfbYg0Jg pcTg== X-Gm-Message-State: AFq9FYLxbMpziVXeECpEAbe14fRQqhjW1X3XjRH5XLQYQ9AmK1Feip6q Yp7kwczv/vWt/tiR6MqRjVkkUJGKjag6ICutqJdJFttHws5KZfvKeKDiggjv+1aDcpgZXVN5YZL +XS4U X-Gm-Gg: AYBFou1N56U3ULaP5IbrjAmpxMlKk4eM5//h3q3DR6gVyFakTgMffxqGHpUNxSEc9BK Yp7gt0Kk3xz+txjvJCAAvtzpxe6vrzy5CU0zZ/J8/XdKx9Xj0UrB3silvjzamdW41agzUyQE84I zJUZ07iOWp/FsdVzfcX5SiVcAmvte3jcU3DEOG5BCuHJbqp6n1MQ3gLxx+b+RW3rH5JWrcHUbc/ 3ndajxVbLfP3bSGY9RwwZZDJDNgZ0So6DohM0ZoQLRaZ9WZxuqJ/URTJuU3c2pvAKAjJT8Mmb2p G/jEvwXX5jAwiI0L7NGtD3JzQXsejqFbdDq29AMPyuiocU1s1v4b9xeLkyZUDL6GrL7XcX9XzwT Lf1mUyG/C9r3qKQr2Z2+yjn8mWoCxfdN6OmJptEcnYl6AzNlPDugsHgcQyFNTqkBkDw/SDabtcp Y1QF+ODXRteNt08sfhfVb4e1p5zzxwmE3mK7OfOGTzf08BufxivbJmQkYFWVyhoD02OV3zSb2TQ fsSn/f2MFxD4Cp3GmSa3bwM9tq/mQs= X-Received: by 2002:a17:90b:28c6:b0:3a0:e25f:83c7 with SMTP id 98e67ed59e1d1-3a0e25f8455mr1956102a91.41.1790499615606; Sun, 27 Sep 2026 02:00:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 002/101] include/qemu/compiler: Define QEMU_ALIAS Date: Sun, 27 Sep 2026 01:58:32 -0700 Message-ID: <20260927090011.10724-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499778488158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 Sun Oct 25 09:31: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=1790499678; cv=none; d=zohomail.com; s=zohoarc; b=SNXX5fGDYC27HWoWK9wCRqg/2z+NqmMhjBxlIeCHX0sVuZg2V7w0yf6zVctqXuEzzu8JwREtaIlhVF2wI8nMxGb4ubO/BxxRPFILFQFafcBgwAl33DbFqh+yWmYWImab55IpnFgg2Ej7W2zd7ehNtZWMzRlZ0Gd25YYJmW1XatU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499678; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=C4CpkgywQVTv0mD7MmRnQOlutEFAGtvT+lSMXYyHd/s=; b=WY19gSIPK4b2BOJ7FfVsW6+k+LD5BFuKYGptjF3guiCn3ILApv8ApT+kV4EKcsjodepmp2DWbO4S/i603laex+omYV3HZ30JSUDpLRd7eLJZE0DuxMQyKP/ATbzSkMLuQuFQhnktWQnhLYhDgU6bxG9N3mG+MbcejQ1UCEicQBk= 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 1790499678516223.74547622825833; Sun, 27 Sep 2026 02:01:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkJ-0002Sj-Pz; Sun, 27 Sep 2026 05:00:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkk8-0002Pb-1u for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:20 -0400 Received: from mail-pz2-x2a.google.com ([2607:f8b0:4864:3b::2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkk6-0007OE-0E for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:19 -0400 Received: by mail-pz2-x2a.google.com with SMTP id d2e1a72fcca58-88379342f7fso25566b3a.1 for ; Sun, 27 Sep 2026 02:00:17 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499617; x=1791104417; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=C4CpkgywQVTv0mD7MmRnQOlutEFAGtvT+lSMXYyHd/s=; b=q96h93Aql3Ywi+T6Uy4F4r+tYuQ1dZMRupKB+vbSEOfgxx6vYgKfF750arb3VLQc3v ih8YU0OkGHnC7QsS+01uNifKKRIi02FxjBqF7JSH/q5R+1pBdELiN+XHL0Jyp1vqsaKT H1T2H/EFsr2h77SrumobZkjgNX5Sr77X4UrSkozxAWSwxuQhGk3HJ/8GfAPceMA/f5P0 1BCTBtlBhCB7FfaiZWjmaixRNu/e7bRD9qxLPoaejoNEc1u2yQsgk7BKKiysO7lzXubS UUI/sGZgSD1CNZueJyJ7h9Q8nIAG5Uok3I+BCmARgGdnnrdZNKkknhEmzp8glU/cWDoJ Smxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499617; x=1791104417; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=C4CpkgywQVTv0mD7MmRnQOlutEFAGtvT+lSMXYyHd/s=; b=O8O2D8/EFNcQvbcHdWSX0nsAqAUeTr1N75F+J254lPyZh8RtFDgxboHJ5eVfozqNBg GohQY4Oao8tkyBdNuNo279zmHb4wIagYV96YplOVPLupdfjtpUyxKWZo8Uxp9vm4G48X kGlRZrT5ldHTwiDKa3OAm2NUqU1+cFvt1aQ74X+fMcQ2UDnA8UbfNB/tGzacX+N0xMp2 k7n4EEID5jK8Cz5MW4IGu9+2YynoVoXb1r3/FIIJ5l6R5MxMYyqb4wA0vNGVuUUtSyyT OK8iLBHaJdWL7tcTFr/DMIn21sDtaKjds42fNxxEZuXuCwJp2Ob/ixcv6Ur2d/Duxc4l zmEQ== X-Gm-Message-State: AFq9FYL1V0kJzpG+awIGLB41lstOR3opFV+CDlhtli7ME/Xoqq+CH/QM eln1IQcG5eKcnXjbM8I9AMn95aUj2leaIsuPGlajht/VBMpQ3K4JKInY8C/NoWfe8N2RM/CF5bE rCBF0 X-Gm-Gg: AYBFou1g2ADyXZStf4YuRBbM5h6H6nYX5DSyICZwb1qrTGXd5zpeCKlcqyMRJod4p0G OtVSOgZumMX/y5OoexdI1iN2E3gqEEIDRJUuyIvec4ekSC+9vLOORJTLC6Wmq0L5FhRcwI5laAe C05vpcDvQL4j7W3xi3fB1AAhUuow6q9ieZdW5qcQr1/cAYDTQkgg6LaPhCKSidCfCHfnp2n53n2 myHxNiZvhOe9qahMtcRtoAvQ8L80YzqnBNTeZSzyxrWt4hUZuLphoUHDyh/bzqPVVNHK54YehKH jSICpcFDWSdyJrXm6DWANjubSM2dGDCAG+on/4jnKedQvKV5K84iyWwp44jIudgHWfKDlBAwzIA RiCGnfFg3ZnqAirjZ4Cge4QGnvhtgnaUtzxsvsU6gT8QJlTLyOFBrnsa1EFTlJJ7d8i5CCUYNF6 4KCECtgLQ5HkFWdc/G2nOUbw2vaWSuWcG9fBvZNHjBJavhwzzfq+O6q6y0nQ+2RQmYOh5kF7mDM 0858wv+mvJ2rVlUIFHfuxE2suGgDw== X-Received: by 2002:a17:90a:1649:b0:3a0:abe7:f0f3 with SMTP id 98e67ed59e1d1-3a0abe7f56emr4668255a91.0.1790499616506; Sun, 27 Sep 2026 02:00:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 003/101] tcg: Annontate functions in tcg.h with QEMU_*_NONNULL Date: Sun, 27 Sep 2026 01:58:33 -0700 Message-ID: <20260927090011.10724-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::2a; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790499680228158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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..16ac528340a 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_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 Sun Oct 25 09:31: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=1790499787; cv=none; d=zohomail.com; s=zohoarc; b=ZisEz6kRZb8pkpb1yvHMgy29c9xWZYY13inbT2wUK6tNFd3h546AHKGCI8k4Krno7QooFE5UgTq7l1ERjFk7TY36oU9b34WatYnl4KKCd5opEVIjbXdagn/0Ax06Gv8vrJiZww8kZzzy1GLo+QeiiG9z3mNUtUzEfAlnGKEKfEo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499787; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mvlxbvvBT6L4tozjt59kyDDd3bACtbqGjYtcp/gb1fc=; b=jgWeBsfEMkMfqI8ZwuTahtBljcWaadL7fPFNJb+i9qcvegPSFIw1AAMr/ky1Xy5j3sFiB0ysWK4cTCfp+HOSaCtbxx1vP6V+TzkxSnafRhDgL81eANBXQ8XTH4cyL7iwTby7LYy8xyg6mRU6g4RSKzEKh9pmJc6DYnwChOd441o= 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 1790499787693230.67449480372875; Sun, 27 Sep 2026 02:03:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkI-0002Sa-7q; Sun, 27 Sep 2026 05:00: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 1xAkk8-0002Pd-Br for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:20 -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 1xAkk6-0007ON-U4 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:20 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccafb752so1084736a91.0 for ; Sun, 27 Sep 2026 02:00:18 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499617; x=1791104417; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=mvlxbvvBT6L4tozjt59kyDDd3bACtbqGjYtcp/gb1fc=; b=i9+/1h+8WZK1oU3050KhKRJTyG/EiekJWDNaB45q5XGY97f4i1um1KtNyCzvPtQLxg LrX+8iMmMbT+IsHH+s/rBwNhoo3K9BW4OgdB5ab/sxwCyjbOBVSgNhBNoFt02ao+sYY/ 3BIlTX0WJ1rBbIRhcx6Lov/PrvQTHTm+ekyrfn40AW84vYXTv5sQO1Ev3iD7yDpuRe+p 9x09SDt8UCSvBKRnQFDwF5GLD98OnCJT477MDPqRLzX5Qhi7i4s5K/Ba2UypsKOHkwO2 pctJr34r+PkIUPEk7H/k4r6SmRSPg7iVbky2jbtHJonT+L6+4WZbbw00KnLUm4KFxeoO vqiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499617; x=1791104417; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=mvlxbvvBT6L4tozjt59kyDDd3bACtbqGjYtcp/gb1fc=; b=ovxyXY3NJLsSQSPyxbi2H1s7HFmYywSi6TKMCmkw2DcXpc0W/oD1rhqQdA0I1Gegde SVEzNUCE2LeVAcl/QdL7XqDTQDambLssAJLY3YYHeig8Z5RIBrfNqT0IkSOTVnc6ckOu QwMPSU6iUTOKqYC0wuVBqqQonITuPRM8WhZR0ChpNyLU2FuX6/KT5bARyo+/qdJv5y5d Tw9Ci3dX0Et2AMlO/m90FdItc/Onjr2liMPqEll7i0mlzRtmXq73cUF2TwIjjxU2vMBT 3ykNAy/ORUmnJY3Y3k/ou18Dn6PaqIhWcV85x/nkKG+SuYB/qz/qknGMtAGe3Juo2mzK jBAw== X-Gm-Message-State: AFq9FYJnRfWdQ1fYsdVonT9m7hYIm3RT87VguVxyARHLedED1JXg2sZ3 cWfVY1vwIu4w6P9wC84zos/SHieKMPx1YeK3FFckMfxsYVzt7PNZfiRrk6qNLVcjR9RXp/N4wRl aO35I X-Gm-Gg: AYBFou2qErcROnh/bVhlGZz27MLYt3LqvqLYvImZ+M0wIg3kl0XCmKNSmOeqHlkaHcV yIlZEUw/7q6i8cLsaDfe5mY/yHkKZIDM3kzWbRLUhlL1Cu2Iae4cqYE8foQ5XKIDIPP1ygqS80U vHlwYcO1Gr07TGksn++uKGZYGOd1ZC0nQEKnTS9VDxYT4hRWO8dmjdPydhRl4nVb5IIhOZRSdIW e5j1sbjHTQYu/QkcG3gLJ2MZIiZL9s/LtBHZEScnOCp4yHHar8l2pyT7yAOZ0WGm/1d4KN8OWjW Axr7f+2dL6GHMgjisJC5YVv2QbA16oJv8ACXft8g5lwbL+OeF8oC9sdJk2gfUBHzW99tyV6pGQd rwVUgzqW4QzNXqu4cOSrAW+LghiBmdkZolnN5g2UM7p+02LqqcfFMSykymioQTAjdjxAxbeD9E2 17J6E47dvfx79iCK7Lt6/X2h00HGdQ5Nwo/JqwxDEEbZ6NGlyoXUsIOSjvjEWbUQzrwv/4O3E3J cNX+Oi0BOc9QnrtfL1d/OMY3e14nQ== X-Received: by 2002:a17:90b:3a46:b0:3a2:b04e:8086 with SMTP id 98e67ed59e1d1-3a2b04e8389mr467828a91.44.1790499617309; Sun, 27 Sep 2026 02:00:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 004/101] tcg: Annontate functions in tcg-op-mem.h with QEMU_*_NONNULL Date: Sun, 27 Sep 2026 01:58:34 -0700 Message-ID: <20260927090011.10724-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499788488158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 Sun Oct 25 09:31: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=1790499713; cv=none; d=zohomail.com; s=zohoarc; b=F+94BLrpBt+3dfdKzn4dDPCy0qMAkVIF7dozf1mp8oLuRZ5egxtH4ND4FH4mn4KEeyoHiLLTwLhX7XlVoCSZv8Qq1htgGs+cI790PNlFI/SOw8cLNPvQY6S4IlkZuatZxxFydtsJNRPHyA8n7Jm+b/hqk4A8LHtduorlPBYcXFk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499713; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zppA5F7u5jRNskJwrLWeML9tlG0yJ4S2s1Br5DXJWCE=; b=X2VixSVSYDHlxq2pOlU5G1xSGn5IZ05w8ZdO1cZRIaxcBUovPZEf+tWDyqFlY/+F/Z00CEHlMqwaBtl4uLNSNUlNhJzV+XVO6y9e7Mq4o3SBh4YOoq0Q4oEqb8yFlyq00JCSTLm5cx+XcduEx7A9Gfr1PdYlRyE477fih0Ju+Io= 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 1790499713727258.34297247826635; Sun, 27 Sep 2026 02:01:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkw-0002a1-MR; Sun, 27 Sep 2026 05:01:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkkB-0002Pt-1y for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -0400 Received: from mail-pz2-x2b.google.com ([2607:f8b0:4864:3b::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkk7-0007OV-Lj for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:21 -0400 Received: by mail-pz2-x2b.google.com with SMTP id 41be03b00d2f7-cc79223bcfbso1025500a12.1 for ; Sun, 27 Sep 2026 02:00:19 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499618; x=1791104418; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=zppA5F7u5jRNskJwrLWeML9tlG0yJ4S2s1Br5DXJWCE=; b=da3w2mHE7nqzicqisr8lyqoDZHuEAojBvZfE6rc1f+Il2wl+4i+FEp3oX29W2MAc2o /1CMy8hAkr0f2cq7JDtbvuWlDxqHt6KqN7Si6yEsEDPv8lEqVIdIahZ+DC98lU1/ilBt LlrYyFGaAjuGx7l57g5frHcuHmPC1KBFIdXuHcVqeUjTmkyz0YoV0aX+Xs8c0eSnXgOT WoNtjCambAt1zspl5pzwJO33jHfnShVqz32lSTotTzffBGu2W1tgJjqByz/nlb6GXYTl RQMOkFSM+etBx8nThhdZM+d9DMHNHli2pcpDRvFNZJhX20iRHz34X6zd2sgbZgjgqvRx yiIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499618; x=1791104418; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=zppA5F7u5jRNskJwrLWeML9tlG0yJ4S2s1Br5DXJWCE=; b=XD+ZFC4vL8YwC5PvIFHCtu/4N0fgd3hdlnOKcQx+vyxWZdyIcldN0wHup8DJX+aG2A CsR1bMzAVUpZcoE0YpkRUrgqgfiABPcD0lSM4lmHMjY6vlLafevnjjfu/wOpsHHI0hep q0pf79U12o2yJD6FxncvcgqlmIy1u/SMLwTGAQ6UM5Yc03/vyvVMpoLRIJxJ/f2cssjE 0BNtCY7n8vx6hS3cnN7zyJNd+LezccOeK7yJevo6CL9vDJTESqM3aByRJXZCDj4k0hPY linoX9HRUAZH/L5Hr8SPxUSpDzlh0QXbjLIOEXKSSrcca43aiieI3N4Qj66V0a0YJ3WJ TiIA== X-Gm-Message-State: AFq9FYIx3IbrPYgtBf5Kr/tmlkqEaGVKh0UQk5KhtMP2TvnrQc0apFOC b3qNgYfQCagNxvmo+T2ArEYjR7kRjNP8xkOovEypS79pdrvwFo698BM51ZQiPr5QV5S3nLLtKLo pjtS6 X-Gm-Gg: AYBFou0LFaxSG3kGL75U21JQR8x1szfToZ4fW+RK2VHwC38ESw7eMLHS6fB9L77Qjkx M0cIhSr8HmJTWW10JkpLMxT+ezZT5mHoJsZsrIN2JcehfVE40H1Z+O29e5ocJu1VZRTUm/yNSx5 f4R2yDezakr5y4JIUe8tc0qX4w2NMcF1Iu3Trp4CMGYl6b6zatG4HYgrhkfEBVcytiFTBPfBj3J 3d8SKLhes+4xcNSz7Onw9Xo8euR0A1vuAP+BRnjN8LZxHTiThy2pTN1uuhZoWpko7MDpHDWQSnz 3Gv9/kkjFxYkAxaNIYArv7A29FOA6/finDK6kUlBtVEyMKzc55REPt82cjPDyf+F3U53P8IyELC n+ufMhahtiJgSgN2uwsfAo2UWPdGFITud/XG/q1wPnUPMMxnROEvyzrBqpL+5e2NVnmrjxm05+5 GMCSl63X59cpgcnnRgQTwsWup7y+8nhlyyUQOLv4v314nHKJkgY6r/EX1bSGnWMcRT0hctMB/w1 /PzJrbC3QIcDkFqr6GZnWXIt+N4DQ== X-Received: by 2002:a17:90b:5848:b0:39e:4c7e:f03e with SMTP id 98e67ed59e1d1-3a098b4cae7mr8629944a91.27.1790499618069; Sun, 27 Sep 2026 02:00:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 005/101] tcg: Annontate functions in tcg-internal.h with QEMU_*_NONNULL Date: Sun, 27 Sep 2026 01:58:35 -0700 Message-ID: <20260927090011.10724-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::2b; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790499714334158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 From nobody Sun Oct 25 09:31: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=1790499691; cv=none; d=zohomail.com; s=zohoarc; b=NLs3/8DmRkl1B8BN9AWrgKMQtQi4dZq7nHf27ZerHkQ4JzOwlgqUH6coBIeBy6Xyb3XPm4uiWLpuSChsXuAR1y4qb9CATKR7NU929Rl+tql2SvlRHpVDRU6p6pahDnfN0CEbzHFHstHzT3guPbUHRYfdoWTuelI6VsyR6ODfLzw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499691; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=47puM7envmbLsBYn4NN2JvYgQw7NFohb4tsZxNlNnyg=; b=jCiA31XRM93A1MAEejNeP+ZlBOdsVMEkG6fwVPS2YOhtFsuheUJDia5Zb7XBdyzRsNdBKTtRc+3abB/ByWlU8pi8Sh3qGku5PUVKzY737QbUOpFm3OY/s41G8nXMmoI3YO6/y+U891ue2x93Qu0box95ojHEnswJIeHpe5mqCmM= 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 1790499691385492.06405517039866; Sun, 27 Sep 2026 02:01:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkJ-0002Sg-2v; Sun, 27 Sep 2026 05:00:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkkB-0002Pu-40 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -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 1xAkk8-0007Oe-Hm for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:22 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396cccbba91so989576a91.1 for ; Sun, 27 Sep 2026 02:00:20 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499619; x=1791104419; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=47puM7envmbLsBYn4NN2JvYgQw7NFohb4tsZxNlNnyg=; b=Rp8zTzOMPClhimVn7fjcxZ4LMX4MvBnUAUAKfS+wtahT2y3xN6vQrq816BF8/CZpLp iXV5ykM2ZFunWDMFC2/BS+CDJbHgrfGNQiQ9UvBprQoVzkFjA8uTvVRHZntJ+0GkkKcH AyIJtJBVjg3fEUbwINyHtLYGbtkMeZYCH0cYhPnquhicguCk0irlweQjZ4FY+M9hcsRD 7EvCg3FP+urhPE1c0wfOZl4DW43Lp7EuCzd14Or995KMAZmGbBGPC2qjEpyNKNRzrsfN p3LvqGDUNcJQFZojdnK/ssH90dv76Fa73AF03LlEim1ztLhOp6lv+115L8Vqk4Uqe0pA QmqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499619; x=1791104419; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=47puM7envmbLsBYn4NN2JvYgQw7NFohb4tsZxNlNnyg=; b=RTpdhXZTjVWLDB8lurIrH8ab0XBSbyN768k/iFNEX4idG4c9Edl7MpzATaOqfyXJKd IrQ6SiLt6kPxABH6Ssk61rg6tJDItE4vUICBt+P8t2ywxSfp9j6tDzpRgeuzVIS/Xtym wEpPx8ZDjX6VyFXSh9BmLUdvw9keLdIEkBCemTKVz6oO175YLbrEUKslUIEjigz1xU4L rf0wt1xVzGThDo1G0k47sDQQw2+aWyVWqN+GXfeNWn/CrgsDIfz7iyXXUZc5dWbpsJQ9 /eFSEgXBJyEY+YXNi2EqalkWcNnTOWSOJyTHfg1xCv9R4VpeHzgwHvQdZAOgoUB+bPPG x/ng== X-Gm-Message-State: AFq9FYIoJ1wmPRIGonSBljVlxtAo8YhUeh5t90wRAnVvi+IfFjhVwVi9 PnEuPLdusfAKo53F5SE+S0NL2anePcSzrPTjNnmpca+Uv1K5OMHyFvwivMI2ghkU+c1/mIYAno/ ssp40 X-Gm-Gg: AYBFou2STB3Eh9vwQTQPVEmQ12k/YKfEgSFv6vAk936wNPSckbXvbgG/9YvvMllMYs/ uymhW0YxX0TE1Wql6uhM7BTJJ7pVGa5qMp/upGbKrUNyHlzX2j3WCqyJiy9PAGINAJm3pbqWp0T PLg81PirBbPSX+Cl5beUSOKdSRyFZjOpzzKhqe/AeO+5ECiIjf1XPPAKexmsX09qmx29sQmeENJ o45RXU9SKLvUTwJWOpAvYldK2y/c/K4oBU3CX3rdybXfdqetOl1mqcdOQMr8NcuCx4/z+pbtuSy 95eTgX2Nr42birEALs+3lGUsZPj/CaUfj1bSRdSqpEe8WnMnBbSuTBn/MKcJun4cTD3C0ZSSdA2 XGiQWgLSUPcQgLWn6cniUv3chnR6Y9JgaVYh4mIfVs20W6bu6C43BnKgAiCMUIib719scxF/wxF lgc6v8mMnWfCfifmCwGpSppYCmsySSiU3S3bki9g5nFIxtk3WmOyvZRIhSqBUGtsfZpG/wPe3uG y8XpyvfLLXqdq69wezKS3rkSUnhYjh7Yvy9Wtcw X-Received: by 2002:a17:90a:10c1:b0:3a0:a18e:bc9f with SMTP id 98e67ed59e1d1-3a0a18ecca5mr5438860a91.40.1790499618859; Sun, 27 Sep 2026 02:00:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 006/101] tcg: Use QEMU_ALIAS to define most tcg_gen_*_ptr Date: Sun, 27 Sep 2026 01:58:36 -0700 Message-ID: <20260927090011.10724-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499692164158500 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 Sun Oct 25 09:31: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=1790499712; cv=none; d=zohomail.com; s=zohoarc; b=liFDRa/NsRGNHlSKO/84zDCs21EsBg8Y3wjmzIfvc8fFlLCNWBjFo74bofgCjeJIyPv/Qi8deTYmbtJX+hgyTmiPPZcUjgz9HoHgDzMcrpDuegSL3OfGMnc1dtUtwvV+aEQ9lXbrhjxMKegpY79N7dd8ZvDw6u+TTyB0lbRE5YY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499712; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EyvfVIpbqiYFMjTw3EigaFciwRRnh2+tfSMPM9zFtlc=; b=mhvACnzIrA0TGTznxqGSwsZSy0wkonBM6DbSTGCPmXnTbpuSSTo1ft4YxOoq5kFZstOy6q6vVAnarNqCWTccP5BrxEOwEYsWMbL7vSq7aEVV1W7qO1MJvPc87iph9QD5Oh/6sjsUtzj0iMo/6WWDwFcvNXr1f/givEkdpkurRP0= 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 1790499712294743.9822227535303; Sun, 27 Sep 2026 02:01:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkN-0002TB-Uh; Sun, 27 Sep 2026 05:00: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 1xAkkC-0002Q0-AZ for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkA-0007Or-Q9 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:24 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a2adb9bc3cso142380a91.2 for ; Sun, 27 Sep 2026 02:00:20 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499620; x=1791104420; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=EyvfVIpbqiYFMjTw3EigaFciwRRnh2+tfSMPM9zFtlc=; b=mnQV393IWI6oCYmPLU8ZBqzBzZiHS3Za16xfL42WE65WXA80/os4mSFGlzVwRjD0xr 6fAYz7AQ7y1i0/eoXHW/8wbfI/vjE3yipMITtbVLxb9H9XrIddzUZh9+Frac9X8YdIC5 o3o6f5f/Honwd0tc0FgYceZ0jm5B3v3dzMKXnmKR0bsFJtuVhePX7l+hQdh3yfOaqDzb Fgh5xt77PxbUYmlfQKbabkCk02vmc8zo8wQxrI4rHFN8B8hbR5/nqNVEEkzdVRRIiGvl MysGWcGJFHV6TtfZnsTW609flzYYl0GuJfpJCTEitMfZdUfTXm4q0P7iR89jUVWXBXe3 pNwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499620; x=1791104420; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=EyvfVIpbqiYFMjTw3EigaFciwRRnh2+tfSMPM9zFtlc=; b=0pWBPSh9dDZ/ogwZ2niSGeIpZPiJqDyUsNwPBy3Vz/9aXAcMj0/5D546NUl/wirc/J j0+DZlpVVxeRCEobFnnfufTiS+e7yYr2IpGRyFQJJkXXiFNj8pWAnoMOzNSgRlyLw5Zy 3mKiwstvcQor/a9CIy3M+PCguoaW2pLUslODJXPCP2Pv58KNvL40XymnxLgh9RC2bx5q t0orWasJ5b5E5Pklbuh5Jc7T0s8fvSWf+nb1ClctxPSiFz1f2lnlrSFKk7r7uUCAddGf UvCXCrTw62Km9PfjR5nD6WoBqaGshr6k+g8uN5iqsmcLrvKeWErGxTIT0U/Aa88myH41 nXDA== X-Gm-Message-State: AFq9FYK5K6dlYMQLEoR7JWBTG2am1V+Mg6l4pa6VE2bA/0ESC5AtexYD M6qcWJeTWYlZBW4HNBt/3p5IuUTAYAgMNwR34E7TVB5aPAIOSbLAPnyUExdXU7J5U/Z5tx0xG42 rNGzf X-Gm-Gg: AYBFou3fDuSxdQfm5XT780fBUa7koWDEtjZu9yNqpt0zJdPoj/eUEgV5zuGMkPpBv22 PdxrZNrXQEzxpZ7ixlS8WMCLKRKsPEoE3RC9V4Yc6NnA9JGilC5mdA/Iiz5wPOHgi/w8R393Umd WmY2W+5W8WAO+/0qY7LAmWTZG9zA5VGkED9vy02Bk1gQc61yWwQLn2lbOKiI9RdU4wlUCgyvNCc MJPzVI+NyMwNTZIbvaSnKXjWjGf8Gg8YyPp7qiAQITp1+v3IwoOVETR1LjFq2xl3ej1DExiUPPi tLHM/NF7kHGb9cE3hIWW/yV78O7SCNfRy0b3Bt4vNjQmD/mvCn5/S0edjw6Em6ctS3wsasGDl20 8yL1Geb2qyNZBtrSQox5uZNa/2LzevfRFpoEfZ+IOJognBia1c0zOUmwqJOT4cAy2jEN6zCiE6L i9LALon6qS1rIFOtzj8M9rymYAkHG1igzv2hFDoiu5eYJFEiRoIABtko/gkf88amdTDbvZfuqqQ EbRaUxJOTb4yC7e8aqU2fO9d8XD1A== X-Received: by 2002:a17:90b:3c87:b0:39e:6c68:1556 with SMTP id 98e67ed59e1d1-3a098aab6b9mr6941718a91.30.1790499619770; Sun, 27 Sep 2026 02:00:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 007/101] tcg: Use QEMU_*_NONULL with all tcg_gen_*_ptr Date: Sun, 27 Sep 2026 01:58:37 -0700 Message-ID: <20260927090011.10724-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499714297158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 Sun Oct 25 09:31: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=1790499770; cv=none; d=zohomail.com; s=zohoarc; b=Q2yc0ltSS4X0utooJU5UAwza5HK1gCDU9OkMtLq8V4+fKniu9RkHjgAYm6GKyCCwQjmGPWyhReQMXvK+s3OX/9hhLvkV06Zu7vB0lZy148ltvWfbkgyzcRvTFP/Fn1IoFgLxChrGokRERkWQ58AIPv8R1xrd1XZ78fURxkCkKJQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499770; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1Sr+K96+xI+B2pMxR34wWsKT2YCMzZp1diez6d83aOk=; b=Ap6REVbfCkcG3lVYU7YfgmGCjg/7EhQRZGWjACksHvA0w1LvxoUxmoAg1nhq7cUhCfVVMFdD1yrXJIJsIdIrw5ugBSHzD1u7wfe9uCNaMRAwBVcvkaEdQx7Mu9mmL7+E5Q+PuugilXVe0b7aeAFz2P1EwZvaBG9BgU0aDob5DN0= 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 1790499770906790.4467221571746; Sun, 27 Sep 2026 02:02:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkc-0002V7-0j; Sun, 27 Sep 2026 05:00: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 1xAkkC-0002Q1-Aq for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -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 1xAkkA-0007Oz-Qt for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:24 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccafb751so1005735a91.2 for ; Sun, 27 Sep 2026 02:00:21 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499621; x=1791104421; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=1Sr+K96+xI+B2pMxR34wWsKT2YCMzZp1diez6d83aOk=; b=iNMQry+E4yGFaQ7fSE3scrP35zybY1Pqew8yDZmmeZisu4N21HNkes7eXmxCFt/YMU D+zAs4olT7RyDWVhdjlDPw3FZyLMri43z/jfWTiz8p5SNrq+/DmFSaEf6PLtm4yAcXYd WlYHztt5YsVvQPqoWTRG5sxUwGLxXdJzbxqrjh9xgRdvLO7jCnQaJi+6LJcviXQ1QJk2 6v0U6x3LJQlDJRKN8+V7tnHpDNVzmyyFcH/yYWhpu+H3z7kKp0e/P6e0u8Q9h468UamP 4SdqypDEjWWmpxu6a5A+rasIuq3OKzoe6iZiNbkIZKBuKCmNOMO8mmlaJN8FMXMaswMz H+ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499621; x=1791104421; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=1Sr+K96+xI+B2pMxR34wWsKT2YCMzZp1diez6d83aOk=; b=rDYka2qtqGYFne2QXbplHbNSgojmuS6iJwFPcBfZ3wl1vDTIU2QQBpYfoWIt0zZtRc kslbiFAdt+WKa2da2d28xgSsMUTeuqaaupYngGnazctoz0js3YuzPVBPaJN7VJ75ALQn S4DQxEdQ5NmYc/BFjcT9k4ACl7ffiD5iZaeXkQOQkiTW1QgrLGT8IvknecB7HVyvXPGn SlJnHgRIl2OwFhWg0pqd9I5QYA2A62ZJSSaL6TmwRMKA1i6tZDp9GRGZE1hgAkRA9kev VnM3S/tPS/oKomYw+1FZlU0tbgTVLSmrUz1UpnEpkp8/51C/2tOZ6fqh0D46kgF4GvLM 0yDA== X-Gm-Message-State: AFq9FYKvFT0QRBolSFzvagKSeadiClRMCzzFXCl/XAGin89vmokNfRBi 6+NOTwRp6FpW3hlKPIhpyUiUq9vPc5U1TIo/yjsC3q0grTIUC9RRPvxlAF1bVi0HZCy83k0OJPE YM6NT X-Gm-Gg: AYBFou1Ul8CTCc4zS094D5EkzAgmL/GMof9VNjuX/tcORqZZPYp8cETr/1qMckpY6KN H+MFEa1ufnsY20rybhD78KBtiTfP82gBb8UowspRoG3zt9+vcQ96PdHcJVOB0TkGZoRfWGFsf5k +MsTBLRyukK4uxyVArwXRkCtqJk5PD5n7TlXUh9oGtswtg5F9dDVEu6sn1jebPdLzDsu/NYzhD2 C69ouSSYjkJEbnNFQ2kmoAO6DFr6XOnKq6V48aabg/xp25dU6dlVRxL7u5/tqGgU0qNRTZc1hz4 0fOOnu/myjr71PTR+4SnLIlJtzpCZUe0xO5Ej9HxTILECLjdHIgpJrr3z+VOFVfknl9pO1x3TxG GHirCZR6AHhhAHU2JN3WVpaC71+nMiX7kh9zEFkw9zMYTTq2fqGI2ishMk/urSEQ7vyXEmI5BzY FD3TXmIbPHeLI/wbI0u+QDrRdKOYMixpKnTiesJg+r5h877GAfxQN6V7rgXEPjIxdw7+xxyDLAz FjaRwYITc9q7vSm9UdReQmYKO4+qA== X-Received: by 2002:a17:90b:5686:b0:3a2:b04e:8085 with SMTP id 98e67ed59e1d1-3a2b04e839fmr401585a91.43.1790499620518; Sun, 27 Sep 2026 02:00:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 008/101] tcg: Prepare for easy temp lifetimes Date: Sun, 27 Sep 2026 01:58:38 -0700 Message-ID: <20260927090011.10724-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499772431158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-temp-internal.h | 2 ++ tcg/tcg-internal.h | 5 +++++ tcg/tcg.c | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/include/tcg/tcg-temp-internal.h b/include/tcg/tcg-temp-interna= l.h index 98f91e68b70..932ad1aeebe 100644 --- a/include/tcg/tcg-temp-internal.h +++ b/include/tcg/tcg-temp-internal.h @@ -31,6 +31,8 @@ =20 void tcg_temp_free_internal(TCGTemp *); =20 +G_DEFINE_AUTOPTR_CLEANUP_FUNC(TCGTemp, tcg_temp_free_internal) + void tcg_temp_free_i32(TCGv_i32 arg); void tcg_temp_free_i64(TCGv_i64 arg); void tcg_temp_free_i128(TCGv_i128 arg); diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h index 2620c23b448..d480d10878c 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -74,6 +74,11 @@ bool tcg_target_has_memory_bswap(MemOp memop); =20 QEMU_RET_NONNULL TCGTemp *tcg_temp_new_internal(TCGType type, TCGTempKind = kind); =20 +static inline TCGTemp *tcg_temp_new_ebb(TCGType type) +{ + return tcg_temp_new_internal(type, TEMP_EBB); +} + /* * Locate or create a read-only temporary that is a constant. * This kind of temporary need not be freed, but for convenience diff --git a/tcg/tcg.c b/tcg/tcg.c index ecc1f54c1bf..9f2f929e273 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2201,6 +2201,10 @@ void tcg_temp_free_internal(TCGTemp *ts) { TCGContext *s =3D tcg_ctx; =20 + if (ts =3D=3D NULL) { + return; + } + switch (ts->kind) { case TEMP_CONST: case TEMP_TB: --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790499800; cv=none; d=zohomail.com; s=zohoarc; b=Eov2wDS2tW++y+LmGFDl1lsc1zIIwtBz6NPJVsJVP836nYf6kJEigib2JBFVKukL/6dhdppsQMtsl/LJedhws6r365qWrx9UAzUV3aO1vpSTdU1TSzsMuzBgnNmbtkxmTDJx4Zqaefj6AwzlVVGOO6oBF47E0/QWk4YB5T214Kk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499800; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PXtUJ/PcQdH5xvfN08yQNJYMpfNvokq/uCqteWubVwk=; b=GOa03KDj4KIAaTHv5NRNtlM1fO9wufltrjMhlZu+3O+EUzGOab+04ev7ORgfHNmSYNBISGO9yCy6uxIm7TzM41QCISLFqnKsuPzY2aDx5YqMo13Ao2yHvfkoQVdjImgkfh0kNYy9OdcBAtOCfNBvIaCVBPFyCrAeVdv/zVTaYeU= 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 1790499800505251.90969262756653; Sun, 27 Sep 2026 02:03:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkI-0002SZ-6u; Sun, 27 Sep 2026 05:00: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 1xAkkD-0002Q8-UB for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkB-0007P4-7D for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:25 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0aa9d356eso1721408a91.0 for ; Sun, 27 Sep 2026 02:00:22 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499622; x=1791104422; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=PXtUJ/PcQdH5xvfN08yQNJYMpfNvokq/uCqteWubVwk=; b=kNeaG+e/Pu1p5rpu5BfsEIA6vN7xoF2JnhxfqqsQgbPfMbKJxx6CYwnXrDVPiDUUHD x9brY4FEPo2kRJ8ISnP+p14N5D/J/TjHNiOTPvlhRagxxTRaQoGRnTpBi3CgOFYp+zC1 W0UuYke++3QBYuGsukZsMH3EdzYBH5O27kKtFFF4FYIv4WFAPN5U+Su+wcd5XpEUykH7 tNA1nlzok4KVuCel7qBvJpYG6FGzjUSBKlIETxNR3vsfMSr6HmhmnGF3sZlspq1+pD+j b7stx/2Lqq/G/1x4XGxQzCCwL1+3NzFfaWPo7DS2q0wQSKlt0H1GF5VPiedRMyxyPJ7j kL/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499622; x=1791104422; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=PXtUJ/PcQdH5xvfN08yQNJYMpfNvokq/uCqteWubVwk=; b=cQFMfOEN6VfNjo4d15Z49L83x7b3X3BKiuwLUQQQ7ZN21xohZC4cVEjixirTMRx8Pr v8qtaO5Mu+6pOtNgZNShbcY2RN7sPmVTTkhhV197sGgtAkm29+dE8YYTpJghHMXAlfSS 0tW3WftIJ0VN/JJ1GhX3HmKsrjMqHtu+2H3y6hCcKjvDGVT5UEszTYm+5m6aVkAimJdM Jpubpwg6fzcXeNP59iZizQpa8cnXNo1jRbKkBkgspFf9yeACoZfF0/cPwUG5qB1rec5x EGphX0M48rs5i92s/6Af5253EoNpWLAVcs37iYoIZWmwsE3OQyAEFUeLIMUrnkzzPU67 CAFg== X-Gm-Message-State: AFq9FYJqVnepkU8R6opcn3/ciqw6ydo75B2B69BZRXVkzGXS0eLr1DKV 4rtL42NHni4FNTdYd33zxDaj9FzSPDl5I6WuTPhqRHBLQQk8Y4vdiEktvjXVwGHgUFd9hVGRpL3 er837 X-Gm-Gg: AYBFou0LK/K3+2lMmKra5Gkp3b49pi1j2iofAAgFtj9pLrVUWwxdwWE1LsVe4ckNXxT TKnV4dY2Af9CxXfRgdx1aXS0OH49+1JhlO5EWBcQW2ZdGe3OPvuLbH7tTk/91QvTMC612+VKPTd dRBE5YFIi4b5pHQITQCMx0u4RIRF4QpoCKLYrVQjBZoMn0uyeCooCMaqtinpmDovbPBRn3gDSl+ TazD+rMEd1GxTPc53L6OU+Ed8nU1IJC4Xb3UYqWCA6nu1i94+JXm4cTD1e8FpWQaMIeUjKh2uuf ukMWaW0L8QXbFC1pPyGe2Heee9Wd6gxYMiuMrKvdQiEWg2Nn8owE1xdTDbJnBRGkL1YcP19FMp0 0AeJs+0CT1z7FTmD0ifuDQW7EFLZdl1zdpCmNomcb/i1ZXJUE4WYtpO4nv3XlNO6w82mxE8yGC/ KwVe0lWnj8LDsUp1Xk7RrQpVRwa8YwnDaewxyTQFgek7EFBSvnmF57gESXZslDzPmnn2gWuqNMU k16FN4/Klu7ID6hYH+DThmWxMvIwg== X-Received: by 2002:a17:90b:4a12:b0:3a0:e5ed:ef97 with SMTP id 98e67ed59e1d1-3a0e5edf01cmr2888871a91.49.1790499621603; Sun, 27 Sep 2026 02:00:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 009/101] tcg: Generic expansion of tcg_gen_mov_* Date: Sun, 27 Sep 2026 01:58:39 -0700 Message-ID: <20260927090011.10724-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499802534158500 Content-Type: text/plain; charset="utf-8" Begin sharing code in the expansion of operations for various TCG types. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 29 +++++++++++++-- tcg/tcg-internal.h | 23 ++++++++++++ include/tcg/tcg-op-def.h.inc | 4 +++ tcg/tcg-op.c | 69 ++++++++++++++++++++++++++++-------- 4 files changed, 109 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..eba3ad4f93c 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index d480d10878c..3568157ebb5 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -102,6 +102,12 @@ void vec_gen_4(TCGOpcode, TCGType, unsigned, TCGArg, T= CGArg, 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 +static inline void tcg_gen_op_tt(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1) +{ + tcg_gen_op2(opc, type, temp_arg(t0), temp_arg(t1)); +} + QEMU_RET_ARG_NONNULL TCGOp *tcg_op_insert_before(TCGContext *s, TCGOp *op, TCGOpcode, TCGType, unsigned nargs); @@ -114,4 +120,21 @@ TCGOp *tcg_op_insert_after(TCGContext *s, TCGOp *op, */ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_target_ulong imm); =20 +/* + * Declarations of templated TCGv_i32 and TCGv_i64 operations. + */ + +#define DEF2(NAME, T1, T2) \ + QEMU_ARG_NONNULL void glue(tcg_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 + #endif /* TCG_INTERNAL_H */ diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc new file mode 100644 index 00000000000..c76e83396ae --- /dev/null +++ b/include/tcg/tcg-op-def.h.inc @@ -0,0 +1,4 @@ +/* SPDX-License-Identifier: MIT */ +/* Templated TCGv_i32 and TCGv_i64 operations */ + +DEF2(mov, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index b738863ea69..77ed34fcb8f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -315,6 +315,61 @@ 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 +/* + * Templated TCGv_i32 and TCGv_i64 operations. + */ + +#define DEF2(NAME, T1, T2) \ + void glue(glue(tcg_gen_,NAME),TExt)(T1 a, T2 b) \ + { tcg_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. + */ + +void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (src !=3D dst) { + tcg_gen_op_tt(INDEX_op_mov, type, dst, src); + } +} + /* 32 bit ops */ =20 void tcg_gen_discard_i32(TCGv_i32 arg) @@ -322,13 +377,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 +1444,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 Sun Oct 25 09:31: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=1790499689; cv=none; d=zohomail.com; s=zohoarc; b=DGQO1v7nYGKTv20PH0lGNGd1CfpHu50zICuULChEDF7q8/uNbmpP2bCeqOjiwduQSLMUFfi/13dVqgWKUH0641Wm/bK1wRJBzJ5OI2B5nWO9StjLMtJR5PwCCP1RAZiGdUNgTNt+J3z+CT81xnCf8ltdw9BPEB53MFfPfFKe8ho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499689; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5nSUdvxykPOFbqE6Asna+l95QbCbv3T9sDSXoohfncA=; b=nmDAj8AAFxg/esmTXW41BqUciLuFD0kSW8vn2LuKgzqeWpt2pMtYzaYQ+MJUHA1UQVNymXp7FxVVvqaLZP7mfHqpPr1jXrtPfcvsmlSKbwI7d0l7+O8kjNzYtPIeaSUEo8qimCgwZqLnJkn51w8kBrwvA8oazFWXHMfyTj9MEEM= 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 1790499689543608.8648203846275; Sun, 27 Sep 2026 02:01:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkJ-0002Sh-2p; Sun, 27 Sep 2026 05:00:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkkD-0002Q7-KX for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkB-0007PH-Vz for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:25 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2dfa54c8ccfso6165815ad.0 for ; Sun, 27 Sep 2026 02:00:23 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499622; x=1791104422; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5nSUdvxykPOFbqE6Asna+l95QbCbv3T9sDSXoohfncA=; b=XN6ViiLVIeXwY7oHM8lz0/Q32bNyxzpFzOAFlr0K8uqEs2pcHaVBmoIMwB7K1vjxkl DD9VvK/rEUmvaucIjI4BGLYnAYMwYvHKkVx3VLLDcsi7en+7xNSrbHWoyt4tznQq2ry6 mBMJdWTZ0t50aZokd92xCrUrIGuAUs9jz5YYqO8t1/NbyGkFymgxzMzEBXDePAsi5DBN mI1ANnSNLvWQUe+sJo2zy4CN2l8x1Uki+2xRdsmRr4m5hs8AJySwYrSqiMbZndkmUfF7 aZcsTO81z/NX5ch85f+hxQ+h+okiV3WGm509NT/AHNQjq/Qm51Mpr1U6cWA6j/OVeE3B hqXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499622; x=1791104422; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=5nSUdvxykPOFbqE6Asna+l95QbCbv3T9sDSXoohfncA=; b=jqiXO1MLuKbsKYH3zxBhqYbMS5L+UDh281sOD2PzukhHR8664sStwbxWV5VI4F+JSe 5Duc0JVJ0WTQ31QxisK3W8zC1pxzI6ZaTfV3u/k/4Uou1/hDeyj5bpiVUJK7pW3ZzCDO xPVHvXDE9mIqsARM7CaPMAWU81fJ/FhQsrpsFV01xx4X1Jwm42Z2r+dGQK8AWxDNBglH IpY3jx0KSN9l9G9VPGl0TwRr+ZAacVofyEuDl66EuvreYXSuozvZSNaWMDD1gg8en/UW ZJ+KtRIZgcn4yz2mxj+88WYRqfOPBPGeudlGzabsWwc08UVepRIq1zADtP4HgNgnjW3G vhqw== X-Gm-Message-State: AFq9FYI2oiblCi5LyM3bqmMGMVLFhImvxLxQVf6hpOap6cRk19bF3xnE kqQV+GWNwkiMclSskQCPEYw3wXnmI6VHlPCjh7fQkxl77oYlQ3ZXV/ZrsQH8wOr1B1jVwqp+k1K 2g9o+ X-Gm-Gg: AYBFou0ZaLuwmaOuHDx3xqwByt/g3S3wdCEYRi/Qir3E3CJi0zaFHZ2NEW7zXIs+Y7O xaR1c/LvmaJNelx/Fts6o+nmefjcuyVdjswiDAJ/h4qZlrocZS+aRx4X25KdJtutaUq9r2hGknZ NH0c+5TrJwt80Nzh3q5urRfIsWfiQcN1w3gMRkfR1ZQiwyrxw9AsTkeSKiatwfjCTmA3Y5UIco/ iBJwMxai/7FFqYkUVuosIzin+M4gjqhiKnFCeE3+adGw5e2EVqY4Atj+dFa+yRQj0qkDxvTJLn6 z+F9p3K2OJQ05jwQlhq5+XQBe05UwkgUZhDkn1RUeyfMcJR5Q7E3ByU6X5ykt3Yl1Tj02GkFkub Vtm5B5xL9qIEf1SU04++Gbaj/qR7eoV6UZnXD+6AeorU8joq72c2hOcY7sUYMbWdx9iAYOEE6K3 OFTEi9yGCvxH3rYZ1YJ0nOOO2r9/3ddx08ZH2uaHUUQKEsiljONBy4SJVwUFQEpj26m554j97K+ 8bGqy/oj3yFI0s/brqj06zOokxg+g== X-Received: by 2002:a17:90b:4e8e:b0:39e:39a0:b5b3 with SMTP id 98e67ed59e1d1-3a09860fe10mr6692918a91.1.1790499622341; Sun, 27 Sep 2026 02:00:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 010/101] tcg: Generic expansion of tcg_gen_movi_* Date: Sun, 27 Sep 2026 01:58:40 -0700 Message-ID: <20260927090011.10724-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.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: 1790499690270158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 eba3ad4f93c..55571653c7b 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 c76e83396ae..e55a9f99939 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -2,3 +2,4 @@ /* Templated TCGv_i32 and TCGv_i64 operations */ =20 DEF2(mov, TCGV, TCGV) +DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 77ed34fcb8f..b2fa509cd1f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -370,6 +370,11 @@ void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *= src) } } =20 +void tcg_gen_movi(TCGType type, TCGTemp *dst, int64_t src) +{ + tcg_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) @@ -377,11 +382,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); @@ -1444,11 +1444,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 Sun Oct 25 09:31: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=1790499806; cv=none; d=zohomail.com; s=zohoarc; b=EHMBLhHBrzWuogAtADxcwvsEiVivCP98/okyTtSaYFlEY98qWdB1F1hBLdIip069UJjSV381EyZ6GfA6vkSTgLR2qU4XE+Zr4Q+SQDn8jiB9LEt/WPqkc9ZGB3Ygfrk7lmapjVPsL29wepEbWjhJlRmw+llFwOGLGi4sck1lPnw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499806; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=t5FzK+7INxe+RKJnRcyyoVc5J2/mk3frDK+bALedL1I=; b=WGEC7XEOuPMnqQKXXkwN1OR9x38IOmCRLXz2gtwSBb1H0pqvwjBoGMLnC+WnDGyo0suCdaEWI9hj5e3Pt6mqiDn3MV2R3rvMXoDo62EhDG16etY/1rjYJtHiMoh5/e+opCawuiGpl9BZ4Bj9aGAHhRfMYfEC0Zx8KmpywPpERnI= 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 1790499806023587.4424236081106; Sun, 27 Sep 2026 02:03:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklO-0003jw-85; Sun, 27 Sep 2026 05:01: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 1xAkkE-0002Q9-KB for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -0400 Received: from mail-pj2-x0e.google.com ([2607:f8b0:4864:39::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkC-0007PN-Ln for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:26 -0400 Received: by mail-pj2-x0e.google.com with SMTP id 98e67ed59e1d1-396ccda24afso1119846a91.3 for ; Sun, 27 Sep 2026 02:00:24 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499623; x=1791104423; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=t5FzK+7INxe+RKJnRcyyoVc5J2/mk3frDK+bALedL1I=; b=IyVy1WJvfPpw2A5ygpTlX84zL+MyMsXcOtEqK+cwKEEl9PTfDpupaz/pQ2MK4JLxDg /oCqrIYwhKJGZqYo4IZd7g08yrsEjQkXDpqqDKDSEkb062i3EYD4BGdZ2RlfIf8kztIV Vfs8F+IjiAxN9ROGvqmGubpPNSZupHAUgW8j7w2OC14b+QT8FcYu4m6lHzR5W0t7awiq 7tgg+bb1NKfrMOSxVyLS3VegjYf31KpnZ/P0d4DyjJOt/mSmcxLoMUvJSAMQGKzdwFjg 6yDWY/Tb1QZ2vSVCCTSXgDlKmtTkswrvCuUiuaRg+BNg6iOWWztF1Dv1e/eazkD4pM/P L2iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499623; x=1791104423; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=t5FzK+7INxe+RKJnRcyyoVc5J2/mk3frDK+bALedL1I=; b=wnjO8WlgaBpYRF9zR9FgUF0a/cABt9NJ0XNMQ+HdCo8zbzAF7Yc1VgVrNOLnZKlre6 3DLJZKm7v4uINGszaw5paFLh/G70oJOTrI0RQEZMlgjzVQZ2ZYBBvx4qR/mZ4WF93MIj pBVMa1bj6yZutx1OL1nyUfcdyqYNJQTBg1rtDdnAC+0ZJ6ayBL8F76/cPr1PabylgZBk sCTtQpZxzYpwx/SxbdFa5J5B++iyDQbnmlrCvOVqabUYsYC1I1Q4y/MLc5WsUaxM8FT3 p1nwZC/TdQ30ajsAyEIoILkjA0fcD5wyV97BPRw3nhrzDC8NB3Rp7cMU/1FYo1/Kr/g+ /Vzg== X-Gm-Message-State: AFq9FYJAOS0eYv+pcPtBrtxPXPCX4q+5jjoA+JfpV43ctQLIGhptYEbh 0ZplkT1jzhbMaRCT21MVXjyXEj9aeOgjUvPckWDpQnqmUd7fGQ6GwB1x3NgXkRSLTXIbad0N5Ks H1Vg2 X-Gm-Gg: AYBFou3ITLlVNSwGS1Z9QWKuex/PWwhZRTY92fpY4tjnLNvxQq8TTqpO/obU5xWH8mh 2xWFTXP+xZ3QqLmEi/tW+mjXGJ57WmYSWfYMspSB1of5YkX5RUr8mH22/ecdFE3EyxXPL4dUdHl Y55/IW/OvUA7LU2sQy6VVCYpuvksN8OoczXdlwmLRcwXnbRjDfRpzhwo+0T8PaD2JzZKyIovZxT Ampif7yZ5Qv/AgVanXvEACjxMajWBArcC7dDcS0GnQWnzhpN/hvvcEWQkt0tGOIh3GnU9vWlyzF QkThTJ28UvgIoAQHe5zTuI4iJVcDkF0mas2xbzy//iK2Y+jyHj1qdzikAtgAIJjIPNnOPg+/YSJ FlvTFnHncr9kLmbaWiJhKNfBlBdz7W1lXQKKtxClwveTTqtuL9br+n3YHqAKgixopPFPgUIa58t 0s6N5indtKAkSfa8U5gIJrJ8i7OMnfsF+lhJCCSfhaBtJaKHsB2PtXt5HKVKJ0pceEhDeZsry6Q cqqM7yoe0PGMzaOgYQtZzksONkE3Q== X-Received: by 2002:a17:90b:1d4e:b0:3a0:e247:3ad1 with SMTP id 98e67ed59e1d1-3a0e2474cb8mr2015752a91.38.1790499623115; Sun, 27 Sep 2026 02:00:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 011/101] tcg: Generic expansion of tcg_gen_discard_* Date: Sun, 27 Sep 2026 01:58:41 -0700 Message-ID: <20260927090011.10724-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::e; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499806545158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 6 +++--- tcg/tcg-internal.h | 3 +++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 30 ++++++++++-------------------- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 55571653c7b..1dce1c6809e 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index 3568157ebb5..ed1f5f20f83 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -124,6 +124,8 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); * Declarations of templated TCGv_i32 and TCGv_i64 operations. */ =20 +#define DEF1(NAME, T1) \ + QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1); #define DEF2(NAME, T1, T2) \ QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2); =20 @@ -135,6 +137,7 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); #undef TINT #undef TCGV =20 +#undef DEF1 #undef DEF2 =20 #endif /* TCG_INTERNAL_H */ diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index e55a9f99939..8c61a75cd09 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 */ /* Templated TCGv_i32 and TCGv_i64 operations */ =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 b2fa509cd1f..046b10962fe 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -114,16 +114,6 @@ TCGOp * NI tcg_gen_op6(TCGOpcode opc, TCGType type, TC= GArg a1, TCGArg a2, # 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); @@ -319,6 +309,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) * Templated TCGv_i32 and TCGv_i64 operations. */ =20 +#define DEF1(NAME, T1) \ + void glue(glue(tcg_gen_,NAME),TExt)(T1 a) \ + { tcg_gen_##NAME(TYPE, glue(C_,T1)(a)); } + #define DEF2(NAME, T1, T2) \ void glue(glue(tcg_gen_,NAME),TExt)(T1 a, T2 b) \ { tcg_gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b)); } @@ -355,6 +349,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 /* @@ -363,6 +358,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) * are of the proper type. */ =20 +void tcg_gen_discard(TCGType type, TCGTemp *src) +{ + tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -377,11 +377,6 @@ void tcg_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); @@ -1439,11 +1434,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 Sun Oct 25 09:31: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=1790499680; cv=none; d=zohomail.com; s=zohoarc; b=c2Fxkcnx/ShiqEuy51tqNJXATy5KBccnHWjmOrRHeOemHxFvX4RRfe6rcNLzQPb7siNIAgMIM0sBGUi3B5I3LfACuLkXmCbqAH7+TgbUU9MosRgeHSlc1i4SolbjIEo/kkcm/28wkiBsG7ecSVmBf1vWuIjAEOiFttAu844UQg4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499680; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pvuLXwE5a9Zgkb2rfjKlm7ILvnGmo1Tkfq5CSpSi57s=; b=L4TSXe/fb/AEjH6VexrzLf4zPrOyHTC5mjt8CttBIvO2vO80yFsOcCL1o39QExxH48DdY7d8dz+pDmFiXmeX623QrbaSRJ6rHKfq5YObhzNTOZX5sET0OWE94mpnZSdbskpkhzp3YiCoNz7l3KYbG9uzWFlecr4OshGizV/tUzQ= 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 1790499680391141.62771065590334; Sun, 27 Sep 2026 02:01:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkT-0002Un-L7; Sun, 27 Sep 2026 05:00: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 1xAkkF-0002QD-Ep for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -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 1xAkkD-0007Pb-8R for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:26 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccd4f99dso1413470a91.2 for ; Sun, 27 Sep 2026 02:00:24 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499624; x=1791104424; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=pvuLXwE5a9Zgkb2rfjKlm7ILvnGmo1Tkfq5CSpSi57s=; b=K4zHf4ZyetDz49UZjxUoWBCmvYKSrmMQ1gnWMLx5N3iepFqDBm2kaKV+NjaeagvHU+ J8nSutIFxiV42AihHst+E1xqAoSZOnOaxr0RNVRJJCi8o6KYV3SMzq9J9KYZ09zPVt0j YVvPo5u0OcV8TOLbtvaSag5zQahaRFLnK0BVKPNBPm9NKkjXQzJD+kbqlqNqnNkz5y1f UclTfnjCJwXQ20Xls+4pOEIhkiI9GWbzifGRwU2uFZwDPEtGw/jQP23jwQRyDpreQGe0 afS7hZg6pZkvJQSpLrCi0uyKJBaiyLPNEG+FbVRIwRdUwwSOKahn0uQvtpKTD1eEYEkZ xfNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499624; x=1791104424; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=pvuLXwE5a9Zgkb2rfjKlm7ILvnGmo1Tkfq5CSpSi57s=; b=cLWifVyWWQoGERFcaJjaFBp4VV1iqcW9hNf7wHJfSpQe5Vqk1dtQG1hlZMa6eBgGPc ZkSbZ2Y1klKWgqRIAdYaymKCjMNlF91PlLrCeiumNjqSgcskQjXzJWgIP6aJ/PPTdEaj KqFwnCdnX7WDb5cvdHZzvUpZGK2CqWBrvzX4CD30NKcBk9Ol44WgBLTz+4jAN/+BDUQ7 2qg1bFVYUkXN4n7qlZ3Z5X0rzFyFF3nrdMQ/cl9Y9BN26op80t2vuXOZgw0DXznCi6E/ s9bl725S/wK4GsYbbOHU51ZRplRVzk6lddyK7XHmV8m5RO12fi98tcTZhP6QLETyaOpt XpnQ== X-Gm-Message-State: AFq9FYLYcjHTzdJ1gWo5XCadqxEEwCZJVXTTKINmIQNY+838gliSHQUB lKCYqIjR8fKsPGa9Nj6wLnAkT71iXADhFZyTPRZDKR3+EigDyMf76ymYJ6CWbf9GnazxCagHAWt GbkKI X-Gm-Gg: AYBFou2UgN/E5Tyaxq8cULtLF3+BWSO/Pg9My5/smjAOqEkhu4tCFdbseq+mPpmN+um gBsn7SddTUjf/cVi8PMB+hfs/I7oHYlaQ8WcR2ZA2+cOm2EcH4OwiSvWzovIIurc4GdNOtx/mUB 5YaJ9/OiPK8LqdTTSL34Hk31zZcPeLWXvkdKXGYmlyWaw1jB6Jf7mPwaiyzveqssn55cf5savwm 1kVUVjMuvmIFfIhgUmPjOT2GVG43sOdt48CwZV+H9/qAqutZdbj23b3ZFCavnjTB3q62XyE1bBQ 7FMYVH1UrZ5mP6Vvx8OdhxrxP4qucvcMZoXLd9gHjC1wYxJW+dPdHgcxrTLpio/7PfbJRCd0GV/ hjqoWjjXJx95ArFYt51t4wdF9HlsLqcahNMM4xNm2MqYtuOTGVmcSzcg+owyRNfyRTtgR7LlKW3 svfniU0+kKEWn/h0udUJFc959N4N7WoQrOGNGHQoS7B75rGFiPx9WDuWE1sA8wQODtS8thxB6Sj NfF62BULytC38MY3HgFZM+apT1MLg== X-Received: by 2002:a17:90b:4b12:b0:3a0:b959:4479 with SMTP id 98e67ed59e1d1-3a0b959478fmr6403879a91.38.1790499623875; Sun, 27 Sep 2026 02:00:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 012/101] tcg: Generic expansion of tcg_gen_add_* Date: Sun, 27 Sep 2026 01:58:42 -0700 Message-ID: <20260927090011.10724-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499682166158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 5 +++-- tcg/tcg-internal.h | 9 +++++++++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 20 ++++++++++---------- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1dce1c6809e..3d72d338277 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index ed1f5f20f83..0da1a9c440c 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -108,6 +108,12 @@ static inline void tcg_gen_op_tt(TCGOpcode opc, TCGTyp= e type, tcg_gen_op2(opc, type, temp_arg(t0), temp_arg(t1)); } =20 +static inline void tcg_gen_op_ttt(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2) +{ + tcg_gen_op3(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)); +} + QEMU_RET_ARG_NONNULL TCGOp *tcg_op_insert_before(TCGContext *s, TCGOp *op, TCGOpcode, TCGType, unsigned nargs); @@ -128,6 +134,8 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1); #define DEF2(NAME, T1, T2) \ QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2); +#define DEF3(NAME, T1, T2, T3) \ + QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3); =20 #define TCGV TCGTemp * #define TINT int64_t @@ -139,5 +147,6 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); =20 #undef DEF1 #undef DEF2 +#undef DEF3 =20 #endif /* TCG_INTERNAL_H */ diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 8c61a75cd09..73b1ec3d057 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 */ /* Templated TCGv_i32 and TCGv_i64 operations */ =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 046b10962fe..a17a9db8203 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -317,6 +317,10 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) void glue(glue(tcg_gen_,NAME),TExt)(T1 a, T2 b) \ { tcg_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) \ + { tcg_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 @@ -351,6 +355,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. @@ -358,6 +363,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) * are of the proper type. */ =20 +void tcg_gen_add(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + tcg_gen_op_ttt(INDEX_op_add, type, dst, src1, src2); +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -377,11 +387,6 @@ void tcg_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 */ @@ -1489,11 +1494,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 Sun Oct 25 09:31: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=1790499812; cv=none; d=zohomail.com; s=zohoarc; b=VfSVvEySBo9tdZyV4yl6EEUEANpnQM6XTIYcUcTnn0gz7N0uiZDso204Tt3CBQ/tRlby8OmJDJ+2XQUd8ppG2vT/gTuY+3FtaHwa+zuznccqbrgq36dMsroGUKwsN4OSpuVODlWgYDnX3vcp4XOmS6emesVeCyDgKHnfw/YcygI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499812; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=j5SErqkyagdaz++WIy5HouZyxpvggeh5TiOu8wTGHXI=; b=GMG7gKxi+hMpMO0HpJQVVaqPErv+7hRI9+Cv3Jm5hPl14Pg8Q9zd7Vhk7ZvAhm4OMOH3EW92/fB6Dt4l3Ufl9y7ak1kv//5uwqfuFzg3n2FfhZVnVU4FxvV5ZHSXk1o56Y13ChR0GmyRGprkU04N2XNOPsbtuswIkPaRFsl4hSk= 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 179049981265182.66334340011781; Sun, 27 Sep 2026 02:03:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklG-00038A-1q; Sun, 27 Sep 2026 05:01: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 1xAkkF-0002QE-T5 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkE-0007Pi-1l for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:27 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0bcdf41a3so1024478a91.2 for ; Sun, 27 Sep 2026 02:00:25 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499625; x=1791104425; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=j5SErqkyagdaz++WIy5HouZyxpvggeh5TiOu8wTGHXI=; b=et+vtHxMUjAn9vnP6dpKUId6i72a3COVJRJSBImCJEs7OOZDqQyOZr/Oul4dQQJSij Btyz+x3pGcC+bbdq3r2xDLBye/JFfX8Eem6IY85+h1EVInQilYZ1pB9kduvTR1zYHz5O msmjvfGfAmvOKy3HhUokx9bmXrj5c8Sz/qiJmghcpTzND42EqS3mG7IDjahDr6aK3QWm WKBs1LLEi5tAy2iYDyU4e1BOW8jB5FvBBI9ThX5E+lxi15L+ndMssrpHm9jz9+RF+CuA l/hEVyH9EE3Cx2D6xod9AcDAgrHsisqeEp/QscLw4l7K+aDNY66nPWqilRQu0qVr+gAw KhYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499625; x=1791104425; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=j5SErqkyagdaz++WIy5HouZyxpvggeh5TiOu8wTGHXI=; b=aX3Q+U765x+CVrk14OimE2RVzEqWIR75zlQR84ZLyqPKb3NZJDhyjME8x69yd5wWO6 QTad89yh3uAVWUX2l4iuL4GSjRM/4QGHacX8jOWTyBUZdXCozkh0b6OoOxVL9r9N6BR9 Sh9bPskIbI+82j1zdMPPHhKcz4CenpeRH6WSADGnWIlNJTzo8d3kzCL/6Qi9kQHgSClk bk0kitHmfOWchILd7Lit6e8ux46n8mCOpjQANbH+G3Q8H9rr9goGClQsELrJ7/87gAMe r1sDbB9RshE0UWsel9ggfcZElAt3IxXSfiVAX8RF3lICkyeHC9FB7ZwrzHYCJH09UuDO ZjaQ== X-Gm-Message-State: AFq9FYIUsQmL+l0RAWzUbfCF7F9t7a4lOyEKYGHL8rIxFiKBQpe3zD+x 9Lgg9Fsr/V2XBZ3o+DyawFWB7RR+eQRYpr+tZ0HhQ2NfDk9yNlPnAoQnRBhsmPCu+4f8ngu73ba CZp0N X-Gm-Gg: AYBFou3qJT401J6S9zQsyXdCkdkSTcMvZjXlgkIV28vrUjn3YvMxOC2i1/Iej5K9MHF ZVr2ymRFUepCeIBZQhT6/6f1sumyY7AhXjlvvyAuZAYy2NCdDlK+NytY5yjLNHQKoejfzO5Jd0Y BAnATlrtxF2h82d4tcjzM0cq67cMWaUmHTbdl101ZV1Ox9PV9kqo8tIVgMmVc/i/l2ubwVuPCCs sOqW/nhBfJSN/sl/MgmpTBgEb50evFGypPBFwFObqjOanQln8EzEJ4ij+Hwc6e/swcM/H1gZ0BK 6Yj0zM9LWMJ35kHsqfsflFbsZmPnP+Om53rPPvKE4nntR3AvdYe5VZxIx41FidPeqgWKGYt5kRA bcw2f0vdSpL1k5EIM5JVJ6tHTpvfhqD8JN/xXQ7GdoSfpaQNj/CkQ/GbSFXOzpAxJptsEY2jVhX wo0Myvh28uFezPULkt040uzVadEFGAR3y7EISKpfNB9J9uM/PmZePVpiaXJ1ue7OlTtDTHutAvg CoTPTR5o7Sv0Ka5/JxsOT9Fj9nEONE= X-Received: by 2002:a17:90b:164a:b0:3a0:c8b5:ff0d with SMTP id 98e67ed59e1d1-3a0c8b60c53mr4329107a91.12.1790499624563; Sun, 27 Sep 2026 02:00:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 013/101] tcg: Generic expansion of tcg_gen_addi_* Date: Sun, 27 Sep 2026 01:58:43 -0700 Message-ID: <20260927090011.10724-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499814674158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 3d72d338277..db1405f9ebe 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 73b1ec3d057..faa83a09b2a 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -2,6 +2,7 @@ /* Templated TCGv_i32 and TCGv_i64 operations */ =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 a17a9db8203..17fcc889906 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -368,6 +368,15 @@ void tcg_gen_add(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_add, type, dst, src1, src2); } =20 +void tcg_gen_addi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + if (src2 =3D=3D 0) { + tcg_gen_mov(type, dst, src1); + } else { + tcg_gen_add(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -387,16 +396,6 @@ void tcg_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); @@ -1534,16 +1533,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 Sun Oct 25 09:31: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=1790499804; cv=none; d=zohomail.com; s=zohoarc; b=dIlde2iozh+8mX3sqSdrvJMk4Tr615qnnGr4yxeftezwXAY4KACE6zP83JajchvEeD3kJl9VZPL1exM1eCZXgK/2XDDpb5wWA76h9cE7ZBHFJ/zEkM00Mn00IxRQFt+3USMJL92H/r9PmC8mVZOi/ZPLDDLH1x3+W/dCBRNyNhA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499804; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uxr4cxnUZw1Qi8GGvnQgxWaiwI+JjpPSesC8cHfIlmA=; b=G8uzRO+ksqou6HLm6K2Ez6Rp52Uryq7Cl4F6RPKZ79rguZRjWHIX0bCWwJVEvk64B0QUJ1VrbKV4lVj7GwPj/01blLgnhwq2vmFGTyRp20ZTv611QfT3EKNtyyvtYYeo2iOt2rgJxGV02XUR7QQyxcvCnR4Etp9giLb+rNOewxc= 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 179049980458727.34342785385502; Sun, 27 Sep 2026 02:03:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkkf-0002V9-0r; Sun, 27 Sep 2026 05:00: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 1xAkkG-0002R7-N5 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkE-0007Pu-OZ for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0df0bb2d6so606732a91.3 for ; Sun, 27 Sep 2026 02:00:26 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499625; x=1791104425; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=uxr4cxnUZw1Qi8GGvnQgxWaiwI+JjpPSesC8cHfIlmA=; b=DiQaCTGgQqBinp2S8jlPGi6EBve10vnnkoL+raWxhYEkNIJDeJCdxkoptynr8ftAZe pK4Sc+C9CKjuQQxuiDq4lT1kfnvyz2ZiLnrQZiNelD4WOUdOo+h20vTk3nPIJ+ARcKrK UFBdPFnn4ET/5g/3kGFrtF9CgGwtNdiUF81bM3LLzQY6E3RwKViQKYTN0lxGPXYPafuB 9KyGcRWVRxkqeu9UC05Zcbu0Wn83XT7KXIfuXZIFVjqeP4CnS+MkuZ/XXp+fy8Ji6rJk w8GFQK/dyfRSRJyRJ7oOjCCsiskBVhaKJQUICzf3EZNvq3x67TzYjDCI9v7wbNAFj6Ox 3ITw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499625; x=1791104425; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=uxr4cxnUZw1Qi8GGvnQgxWaiwI+JjpPSesC8cHfIlmA=; b=ulK9+JtG/GmW4OikDHZuEIM5QqsuRDYP+zP08RB3hpOjGp+avZI1j6PLBCwvTQMH1m oxwfw2/BmkOvAx7hUQx9h9a8SMwnCpewcytgaMZ4S+t5EDRQMCb/o2gykm8XxN7ugg9F zm7XfbcB/vaSEvE4rcBvfdS9SQXo62fThItXwab/Sc0KreRDp3nA8wFN0EJpAuKCsmkZ 7NeFGiTqGXqdfxecTevsPLrflq9qej/MEAUfTCkl5fNcdRqdIvEEiAYUgaNJfucRzGqu qu/TtOFGxed+5GozyarRLtqdYoQSyWvXhRoD2oh2cHqARjtCHlav+2gnO5J0OWqIfmUe z8bg== X-Gm-Message-State: AFq9FYJjqRj3LMI67XV8ZnE/vSaIUrh28i3d7LkJzvvQT8HR6TRR2U/V //MTOTFIfrhPU1SiIqMe/z7EmE25NxO5IAsDKBp6GqKLGp8nuSe053c4y16CKAHtwSAj+vWOZZE ZZpbc X-Gm-Gg: AYBFou27oRdR2qcGkRpgFEb4nSOtoFnAY+qlEXMsFu/qxldoZhmBt2BBqEN5xSkbPi9 8qEdICBOZ3OjI1U3v+JnFcaSg6an+ZH7RKKft93UpNwbdLmBuvKDRfQUgBUohojMUMsw1iuQIwU L1+uzoGvAlIFbf9L1ECmqY2f+kMb+RdX+98v0th5QdHoetNCUK4DzzS/uHc+iqVf6JguqqcPSrE P38xoENzH/Wjoba6A8xestdoF0eEq6985l26Po8RvRZMNCEO0zXY9ZFkaBKHsRZw3MBtjMVqPUh 1D4HRbZ/iGxLPWBkDB6r5CFWj4TVAATLv2VEIDtWQTFwGpdOc9Uu0XMtIAkXwEF4mOrPuiR/UIQ NcboRE5uYVKlo2r2dZq2z+7oZNsThNwoTgFf0kK8Ft19q/nRIwElqXMGrDmc7PoJbnR/eNaFDX/ CXtz9IRTkFg3iG7jzU0NImRZlZD/ohATU8yCAUnpuD13dQKvZNt0flASw18nFwSedUBeHvC7A6E c+nTBTGzKwMVxVehLhe4/pQYc0HUA== X-Received: by 2002:a17:90a:e70e:b0:3a0:c401:53c7 with SMTP id 98e67ed59e1d1-3a0c40156b0mr3891916a91.20.1790499625287; Sun, 27 Sep 2026 02:00:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 014/101] tcg: Generic expansion of tcg_gen_sub_* Date: Sun, 27 Sep 2026 01:58:44 -0700 Message-ID: <20260927090011.10724-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499806542158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 db1405f9ebe..8444044ed57 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 faa83a09b2a..51d5ec6e06a 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -6,3 +6,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 17fcc889906..2865de65d39 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -394,13 +394,13 @@ void tcg_gen_movi(TCGType type, TCGTemp *dst, int64_t= src) tcg_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) +void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { - tcg_gen_op3_i32(INDEX_op_sub, ret, arg1, arg2); + tcg_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) { @@ -1493,11 +1493,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 Sun Oct 25 09:31: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=1790499737; cv=none; d=zohomail.com; s=zohoarc; b=dRXAVjvYViGp2Pru7Pr/UJIudJ8+tqDsG/2UNmFCjCKRq9zHIsYEiCxh7eX5e+smsfnVH2ET5/qU4sAmnuhH13m4h1edog2wBnC6krhWP3XAtUqf+oCj4vsQ/4sgWOzgEymjd+P5qk/mIqkaFoRD2ac/f2W58o6fX+CcAZHfj5Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499737; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0GnIX6SgDIjusXMLUKT9H4fidyb32flXqymC+/BxShQ=; b=YKlAa/RuILHPcpKqP3kXVOMa0wSHpI5N61tlZzQUeL92/8h/mSknlh1jIkytd/rlNztRvW2gqC+alVriK/eRJo/QdwNSYxYMq3FexQ5yIs2ldozi3yf8Q2504EZrHRUXfEgpY5ZIU7IPaiChoZXoGigfYaZMgn2dNb4Z32slTcA= 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 1790499737092670.9678652788465; Sun, 27 Sep 2026 02:02:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkl0-0002cY-7W; Sun, 27 Sep 2026 05:01: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 1xAkkH-0002Rt-8V for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:29 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkF-0007Q4-Lx for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:28 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0df0bb2d6so606740a91.3 for ; Sun, 27 Sep 2026 02:00:27 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499626; x=1791104426; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0GnIX6SgDIjusXMLUKT9H4fidyb32flXqymC+/BxShQ=; b=rbGP+PwVVV4XdiItnuUNVQYpBB+/qQMrrCdTyC0/F9RwgZ/PJcb87XtryzeZEcKh3K LCWOcl7vDsg5P+n2siaQaRk5IsEnpHCtgttl8M+JDnPr3+5Zg9KrcNNRBZL3FZP112Gk os2XLLbe2kG2FxoqogkQAIAbo2/Fy4cn9uLdmuFhVIQlgVNeevW0W9mHt2OXNDErzZdr 97G1pCMu11qmjAukbgGYYZJEBodumZI6bIiEemXyAOyVzRYQi3wxvQuLV0SWdECM9EIi ezXkNiaooQ4NUvAz5lZJrh9cfJ9CaWWFk9pcqHh0+A1g7QlVyp9obB5NTtGhs7PDrZOs JyIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499626; x=1791104426; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0GnIX6SgDIjusXMLUKT9H4fidyb32flXqymC+/BxShQ=; b=k5lpscjcZkCDIX62qdFF0eZhnIN1j7fxOuHMerDyCWZ99RzAPDLbqdzYcVGnjNMLhb g8EzDR7iPSO1QjmGW2TbuVurpm3UwDIMf1aiurZBhAKvvPniiW+ab91DkntehxNv7Cti hy00ogjOHDVPvbsZhiw2wPItFKh7UMDFJ9ad8brJqtv+IouBWY4dUpHWbiWoZdo2kHBa Sm5PyOP5+7KDAjJTzM4ZSVOLOaUFIiKl4w2tucTUyhdNYZJ+GLGKwyO5J8TGZ6NKmOEx 0OvRifdE4R1hs0B25XSiUTxQ6xtgSDG2/YszZLxl9BguL4D+OXKaEVwSY5ZQq+JsVqku GwJw== X-Gm-Message-State: AFq9FYJ3DZvNBuWf6ACbxF0ma98pZIN6JifixqUdSP2F65wIKWSRWoZb sbS2z0wGEBckm0WwCyZbxj7EQABdHiN/DUvc6ifjJfsW8MM4Wpywq6KzuuZv7RHExaFO+lvnFWC AtfKA X-Gm-Gg: AYBFou1eGVqYMm6Bc9d8AXvOJqag3ByqmVSDUUJmm+ZMtsmodT9YOhRa+Zothzbsgg0 3wGMRXSmQMHmLaQBj+kkh53vTtlZ8f7nTlYzfpozIlmcMdEuDn+C8dwkZCrgF2O4yLL6+ElNext ArC6trlDNAL2TRNBokQwifImEOwwLnniD04e1eik+fKW6eL+Z+GPPAwp8j6O0UrvQ0DvNUSAsvM ED5xb7yv524txLrOuCdrR4+KMlMIzdtFybheQYyJpaUszRYNJeyleUoK13BOX/jH8tvQBTehEe1 C4qYKTJJLoAEJ2+gDBeDMVJ2UX238f+K01slU8q1JFVcAefz8qAA1f2U8kU1KlhzQAPBe1G+Jj7 ReLXoPpNzWtBf8qyiHHQ2hdhPfb6ZR6fC2Q2Zr90pftFTJ5u/yurx6j9bVAeEkfRlPO6+jR6QJx Dhri7rCFbFLQo/sR293dNfniSFL884WhfCJMqcDZ2odoGiC/IgXXqvb8xrTg+vvd9QC5xvY7897 MnhFZniVYfVCa/ViV9f5s5g5TYfQQ== X-Received: by 2002:a17:90b:398c:b0:3a0:aead:5607 with SMTP id 98e67ed59e1d1-3a0aead59c6mr6280158a91.11.1790499626195; Sun, 27 Sep 2026 02:00:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 015/101] tcg: Generic expansion of tcg_gen_subi_* Date: Sun, 27 Sep 2026 01:58:45 -0700 Message-ID: <20260927090011.10724-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499738283158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 8444044ed57..ff15e3b88ae 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 51d5ec6e06a..55249c4dd6f 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -7,3 +7,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 2865de65d39..9bcf79ccbfc 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -399,6 +399,11 @@ void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); } =20 +void tcg_gen_subi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + tcg_gen_addi(type, dst, src1, -src2); +} + /* 32 bit ops */ =20 void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2) @@ -410,11 +415,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); @@ -1537,11 +1537,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 Sun Oct 25 09:31: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=1790499858; cv=none; d=zohomail.com; s=zohoarc; b=mMI+fVFZyYBClhbrxQ4QIt1T3KFwXWdhLKVgJYARIoJCop3iuo8cUeYtAIBi1zvBsla2LjJFcyCz2iqlUbYQvS27cJJFzwjPCclJ74UEPO2JyNT2SI9H24OL7yczV+lgL7mCYFsIVm1c/jYgL+KHUgaR6rZlrpXnsaXKM+1lWdk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499858; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zHTDtST93KYa/FyBIm9srRripfQSqnvvwzDwYhBxh/U=; b=ULgzHZM81W3HcuMyKPgTq91FWpHA+R1lA9xHKAfS/m54hkVcdVKcJyNDIksDfQZmZt8qE0HWbWL1yMMZeovlYdigHAeQSxFeLu8jBuYXBpZtMYpZVkK+NSCol7hcu19olr7UR1TuoD654lOC+iKtif/MOadiT3ICUIKtQvKNvcA= 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 1790499858669129.01098234857716; Sun, 27 Sep 2026 02:04:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkky-0002by-En; Sun, 27 Sep 2026 05:01: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 1xAkkI-0002Sc-Nx for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:30 -0400 Received: from mail-pz2-x2b.google.com ([2607:f8b0:4864:3b::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkH-0007QI-3d for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:30 -0400 Received: by mail-pz2-x2b.google.com with SMTP id 41be03b00d2f7-cc791f087e3so614368a12.1 for ; Sun, 27 Sep 2026 02:00:28 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499627; x=1791104427; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=zHTDtST93KYa/FyBIm9srRripfQSqnvvwzDwYhBxh/U=; b=Hs3goIdp4KUWBRqsfOwTyrrAh0sP2XQGAANxh92xpsSRE3s1xP+BN5GnsGJgb9aB+q HEvEHIYybftzHHHTFyA59MKl+ipGAYrut1/s8aTadhpEE3pbguqjtrWmzW1orQDQ2QDS GEJO+/fiYO6DsogMrCrwrFqR9ysK6OI2HHof23Q+6CMmZAYIF0Tx9LiB4kIDgUOxnbqG LT7Y8sWLwE7R2mZQiEEvqvYrBqflUWLuaJYCpefr0PvbhBvQzNmyu92+9oMwzsm9oYcB MGI9ZfdXPZDQREryJd8XmP1BLQrkV4EfCegwntDE1jIKHsqgjFjzFcpY5w7m0XkeiONd e42g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499627; x=1791104427; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=zHTDtST93KYa/FyBIm9srRripfQSqnvvwzDwYhBxh/U=; b=kUuvAFnG4MsHHgPtUay0097yTJRzR9SZbFIKJ1aC3NaDoUF1V0kUyTRm9ycsuOJyLr YqqM5FKdEuZPqLgkOOV86PFei8n/S8Aqo22K6f0v/PVzydmQgkqCzIaXjbS9PPKkOhBF Shkky6kPE6qKifPvqdgPRQHIEmnQD/D1B648E2gruOv9nJjU0JxcisODeHZD0yQxu6Pu tBuMahcOyU5+URZq7iV8mh5MVURyLr2kdLqpvEBvfvy5Q5+zUivOl/8iZ1276QgjlTmG /FIufW793bKQysJdzi7o5F2daeL9/LFdnJmCi3FWheXQACnzCQDE+Rmx6fOkBcmenuIA U+Ow== X-Gm-Message-State: AFq9FYLsMb9BigZFsqNIK1EMWshozLCFViTZ1ADnnKxNUqgbk+UCDk4K 9NwvtJSttSQPAR99s8zXh84Ey2rm68efiblJQachWpSo1FUIutUXytckWfedVpiiSNzrho/kZNB TEmSw X-Gm-Gg: AYBFou3HfE55cRlnhRHZ6yR2uCIKGE6KikIdrsxjjbokuURNllOpVpWYiwxci2qhB4R aE5D9WZT1ylllYWuckg9dyctbtIt2iJBBr3hD2w1Wb0eJbZ8c0k/k3VAEqlFwBbT5UZVpffr9Mz n8syY8LKpBkUpfeyk6EJkTxbFgLN1rvLKStmYrvwEyTXwWvHds3CmeUF3k2tgk3CY65V8atwIs4 L6B4jGp7F161eD7ws31IhdrfGw4JGiswmHZxNLs3FDH6SbNRWRxvt4Lm3GvypLSXgR3fDhKQK6b 1LxFczPbuCx2LeNGRMUayMoGaRSRj81zM237FWxdfOzXoBpp6JLZ7H1MB+9Bn83EAsKNNSAaii+ TaQ7gT0GHTdbjFdn0yERGoxU9ikSS3RmdCPYsmHVy08+pudL2/9YUOUrLE0wCOfGCYlOdJGNLF7 UrRKvUI133dMQqW3U29wF1R7MRmE1GG6brGRsMPBArJe+REgriBIFsKLC0ogCpw8Kpf+uBpqhPx E6pWhFi+sE5+P0qs0n0qrvjoWEv9g== X-Received: by 2002:a17:90b:1f90:b0:39e:6c69:f47b with SMTP id 98e67ed59e1d1-3a098d4085dmr8782520a91.58.1790499627397; Sun, 27 Sep 2026 02:00:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 016/101] tcg: Generic expansion of tcg_gen_neg_* Date: Sun, 27 Sep 2026 01:58:46 -0700 Message-ID: <20260927090011.10724-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::2b; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790499860761158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 ff15e3b88ae..bce6be377ca 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 55249c4dd6f..b5ede945115 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -6,5 +6,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 9bcf79ccbfc..37135fcf4b3 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -394,6 +394,11 @@ void tcg_gen_movi(TCGType type, TCGTemp *dst, int64_t = src) tcg_gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src= )); } =20 +void tcg_gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + tcg_gen_op_tt(INDEX_op_neg, type, dst, src); +} + void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -415,11 +420,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); @@ -1537,11 +1537,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 Sun Oct 25 09:31: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=1790499735; cv=none; d=zohomail.com; s=zohoarc; b=Axps/p8mj8bi0WbppjFsqGdSpeOTlG5/Oc26R1ZLpyKKV8qSo2FE0BgFWGfwyUcKIzVVa6+wo6adSMk1atdCbG2RFoLAS+I/af6dhGQxsRQjNgwe+S2xZgh4ded199ROXzQBmDWKN55aDI6IglMj2BNHgnh3VmbZKUD0IOUwOiw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499735; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=J6Cr9PpEetbQL4BIvIhsyGl7iL3usw8kNCRnJG3H6oQ=; b=PviTrGx9OeH6jdXD55uV3zTuUJBLmAPx2Jk6JE5OwS2X2lK8v7/e+pexIa0y4Vg66oOzSpemPQwgDjnZ+y829pT0esa49pNSJ9TymH8xPjOkehStUKT/c7h9hptvXr4VetubfpmGpGp3TzgMqC/Z+ntsQpscwUN86/Ox6Vp4G9s= 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 1790499735536866.7448909216877; Sun, 27 Sep 2026 02:02:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkl8-0002kg-7y; Sun, 27 Sep 2026 05:01: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 1xAkkJ-0002Sp-AR for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:31 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkH-0007QZ-MJ for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:31 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0d2c37b0bso558566a91.0 for ; Sun, 27 Sep 2026 02:00:29 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499628; x=1791104428; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=J6Cr9PpEetbQL4BIvIhsyGl7iL3usw8kNCRnJG3H6oQ=; b=toJ/pgPx608nZcMR4PAz/mcJPtQKWcJNRVmiEqENT6261+5PsGdzVGRkxzuknLTWht uP/KXtFwKKeivh0x4Hml/t63ooo1knDB5Go/TjDW4yFdfgxQc0y2GNu/ZZOG5bAyJoKZ +pF9iJnZvXGpEyOUib/V+067d8Ml9nPc3a0pWlCrVL/fOZRMvA/v03lW/k4XbnmHYf9Y HVBTb2lftcH0/umH7R3BSCz+30aX+b6wRKZv3IgAIHoicPiF9ByJmTa1ANTzRL234jkf WMthIa8ygxwwOO2hRscJhQOZJbd1OamTv8zgs7tJOocdlPq2N0bWM/jaS7G9TRveuSzq px1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499628; x=1791104428; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=J6Cr9PpEetbQL4BIvIhsyGl7iL3usw8kNCRnJG3H6oQ=; b=GfIduoFCd1P4FO76P1LJjgsh1hsU0Gljx9K/PY9d7f7QxuGZJV50BmiCBeDoBLXYPw bH0VcJ5Uwb86eIzSvIzvJKFhPDj5pTzzWKwigmpHOjlCsYj4eTuqgt7YYXiWzWisYdcb vd4Q0hifzVuxlY6O9huCFANrAISf/CtxEvRcnhAhHCfTAIMRcIvFSRX/40uGjQIs9k35 3QjnJ5YMb77rJlKnjwVsfxpSs0+z3iRq0QdDxuAVqO22qGjXsg7YrkH7xWLX0D6RZpBI 6OOxUToUv/qgIM0a8sGiBdk6XXLdm2VDin6Mes3iAvYoJazkzW8iUPuF9nVCp4YtrqWV xWbw== X-Gm-Message-State: AFq9FYLIQyyLfVRMlGydvPTF5h7hF1zNEsedir4OfaEV/LvSz5F99TV0 13ZMWJQDMq+3Z0FA9/oM4ScQIjFX92s4BJ00d1bh6bjiqpTgDlig9wf9NtKmDbWHzKDDuncP6zi PtEM4 X-Gm-Gg: AYBFou233KK4R3sdHycVdVhAeeqQjHQ0xzTAYgckyIRSjoudEAfxmJ8GNSoxYPHzfQK zQVpKmAlZyqptIm/RcYD1eiRY+LXgMVTRHRuYMesKTv5aFDXSkg3PwHTtdd/3YvamVXWB2helG5 T3MT3kZ1gqrrfNDbn1Jk8jgbOGkggiVCXqJQJMt7KC9kixwrXyW9F/S0UVr5oQVBEXr6fuuOeco DbJzsYiyoE2YzCn0OUk0uOz9vea4XXkCFgPddRVFFRoRVKmerjSsSbCYYqhF2t2tYlVJGEwZC5c Xnv353PoWw8GYuEnJkr3QeF9mb8OoDV/tGHxdk933PaerxJVJWcdG5JNv0ZJFzDq02ql26IbNTe cSme2Lox+8FtNvomt+/TXu6tNfLKSmnnXw2QCRQoD6Cwn2/3ETneF+p7zqA0gSLgVd7B4k2RI/w AtLUlC2OGONaU1ppchGz7yXDbUVu67YRYuJ0QawvmMSWVtv44IODBynemZVEJ0J9t+cv942YXrE 5JE4VYVT8KNhOrPeDos3hDM7knLYoDYdXeGwJUi X-Received: by 2002:a17:90b:55cc:b0:3a2:b4bb:91ca with SMTP id 98e67ed59e1d1-3a2b4bb933emr358930a91.1.1790499628149; Sun, 27 Sep 2026 02:00:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 017/101] tcg: Generic expansion of tcg_gen_subfi_* Date: Sun, 27 Sep 2026 01:58:47 -0700 Message-ID: <20260927090011.10724-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499736272158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 bce6be377ca..1ad18b10b5d 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 b5ede945115..487ee5936ef 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -9,3 +9,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 37135fcf4b3..07bd0767fe4 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -409,17 +409,17 @@ void tcg_gen_subi(TCGType type, TCGTemp *dst, TCGTemp= *src1, int64_t src2) tcg_gen_addi(type, dst, src1, -src2); } =20 -/* 32 bit ops */ - -void tcg_gen_subfi_i32(TCGv_i32 ret, int32_t arg1, TCGv_i32 arg2) +void tcg_gen_subfi(TCGType type, TCGTemp *dst, int64_t src1, TCGTemp *src2) { - if (arg1 =3D=3D 0) { - tcg_gen_neg_i32(ret, arg2); + if (src1 =3D=3D 0) { + tcg_gen_neg(type, dst, src2); } else { - tcg_gen_sub_i32(ret, tcg_constant_i32(arg1), arg2); + tcg_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); @@ -1528,15 +1528,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 Sun Oct 25 09:31: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=1790499735; cv=none; d=zohomail.com; s=zohoarc; b=RDRUB/05QPEd4w0yYw8gypSufPaUwyYgFMrStLf9iqh8E5w1QhWkc+GmOLKEr5nkLzWeN6/2OS9V6a9GdTDbDgJEsAZ2wbXlfhUqrljk85FfTAcUmqwFuL39TLHOpPghO8B8jRijA1JH+GUzAEma7sA7TuMUNSo9cKNb/JDm1BI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499735; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=08KNnVkYLjXDaLyqb1s0j3G+v4qpCovywDGLvOH8BLI=; b=HxnMfX03ds62GHYVFoa9OWYoxsknnxGYcppSAUaxVRHvkXGaHWr8X1YUwhO7cmz9jJeJqaMj2OuEKMcOEQQEt5w9nCPbTb9M/V9W383FVPqxuzf2e4Ih77T2TlXCSFhLQ1hf/f0j6hdNqdYyqjEk/91WYjhNCJBlHVZtJ4BHh2U= 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 1790499735535621.6769503087597; Sun, 27 Sep 2026 02:02:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklB-0002vv-7J; Sun, 27 Sep 2026 05:01:25 -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 1xAkkK-0002T1-7i for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:32 -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 1xAkkI-0007Qk-Ix for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:31 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc4bdf8abaaso1359238a12.2 for ; Sun, 27 Sep 2026 02:00:30 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499629; x=1791104429; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=08KNnVkYLjXDaLyqb1s0j3G+v4qpCovywDGLvOH8BLI=; b=QQthL8aqYeV0Xgt0l9T0XM29zcYL6WoM1xjYxohkJJleeblNIR7W7ecILSxRv5DKwp 0EUL/+Apmg6xMjpTOqQzrA/yqYGr0zOG6amk4Hd1V610we4neOI2EWodGgRZKfpOiW99 d1iXflqbXQc88qGtGdNhWngCvhs2tWXetUk2F8OJJqHZoWzIhuPwkHmhtcFjIDQKL6t4 Ur92bMqGCBcr0+CKSjUOduKJU/BTBeIpUe93jzayhhmUlaBnvac8A2PCgEG4Vvx6agnG 52P94sUL+MDexQ4LVGeLq7sjTJnC3WlNKKnz/v9NOVp34/hIfIzjQ51lMy1Why9lHCDZ zo7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499629; x=1791104429; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=08KNnVkYLjXDaLyqb1s0j3G+v4qpCovywDGLvOH8BLI=; b=tc2mMLfd65ZvZXUH0WcmNMKoInQBgg27/HY6Np3aJ90SQBkU1jewtwyzhTY6QZavz2 5cJ79+YQsNv+MdzUvq0QYtzQsz9RjECdMXVBOYKh3ZDr6buSh4ZVdV8wWt/hF/CWATZo UdP8E3hxkwsy7VHuJjl9U4VsLDnsVgOW5Uq9m4X6R83F9/fN6G7kr6G8dhKp0BIm+Fqr Vlk444JddoSX0nRtLtw5ncFDsXYm4UsQkwqgRYEmAf3QgHi+yDmMUa3+rH2qvDtMDOsD 6BvYkpDrqQGctojgr7HBzGSjt1wa04dQyIt75GSChEfzNq4B+xRS7baR3kTms5kvOCcn No0A== X-Gm-Message-State: AFq9FYLkpMEL+5BK2+39onLAV4DxYDSSB6tG5sOJ7fDI+WfUP+WmpDn3 88OLSCA9TYvMN5yTOh4jNVJ5/K8B2sEyxB1kILSfYUjA/dTioo6FzJm0I8EEm1O5em3H06sQZ3Z UWlKT X-Gm-Gg: AYBFou2Sbv3yQzo0h5kFoxYbZWo1BrqSPlH4ihmy5vF1Pqmu9H7QzI50NEUvFR9E/X7 Mf/G3G9gpFyZhADd7ZlEyXEXXSbEUCmOqJQiSGDzeIPiax0+HDHy0Ib1Rz8ieEul/8mhU21+G1f fjKMMjuD+nPh/0S9sL22ytVr5DKJy2Go9aGGchsuKxgtdwp3Sa9U0+ymp2syMKrZwlFtmajKatD 9zVSamNAr/BrRqlohsrKyNX1tDq5BG2CjNAXdfP1k4Lp8XpXROhsNALcdJ4LHDhZKPY6RgOF4Aw lcKYfxF8QHdSrhsfsMhU7bEObOrzj0xROXA9yWRYH7+85Orbmv+Me7vt9XN4fVRt+8+/TNTHhyr 8vUPIx3jSHVFkP0KryZHy3w/PKo+5DIxXcxIkJSfVBSQRLIgQ50huR3j09MmOByiEmpZL6AlVZY ojVPJkLjNin3ULrhHcTJi8cnzrzRQuu+9VRrG4dgKDepE7eHLjI5pkQYVTom8AJpubi0/z8uvU0 KxkQOycjVNajROW2D/V9CC8ZxN3pg== X-Received: by 2002:a17:90b:57c6:b0:39e:24ab:9f82 with SMTP id 98e67ed59e1d1-3a098adeba7mr8869042a91.10.1790499629087; Sun, 27 Sep 2026 02:00:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 018/101] tcg: Generic expansion of tcg_gen_and_* Date: Sun, 27 Sep 2026 01:58:48 -0700 Message-ID: <20260927090011.10724-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499736275158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 1ad18b10b5d..0c4513ffb80 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 487ee5936ef..d6b45004a2f 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -3,6 +3,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 07bd0767fe4..f76e01310af 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -377,6 +377,11 @@ void tcg_gen_addi(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) } } =20 +void tcg_gen_and(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + tcg_gen_op_ttt(INDEX_op_and, type, dst, src1, src2); +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -420,11 +425,6 @@ void tcg_gen_subfi(TCGType type, TCGTemp *dst, int64_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. */ @@ -1493,11 +1493,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 Sun Oct 25 09:31: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=1790499744; cv=none; d=zohomail.com; s=zohoarc; b=n1B4yndQHXlqKUptNFt2STYqJo0R3qFETUva/oVstcutPRl0heaDrgrOTPZH/kGJI2HI3SeomypXvpihCRjIR0vO+E2wZ/5sbsnrqt89r7RSr8cxw5tWPvs+Awx7Rn87Uvn5MkRX+wy2JRKAWjvdXR5PuM3NtunjBISXGqgJ/mQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499744; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6AiUnqi9/pJ1kWKmol4hzAxNfpM2fbsmEm31C0pMERE=; b=KOioq07VIzcxk/v4sHg3piAAKIOhXY8Hx7OyIur2D2kgN4YmV3Uk5IbFmm2UlgtKiatvgJz+igJkTBuxsQ8N0Vex9/5esx2zzyH17bRPzphNimfzMdFHoIB5oIZ4iSippiDxTwThkM4FlDacqqpb2AgDFzRfU4dkGlj66TOhy+o= 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 1790499744819322.35101737441425; Sun, 27 Sep 2026 02:02:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklH-0003At-LW; Sun, 27 Sep 2026 05:01:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkkM-0002TY-4q for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:35 -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 1xAkkJ-0007Qu-JV for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:33 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-398cb5615deso1777202a91.3 for ; Sun, 27 Sep 2026 02:00:31 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499630; x=1791104430; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6AiUnqi9/pJ1kWKmol4hzAxNfpM2fbsmEm31C0pMERE=; b=T3GocSU7KjKdQ0GsAp1Q+oO1NzCKl20XnDDiutNVkrucYn+39d9I2QJ+XTSb8ezodT TDc5jqtdFfF+Kf9Rago8l8Z5CiQrC0xSk0QXAiMB+LMSNNTHct20Ln/cpkNzKOkiL2vR 1x7e4i08tGCHEQl8+7zu7NaI6sk7IwsJf6IzZ16OsQ79Wle6KDwjwoTqe5fmQ6dpfBxd JEK2qySNBsM+e/Q1PPGMFlDgocAnCVyIh69Bq4F4YrCTqYYwsusTSbH9KsAyc8OIHsS1 RmZDdcHXo82Zo6/O/3KkI4xqN3bKo1nw7udFx3K1r6qJqCp8q+PAdWRLuCr3IamfoIbZ qp0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499630; x=1791104430; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=6AiUnqi9/pJ1kWKmol4hzAxNfpM2fbsmEm31C0pMERE=; b=Y9/0dWVwRx5DYu9tMGmutgEyGZ4GyR2VAer4Cw98kQWEFQfPovA4WuHlHsvaii1vlD Dq8UuscrDRmTo3VBV/HMmJsALSY1WS4agaf6NjufaCerSVKIrTm50N8CbgZXwceEuQPV T6zDEzRUGwHMWNZRV3c+Jg+BfdzZNPfPx2zZwOQPSnJ1kq/rlzAlrKYgcBKShhCXF8O+ iLo+me+G5hyon4fp71cpP4H/1BbwbdREeQFRfCoZ2T6Cmv9I5SSmqLaGJlxtPgiP5pPq KOrjHcuLcVENzEjzH1GxE6EZwosG+AP3fCZo9hoLnXQdaiBXdNnLjfJZfKtRPDYp3DWd LDJA== X-Gm-Message-State: AFq9FYK5rFon8qgPFNVaZQqRXck+nkroGhguu2px2HV5bKHib+lDGaqz RGGT543wTwrcwhDo6346mozCIM6H5Ej/tlbWMpv8LZaMHZn1QYnBBZXzdnUdqCx/tIuO8kuoaKn /BCVI X-Gm-Gg: AYBFou3t/+YbrYpZhHeZAfCo20jABOty2SmRHvA7CGVl/MXnoN+ihFoxmQz2dA2nxiw WDuYts6fo/I2w1qlPpW73oGvq86OJb2R4820nfEOwZq36P136L7ZnyW2g9ESbKy8kpaoQtBRWEu ZUX9fPLLNrFy+ujZbUblYbWSDLDJcdpkYa0ByhC3Ivq7CNe6jXaz+U1QOozveLiJroMGbS61SgG TaiMlqh0XeDZQBKm8hok4UjAEqbLygKoEGDMxJ1TwM4CjdB863/P3p6qH3wy7ZwrOfCvKPGfUDV VAGaFNU+hK0+7Kqx3JA9IhzIohoaraCNiFQNuNDfYs6d+OkwxPmxhME9qq319jSrA7LMCG9QZ5E Hv1xYlkGL7GFKyGIE2EKUL0eYV/Zr28pu5bt+1Xrjg84zsWT/jquBEbdJWSFA6Ao6MktTYFH1G+ ZjGZiJkDGxmpQkcSJnoNdwwIX1xlnOYv4G8Pm/ggg5ExBTiSMKUErmICBTbpUH/sJfOOIdwHw/d tuVHSbM1sfPwVvBGabbQ+bmP4Zd3A== X-Received: by 2002:a17:90b:4c03:b0:39e:6a82:afd6 with SMTP id 98e67ed59e1d1-3a098feb5abmr8561252a91.40.1790499630132; Sun, 27 Sep 2026 02:00:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 019/101] tcg: Generic expansion of tcg_gen_or_* Date: Sun, 27 Sep 2026 01:58:49 -0700 Message-ID: <20260927090011.10724-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499746310158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 0c4513ffb80..ba333d83958 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 d6b45004a2f..8dd39290609 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) 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 f76e01310af..5fc7f1d02af 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -404,6 +404,11 @@ void tcg_gen_neg(TCGType type, TCGTemp *dst, TCGTemp *= src) tcg_gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +void tcg_gen_or(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + tcg_gen_op_ttt(INDEX_op_or, type, dst, src1, src2); +} + void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -455,11 +460,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. */ @@ -1493,11 +1493,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 Sun Oct 25 09:31: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=1790499834; cv=none; d=zohomail.com; s=zohoarc; b=gqEeD5covLdBnSjf3C1E/cxZyPIrMYzZGaSCYtYSMdtL3drE+W12YQaAT4hFM299h0Hf0TfSc6p2jpbKZ0WOwJBFWpN39ubvXqRynVal8Uz9wC27DEI1E3jlK33rMFrj/RmGCt/LtnlFHfIyclLAx+i+LhG9A9i6NUroCNmR7tg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499834; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7ZIOT5msleyz4GOKF+0htr7qgfHv/fQ1qDfEQMwHhGI=; b=DITbVt2+iu78m31sliCs48EqK4fiVxAWrftWPpZvR616rmGwHjpgklkIk4g6uZErgjPYzabyNFSWEz2cuMdoIOFellrgu3r4p+9dz+Swy3n8Tex7QCdzvaeGyqlmU+jVD2KKcm6YrcJoDdniRG5qlTy5f9xqStL9CyaH28CRNVg= 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 1790499834761914.6212568916999; Sun, 27 Sep 2026 02:03:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkky-0002bk-Dd; Sun, 27 Sep 2026 05:01: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 1xAkkO-0002Tx-7N for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:37 -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 1xAkkL-0007R4-S2 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:35 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-396ccdaea75so822207a91.1 for ; Sun, 27 Sep 2026 02:00:32 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499631; x=1791104431; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=7ZIOT5msleyz4GOKF+0htr7qgfHv/fQ1qDfEQMwHhGI=; b=dUyM1D5GOy6/ZkfcDTXt2whjgmjPDbb2tf7EBHS1P8biqipBYJJzwyu6jjzILAdAfE 4eGYcoFBmUWWZBZwqbt4TVEq3Ptgn5qK+p+Mt5H//Zf7npGHDKzXGTBINPHJSVA7LB3v H/b29hWkm9VbABCNdjeny8mFS/nyRrmafs5jUWF7HqLyL/s1wSdnqHNJnTwkRqVeAO8M AUxiQ5w1fYPElvNJHFh+92agg/B7F9cRGxwdN84IdqdB2yGCSqiMO9aOFDW/P7UWaDdp s65tWcXt6HFV0TeOSRdL0oIdvew7UEh6jq44NcdvQ9MZ5FE6+lCOP15Kx6cqT54aGeK4 MDnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499631; x=1791104431; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7ZIOT5msleyz4GOKF+0htr7qgfHv/fQ1qDfEQMwHhGI=; b=uSn5+ZHUBsAU0cc/gAoLXZP0xKgi2Lx2iG4s52UhCaIapbHJBhN4BQpyJXBsJvKjHV gaZY7wRKq9lDsbpaAJRM7XXwmUy9rEVy/7mOFBHXurWn2/dSAkJ+wjk01o6+DFGqBaOn Jl9RXyGIwFkDkJr/uGHMInav0Xj59xVvdW19zrCgzmlDXfq47XAVNmh99ekygdWZYxPt DV9mO3b41AOEtIa1MpoqxTPMkYj5NB275lFt+WZwMw0XjwDXuYsOuLGISwEMfxW5cv9P uIUKT/2UEb6HRLalylnz3wt4YYqjOOACgE/Sd3x5yop/JFXzJAp5yXjkl4OWP2rJQgeB pj/w== X-Gm-Message-State: AFq9FYKqwxqvZUMrtT7WtWd+pO0TssfFtyM6+k9vtsYNklxdkDplOtwR oaMmKJnllsScGshg5uEFjKKM5mejIUD+vdSilPJm9tfprPFQuqIf8ZEBj/pKX235aDENMbYzMco 4cCJW X-Gm-Gg: AYBFou2HSy0Mrpb57B7bTceZjYh/i9MUGYSgL78FUISNkSDW5DEMlGWe2oeLkdmpGsj HeaxOp9CBBLjpcDKtSpSUveZkiYe6XXkzP+Nj3h+sSMto8SzQ0t+9xluRu6XlxJw0o36hHIB9or 7B37bwd5Rp++5NXBmmMhoAXRH9ofUau4LBXe7bTOBXz7epXdvG2XwD8SxOOezSf1agFnZ/TYLKw wsNo8/J/AU8ehSzF19kjqYMZ3Mti/W1VF9kXdB+N8fonW49MFI8NOa6X+1F4UMFog4eEFyfnJRA h9ILhKI5Mj78X4pohgY4A78/1qOe6ERLeiNNAkKlTpRRiSFgJmOLs+joisEMLAEI2Ih2XOFUAGp X9WuBc8tHlI1UIGoz0qK5BAHKJIMweOOx59KmdnoY7EwZpucwP9lxOFctxhMjO7lBpAPDj48pn9 dlKJ9iRVD+526wvauqiXJrNExc7gAouVDCSWqL6j6uHnrd22IBL8tdo2u0NaEVXkFN/LUbOwaOu kyT5T450rmR/HVjFx2gp6PyzbdoS766vNF8D3Pj X-Received: by 2002:a17:90b:1dc7:b0:3a0:b7b4:b65e with SMTP id 98e67ed59e1d1-3a0b7b4bae2mr3174663a91.2.1790499631008; Sun, 27 Sep 2026 02:00:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 020/101] tcg: Generic expansion of tcg_gen_xor_* Date: Sun, 27 Sep 2026 01:58:50 -0700 Message-ID: <20260927090011.10724-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499836722158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 ba333d83958..81854b56f93 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 8dd39290609..ad298b7e306 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -12,3 +12,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 5fc7f1d02af..8c3f7dce815 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -428,6 +428,11 @@ void tcg_gen_subfi(TCGType type, TCGTemp *dst, int64_t= src1, TCGTemp *src2) } } =20 +void tcg_gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + tcg_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) @@ -472,11 +477,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. */ @@ -1493,11 +1493,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 Sun Oct 25 09:31: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=1790499768; cv=none; d=zohomail.com; s=zohoarc; b=CneJKs9NyPgmB/yp2Kv0gBdqfJPHJXpeaFFb+h47uxBkuM5D54eKz/BbIFmkhsTY0X4I/DyirIOylnUIS5M9/pQ39r4lLTHiSLpqlTA8mwIiZIyEtJMWjlvlum5wmGMx2xX84IJd0KdrpkLCAt1nZ2PhyefYz2UeDhPbSq4r5X8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499768; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gJJ6x4JDKtziwseE92uIzOyOPo9C5KwVo49TDfp/03I=; b=EDsAhOxIeS4StGolqlGoXBtnFANlLxXZjVZG1x49l7uD8F/hK+FCskJeUjVz3KCVqmHmWa5i8wqDgjXcnaY3k85Etey7DmrLGH5s3GM7pFY/XXnwhPbsIGGQZoy8ghRxMtCMYvLmImpRL0rbslR1svB2INEORRegePBzoN25fdI= 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 1790499768498133.73934737786817; Sun, 27 Sep 2026 02:02:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklP-0003se-B1; Sun, 27 Sep 2026 05:01:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkkO-0002Ty-BB for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:37 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkM-0007RH-41 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:35 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0b6200eb0so1601421a91.2 for ; Sun, 27 Sep 2026 02:00:33 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499633; x=1791104433; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=gJJ6x4JDKtziwseE92uIzOyOPo9C5KwVo49TDfp/03I=; b=PzClaPTI5JMFgkbBNLwKj+oLmnClQ7uCTpchZ2LoLc7Vl2QTWJfHLg/WmiMz1sw2AF RZoE1FROa+YR4ykeaJ2/qFwwIWg7AiviS06sBj7KCx/iPKRwxH4y91WvZqdw8YZn1Kwf MycetC/rFpfQOdbzxZITkqjLNS2RP87CFiCk3IH7l9QsyKpKRv7m0p0wntGsPmi13FZX bmfSw3sbIir9sLSSg9FBN2TacPsVbiBGcon+aADw7BI4pkjoK3zIcWOyqLslMyI768HY GEkRbMSnwV78hbKh5J4TJTQXH0dJHQD2Ih7V54koJsCjbSU6n/JJw4dHY92zKOw7figW tCbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499633; x=1791104433; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=gJJ6x4JDKtziwseE92uIzOyOPo9C5KwVo49TDfp/03I=; b=cW3yMb0p1rvxh3LKSQo6Fvphu8sQTN57JKeoZWj79CXk+Eu3JpNbxfLJEQeunHUTB6 AxYSWLyP28goTnyXtk5MtZZCHtGRDTt/8pXT9L13oPFd2Y7rSgF7hDGx288YQJ09vh2F 9II889IOEn9rt1QP5tALv0tZlfkozY+nDTgayuCK7uM1d6qAkYXsImVwdEtsv+/vYceV U8eKr4nc6YR1D7F3//bIlT8kDELGJs1rqPddIvXB6oPmuch/c+JxoF3uA1EV+uABmopP Hwsvcag+f2WB7KDCkxD2loU2WGnx8V0jT7cQSL9tADPiXvJgpIlPx166ReU3CKOCEmi1 irLw== X-Gm-Message-State: AFq9FYI3KOg2x/t97cYYW99TIXTD38nNYd+9VUVOg3YtKjbXnPjItJwB uz2MZEAVLJ3PuVQcpTQTp/vUy3JO03RW9mu9VSqvE6j3B6KhgV/8mlhapbTBJZwizObpf9EyBM5 RLw5b X-Gm-Gg: AYBFou2SrqJ5qEG7MWY6PbdFw50vyEa7OiG0vBF0/A4Nt1AhUmQmbC6zIwvK31LJLEU pHzMWkDQV9qvLh2+MkQl72s1tIHJVRLNlE3I0Bmp2ibpAck1hkfO85Ad5LlixWRIz/DspvBDASf 1mG7qPRicOFEnDWOq6NNosuTlEi1rjJ4ug/tgnkf8C0U5wrV50t/pinlXynIw+UCS4Qn4HMkD19 D2E8a0RyzNosBMMtfIJiK1OFP7QVZl8uOcxabJ8JgcKvp+OcSLNiHzg7dYBs+MwMm0Og3e5MIB0 nk3KfDYfNgRWAvNVtUx5U5AbWSIOZcH13N0snKGgz3x0QZ3f0h4NdPyrrHLz5eC5yoncDftwKLy kcsBB8iuNMyzWOEJxvuR6ZqhmUx0LI7F1QHaspNVoEpdARRyRJJW8DhRLiYlmbdBgYpB9j3w6up aJHhlX8ZHqtSxL20f+N3MhldWXd324IQvlA3nQT5PjHzvokNIs6IEHwguQ7Ac9YZDF3XTly29Y4 dZXHBlPZmkBDwjWb/KEKS1XHH0FbA== X-Received: by 2002:a17:90b:3c8b:b0:39d:f064:3a68 with SMTP id 98e67ed59e1d1-3a0bb57874fmr5569747a91.21.1790499632735; Sun, 27 Sep 2026 02:00:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 021/101] tcg: Generic expansion of tcg_gen_shl_* Date: Sun, 27 Sep 2026 01:58:51 -0700 Message-ID: <20260927090011.10724-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499770418158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 81854b56f93..773f1e16c41 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 ad298b7e306..3e6dd1eaf93 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -9,6 +9,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 8c3f7dce815..8d5befb75a6 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -409,6 +409,11 @@ void tcg_gen_or(TCGType type, TCGTemp *dst, TCGTemp *s= rc1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_or, type, dst, src1, src2); } =20 +void tcg_gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + tcg_gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); +} + void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -500,11 +505,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); @@ -1493,11 +1493,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 Sun Oct 25 09:31: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=1790499718; cv=none; d=zohomail.com; s=zohoarc; b=gRCL+CjBu8bMnkkgRDhJY3I+TqYGZYUlRiOmiARe0xM8FyoHNAUlFIlk/acw/ieBesaJpJOCCU1/yXCJGXdhzr3AwXt3cQDhCgughuR8nVcLgCj/oYrb8pAu2Wu3Jf0FpZt+peF+hBWjo33w2T4q6VPxROPTsuH4nS4RFDqDd5Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499718; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FqfAA0UcHBRYeT6qkWosMqGVjWoQbjRoht/rc7A5geQ=; b=GF+jj+bIwyHqe3DX9SG49VezCgvz/EZS2+/ztYBTevpPYnShIoiW7zy3QXq9DDMUMok7f1ZqJ2W6y10/dPuXlTP6IiTu3b4HxUrTst9eFeVZD4wk5u0cHekl1FQweb9dZJShfGEBuQ3gKZurKdmzmL97YRbAoVg+btfEj0i6tyI= 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 1790499718138369.82351788301264; Sun, 27 Sep 2026 02:01:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklB-0002w4-9d; Sun, 27 Sep 2026 05:01:25 -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 1xAkkP-0002U2-OM for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:39 -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 1xAkkN-0007RZ-Ox for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:37 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-39b910bdf2eso1023984a91.2 for ; Sun, 27 Sep 2026 02:00:34 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499634; x=1791104434; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=FqfAA0UcHBRYeT6qkWosMqGVjWoQbjRoht/rc7A5geQ=; b=Ze7ijz69fCur7iu5p0gXD7Nk+GjBSOJdNYE0vt1vhRH58hRUzaU0ZrDEjWCwMhTZQQ VxL0OG4kS/kA/k262+sXZlt5JliROaxz8E+wGk8RXAJEFYhArdWAR17m+S8imu1BIVI4 B53aTaqWc5s9RfL+ub56/pY6CUcY7YvJhBh4XZ4Em17aQUth1jngJq1203Nl9eGoar6W 8hMFrDTyXBmdAeItNFglcHkqYrsGedw5jKcuzWyfzMkzUgNlJyAhkGBS8VnHllix0kXR ZhsWV5gXhGL6LB1Sa2G4L+NJwjwgfL1w+bJd6SdsY3h/PvR2/eJEn+TibQrXWIJ2meH+ HFZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499634; x=1791104434; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=FqfAA0UcHBRYeT6qkWosMqGVjWoQbjRoht/rc7A5geQ=; b=wW3xK2t+XNmXfSekPoTIbYfqYILCKkedHWzw79Dh+e3WOEsvKd4JZ0r/sVieZQrA3B D+BmPFEwy4jruFJ+Q2KYnWx79Cwie9xFNCfTpZYB6dvjlaY2GCN3LEeIoSRCQGE/p2Yc dQ+XL5vQB0BiuFgUMpfyT4BLGhvr2Qn+Kor67JgPpqcM7t8CCGm48kXwshpkp6kzR2sL Eam2Eaj8Le5FPIs7lnqS+rV7LNJnGjdKBV9N6GsCSr9dgzHkpetsP88Y2i3fzrB6Kqx8 lyA1CHHC2wWgU2C59NMzTLdBrgvR0p9tts0/cjOix+uY7Hh35iQ8nRgpd/yHtbMTSmW7 W0FQ== X-Gm-Message-State: AFq9FYLqBpZ/gPF6bwSSAPQtd4QcsaO8OKGRtrg4bUdGmzD9jgdZTyEo CLJ0nEoiNt6/Y6v1R8LmIH2bboGMqJDIfQOT6KUlhDImQ/NHTJ66fzmP7HIVIiebx45V8l23FfU vQllh X-Gm-Gg: AYBFou1vfmEGrQO2rvzpizfMef8WAx6NCGZPRRbPAi2K/YhNyXXXVwwny6Jbbme/ZDU 6O4z82Ra/ZkmqyjvDRRaa+W3QP7erqxh2Vac755lsI6LsWgAjUjM6Og+GzWP+Q/QmkfXW/oR07T GuDYMVMkYnTRvffLEjrnizG1ZfQGyQy+gqq6juWqopC4NIR/HuKQ6CmQb/l8op/AsYZ9EGflm4G 4va6BxNE0PtVPYIR+iW/qDjM6D6gZkLUPMGN8cYmzl/jXw3KhyvPW+7M+durrfmRkyZBVemMphU tNu+qb7PF1cZ8bSp8eZPD7e7IAtMA7lskbQ3wo+8J+dUwu25L0htSQJN90I4pKZMDWFjF0YhM1g cc2Lrf1e2GJ1VCoga3H6uEJdNmDhRJklOMalKoIPkRgWQ1hVVriUb0q7O8/+sBO3XIGBn8vMWLr +p1HzyRQyvHMgIn6BpS/wQiSN/tNy0R2hra4L4/Z6jiAded9hmVLqwY65sy4zuZz4YH5twY2VWF wCD9RJOVIlFL3PQ2cGxES5+X94zQQ== X-Received: by 2002:a17:90b:384f:b0:3a0:d7e4:c4bd with SMTP id 98e67ed59e1d1-3a0d7e4c5f3mr3584926a91.60.1790499633713; Sun, 27 Sep 2026 02:00:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 022/101] tcg: Generic expansion of tcg_gen_shr_* Date: Sun, 27 Sep 2026 01:58:52 -0700 Message-ID: <20260927090011.10724-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499720237158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 773f1e16c41..5d72c92534d 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 3e6dd1eaf93..573a4963b4f 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) 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 8d5befb75a6..dc1734b7584 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -414,6 +414,11 @@ void tcg_gen_shl(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); } =20 +void tcg_gen_shr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + tcg_gen_op_ttt(INDEX_op_shr, type, dst, src1, src2); +} + void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -515,11 +520,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); @@ -1493,11 +1493,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 Sun Oct 25 09:31: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=1790499834; cv=none; d=zohomail.com; s=zohoarc; b=hoOsot3gPDghdD/sbJh3tHXqPMQjIO4WiYfFf3X7uaiSGiLFMywClcusOsGqp2Hhww7LpEkaSPuZQwE1/5bqAXFEarYYGeH9FK8T+Uh/SttVWWT4P17Xac2zLlg7pxLF6ce7nN92Nh1o7kvXItWK4w91CNN6rO7Q5tU7PhzH9W8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499834; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BJ57psSYHWNWI6fj8S3dJ22ZiJkk9GpcWBSEPb21LyE=; b=Kqh9uTKcirYavLeLQNr4JEazd7VjLgVwrB33bx9BaFhai3AOLW7WPbyrnZZSnx+TGpGnjnslrM2o7MQy15Xy4JAE/byZlShDGacgtuAi0hUFx16MFwG9fFtxg1JXhAvSsQdtdqiLp5ZIEjiBpk7Mt9ml5UWohexlgnwKH9Eb1w0= 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 1790499834506391.2502149788327; Sun, 27 Sep 2026 02:03:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklE-00035Z-9f; Sun, 27 Sep 2026 05:01: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 1xAkkR-0002UA-7A for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:39 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkO-0007Rt-DD for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:38 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0d31bda43so887478a91.1 for ; Sun, 27 Sep 2026 02:00:35 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499635; x=1791104435; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BJ57psSYHWNWI6fj8S3dJ22ZiJkk9GpcWBSEPb21LyE=; b=edilv/W2uaj1g7fAtmvvKHWo75rbNKK3d9IwEqV3dEzde4oEMUgyZY/AkB1xO/tcXy uu32R2pQ2wg2ODZPhxxRATAKeTAOME/cigaxD5zoivK5QW/Dr0RI4qnAWD0IU/zFemGD c3fZM3GPiZAvwxWlhA3dNQ/nIR0BlRLVhQnCpOq8SOOH3c5CqlkJyfTQugBZzSbY8wia OLsYg5s9GIljB5CPOQmVwZNXwbegMg2amk8qZSLwdJJA9LhctAEG/7gTYFW/EppG73Ba fO6u2EmfYcLhkzyEg3Bb+NX5N3c7cGdIdezSHyOHZdg6IO3jBV9xD8ZLa3DRQfDGQ+jQ coWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499635; x=1791104435; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=BJ57psSYHWNWI6fj8S3dJ22ZiJkk9GpcWBSEPb21LyE=; b=P32xstDfrmdbHX3nMaXtQa9gDb75sf8gvY4grbm/1muwIgfb/2boV8+/9bWmo5RF9K vUmY6umZ+ptv1p2qky6OVm7iLWyG5RbC1dw9BeHysHEYIyCa1kyoqZfEEMXk+rFAks5R 0y75vkYMzNlRqdHa1t11heRRbhf3QHt6VtfxdDaeOeDXDJTg+rLmkpJ2/N9C72INzHnO cUn6Tx64xLAO1eJhBO+BqMKtXK8ibCgRDh6aJZIXA2bPpcgNcwuEID+0D3417P5m/NQK /DQdytG4nH+4nK96yV16WvbnjbspQ8ZaDc2I1YGGVQDZ+O1ZiENx1Y+QjIR/81kRSlzj r6Sw== X-Gm-Message-State: AFq9FYJpJ0KEf02Kpgxn42qWbMNpOJjzDh603qWKQr05/MJQVYJi+9uA eU5xIiCy5Gf3xZbN6CGBYt9DbudWsvSntiwnqChEk9cszygQ6Pu6T97drxxPnCfvmiUHpaGyx1I nA0DC X-Gm-Gg: AYBFou2rpwximaNR713UapQxX3n2XoPTQh5mBNnM76jrthDr/OypZKVJq21cSfJ15X1 mCCVkfyDJvu8ophtySTnHje/oFGl67cm3a5PZSkW5eqhrwlcOFmnj3mwKtSJZvq3Ib0XGfXmHKH c8skWp/pZ7IBEYuAO+z/fFEaFNAN0Y0aJXP36kybIXqT3pglbWT3ypUx1S+P9ZcM0n2theYGFWe b/aV3bP7Nw1ojXM6yeiM9cflafSLO2gZEwK9bvaKFEgvS+sSCYD+zUIFI5jLDtLwmVpjX1FAA3e KKKaEMSKhnUvuc2Q41tzJfnFYSv8Y2dXwNP9WQjho3FUMKuHEjfKexPU8cGop+1t5JiCFTUBg1P hILHO0P0/WxBw1toBcijISwlmVq+TQbu2E3zXHHH0lx5yTPk3FFYriMnEwHprGPRjsQAakhKtyV B26dQXtLty7iFJ6XToieZJqltNMAMGcXoniPB33Cm7+vSqjnQVgV25p0U2Muyb/ROqN1e+S8T4W foERgB7OY+f+7AK0rDDLMJFQGxSuA== X-Received: by 2002:a17:90b:3843:b0:3a0:e4ce:31fd with SMTP id 98e67ed59e1d1-3a0e4ce57f5mr2913226a91.10.1790499634946; Sun, 27 Sep 2026 02:00:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 023/101] tcg: Generic expansion of tcg_gen_sar_* Date: Sun, 27 Sep 2026 01:58:53 -0700 Message-ID: <20260927090011.10724-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499834671158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 5d72c92534d..a78752e0427 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 573a4963b4f..96bd6abd74d 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -9,6 +9,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 dc1734b7584..065e37b34f7 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -409,6 +409,11 @@ void tcg_gen_or(TCGType type, TCGTemp *dst, TCGTemp *s= rc1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_or, type, dst, src1, src2); } =20 +void tcg_gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + tcg_gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); +} + void tcg_gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -530,11 +535,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); @@ -1493,11 +1493,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 Sun Oct 25 09:31: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=1790499721; cv=none; d=zohomail.com; s=zohoarc; b=BXS1e8CT4SloMD3I7Pq4w2C2uix75+CNc0kjGiaOyVFco+0qp/fhvnF5LLv/WpeF7/HluZWpigijKAQw9i1Nt1zM7BWICJenQK11tjrJXJptJb9zWEVOFlBsJRTQthhcz1IFxxSaytAjbBliiDK4tfkYjqyDsImsxqhbyyScXYM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499721; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uFdaP5GypB7d/PwNuDyM8jJ3ehWUkVlCPZZw3lXbIoE=; b=CnvvQfcPR+xcLAFwPlwbb0HHKTanoz21JJywBMd9ZT3K/2fDwkp0zpMF5rutTavjgNYFRl+TZg9rdhOzziF4LEJBXHI5gnaLgebscA/vhWXrS2w/lbMnc2raUT5PdQcSH8v0STT1nQ+ni1pzkyVMTeMnCWfPulsqzypMVgY7LmM= 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 1790499721881310.457321321093; Sun, 27 Sep 2026 02:02:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkl8-0002ke-6d; Sun, 27 Sep 2026 05:01: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 1xAkkS-0002UZ-EN for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:41 -0400 Received: from mail-pz2-x0c.google.com ([2607:f8b0:4864:3b::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkQ-0007SS-KJ for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:40 -0400 Received: by mail-pz2-x0c.google.com with SMTP id 41be03b00d2f7-cc78d45f78fso1199337a12.3 for ; Sun, 27 Sep 2026 02:00:38 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499637; x=1791104437; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=uFdaP5GypB7d/PwNuDyM8jJ3ehWUkVlCPZZw3lXbIoE=; b=Uq8aFrzILegArUwzY/lnF+D08u0vGBaVI+V2X7bmPOTM7FDcXkJWc+MpEue5sE2dB7 tA9Q8kfR472SXzW+wMmNOownBraAFkCdiGM7Ku0GlRreoBCoVYp241RZl4OCGrOhNlfw vlBuHuGVin32WK6Ph/ZurZq/ELETt0yebll0DnENSSkNRnLXFr5+yhzPTL860vJpNm6j S9LvB+/wm32fiRbh+0sDMOEadnwrg77IDN4akuwrxOXPlKR69PzUxab3w4wjZUT0qoBC T1RLoOQHW3Eg7mShh3J1T7Dv9/KHURlAwro5f8wRfz+f5jrZmGA5zEdsxzV66VtCHZpl e8Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499637; x=1791104437; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=uFdaP5GypB7d/PwNuDyM8jJ3ehWUkVlCPZZw3lXbIoE=; b=OOX6Sb454zkXq7/V8GloB5562wuHxo8Md2UknFnxeprwVMcmJhylAt9TiRXdBUJ/rS 25XZMlBrJil8rUq/SeTL8biNLvwyNAZRKiMKJzorpcBFORM7PBB+GLZFhgCYc6emUttK FvePDENuhLBJNXDpXb7ivnRy+O0v4wcmA/1ycSbpP2qg7so4GRuaGWTdA4s+PQpQmRM+ WU/2sbgcvHZ9iaAl8KAErK5vLiXl8ucg/LYAny0VyfI122hdzAO7opke/k9HifXN7uqB SPGT0HhQcfZy8FzVwW91jB1ooDFNAvm9hl2EDK9kgrD8ZILkm4oM77mz3fLDRdi+ZNji bsmg== X-Gm-Message-State: AFq9FYJRjlLnvzpoiE+wFeZqxVIt4fUsuN/RE4PbdRW4pRDujjnsU1YT X8li31qH+1wNOOE1h1QsQktW2VZnYGUa1j+75nWw1Ril9GoVVxCi0dB/EJ0HH5tfNrn6lEIyeNa T2hda X-Gm-Gg: AYBFou1syFBXOrftUxZZNhMtEpxctCT3vfinKdK4dwvVSTiV77AGa9JkOOdW0vkX46u w/PZZmw9mncL7+0zlVkEsrU/jfS+ExnKcyySlvvHu0kIpUcGpuI9DHUvhJqsSvxEfeEgyT0kUNP Mkh/eVuB/4FIh54+kr2nYyUNRQ1Vy9YrbVfjOS4pC0VLAKw+vqSzEKF8oJqZ7ZwGyvTEDRZsDie R6QbzQeR1jG+9XRjeX3lBsyhNIMjxkW8G4pRQjQJNbPZXkJQpNuZjxSQH0lfXcny/lhCFCKnLZ3 3kUr3LQ83i60A4clIzWMnJvn4HkYMhndcJPDLrFu6aAMK5vVAZCJ/Tr3cgToPRlOWoKrh3phVGw HKEOpUHnsp92eUAj474Hb2N5I73zdpb9pdcKaqfnvrJGgdAFIJULkP2tIyU5Uahdi5V7I1nMoVp NIMpPXn2GRx56uZMqPBUBKnk6XenwWtipfLhNV20pkSp6GWIC6E6qK3Nl+qQqrF6A7SFDfDfKVR eXXYH7AKWDXq6pabzK8rVaBEZDW6w== X-Received: by 2002:a17:90b:5283:b0:3a0:e22b:1b14 with SMTP id 98e67ed59e1d1-3a0e22b1d5emr3081079a91.32.1790499637079; Sun, 27 Sep 2026 02:00:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 024/101] tcg: Generic expansion of tcg_gen_mul_* Date: Sun, 27 Sep 2026 01:58:54 -0700 Message-ID: <20260927090011.10724-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790499722318158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 a78752e0427..fd35307a848 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 96bd6abd74d..c1273a10197 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -7,6 +7,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 065e37b34f7..70591ba503c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -399,6 +399,11 @@ void tcg_gen_movi(TCGType type, TCGTemp *dst, int64_t = src) tcg_gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src= )); } =20 +void tcg_gen_mul(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + tcg_gen_op_ttt(INDEX_op_mul, type, dst, src1, src2); +} + void tcg_gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) { tcg_gen_op_tt(INDEX_op_neg, type, dst, src); @@ -601,11 +606,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) { @@ -1493,11 +1493,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 Sun Oct 25 09:31: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=1790499719; cv=none; d=zohomail.com; s=zohoarc; b=BQt4X7/HKBOtAUOPYF7+6uoxp478gRq8ggYRFMyyX9BEZy1cjlGHWFyn5E0FyZArVi+Zgy3RMFG3yaYdNYqLX0FZ6xGNaU6gybScBd3ELPar0Xbv2spqYPhW+QipK30qYjpJ/ZBxGeM3s2KaqrwwMMfrFgcTOM8OgaKQbIzByPU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499719; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1l0lEFmU2w5fumtakCX5Ty73mUn1YU9TFhC7QQAPdwY=; b=Ke+P+etVc9WeOeZWmh4k0Tj9KxlpXEgUDpjMGoFH+Fl/u4z6bJLFIl5I+TdN4hJt0DLKTvljOiAk4DyhqEsw05ALtBnJfgWNiLABPL9itFTt/CNi0plkzftyX4rjgdjD0rwj3lOJznkUjOCVb7EwglOgOE09T6WFkWOEZDwYqxY= 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 1790499719171313.38946589008196; Sun, 27 Sep 2026 02:01:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklC-0002zV-Jl; Sun, 27 Sep 2026 05:01:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkkT-0002Ua-9y for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:41 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkR-0007Sb-AK for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:41 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0eeda3e03so309306a91.1 for ; Sun, 27 Sep 2026 02:00:38 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499638; x=1791104438; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=1l0lEFmU2w5fumtakCX5Ty73mUn1YU9TFhC7QQAPdwY=; b=WSt4qKSW8WBO3mkqgS3Gzm0cAEW76oqYorOcXPd+0Z5z+iCuA6yGE5ZDp2OTzUu4C2 pFwzEfnciOO9tnwRjijqgI8SE95aLD1GGbizJkMmc0+OBd05uV2hnO3KwihYhw/zPwwG EYZdzm85C1cizqqTuRmuRgiPCC5bWcA6mdad4RuB6yVLSykOjxM6+07yEPKBjbhSrXiF 36AXWhLLsnsW2ZfCpsvAml6urrHJbLlWbNUuppWdesCKhpNb5vqcA51mMQgME7xzmp2c azDtMlgPsHHkE+Q4aKEIv9ygdHR7F6qlZmWDr6wpnEPyrI57blkS0+20knnPlB9fodzt kwlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499638; x=1791104438; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=1l0lEFmU2w5fumtakCX5Ty73mUn1YU9TFhC7QQAPdwY=; b=1oZaeTUkqpejDqhqa+FcRJfA3MKJ+k+rZYpEgF/94cLJXWXVSwY+hs6Glmps4OUZTo LG7BvM93CD0jPeqVpscMPdM90PvB5QQUtnIB6t9cmZlQJMeDva8XlfkyQK6PE3RpeaxH VR/SFAHqY/Lwwnq9XlwTQUIx6kwsEhihf8SzNnPpCP5AKhbiRuvOGSNJ83Mq9gWGc0Su uiPmVgEAnzwbKZ8aNdlaaQBU9kKSxNpi0we2UncAWGYjeKOKMOGDqz9in85zp2w06icv TlsM9qK5XK+MY0LeAKWgoBTE9MUhDg8NuFDb4oDDJEWpucbDnf+P/WduF+B3r2GzfR2n ZLOQ== X-Gm-Message-State: AFq9FYIY2YrJjvLRVpiTsvYgx5YLvTQnqjtvzK1Yy6tmKfriv+lmEhXD UbFeWQnenu4bw0XU/UhObzfjs3YxbYkndiysAcMwPY6QCG82/qRSuGio1hrmVM0ZpgMflRMY7FY aJXvv X-Gm-Gg: AYBFou0v1qin5g3nx9qtUU+OKoScG0Qv7I0G36FKw4LHwdRDPqa+af+AZ2uApqncbjq OuJjNpnmvRzQLzL33Yt44kstk5nhwO/hvWnDI2YHTai3qiWFsmBSWq6rIKC/n8NZTWIl6k9wOBA ANTcpbls7grpiNM7N41UcF+mfe6E7EUpd4e+QY0y4+CVJ3zN8bdPZ6MZOZlL9zXg/gjoD2h+FUt WIqzBVdsCUIz6njPo9x4iqrkgKshSscNW+etYitHQoynGJdEveTN6xDE6aGLxuPjnlFx6DbXnQ3 MaMOxKr4acQrhywrxA91VOediZsb/qcxVzRUtDAfaSUJmbu+JeZE4S9r5iBZ4TeUJqzcdeI8iJw rZrg5x8nrAkMJa5721upwZSJr/zedEPmJAAKoBj4Kz3mYN6sfBPxlc/7ixeLoBSFUYqTq+aepus +9C3BYhmR8AVym2zKzbtLawBY5+zNDRnzbEnUQ3FbcjWX1MT69ZGP//f18SWHRjAvjdMIcZ3wFu fzDI7oR6E/b1P7Ylv630yPUsGvHeA== X-Received: by 2002:a17:90b:2647:b0:39d:ef3e:9035 with SMTP id 98e67ed59e1d1-3a0985bd43dmr7543562a91.10.1790499637879; Sun, 27 Sep 2026 02:00:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 025/101] tcg: Generic expansion of tcg_gen_shli_* Date: Sun, 27 Sep 2026 01:58:55 -0700 Message-ID: <20260927090011.10724-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499720238158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 fd35307a848..d469f2b42a2 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 c1273a10197..c47de1a3a42 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -12,6 +12,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 70591ba503c..716417bbfc4 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -424,6 +424,16 @@ void tcg_gen_shl(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); } =20 +void tcg_gen_shli(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + tcg_debug_assert(src2 >=3D 0 && src2 < tcg_type_size(type) * 8); + if (src2 =3D=3D 0) { + tcg_gen_mov(type, dst, src1); + } else { + tcg_gen_shl(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + void tcg_gen_shr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_shr, type, dst, src1, src2); @@ -520,16 +530,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); @@ -1549,16 +1549,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 Sun Oct 25 09:31: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=1790499775; cv=none; d=zohomail.com; s=zohoarc; b=bEYLi6gh4dPLcQHy6V1GsvfAc3cR7g3rlKt4FEg2wWiWxWQiD7Q7kGtLH+izsAf7NhQGipzkzHPMSkoaOFVuHp78vop7rPJ7DM0OMXTobHoxpxwiZYlREsETU6YF0c2riLM6b7RUz23qP4jUzMDaxyQhfbj2Xy7eQCvNgno6Lv8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499775; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=enyU/XUU3wtv+Xl6ie8oo8nkPzqD6sixQ7DId8tTSoI=; b=A2QQsJyqBhgxBLngaw+sR7hvFShVZ2kYhO4dyjKIqRXv5XiFUFZMaqS7w1SPKfKNys2gXz9ER2LCRTQfkxajEiCDlADN3ZHJl8TDN2mkLaersRiZE166wTzHKgFyY4oqkwHWTqQFJrOBqt1Pacum6CRhx54cZqixCiibZ7ZTpHY= 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 17904997751777.562972738761914; Sun, 27 Sep 2026 02:02:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklI-0003C6-UR; Sun, 27 Sep 2026 05:01: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 1xAkkU-0002V8-2f for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:47 -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 1xAkkS-0007Sk-BB for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:41 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-398cb5615deso1777255a91.3 for ; Sun, 27 Sep 2026 02:00:39 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499639; x=1791104439; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=enyU/XUU3wtv+Xl6ie8oo8nkPzqD6sixQ7DId8tTSoI=; b=LCMwG5iV2wOU9cAb2Dr6hhzHSXhFAaRVwdmPAFOHHf2zm0AlPZ31EULLitakFu5c92 CYtw9drD+BEqeVpQJ5ePux3IoNn+RyDA1/rckjDZDXN92BQX04HvQBHK86w6V45CoLqM XBXtsUcvFS8R0MtAQ1JZXv9IyYpvuclkmUq4NkoIxXRKrXGyi46gQAirzwGEkY64r3Ta x8nVIkVIEVkEEl8bB+HE1UYqMyt1OuRSCbv5j0F/TcWcvbJbfMnA0wCWMr03w+8y3j+z 7WAtJQSmK/aVPeUxJseojzP9PfeBtpAmZpn3hi3g+xYKy8vvUQBgqG9P5b4Fp7Ip/s7G fVWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499639; x=1791104439; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=enyU/XUU3wtv+Xl6ie8oo8nkPzqD6sixQ7DId8tTSoI=; b=ucFbdXNETxZj83wYZMSfHfQr4KDoSIvjA6xVrC4deciG/ENZQLkOmPLiX/5U3s7wNV XkFkz2A/rUUaEcCVCUFIec9M52apQNzYzPYY8AmvfKgMfb2MekJDMVO791hEYBzElOt2 bTsT5AT8IMT5x8Smp2B4yClcltFPjcfkDxeB37BfOpqktSru5S++V/yYGfYQKL1Mw5/b I17JESpJ4pnlzYoTZtqfIjgiqmXZvefBXpCaU7SZacgelT/WQAskUyzvTMajRwssYEIG jSwI0QnhMH8vLjk/qNO4uIW57xWeWXCVYDW1U6VgIumzs5lHfAFvmb7M63SKX5xM4cwJ WqwQ== X-Gm-Message-State: AFq9FYLb5grLTuwyhYyZiwYAx4fOZHToseEpEWzMMZZdf3km9AFVpYGR wL5afqqJXr5N484SKSRpHIlmbWD4uvY+bsbHphi2ue2RvqsdfTRz+LRRHGm5BYAm2ttHh778LJt 3d0a3 X-Gm-Gg: AYBFou3QPLCCqOX2CgFzQvfyQF9/LGI7wa9kDbA5/uXVEuPlS5usro8DO2yMJ7E8SjY 8EdV6bxTYNxnStpRCh1LOYJMyOvSsjv2R1dVZcq8xATgpSxLTtVJ4z4fV5nzlyoOJePFtHJxuhH h4F83KpPpvsi5vOb95Vin1YvCrGYGPiQw4sSkW1nmG1oKCoTxa0ZhJX+2HOUN9UJ6B/xKX/6Af4 SQa5+KAD1jXR12V/Vxhhqnao+KUPejE/qnOEAGnv9GjbdJFXM02s6CMcrGhEDT5cedeRx5G1H9c MkEInaQN52dDMqcrmZPxpl4xi2DTHZBcRQF43gN9npX+Qk3xHL1xBUB2yMiw8banIpoUvGp+22R vtprK1YnsmzFz950qp+612oKXp2rVWjqDUIVRUy7KNY7i26RzGhCHEUEV7nTxnoXyBDshQkW/kN 7sAyhDM0NVEYt2dz1p3NSVXvcBAlQVqMYT9hlicorQD0v48CsW7e8VKzGejsCQxcUArNPr0eC/C +/J1s9Fcq6wvmy3RuX0h4lLmcmeQQ== X-Received: by 2002:a17:90b:4acb:b0:398:b1eb:136c with SMTP id 98e67ed59e1d1-3a098d43e23mr8696719a91.9.1790499638886; Sun, 27 Sep 2026 02:00:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 026/101] tcg: Generic expansion of tcg_gen_shri_* Date: Sun, 27 Sep 2026 01:58:56 -0700 Message-ID: <20260927090011.10724-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499776437158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 d469f2b42a2..af6b85b6a3f 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 c47de1a3a42..ea641158ae0 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -14,6 +14,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 716417bbfc4..a72fb4c0aee 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -439,6 +439,16 @@ void tcg_gen_shr(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_shr, type, dst, src1, src2); } =20 +void tcg_gen_shri(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + tcg_debug_assert(src2 >=3D 0 && src2 < tcg_type_size(type) * 8); + if (src2 =3D=3D 0) { + tcg_gen_mov(type, dst, src1); + } else { + tcg_gen_shr(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -530,16 +540,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); @@ -1549,16 +1549,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 Sun Oct 25 09:31: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=1790499925; cv=none; d=zohomail.com; s=zohoarc; b=L17zhNjZBHxaRT5Ba7JpPlbphhuwT5e1RDl+I+yltUku2cNHKMmDuwB+CdP/NpIde5V1Oi6nfb3zH17Qe6AtvSdXC32km2LXskphtQxmsUoi4XA/T1rqIx+r6xmkM8SQfLI/xsF/boU9I4WaoPS965+dzvwfoemfuf/nd1NSjvI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499925; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WkbnIaNaKW5U/2h3ItRbQkzJq+mYAwK6zleV3W1NsWA=; b=RIhDIkwtSzPxVhCjTwcIwPI0sI1Rj1uhe3+t0a0jonzSBjFOW1txRQ7Ar1imD/RYe6PTMURazZ1cWFm35xoExD5HD0n6zmKBiS6HTtmpJ3uYECxtqSghh8RlBDWUSPVpgVlOy/o13N7mI+aLwW9nLGUHTg6LyLUagU9TZTXKsEs= 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 1790499924978734.7944459349081; Sun, 27 Sep 2026 02:05:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklA-0002ov-Bj; Sun, 27 Sep 2026 05:01: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 1xAkkV-0002VB-Eu for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:47 -0400 Received: from mail-pz2-x1d.google.com ([2607:f8b0:4864:3b::1d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkT-0007Su-9z for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:42 -0400 Received: by mail-pz2-x1d.google.com with SMTP id 41be03b00d2f7-cc1cebad4aeso577932a12.2 for ; Sun, 27 Sep 2026 02:00:40 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499640; x=1791104440; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=WkbnIaNaKW5U/2h3ItRbQkzJq+mYAwK6zleV3W1NsWA=; b=Z3T/TczUQXTSsAe2sZ2SSbI0k+5q13uuvgo7+hnRjvFlmthi6RLuE1yOgavFqoDdmu ze+MrWRr6a4ySuyG1l5VeinTq+O04QXrRlhZwaycF7cIIYYRlMRhewD5UYJeua9EY/90 g0AGa33HUJgfTWvU29aOLiia1JwAlUylqPdwgpD91UXoJnzXtxs859Wx7ORylmJ6nZ3e i+8Ye7wUtEE1q1FV5k+saLXsqYXSIpg5WjUBVGPAduuWSD+FpaHZ/nxkAFfeKhtJfNaT IinMjxvZkTDisfmL3VmW3afhKTB72qXXUf/DepX/xVzt8YChzHaH42FuDnuNXcNDi1Xn op2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499640; x=1791104440; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=WkbnIaNaKW5U/2h3ItRbQkzJq+mYAwK6zleV3W1NsWA=; b=Y9Ra8x3QeFyijI7G7Z0xLGhM0pQ800TuETJlFxKNLvEy30NhKndEeR5QD0Qbmmguz/ TtmuCPeoJza8tui0D+Sqf3RGSIl3W+USpf7qKJjBrFUwpRY82tKi9poh/XXGbYzNulSU ObTvYXlOPMr10kqSa3U0w/wKpLpQFubyQ5JyB1rJ6Nw8KqO2lHwHw9Ot13RXixqgGBH6 yJZc0HhDZGPTlFCQnmU+7sJgGn0ilGPCNA0dMG8aTiv814vNpan+hcis4W8c/4eW1vUz pKivcC60MoU3OEVUdjl+/zSeUNjHlSQK/6gUyvEZlmIkWzKfLUyrfddK27Yr4/h4qTFR gK8A== X-Gm-Message-State: AFq9FYLw7Wj0sSYaSYVuIoOugEDeNKI7pW5oIJXZ+1+rkamuXpbzviNc VBu5TCZlZcY3sP+gU3JUyObOx9TIXgCiR8w6rrRvbGrbB8ffrBl/hJR9ibPamc5l0kKSVvDTP/Z J43c9 X-Gm-Gg: AYBFou17SB6SDn/Bpi/I4CfcWhEsZEWrbbSv/MZ0yxK3lEevvfPaWaOGm5ny9o1kVlm tCWiu6+WvxIuK9tK2ag8wLuxVY0Xl4CWMvJZl5wK3IqjrvUS2YydG+KppToLyNyFJw42OWC8RFb 54x/iAjoeLGsIJ4ubUuS8VCq5b0Siopi1jt6HpUKePIW6zLs5/6RApVXWzs7a7BdNxlPUsCOR4k 2GqLny7qhSLQcG/F4uaYbhESU8qRLf9mNHF3hKEHNfxatYw1GKjvsdEdPckJ2H2BUmbM8iAQ/ri cwh00CbkMbxBmQkeLgi++/qTlFCsZOVW42kwrr1v/BVx4HVaQvfNyTy0swnWVg/WkokbyWdYaST Nb/KPVqJHSXg0o/KhSz4dYBI4FThEGlOXOv4a/4ZZjYF/VHOBGMjJk75DwSPKg3VeU/yREVVr6F D5oqHDKXUXewhuX5RjlrkwP1b+gdct+7fm+uQISDugzqi4Ri6bkpwyFcoZbEpiuPDz7Xu4udo5I gGFVeNNOh2aoPpnBmnMfmN/uQaxWg== X-Received: by 2002:a17:90b:917:b0:39e:6c69:7777 with SMTP id 98e67ed59e1d1-3a0989866e6mr5934833a91.32.1790499639768; Sun, 27 Sep 2026 02:00:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 027/101] tcg: Generic expansion of tcg_gen_sari_* Date: Sun, 27 Sep 2026 01:58:57 -0700 Message-ID: <20260927090011.10724-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::1d; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-x1d.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: 1790499927182158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 af6b85b6a3f..6b66f050cab 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 ea641158ae0..2108082ce63 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -11,6 +11,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 a72fb4c0aee..7832e99dccd 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -419,6 +419,16 @@ void tcg_gen_sar(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); } =20 +void tcg_gen_sari(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + tcg_debug_assert(src2 >=3D 0 && src2 < tcg_type_size(type) * 8); + if (src2 =3D=3D 0) { + tcg_gen_mov(type, dst, src1); + } else { + tcg_gen_sar(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + void tcg_gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -540,16 +550,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) { @@ -1549,16 +1549,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 Sun Oct 25 09:31: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=1790499828; cv=none; d=zohomail.com; s=zohoarc; b=BLFnwU45GPCB9V9lMs/HK1P4Hx+Ly/bQ6FFYiQ1/5BbITQBz5ErMeDVbzGg0YotaBtTpYeXzIyBhHJ2wYRCW6AHE+JFq+qj69KmAC9HlJANQ7z8GevbHmaUr+v/SvdtLyZJfwA7ZJjXb5tjKLAGP88JxED218UBy/N3UBPIC0WQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499828; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Hvn27ue+vsGN68JJoevWdWrdd95AhTo2/sIokc1MUok=; b=XBCpf40lElDUpMDu4ZNN4pBZyt1pykpheJtbUVblYE0ZRckn7WcPMcGgeXp17w+KJFEyhUvd//e6nRCsQKnhSfRBYn3f+tBfavA3OLS+5CruWm0c5YaLLpP/+/UC/b19FEyOdejby0+Q14G4h0rhgzpp4po13iO55vE10mj01a4= 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 1790499828724892.7407827445284; Sun, 27 Sep 2026 02:03:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklG-00038V-Cg; Sun, 27 Sep 2026 05:01: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 1xAkkc-0002VQ-1b for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:55 -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 1xAkkV-0007T4-7F for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:45 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-396ccda24a3so1201510a91.0 for ; Sun, 27 Sep 2026 02:00:41 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499641; x=1791104441; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Hvn27ue+vsGN68JJoevWdWrdd95AhTo2/sIokc1MUok=; b=xJyFw0x6KeoQEaMbc/GOk8wEtImDSWSRBvX+R3uFB+ZKFIUagKAZoTZq8KPLrVFn0J FGU4cY7OHddoL3grZep4Em4K4RdwdbvM+64TQc91wSqee4cfbuvcqyU8zQEB4JzYtAQO bfQZswNs6rXpnz/gFGhNd3EOflaakShJ+TJKnnThCEvXw+7E4dmSm3fEuRJQmEzs0k2e KOlQ0eMlwtG5peVx25nwkNZw1h4U73mI9+mDA+uGLrFltS2S1diFEK8twQ2KItwfYTiQ sttOHdUS1rHrRCkvE5vDAoFaQG6g1dOq7SE2ftLUTwk8XVgu5lNm4HiWp3HelaUT9ZOP HOAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499641; x=1791104441; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Hvn27ue+vsGN68JJoevWdWrdd95AhTo2/sIokc1MUok=; b=V/lzcjpw9STxOEy8zDt60yrSFoF7gUxRtlVRUOTgxjkj1J2x2V5FTg/pgXuuJN9akL 0abTYvGZcI65Rv0RgA+Lt5JusRXva41XvDgcPVRn9ZenvqNBA/G/4nHU7u4AQZ7gA0Xx PxUM2lg+gVFz9IutlVl5wdLqCslAZ/2azltnwCUFkuLErX57sqwRxs+/qiVEQq7EJ/0K FINM2NrqwgAdsjxwCYk0MiAXO7yCMakiFmKkTQpigsSMXpWbVmiiZuW26n3NvzhbJ8Ir 4xMbE/344gvxM+a0vJBl4o/jtM13ZILevJUOH7t8m7+IS/nlLBC7BXWA2YRMl47Mp0ls 5mzg== X-Gm-Message-State: AFq9FYITpZ8Y+sMN93seeEHTgN21jThvYmcONG9a6gJdmNQPZy7csOOY ZqFh6JJu4ufA7u3cW4/tYOmGWaYNkNcja5HTxwRQkkArL5eTd/ALFse45+6+WuouLDmCtOJjuC5 mIzhW X-Gm-Gg: AYBFou1QxAH7sMCy/flnWZQzZcJs4804QTk6q3FsZLiSjPcm0qFGvrarEQcSadqvVe1 m93J0LpUh5J3LsZ9oGlAJDwiK+DAJOZge3/fuEHb6ogYY2VT4XasbYcpMc/x9pk04R9hJ1/WREV xSAes4Y5c05/CXfjP8PaYFpfo4rAlSrebb/XDjbkOZxULEx6NsilYiMX24nkpAftEVY606n7sfi VJT/cIJ20TGz4iQhR6+BwECg1c5S/9/gkPADHz9+3mHeAekMSIsBpxz8dKzdiecTKt0GuW92+yL OH5A9X0TZmp/a6zcoiejZ7Sx/t7bsM9Pys65XXGibbla/yiOoI6MI3FO24rZfq+25dnbA4OOYT0 5kxslRIeQgSfbH0PPRkO2CNlYQdnJVdC8zLlSLeNh9Gk88riKYiRWKin2gd2zpUWLWeNzmNTdl8 WLpEYj4RXhHMBQ8xQe1hlwP0TlUkYrxVkXLF5KseFSACDleiBUPuOMJQer/AnLS9juvykNoDvIp lQz3DI7BLNfEqQoSUScuc4aO3y59A== X-Received: by 2002:a17:90b:4cc2:b0:3a0:e22b:1b2a with SMTP id 98e67ed59e1d1-3a0e22b1d7fmr2198114a91.32.1790499640672; Sun, 27 Sep 2026 02:00:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 028/101] tcg: Generic expansion of tcg_gen_andi_* Date: Sun, 27 Sep 2026 01:58:58 -0700 Message-ID: <20260927090011.10724-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499830689158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 - tcg/tcg-internal.h | 6 +++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 84 +++++++++++------------------------- 4 files changed, 31 insertions(+), 62 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 6b66f050cab..1af9f58df1e 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index 0da1a9c440c..76c8f026a64 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -114,6 +114,12 @@ static inline void tcg_gen_op_ttt(TCGOpcode opc, TCGTy= pe type, tcg_gen_op3(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2)); } =20 +static inline TCGOp *tcg_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); +} + QEMU_RET_ARG_NONNULL TCGOp *tcg_op_insert_before(TCGContext *s, TCGOp *op, TCGOpcode, TCGType, unsigned nargs); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 2108082ce63..f7e7f4d2a1c 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) DEF1(discard, TCGV) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 7832e99dccd..2baddbcfd38 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -382,6 +382,30 @@ void tcg_gen_and(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_and, type, dst, src1, src2); } =20 +void tcg_gen_andi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + if (src2 =3D=3D 0) { + tcg_gen_movi(type, dst, 0); + } else if (src2 =3D=3D -1) { + tcg_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)) { + tcg_gen_op_ttii(INDEX_op_extract, type, dst, src1, 0, len); + return; + } + } + tcg_gen_and(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -485,36 +509,6 @@ void tcg_gen_xor(TCGType type, TCGTemp *dst, TCGTemp *= 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. */ @@ -1493,36 +1487,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 Sun Oct 25 09:31: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=1790499755; cv=none; d=zohomail.com; s=zohoarc; b=Oz0VzObZocbm+K78mWG/Ln5WLadR3POyQpnCFuGfv5w1HK6nnenXs/C4Tu+7J235/7p5gdiQSaEghdKXPkvx33dOlRGA1AirxZkLTA/q1c3zDooQU1wO3w6jZgw0Zf/OU0n7hR4wDy89CxnBL1dBNl5iP1oRAUilqdwoRCIZmCg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499755; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ELjCGHpIoed9Ru6/xDR6p06a72Ns2vzOBBxGfK62PIo=; b=OmIYZxsI40w4qBlS4cWTXHsxgTkazzO1HYVW8S3Zfr2SIwSzuQJnGxlc5ZGAhCauomZtUItv6FBY+9XulnfNHQHYuFGvJhn5q/zsuP0MV+NfmVky+ywE31Y0tYMh0FhmVjTErnT61GNhbowEbcivRJWz3hwpJnbIEd/RuL+NUro= 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 1790499755521302.11938565933576; Sun, 27 Sep 2026 02:02:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklM-0003V2-QW; Sun, 27 Sep 2026 05:01: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 1xAkkb-0002VP-7e for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:51 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkV-0007TI-7N for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:45 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccc09d65so1312126a91.3 for ; Sun, 27 Sep 2026 02:00:42 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499642; x=1791104442; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ELjCGHpIoed9Ru6/xDR6p06a72Ns2vzOBBxGfK62PIo=; b=fE2QwPBDc819TlD75l/dEK0/frgKTXxam/C8xfg2sks6/tQ/LWVFr8FMdUnaoVkD5Y /p89egjID9SZ/EcKYe8xm/vbb7C8cnRpoRirXRIapEj7ivokdpWhqvqW46Bf7szfV9Ft KQuMBR3CERuOOquTTHM1SwYojwUHZurzCdEkjBx+m4MxnYggn6rU0pNkmhJBYH+Oric/ jCBKe793elydE9DX1xdXAzJSObSl6yqk7g9NwAjivck8j2nfUXHlwKbnzDXhdE5wOnEL CFQx11lY+zU0VC3dnX3Z6HBd1mu7giY5wtjYwUn676ILLEF1kuX/3AGEZegeopRJ9xlL 3iXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499642; x=1791104442; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ELjCGHpIoed9Ru6/xDR6p06a72Ns2vzOBBxGfK62PIo=; b=n6BodItJHrQZI8CZvQzG/HaTFBdoiA/w8YTZP9rQe7rS6DDLimHA4zkW/wnwbmR/w4 tI8EBdeEEhskjN2WBOUIMedqUAIZc+ZqMRC0lYecWw0yKjLczhbihQW+LxWDekQPGyFG PvZ9CrQ7gIX8k7nVRPSDKLaAUTq+lfEtS/D7VhuXGj/FD6rzQ9E87L95bv5PezKEigZJ F4dsIP5yFHI2KBKv5SaHzsFBzoMkqM6FtD8K8iTpiivNURXe8nOrU+nEDwHbyF7EikeT odJQpOfLHcpO1AWMabm1QzDKHmQn/og4lh8TIhyKwZqDCKrT6eyeWzbjvoSaWgFM7t66 754g== X-Gm-Message-State: AFq9FYID5S5O32njTFi6P7Us/seYTiM2wEURVAwEqKnSLObsnufwnEUs WI7HYVxFkNjSGBmWywqfpd3ElLzIWoouzOT2BQGAxbrtrAA63FHsYlwqBI2/BEmEilPD7F+s9ot mgsyN X-Gm-Gg: AYBFou1gxC2zHs9UW3SXZIJvQ8InMCUkXzMo+r+siBokszXKu51X0jojONCYJTwaz+d MrhuD67Z8tKaaPq8KsEbD2tO7MpCJdV3YUqW/9G9GCI2pWsmTkjdLMhzQP3IXZPemiNrhB++cBr E9JprFQiJV7UbzNdkKsaFLUshchau789qshaeWdh/tyt6hfnH1q36ijzRASEK3Q3Y+o080N3S27 CM3yJ6OtRxyDwZgdb9qwNqBTE+SDVcPD79sjQcSFtQqWX/YE/rJBcooCJNvxhaeF21G15Lh1Bcy lT+P0YxmmrSJgrA/BMlOLrCiRu7mqr3F88w+GjqdnfWgX/IRgcCkHFYe1On8Rb06394juPbc3j3 /2MJDTYm2iMQ/0RCxbAtL4yoxzaoQSwSTZc10TCP4icu7S7SK+aJyAyYJRZGO6nScf5S5Ys9IMF V2anBQHmLjtyOOPmmG2wCM+w9xk078pIaX9qF/nute1HLyTKcrPD6mrc7iLkwQeAL6OWCu1gcUh TlLks9fGYAZBc41TxzKq69Cwn935A== X-Received: by 2002:a17:90b:1dcb:b0:3a0:e786:84bf with SMTP id 98e67ed59e1d1-3a0e78686a5mr2667983a91.60.1790499641583; Sun, 27 Sep 2026 02:00:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 029/101] tcg: Generic expansion of tcg_gen_ori_* Date: Sun, 27 Sep 2026 01:58:59 -0700 Message-ID: <20260927090011.10724-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499756368158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 1af9f58df1e..b574a8f4f4f 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 f7e7f4d2a1c..f7a7dc69c9d 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -11,6 +11,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 2baddbcfd38..90aae9ed4c9 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -438,6 +438,17 @@ void tcg_gen_or(TCGType type, TCGTemp *dst, TCGTemp *s= rc1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_or, type, dst, src1, src2); } =20 +void tcg_gen_ori(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + if (src2 =3D=3D -1) { + tcg_gen_movi(type, dst, -1); + } else if (src2 =3D=3D 0) { + tcg_gen_mov(type, dst, src1); + } else { + tcg_gen_or(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + void tcg_gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -509,18 +520,6 @@ void tcg_gen_xor(TCGType type, TCGTemp *dst, TCGTemp *= 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. */ @@ -1487,18 +1486,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 Sun Oct 25 09:31: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=1790499795; cv=none; d=zohomail.com; s=zohoarc; b=c+MA1A0TqyCw1JqYhbTk68etNaHroqNYfMArI74/Gm1/LmbXz44IATmK4kuu3LH+AjSfGiQ/OsSkfrgfv0269gNSYmTRrr0DNNt7MBk1T01ZkYB85jPjunR2s5PZNoVvdIdokcWm6H01pHnXKIO/xa988OYBRpn0P/qsareIKV8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499795; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6pMysBxSrTlkFbts4bdYIULpu9xsJQzHV0u1JZuNmsc=; b=Y6Inas/nZCM5yrM/ZBXTPw+KXChB6ba1/No9MdSPM6pXMGE+kl/y2P6bM+2flfsnbM/R/77i+eYVUQlcsNUEa1IKwar0wZQxg54yoR20PQuPT+72y3Y0O/YRzxdkF0/veYRmPGuuJAcYjWGp+Hm/N6piIRwOO2lOJQ9GyZ3JqZ4= 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 1790499795715357.53531421320395; Sun, 27 Sep 2026 02:03:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklO-0003jf-3Z; Sun, 27 Sep 2026 05:01: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 1xAkkj-0002ZF-G0 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:03 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkZ-0007TN-TV for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:51 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0dc47fee0so448864a91.1 for ; Sun, 27 Sep 2026 02:00:43 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499642; x=1791104442; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6pMysBxSrTlkFbts4bdYIULpu9xsJQzHV0u1JZuNmsc=; b=jnjmBTHPyl90L0WvGWF4PwdCvULfO8O8nLlm9TtXNGXrWaC2GHJiN629C/jYvt8Efq jtj1XLpYQTAaSC/l4xbXCl+PccYRzpWfZZEuS59RvuGuPIg0fgHxmGyK6qfV5kQt2IOo RO62Uztv7hK4ulrBtmMZoWuxBps7xMsQM/hYKsv/GoW+bTgiU9+TylhNERtatDtn6QfX NpuaP1xmB3fwdEAnZ4PkAxUmsIfZECVaAwn68t5Vojq+ktcq8OfNgMr23xK6TzMgN8wn JT1qvl+cjsZt7i+izHMEH/OB2DeDVIuuRW8YKoypLqxCc6ZZrHbEoLeYIsRvfETcbkK4 Dlzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499642; x=1791104442; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=6pMysBxSrTlkFbts4bdYIULpu9xsJQzHV0u1JZuNmsc=; b=Ut6sh4tYE6YL5y98EsUkE+uOGj5c3ZWIuftQj5w+bY+lYsUsyM5BCfdny4jCZroBeg NXvdRTNgqMITtN14IHZCIdfyOBb2zYen+3ceWDDFyYLQfVtWjiojrrQjCA5GKxuQS9nj t0z8q8Rq+LxiDVF79d7vEnPyDiW1EBAkFBoTJDpLkKRCc4hcif5D4K6FiFrBH1s2RwFq iMEQ039iJmpOa/wkpjkfgqqETYaBTW62ti8bI8gjrxJFfKaStc6W5HjFcOTZRc9PiBR1 gvPkAARG1+IyoladXCiZFgm+9sSoPMAMaa4/v7gyZRlIibXFjqWv6mfj1eQaKoIXfauP 9PSA== X-Gm-Message-State: AFq9FYLgyJCi6XiVBbvLoWh5DKdBd0SvZy1wEk1AWMBNiZn8S+t7qqdw j7B6s1DsZuHDHymjJOuYpokzwaQ1/b/WlZZDaaTlWIIgNJ14DHEiXNcuh9ZrEpKOKR5dJdOX9LC 3ZP3b X-Gm-Gg: AYBFou3LYwkHzyi8/2+OgTkeERZPvY2frzu8Bj57G9DijjwCmgNr1hlGKiAZS7KD/Mv TrlVpByFaMnpKS0zwdnzsU7WgbbOnG2mXXiqNg4CVSMHUctm+FDfcgdU657c166gWaeqesYDDNQ goQBn8/r3vA1W43hoS+9XpUAiKPy6zl0KJ/VfwXXyMhGnCABrPea9Vt5bfljrR6joitpYOuqWtH 5Gho+UMS6bJkwN3rFwhMUv/kb1LUQbk7Vv+z+YVN7uZwn2Q54S5nh0gII3enr7mlU+mvK82aYJY zKeGmhsfIs1vL5CUdpF8aC7LYa4T/5KgP1l2CHVq5lBe76BHhAOgUConxed3CCvFqEwy0Of41ws rlsUjwEdh0NVLHeFwYs2Coh2Lj4OdklVYPP6UVgF5n/35I7hRK3GRxI0smFe5P+AVWC18bPLR9q z7AOX/HCAkYG6qsXCOOmOr9vCeOik0OQ411WXYUftd2YAJR6lvQsIPsxtX3h1xeCuOWGnvBJ7Bh WovvvAcfjGgcacE7B2c9/swDo7j4Q== X-Received: by 2002:a17:90b:4b0f:b0:39e:4c80:f67f with SMTP id 98e67ed59e1d1-3a098983faemr8589954a91.30.1790499642261; Sun, 27 Sep 2026 02:00:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 030/101] tcg: Generic expansion of tcg_gen_xori_* Date: Sun, 27 Sep 2026 01:59:00 -0700 Message-ID: <20260927090011.10724-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499798519158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 b574a8f4f4f..87aab828112 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 f7a7dc69c9d..b38969478a9 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -22,3 +22,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 90aae9ed4c9..153a759305e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -518,22 +518,20 @@ void tcg_gen_xor(TCGType type, TCGTemp *dst, TCGTemp = *src1, TCGTemp *src2) tcg_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) +void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) { - /* 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) { + tcg_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. */ + tcg_gen_op_tt(INDEX_op_not, type, dst, src1); } else { - tcg_gen_xor_i32(ret, arg1, tcg_constant_i32(arg2)); + tcg_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)) { @@ -1486,20 +1484,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 Sun Oct 25 09:31: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=1790499841; cv=none; d=zohomail.com; s=zohoarc; b=Gu8qrEMdXi08x2ZX9k6iz2WhAjxeSI7riwFC80x7Cdcfsp1X0yZwhIguSFRTxMDnkP6PhgTlCCp5tZBjUPZ2wICI4h0Jb+l+D0zZ48pBUnMPeBZGmygRY1C3T/Bg6vpH7XZeDhYd4mbdSgp2ME8gz7u0I1LKcY+hYTKgfPMMhog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499841; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tpFLCDbhtqHP2IDEgvQaw4G5ls0czOFggKNjlfHXXy0=; b=Ve304IhfwUpYg/zVi2FhLFPPTbs5vb+GJYchfPvX5wn3NMDNaVHPRcfGVoS+25tz4eTOZm4TtOmBX/bJZrw2jZMbeBq49ZYc170O7+RL97DN8LMB0ywIsjogRupB7tzeMK2XJ//euPiQ/NsyLezMrHCCrfkqRBWCnlJy2bu0cdk= 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 179049984138161.681757549492204; Sun, 27 Sep 2026 02:04:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklD-000309-5M; Sun, 27 Sep 2026 05:01:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkkj-0002ZE-Fv for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:03 -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 1xAkkZ-0007TV-Tc for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:51 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398a147688bso1552213a91.1 for ; Sun, 27 Sep 2026 02:00:44 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499643; x=1791104443; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tpFLCDbhtqHP2IDEgvQaw4G5ls0czOFggKNjlfHXXy0=; b=o1loibvP1iQ/QGiyF8Dqd5xZTM+htAMM+6+Jm6jMiwuz00FO1fWB4lpLOQco1B5mJC vBrEao5aBEN3QgdZp+0eZBC7wCCmg8Cz00ExtXDWPHnSnoFHG/bkcm4DdD4UQNL20l4D eSlWtRikDW2MmNNnasDr+75yReUVp2NcV7I+/WpLtJc6ZqPucbeGRa1cR2YNfvyEsdp3 J3vr8l7Wcaloa4JTgJDjwc6S2jasjXgdT9qh4ytrkOLdAAlwHignH6Lfeax04Y3Knrl8 TlWHXKMYVmP+Ugb6ehueWBedHgN4srweGnqykStN/jP/R+wGqsG8LvLvA18yd5NQ/izP 7EHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499643; x=1791104443; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=tpFLCDbhtqHP2IDEgvQaw4G5ls0czOFggKNjlfHXXy0=; b=bRxTYLQcTV+pcMVLKa65VhpySV69oxjDiMo6rE0ptwUTmZgeHiif7LB7itbONCT1PV TpyspyP6ZdnrvmuReTt3ejDh4iuIT2Pt05klgc5Io/mSMi5LNcpYFE4HRVCODGV5TLwU ck1XhjTD7m4b9in0KvhS0EPgGLY/dOu83Tpfx1vYyPrklPmPEz74NRb0E7tBmlW9GHyr mwB4HTyHNi0uSNVDa+UgcyjQpShuVVIpsLr73mp+YqUC6U1TEpDGJiX6GRZINX/gTmOC 3UOQfz/0kDXgQEZRf3PO/jtfJP9fAE77uLXsCfv6upC78tNl50qL2K3QdOyT/eKP/VPG BUOQ== X-Gm-Message-State: AFq9FYKBiiY6deDj9lfO0fAZFi8DbfEJiZ2JPVXrQpP0HdqrhJGtM61f vhdYaLPtCshW93ZY85I5FAElXKtcEwjbNdLvaYU3r8+lHaUUSFNdf8CYfYgVFovHxebhNx8PjUy fufK9 X-Gm-Gg: AYBFou0Ru3DxTtPGa7NNHzwsZWWyBp14XWrN0azycqhXPs7czGtgApajay2k86/1eQk CYGGNswXVOZxtMAi+3vDZ6KqmFn9EaVkrbu1WLYXiCYT68MeNJCfZkQ6gzfLU3TBpmStn8HJpMu kpfbJbPO40OI9EcIWsiAcmSia+g3FrXlrPD+2N6leLzcmjzJDoOFCXOmxpC9fE2ubVAxv43YWH3 /JyyXxxKrM8L3bR/beDcw7Y2Svq3uWs8/CvfXANCaiqsp3sM34MXML+X3Fs8Qh0zHkeVOStcPUf 85PQ1prPMWOLdBUEGc8flejyWKqOHBBqQq9xhZO1vOJRo/JmwT06kXgdhpbKPzXrtWaU3xelFEU qP4f/75p2gzW2DCopzyes+7X7xl9+UqHvkwhfZNufDAsd7VsplFx+18kk7XNRYOgdv3aahtXZAy PZagaYzCGWCr9htYesBWTkbuLlCI0VyhOagrbXNJ+AJm8YaZZ/wqIStDRjCYyM3TWQvLcEcf8D+ PNBx2buVSICWjqCl+SXt0/tzr8S1Tg= X-Received: by 2002:a17:90b:4d85:b0:39d:f254:4173 with SMTP id 98e67ed59e1d1-3a098d9612fmr9293823a91.21.1790499643161; Sun, 27 Sep 2026 02:00:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 031/101] tcg: Generic expansion of tcg_gen_muli_* Date: Sun, 27 Sep 2026 01:59:01 -0700 Message-ID: <20260927090011.10724-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499842679158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 87aab828112..773dd8db719 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 b38969478a9..abea00e7e0e 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -9,6 +9,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 153a759305e..dacdcc68c52 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -428,6 +428,17 @@ void tcg_gen_mul(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) tcg_gen_op_ttt(INDEX_op_mul, type, dst, src1, src2); } =20 +void tcg_gen_muli(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + if (src2 =3D=3D 0) { + tcg_gen_movi(type, dst, 0); + } else if (is_power_of_2(src2)) { + tcg_gen_shli(type, dst, src1, ctz64(src2)); + } else { + tcg_gen_mul(type, dst, src1, tcg_constant_internal(type, src2)); + } +} + void tcg_gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) { tcg_gen_op_tt(INDEX_op_neg, type, dst, src); @@ -597,17 +608,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)) { @@ -1536,17 +1536,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 Sun Oct 25 09:31: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=1790499696; cv=none; d=zohomail.com; s=zohoarc; b=jsaHJTP5YMPeWN0gb/49ZSIznDV8TGS4WJARUAQe8K7k83o8wbem8e2JF025z9mRGYNduuEMWsF8ODE46H3p6W7LrxcSIDTcdkxR7BqracX1wU6baBOYn8Rat7NcicdQEuxAEhDvZihnNztu6lI6x/6n0fh9z2SJq6xgItriW4s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499696; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ro5g/Hc0T4aS4YYRwWRPL6usFUYMajhcQc1Yh1nhXeg=; b=M0DtFIzlM0/tv51cUFyRK9JEpYp9tMxcW0mMGROeuFfURZCsjTHlH3z6xur/oAm3GHEw6MeKy9MfcsVzGjVxbb8tddax1ZFSlqAvZUMwxkURfv1FQy97CUUamJWNWs2SgG0PJ3rWncqSn0kKeqgeNflTRD+RKiR9f8xt+C1mNok= 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 1790499696816509.3594820491577; Sun, 27 Sep 2026 02:01:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklF-00037o-2K; Sun, 27 Sep 2026 05:01:29 -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 1xAkkp-0002Zk-AG for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:05 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkl-0007Ta-2J for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:01 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b2ad83dc6so1441050a91.0 for ; Sun, 27 Sep 2026 02:00:45 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499644; x=1791104444; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ro5g/Hc0T4aS4YYRwWRPL6usFUYMajhcQc1Yh1nhXeg=; b=aIouXy1AaZzGwNhZVQFWUB2Mx8EDfk6uCszifnchYEYEzMRpDoiW0jq77uLY/i6An3 U3RqHwNOL26bVsKNDcp3/Ceo1kRbyYDVsAvvHdSMPiNtzokcA7Ss7dNwYBWuLBNzHXcl bHJyr6JRyz9i0aXCjTCNzjDd5mcpaCH5ZJrZ+haSnM95RrC2i8drfVOHS+fFm2001EcD DOUqvBXKISvQoLLJ4DF44/jBa6J6AMqlaLTtcvam9TjXGMCcrQUrFAFncJFIh8JaRGMZ +d2qLfa+giOwYCLeiHUitE+o3cbBh4DAa/3L8P1Zqd6OI4Fc5100rT5ab2nQbhKd/PTd eweA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499644; x=1791104444; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ro5g/Hc0T4aS4YYRwWRPL6usFUYMajhcQc1Yh1nhXeg=; b=mBKCBdVkurOgVE8oNAZFWSa307SEt35xnOKrEkoyhz0rV0WNkuilLq4lXnwuYY4tVc ukwevBfa4MCcwvdSx3W9u77NQ2TyypwnKmzl0xHVNq/u8CRtiRtYAMXxDoJxHyb6fQf/ x8MIKPsaaTQA5EfFJYldxcAN8hNAnRJXP70gTsZLF+AE8k12RKz3Qmnlyl7o0xNfzctH G/k6JVq1+/11WkhTWRr+yHjj4nbxyV7em4GpMY2+teqRGO5Oq+L2raASxBT+mx1oEBLZ ql+w65T/gM6iy4WGv75EDlSQ/6cG08a+xidijPjz7Q2MbNTm7U3GOT7QZZjyQbuJEEAN g9lQ== X-Gm-Message-State: AFq9FYKJ8Fg18b/fy2FNkL3VbnWC1Ewiq99SgLksF4R9jKXBzNLn+W2n AhYfDFJGIvj8Dn89Y2zyNPKFUU2LzhGpsph0r3qJai6LPoPurNGLxwXboa0b6Eq6NiB/kze9K9u t9HsN X-Gm-Gg: AYBFou2JOI8Y1CU4f51NlZNWmQxjcuwLR7QzVbuWyI3e5ieo20wzFTwW8E5CW4hGkip ekdPYmMDwdKL61UIulGQ9/xHLD1mkvwCEn/7sJIEHwPo5DBu9YyL3NOhzh2cpqQXd9zHPU5fdYi X6EB5xKpVZ2JzgRvGMcgIyI+B55HSHxXZoVRBUkKB31aIDpPQreMMAhBiDqIx9UExY04usqqSTM KSte8DOCLG5l3XISb21Y5E0A7GAzR5B0qpYPAPeg4f171n116CQ/iHZjNokgz51POzq30NaMXGI zaA8au5l7WyvBSq7p5S8MfsUKRrJPuuyg6G9p8aVQM4Sjo5xueyQJZswi5MCrXcIVRbD2Ata0En U2M86LSqTVW77dAJzhm7aHGNGH13kBTLABkxzCgvdwbv9GzrknNQ1MXET5jkXRB5YlqdHQpDcSZ lFYDjKZwfD5Z2aE1eGPkpckEy8AToXaPEnQDqO2apQMsfqvTGEXjqIBO7pd+oh+VZGuWBKv61CQ ikKjXE+qiU/yzcCJToe7WkhjsOP1lykVfHSL5cQ X-Received: by 2002:a17:90b:4d85:b0:39e:53a:c8d4 with SMTP id 98e67ed59e1d1-3a098ae21c7mr9507218a91.12.1790499644074; Sun, 27 Sep 2026 02:00:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 032/101] tcg: Generic expansion of tcg_gen_not_* Date: Sun, 27 Sep 2026 01:59:02 -0700 Message-ID: <20260927090011.10724-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499698191158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 773dd8db719..aa4fe339d8e 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 abea00e7e0e..8c9d3d99c48 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -11,6 +11,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 dacdcc68c52..d1cf0a436ea 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -444,6 +444,16 @@ void tcg_gen_neg(TCGType type, TCGTemp *dst, TCGTemp *= src) tcg_gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +void tcg_gen_not(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (tcg_op_supported(INDEX_op_not, type, 0)) { + tcg_gen_op_tt(INDEX_op_not, type, dst, src); + } else { + /* Do not recurse with gen_xori. */ + tcg_gen_xor(type, dst, src, tcg_constant_internal(type, -1)); + } +} + void tcg_gen_or(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_or, type, dst, src1, src2); @@ -543,15 +553,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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) { @@ -1803,15 +1804,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 Sun Oct 25 09:31: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=1790499765; cv=none; d=zohomail.com; s=zohoarc; b=X1+GBHlC6FlIk4neHl1wUFobOswW5kHnhJAXtZ30rhL7C4TNE+3Bz0ajO2ESfbtpzgVJjyPX5BmDAs+mYPDb7xyhK6pyqsbt95NCEjklEc38x2mwXy8+AyXKixh1A0A6k1HGQbXqUGb3476QPyIZBlW/E7RKecECaYUTtADBzhg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499765; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KQ5+KlCyyX7cxbtRUoNeYqGLbOz5Tdr2kpZzmuS7CN8=; b=P4FBpkQGuWaiCCiJEFtC1yT+UbGgF3p5j1OKsO1FoFx2JqUMTwbYN1vIY7VTknzmGF5c9nuaygWQ1j4uyUcTm9r6gyFi+skOrnDOoaSilIoRiSqspnKAWgIoeco7mksixPzaJ6MZTJs1lKT9/pMO5qzANXfkrI7MX6C4KDJFha4= 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 1790499765702485.19793226874015; Sun, 27 Sep 2026 02:02:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklQ-0003zv-EY; Sun, 27 Sep 2026 05:01: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 1xAkkl-0002ZO-9T for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:03 -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 1xAkka-0007Tf-Rt for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:53 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-396cccbba91so989648a91.1 for ; Sun, 27 Sep 2026 02:00:45 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499645; x=1791104445; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=KQ5+KlCyyX7cxbtRUoNeYqGLbOz5Tdr2kpZzmuS7CN8=; b=c7VCA6l6UHR61LCiqVve3h5Wq35wQTjlco+NyLtT9Him0f+MxiJyX63ZDKogFpwS8z Md6R/eEb1AsBiOFS+uP0C4/V8+gPmka8nWGhKU/5UBm/F1PDHOF9v1gJPeKbNodKXi7w LAv5aY2ximy8m02MxdXYnujLl3XRsdO2d8g+o9XJegtwqWfC8rGgcJtIgGxuQK6Ugzo7 rfaihI+LA5ztKg8/lQnnV/HFFwARsTcgYg29ilLhZgPHlm2ihFX9a8SAqg1570KQHpAw uS3MkZ+M7YicjwT7CTIU+f0YvkX4RncRcqslskNnr2d6EFP9mS20swfiUX4JZex5kG9I FkjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499645; x=1791104445; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=KQ5+KlCyyX7cxbtRUoNeYqGLbOz5Tdr2kpZzmuS7CN8=; b=qIDybWdTsF7bmUHCbprUdKHI4QJ2QGwW++x298hjvoLz8D880bcXOGBC/1n1AvLxJ7 GJVsb/YprLRZiXakPbsT2jefiTLZMGGq3T6vq9EMlMhElRnVmY21OkIe75aB2aB/DkHx hOxMBKyH14GHxrq6r77JJI6gXdM3ODG9Z53aLYRcXgFEUI4cvKpffUXQeF4ykaxR9IKb +yLo7SCK5XLvqZ43MvZdpeq390cFx7VNJ4b1iV5RMtiaxsbqcV8sUFKgV3PhwegEBZDO vlcD9b8ZePySKoJO5Mzp4qLffYHwtbQFsprxMpSffmLRhH66+uUrmk2M+xFCDS/xsf7b 72gg== X-Gm-Message-State: AFq9FYJUpkn99AwOHpSP7JpIzYCU9IF3/Qe99P3aPTF1RLFneXu8ZiwO DBRYF/aOwv907BMxP90tCzxySscHBPsbhIV2wm20xkBp70WLUAtTl5UUAKBO4mM34YQ3oS44eQb 9chWr X-Gm-Gg: AYBFou0F/ss1I3IdACjNL0Or09IBLiUW3CTcaDz5nCb9uJ/X3m6ICw9RZnJ9mzlICuf lj909Q0yYsOJouS56HDinnZwMC5Af5coU/ZtojEGVcP4LEDk2rUdUhh8s9JymEmGVo3LQXtplfh RMAFWQqkeo+0cTJ0RE06RE8PYbRqbPzji6eSAAny1V53vgwvIWhtoS1Cu3deinLNYnS0gGjPLBE mbxEVzH2dPRs7C/rh6Y8DPrI+8cORxN62amoJi14Uom+pa+BNplif/GN2RBvv+pjoj8M0DUmUIu 2yY50KaKgELzrFb9XIGers9LDYlwNuiJLj4p9+X1iRbiazmXElyeCyz+parVkbkMj4hAvslXuEz cChZgwoYx3HXxspurjBy96qACG12A/2+VvgCgvS5hAs39evoFWJ82kGR9HSIXM8Z9L74F7gZzOr kaZAmMQuao1wFebicTVWhWwbxMeOaChLhJrvdIRvNFxyOiAwQjL1sMBHeT0uIDhBYD5o4QcXo5V jacXs3yvUV3OsuiP3XJ36z6Znp4G34= X-Received: by 2002:a17:90a:c88f:b0:3a0:d20e:e2f1 with SMTP id 98e67ed59e1d1-3a0d20ef68bmr4179875a91.10.1790499644863; Sun, 27 Sep 2026 02:00:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 033/101] tcg: Drop division helpers Date: Sun, 27 Sep 2026 01:59:03 -0700 Message-ID: <20260927090011.10724-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499766495158500 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 d1cf0a436ea..67ba4a0307a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -619,7 +619,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 @@ -639,7 +639,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 @@ -653,7 +653,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 @@ -673,7 +673,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 @@ -1547,7 +1547,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 @@ -1567,7 +1567,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 @@ -1581,7 +1581,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 @@ -1601,7 +1601,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 Sun Oct 25 09:31: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=1790499827; cv=none; d=zohomail.com; s=zohoarc; b=bpzKG9AaYyeKwHlnYhK7d0FWRIIIfOc8nOUcdrQMT+17F4Iob4uuCTHiJDvgLs1Yy4lkSAzoQiHpqUYNkGSiXxy9jYNdR1tzcJRMr/JV2SZ6vcb+MpeDPqKQFg7CZyOHOOhHNpPSxRzy4lvYjwJroOYX4CifgTYajlfvvu7hB0c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499827; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4gegqgHhIfw0fSNSSLYb7jpm5LlIpAnZqVYYYGQkO/E=; b=Kob8VDHWnd4qTix5delKnvaoiRsNl5UQmlmZtCrB98C1CvNfvlsx7KwJvDpf2x9nPv50+cuxu71Q9ti99DD9SyHakVgdpQqqjxkaXlP28Vn0Xm/OnLCRzZmY6d0WVJpTCXobXEtB0740Jqwy1l4GnxhFsjGrfMtMUzpQ5WDhl+8= 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 1790499827175163.08682928783116; Sun, 27 Sep 2026 02:03:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklN-0003Ze-7k; Sun, 27 Sep 2026 05:01: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 1xAkkm-0002ZR-3z for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:03 -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 1xAkke-0007Tj-Jd for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:57 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-396ccdaea76so711076a91.0 for ; Sun, 27 Sep 2026 02:00:46 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499646; x=1791104446; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=4gegqgHhIfw0fSNSSLYb7jpm5LlIpAnZqVYYYGQkO/E=; b=gGRDZo5AkWs6RE2FlEV3zSINBe60r8DetR7BTUnI+1ltDODdtsxIG2dnt2AycrjoX4 PGkEWoSNCZnrmmAqJ/ggg6VLxeWfAl04sPp3NmaKritnbrIblbGPhPY2iL66EV6ePKej Z8de+YYLgxFjlCsRtUK2LUYgrjfF4Iibc3FNSrdIZ0X42VSpZwY5GtyJVBymMqwvSIXm JAfP6G5ytN7oOZ+g4vbovdzuDqtM/QBZdmeS/ME+OsO6Zdkgln/3GDtsnUqFnlToC1RT SLsRx9FeJkoUnNVo8BdnsknEVS2k6Deyf9agKlw/VrFwGyWHf6gYwXed7IpKX28bNkvh m0Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499646; x=1791104446; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=4gegqgHhIfw0fSNSSLYb7jpm5LlIpAnZqVYYYGQkO/E=; b=Ze+5ujtcxRI1W8o3upebkz+0UblmFW0wjIJ8XEc0jDzstDuqqE+5vrB1AOkPsrjRy5 ShChNgh75wmxEwWGrPKARAdlcXaLXqCe+X4kVNHOSJ9tEhMyfL9uSAbKNJjOlmQO4CZg Q2fAVHrlBzxUSWB16Qm7QbCm49gg52aLaZsuMVwl2JPt6XKz+bBHRlBIiEs3e5n3MFwj R8fYATjSTgrGMLnSeZYJWZqWGIqkQV8yTZ5HjjTILky+8KWdlw8DSxDMxHClM/4BHPCG LxQG2be+UfqInOdtEHX0P/ObIufKqQp/+WL+dhtF7ymSqR09uKpxOGMVA5SQX+f1idL6 VeJw== X-Gm-Message-State: AFq9FYLGaDg97DJfeB9GFTbg6gAP5iwXI5FBwoBE9k7e6aQspoL/r6sv 2KzOm3dakBb8MZwB5HH1JDt6Znx4F/rFcPzJVVZeORawCL2JUqXJIZiOQKkQHbeh039YChZgMEt c7Apu X-Gm-Gg: AYBFou0Yi+ekfby+TcA7q8JshGNw2T6lY6cIqlK11bOFFIAebpHdxXS3BK5ZKGJlc8H /m/6fI52pnD1r06RAB7bVdIljq2qwwzFyKKq1kzH1o+O7qhojSpGOKglAx0m7yyzu+3ebRQt0CI zvJ0MuLIHruT/lGjvjBMo8YUgzi7Atdd2vikjSAjZbGhEuV50GksqREo9aWNNGJLU1VW/b5YCP6 gSvDeYkErZNot95E1d2H7G8xO/UesCR11BrsGso+hhoEwUGflxDrRv18UhfGlxkhvYDMJA/Zmnu EkFHnNboboMialH8fAD1uPHUP9LbYa5kXWuGsS+iRC6fJw/v6DFg7idEj5WsOdf7k0Ch7PM+Ico SnVnMTmyxRbY5yLSox3YOyTJneQGHOPLTeGyJH/EnZHcYYA6crQrjL+mRamXmN3AApE51zQdWcz ognRtXcawBO2jQQ5yeMzBwJNNVRkYYp0dmlRqgE7q2p3x1ScpROzlPoEjnh7vjT7yE2C4/lN3HJ 1u9b7eMoASe5LrxWhy9pG8/fXQrWfINLfl9URTo X-Received: by 2002:a17:90b:3bcf:b0:3a0:bdcc:51b0 with SMTP id 98e67ed59e1d1-3a0bdcc52ffmr3601431a91.30.1790499645684; Sun, 27 Sep 2026 02:00:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 034/101] tcg: Generic expansion of tcg_gen_div_* Date: Sun, 27 Sep 2026 01:59:04 -0700 Message-ID: <20260927090011.10724-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499828605158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- tcg/tcg-internal.h | 8 +++++++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 43 +++++++++++++----------------------- 4 files changed, 24 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index aa4fe339d8e..bfda3c1f444 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index 76c8f026a64..6b65228241e 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -120,6 +120,14 @@ static inline TCGOp *tcg_gen_op_ttii(TCGOpcode opc, TC= GType type, TCGTemp *t0, return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), a2, a3); } =20 +static inline void tcg_gen_op_ttttt(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, + TCGTemp *t3, TCGTemp *t4) +{ + tcg_gen_op5(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), + temp_arg(t3), temp_arg(t4)); +} + QEMU_RET_ARG_NONNULL TCGOp *tcg_op_insert_before(TCGContext *s, TCGOp *op, TCGOpcode, TCGType, unsigned nargs); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 8c9d3d99c48..778854286cc 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -6,6 +6,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 67ba4a0307a..203de8909fa 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -411,6 +411,21 @@ void tcg_gen_discard(TCGType type, TCGTemp *src) tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); } =20 +void tcg_gen_div(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_divs, type, 0)) { + tcg_gen_op_ttt(INDEX_op_divs, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_divs2, type, 0)) { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + int width =3D tcg_type_size(type) * 8; + + tcg_gen_sari(type, tmp, src1, width - 1); + tcg_gen_op_ttttt(INDEX_op_divs2, type, dst, tmp, src1, tmp, src2); + } else { + g_assert_not_reached(); + } +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -609,20 +624,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)) { @@ -1537,20 +1538,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 Sun Oct 25 09:31: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=1790499774; cv=none; d=zohomail.com; s=zohoarc; b=IWAP85L0ZJHrgFWYxz+Yr5g59kVf83LJdRDjudDG6jB/smgQLp0buK9JOKGqX8mSfVZu9YLxnKmBl4SkR1trbMcWi94mYyjwOs0Zzn52X00IJDWPAHpSJ2gI5ly8g9db0WYmJJjaBTOuU9shaa+0cvNMFf6ggrKWOAYdNvKIook= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499774; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JB6GzSpM5tAx5Gkw3ZOC+bs+5LwhOzeOzZP9Bk+6l8g=; b=oHmYzg5GWH0mTXcXgBedCg9rYSwWtiZ4gMeQzFFga26MK2Ir/E7vPQchMXtCcYRGnfId3nmz3NaHEUGDnpXxRD5vB6WNbZsUBqOEJgNqs+pIvNwOOfDLyFXf508SzRa8nREJQDsIGEI4Y+i+DWt47cnI0awhidT1yOIM7itYsR8= 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 1790499774414610.3835117526489; Sun, 27 Sep 2026 02:02:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklH-0003B5-PY; Sun, 27 Sep 2026 05:01: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 1xAkkl-0002ZP-Ei for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:03 -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 1xAkkc-0007To-Ht for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:53 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-396ccd4f99dso1413578a91.2 for ; Sun, 27 Sep 2026 02:00:47 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499647; x=1791104447; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JB6GzSpM5tAx5Gkw3ZOC+bs+5LwhOzeOzZP9Bk+6l8g=; b=f7TInLmIE7Sjp0gnj/K87AVeOQs0v+tMBeOjL7k+pBHVSMau8CihoXx6kjQaYmFGH8 BLbLuamJIflCBBF3tao+oLAA2oeP66CGezYp4m6JChhrwlCYUPUteGouBzQCHqwtHjKb ZR8641NTDm+gXKKqnf00busz2gnRv0zqFGD/cT8te052/R7HpgRpQC93zrwn+L1n+dSv hQFwlvwvHbJ9QCs53Q/CdRjuNxr5vXyOwzmRB0M/IK/YwwlTs69VT5fumF0a0fy1KCbf nnwvOPByY2noRaMlr1PhGLV6mw3SYzT9YuVFc+D9Y6S4argLgAxCvRPeh0SbJWzZ/PnK b0mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499647; x=1791104447; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=JB6GzSpM5tAx5Gkw3ZOC+bs+5LwhOzeOzZP9Bk+6l8g=; b=i/BtJoxkm2p5MIPvaR3qYiagM/Rlv0Ec3au/Ot3Vq+pgZ5WBKRigDnWiU2xqXsCplI s5EjxDaUwNoNW/IKndjZJOXM79G0y5WIHDR+ziDT4IIev0hFLKDO74WW8gLBSPqP+L21 PQXLCu7ONo1gZbg07nL7gD8a1xACtFVCBJzrY+j9u1Qj6onX6Arf4NmRK+W+wO6XbRnb UcsH19PEAJTWweuOv00R5tluNguf0Yy3khXPEsu59gKAB5RWoSw1KksJvTaTZ89vXDeA Is8pFeP+mX93oo28XRwvOrn57aTTtw9EUbOApFduJKnCXf90KyQ3gvcVL5n4ufdV1bSx mjug== X-Gm-Message-State: AFq9FYL42mYe16hp9dGp66UkjF7slIMZyZM4v1bTSqBJKhNroKl7nzb5 EfnMkctmt8t6vLgqlLyDAj3WDlIzLf0yQWoqYZskdCkSxoAv9vJuAyhn6WjZhjayvvbtveJFhnQ KdgMj X-Gm-Gg: AYBFou0fnmfSHNXz/bpjIu37VBk1AlgfsfMUIRHB7+qhA0vW6RNc0rwn0OOaDoWY07i kQfXXEPsjafqIdNXWqQxseqps2PXXh0fcIo06junhU+uY9ZCaF4x84EaiYWiDhyUNJYFsIwrBXS n6gj1+j6rbs0ZVZL3f1QFEZIhaN8PI4Z//SLcOKW2bBld4FDv7FBkMwDptYD5wDmSKXD5iJRLs/ EmJ0fOi3faCiQxgw9O4scWhOeUH+YByfbXclcxzvQcFnAwHYw4z9bUyygxEOrsbVsUqa8WQvmhJ LyGNLRyyxbzO4VzXhdOGSzkNCyXntUK0g7UA5ZkpmDcoIuNKmRA7QsY0bEE6nE87WnzeoewNKzI F8bEnQykLf/33vagjTUxszWdWV0YTnOYY7aWcush5NMCiHxJqIAI8W0yqKpDYy6R0teFAnwYqq+ DKQvXfIeDJBAmkHMJuYAzihPfSHFVtlO4SvcEwIuMd3TOb/kPd4aAMDy+tomgjTuMp+fDRq6ZXV I7uhnB9Lz1TgzwoqBzBD+JEzYjcuA== X-Received: by 2002:a17:90b:3d8d:b0:3a0:ddef:3d69 with SMTP id 98e67ed59e1d1-3a0ddef3f5amr3166279a91.58.1790499646720; Sun, 27 Sep 2026 02:00:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 035/101] tcg: Generic expansion of tcg_gen_rem_* Date: Sun, 27 Sep 2026 01:59:05 -0700 Message-ID: <20260927090011.10724-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499776437158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 61 +++++++++++++----------------------- 3 files changed, 22 insertions(+), 42 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index bfda3c1f444..e1457b3f584 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 778854286cc..50d725b72c5 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -15,6 +15,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 203de8909fa..0304f8e15cf 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -485,6 +485,27 @@ void tcg_gen_ori(TCGType type, TCGTemp *dst, TCGTemp *= src1, int64_t src2) } } =20 +void tcg_gen_rem(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_rems, type, 0)) { + tcg_gen_op_ttt(INDEX_op_rems, type, dst, src1, src2); + } else { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + + if (tcg_op_supported(INDEX_op_divs, type, 0)) { + tcg_gen_op_ttt(INDEX_op_divs, type, tmp, src1, src2); + tcg_gen_mul(type, tmp, tmp, src2); + tcg_gen_sub(type, dst, src1, tmp); + } else if (tcg_op_supported(INDEX_op_divs2, type, 0)) { + int width =3D tcg_type_size(type) * 8; + tcg_gen_sari(type, tmp, src1, width - 1); + tcg_gen_op_ttttt(INDEX_op_divs2, type, tmp, dst, src1, tmp, sr= c2); + } else { + g_assert_not_reached(); + } + } +} + void tcg_gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -624,26 +645,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)) { @@ -1538,26 +1539,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 Sun Oct 25 09:31: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=1790499779; cv=none; d=zohomail.com; s=zohoarc; b=fWdD2gpj5U1mkYOzvX4jxA5w7nbmmUG3KHO20T47PI/r0079SU4B0k/HZ4J239L2NbjELGY+Hu0qpvW5bjhVTeVyrztIg4EWTi+igLGqj6MGCLsX5NiIJt4VdWPW3/r4X1DjdRq/OFZBO5pNiDHbUDmtcH25pXB47qUK9U6KGXI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499779; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nLZm8imcHYP3MmNyyrT/6Tgh8krLzRwA9UuKRdi5XAA=; b=EB5R4TQof1EiY/+tQkycZ0um30XsgJ84hurgnk+YAKeB3aqpbIz5TXAb8GlJ+8HUXPw16iOZ4pa1+koFDLr8df+nJv+6rDf3ntvOx3CLCmZGUvqKsU1rveE1ShIvyUiO/TSfqW34dWVA0poCVwT16az0BfikWZhf5TzdmzXaW5E= 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 1790499779703347.0258533502089; Sun, 27 Sep 2026 02:02:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklP-0003qy-42; Sun, 27 Sep 2026 05:01:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkkn-0002ZY-DG for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:03 -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 1xAkki-0007Tv-Hw for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:00 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398cb5615deso1777299a91.3 for ; Sun, 27 Sep 2026 02:00:49 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499648; x=1791104448; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=nLZm8imcHYP3MmNyyrT/6Tgh8krLzRwA9UuKRdi5XAA=; b=Nx7V+gDVOUjGr6GscpmnrkF4itogskPPu2MHm6Ow19KIUZ6cUaQ7azGSMNje3f/hRa l6v42eUAzKLuJUwXZUO80orvWPbOr3it0NMe2/ynbaSFJtTg3rTv2BHKYn/HvifwSEdH pxkWqDBh/86CEHg9owM1wPmbDTk/xRroASarjUBh0jZwkmbmp+Vm1Ak51SIaMWmTa50N +7K9PW/vk8DSbX0TL7qCjTdNxr8NsfrkRU2rGuUIANa5Gh0okGMypf+hYT6fWCnVPB3V n8c/cLO0saT+PGyGuMifgF3bKi9Ofk6Ine5Lz1d79NaebRyQt2rqlYnF6kfs8IRR0Ij6 cfIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499648; x=1791104448; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=nLZm8imcHYP3MmNyyrT/6Tgh8krLzRwA9UuKRdi5XAA=; b=fBOoBNVQ1oEWPlJcoDvaFwl6aTeZxgBRlkchf586yvAxSIDk6Pd9u1++hmRlllnzLy rLynEhQt1R14yuXeeOIjOE+wrb//JRKALRDnFTlNtLY5H1CXBYe/GlVStijoBoyYSlKs lsclGXjiVOQ5n4FkB43x3HKGUBjmZ0qojyLMIq4elYgPytwo2f9bz73toiawV2uyliA2 LUFoMKuZWYnL57rwAx+DtoTZJUzeUkbcnHCgq6/sKj7U7E3/T3mhtZ9xMxMiTwYpy6IG D3TKrRNCPMOUqfC5mINKiPscshbNj6AoB3eia6MnEawIPdjlh/Y7JIEaMQeZyfe5e6CF Y4XQ== X-Gm-Message-State: AFq9FYLmYZV/PBRg4h5G0zyiL1nyr4Cgvxc2WhvfL9v3xR/DyHl1n3KV qmDMFpX2LCwYcS1gfqrygtc/aVYsOkzGpo4P179rG9LqVYXTZ9AIKj2K6JhrJe4UODjbHXbXYTx F78vR X-Gm-Gg: AYBFou1CdOKvv5sfZZKUPlhk23QZpSsjg3+ndDWWA/NwQBqa+1dUNKp2z/QNsdk9ddp YNH9D74H9RCtF56HjbBZNBipMhjXz1P5ACCqoW6wz2qZFYhu1jOn6HlnmPLJl3qOz5zz87J8vEW HFbo8uG7evnIy4qzq0xgaDwkLw8A5ceHMy3Ieyxenpr2AClzcZM3ytcXF26Ld8BOMnGdZrqI74c J04aTEZHZ0m0s0URfxBkmxMDm0GpgT2CZCZJZnnHnyaPFLj9Hj5sBCwBnBogJzHJorlHbm3U3S7 lxk804VVM3wPbwQQ0UbXlYBa+UQ1QnssKTDudZNgqtGo0eLlamotD+ZkwSY5h2blyovgxZ70ByU lpsnbM9MqgNv31bT7eUoPC1ScshHziH3GZFl/QnSp24xXUTrMSq14By8WUXYroLITQj0H0lZNXh KvfqAJeHJmsGAekVTWbUKFE9vrzVSTfyoDiKShwBJj4LYpckfYJQv3iYgWsnz3A84PY4wxjPzrj uxdA0K8CRSH2FWvUfNtmuS9dLJ8LQ== X-Received: by 2002:a17:90b:4acb:b0:398:b1eb:136c with SMTP id 98e67ed59e1d1-3a098d43e23mr8696967a91.9.1790499648174; Sun, 27 Sep 2026 02:00:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 036/101] tcg: Generic expansion of tcg_gen_divu_* Date: Sun, 27 Sep 2026 01:59:06 -0700 Message-ID: <20260927090011.10724-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499780455158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 42 ++++++++++++------------------------ 3 files changed, 15 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index e1457b3f584..ce31b0d971d 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 50d725b72c5..1b108d9f147 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -7,6 +7,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 0304f8e15cf..a4bdf1143e6 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -426,6 +426,20 @@ void tcg_gen_div(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) } } =20 +void tcg_gen_divu(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_divu, type, 0)) { + tcg_gen_op_ttt(INDEX_op_divu, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_divu2, type, 0)) { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + + tcg_gen_op_ttttt(INDEX_op_divu2, type, dst, tmp, src1, + tcg_constant_internal(type, 0), src2); + } else { + g_assert_not_reached(); + } +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -645,20 +659,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)) { @@ -1539,20 +1539,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 Sun Oct 25 09:31: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=1790499761; cv=none; d=zohomail.com; s=zohoarc; b=iznnDlUMrj176a2UIJRCPuJlfpGObMP5+7aZjIcdPWWvKys927pVE4VZxkSBVlmF5aQs+wSBkds/TwEQ0YdjaRXq7RTGnoa0Bu4g2CBAUNCwgZ2zLN2LySt+YMhG/V3Y5N244V37NYNa2iXOHRA1Wwjh8drswAY1/NW2a5ql3j0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499761; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DtQYx3dsQ5ys5QZOCQ1b0rVnlyu98rfrUFFqBCqNXgo=; b=JsU4SY74VkGIgMgIW71BJvanhwewVjxgQ4APT/bp6uZ0YDRpfSkjea0UYfKMcqN4KyypeBBf7l1sf26HI93cGigIXtiMqN5eCmsmSy+p3ihgaMhPJio4lKW6cjhHR9BHkIX22frQjTGMhCpALZjCHSvzWbxGFvQT03bhqFhx4NY= 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 1790499761065848.6006221836352; Sun, 27 Sep 2026 02:02:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklS-0004La-QQ; Sun, 27 Sep 2026 05:01: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 1xAkkl-0002ZQ-F0 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:03 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkd-0007U3-7O for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:53 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0b6200eb0so1601490a91.2 for ; Sun, 27 Sep 2026 02:00:50 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499649; x=1791104449; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=DtQYx3dsQ5ys5QZOCQ1b0rVnlyu98rfrUFFqBCqNXgo=; b=eLZ7LCZVSHdP5mHpuIIufQd5+pbve4V8S23g0ri+gfr9StdEN1xCRgvclNOQRmzshG 8ACUBwOE3T8o0SVPv9PJfTqw1SeH2onkrRHY2rny+V0Nnd8rqEgb+dtde9CrSSuj6YzO N/FSB5vQpdN30pJxckh1z3sfjRUKVI0f3dkwYBlwuWSt7fTF1XBbqLvwNxT1M9Ys1iUl MPZu17hN7yvYnrKG4sIYGPXMvmxjDKwBt8dPLYPgebVjdKubO4EDhHjZp0EUjnQsOooA fGXkuYJqGpmJUnWHrcIbZVYLe/csvQkDkJdUcNMRoLHIpTpNYDJ6mcnYgh48Wz4oDw1i vZ8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499649; x=1791104449; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=DtQYx3dsQ5ys5QZOCQ1b0rVnlyu98rfrUFFqBCqNXgo=; b=WuEgmZOVULcx7FJFMZO4s+FKNFUHMxFdD5c65F8ozQHaTpyrDRKWO5EWJeUvg1v4MP 4q8CUAdPy5GtwOsnpkbWdVnTQz/D9lbu192CD4sxTY9cw0d7eKBsFc5QZ/TuWLGiUab/ ci4pFEQz+CSXkVYttACyNPMyuIZYMn3tMzwpE5z0J8En5k0llK4UIPIxuJ+Z57kM9BQz j/LhO/+/9ytOej8fhRYxUayh9ktNg1lk6GfdmHsa4yDhRXW1h7RyfYgLYsLCBfLy7lUO qNjYJw+6YQXeKBInpLrv7lyAcWkmNQ2YmYHCvLcDyz6unV0zSA/PHzvs+keP0x9CeGXW Rjqw== X-Gm-Message-State: AFq9FYLoYroUZsAi0neSVWkEhnbppEugSKWVw7Z3TxVkZcuHHzzYRRJm ikqPhfWzIdxPJb+GqiHa2VWAAqFbhNCuLsau6fdMOiAu2yD8DlRSFTIaXjhdvxqKU+4Gb7PjWSg kUTSo X-Gm-Gg: AYBFou0qbElFdK6Hylxz+oVamJVNOqRdbaHtVtAcph6A4nGq510MvVwfgbl2SqORiyZ VeU8zS8DVuyTcw2blm4ymLP6PIQGCJLH9jeBNH7COTQ2MyrU5FRE4FIXA64d/U/BYAwdbzxqvot l2cPKWXUjCbSRCD4pKNgskZWkvsf3LY+5CTOgdVxz0FMy3WV/zfKKxTipUziwQsTfQaIo/k+iyV G9mRvxCaOUgUKLx+tz6RW49cXPDz++pdlR0teTVmaZMKkLr0CGTAPlYwlQ075yRaPAIIIfJXhVB pRc/y1AiIW23oJYdPpGWqbcExUxTjrM1ZGcexdt1A4CW/XC4bYV13eFkvCt2CSUvs7AdeewSCJF JGrKjHU1bBsXcwS744iZo46tiSDjCrJv/6d0rDiG3lNxiTLyg/mpcVmPQhGOTFw04thAuJm1gIN 47Skqnydo2EqZwp8ZBcljm8CTBREtop7AkmZzkjgFChtocLFHB0AyPFDXzDrRwDmGqWyNWKPkwE xNGNGQmBrkTD4qjA9DmWaSTJKUxOQ== X-Received: by 2002:a17:90b:5110:b0:39e:6c6a:6579 with SMTP id 98e67ed59e1d1-3a0bb6596a7mr5443301a91.60.1790499648951; Sun, 27 Sep 2026 02:00:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 037/101] tcg: Generic expansion of tcg_gen_remu_* Date: Sun, 27 Sep 2026 01:59:07 -0700 Message-ID: <20260927090011.10724-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499762388158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 - include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 74 ++++++++++-------------------------- 3 files changed, 21 insertions(+), 56 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index ce31b0d971d..0fa534f24d0 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 1b108d9f147..cfa19a0a815 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -17,6 +17,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 a4bdf1143e6..39b4bbb659e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -211,20 +211,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) { @@ -520,6 +506,26 @@ void tcg_gen_rem(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) } } =20 +void tcg_gen_remu(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_remu, type, 0)) { + tcg_gen_op_ttt(INDEX_op_remu, type, dst, src1, src2); + } else { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + + if (tcg_op_supported(INDEX_op_divu, type, 0)) { + tcg_gen_op_ttt(INDEX_op_divu, type, tmp, src1, src2); + tcg_gen_mul(type, tmp, tmp, src2); + tcg_gen_sub(type, dst, src1, tmp); + } else if (tcg_op_supported(INDEX_op_divu2, type, 0)) { + tcg_gen_op_ttttt(INDEX_op_divu2, type, tmp, dst, src1, + tcg_constant_internal(type, 0), src2); + } else { + g_assert_not_reached(); + } + } +} + void tcg_gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -659,26 +665,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)) { @@ -1539,26 +1525,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 Sun Oct 25 09:31: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=1790499717; cv=none; d=zohomail.com; s=zohoarc; b=fAUBGcsdgBXbjiw4DgXp6Fg/qngeBgSRtTGkLc9wrs7/TiYgHa2nI2T8WLsfZ9BNYOIY0ZKq9UjRkCaG+tXA49ySJ5LKji8jQa9lSs6p3OWfqZR3UPv3/50VBHfzrhv4G+03u6m3LaFD5gfOtI/+Ze25WnbQeBnIOk/48xHAn2o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499717; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=woNZxwWEOWqfa67jvN4u4BDj/2f3zqAtYHAtH5MUtOw=; b=fcdLzhGYe95eD/blPJbzVLCH3te7WnawAhhte+w4iGGjAtbX8jwXqgrdYfzjUTrGNoI3Aq4rMrFlyt6ZbNFDt5xNkEmtjN0xV8ZxsXsHGmJJemaF/Ot4qFM5idhdxfx4ZA9iJMj6hk/PQVOiMO5lND094BGSJNGD1r3TZZXw3eY= 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 1790499717091444.45374919022584; Sun, 27 Sep 2026 02:01:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklE-00034v-4h; Sun, 27 Sep 2026 05:01: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 1xAkkp-0002Zj-A3 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:05 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkl-0007UB-8J for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:01 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccafb752so1084819a91.0 for ; Sun, 27 Sep 2026 02:00:50 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499650; x=1791104450; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=woNZxwWEOWqfa67jvN4u4BDj/2f3zqAtYHAtH5MUtOw=; b=elQFcf9ZC/QQnIZZVjImvTspinTTIGcA21LG8hcrFlwXOEFx/OX6edjeZTBQT6jR+7 1VwGfgK308OFeBGJxxbjgW4DqBD52azo6UCJhTCXVHezBhlovOeaoeRn0M4b8Qg3+1Ti NQGPbOG8qQsX4SkoC3s9mgpwiVNw+4EADk1GnO9Ahv7c2Z6YkepMnaJhDcWznmhrjcuo 82bn3QlJh++GJg5L+f/BSB4u5p9BCYSja+cfPRkcdWWr7HvTEgM6bVfWbyl+i9YUP0+s 9P1ff47G6oP6xn2sL4RnnR2U6IUyBuHian3qHg3xw25LjojIIETkwVVR+Oj75y7/FAlM WTBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499650; x=1791104450; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=woNZxwWEOWqfa67jvN4u4BDj/2f3zqAtYHAtH5MUtOw=; b=bksPl+jyjlWu9DcUdRgPifQMwdb4AKEr+BIRIBmSjeeIx22UehWmctJZ7pJpKKLnWN kecBnu5zDeJY4Ewf9O594h0W7ygVGZPIIQasItjoHYb/Ti3fRchGwiJXc+K7N1LrDl9z Po7taEGV1nrUb+USO7j6VXd6WsfK8G5DHweYTtni7D9qXj8IJ4MQRAUeiGQAQS879uOB rSWTlA0wb2yoRDf7BGQZnr3ND/FyApkORNrupLdarWhU5Bl3Np4f/nAziUyv25iwYxOP gEuJKSCZ0M990q3Y0aOXqiRdvmVcv7fJ+mnEqOF977thiza10aK9ZvZFoPuLkRXkHM9u wTQQ== X-Gm-Message-State: AFq9FYJVtx1bJprzqK66IkJEaktn1uz55TmMWRBrVuqro/6zeuxy/hgQ LdpMHafJiOCzIjZqp3pawtLTqGZbkyXRlAGAJ/QZLepINK2zbH/ThBSBYDGGhnB5iYUPsAaaSRT Pt0aC X-Gm-Gg: AYBFou2MMk8zBGZ4grxfXMcxWfly8MoXiilSZiXyEyIkT6Wv03GkVM4TE7h6ESY4CbF mS1a60Z6lla6OoQ70Hxmaia5gJmk3Fm3AXDiHzjjE5bFWUbyylqfjcn1yByZ3mehkaAFr3L2QOf PUyaCd+FTjFvkcsONDm8Ihr0SeCi/E1AhFaTmXAJdWjd/XEKXUzIlygMP5LaPpJhuc5NqVwjWzv I3bujYEpT6sqigaCKZPgelHnHg60LoQEC2HY6gPtCDkrh/2JcXjnONIIH9F5/15T+78XMxzHwLh kkNYojWO7zHGbUtFToWKbKH+9rcpywnU3nS0REgZ96J+cprw4YbrvHGdVe4bBWc0DhmTkRsi/WS JKN7/b8GAGIixkRdZqkGooAZossk2Suto1cNsIRU88Nf/M3Hqkho7iz1peALn/EAJu+onJaOjQU 2so0JApXvr3217ZNRvuHyQKIgJhAe89C9oAukjfgj+v2zjhMos0r+YEnmkRfZj/JAWd7ROovIEj 4n8mvXWdAIS1Hy+phFuXuMwzT/bPw== X-Received: by 2002:a17:90b:4d09:b0:3a0:c85a:e602 with SMTP id 98e67ed59e1d1-3a0c85aeba7mr3731001a91.9.1790499649757; Sun, 27 Sep 2026 02:00:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 038/101] tcg: Generic expansion of tcg_gen_andc_* Date: Sun, 27 Sep 2026 01:59:08 -0700 Message-ID: <20260927090011.10724-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499718228158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 36 ++++++++++++------------------------ 3 files changed, 13 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 0fa534f24d0..af50c90eb04 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 cfa19a0a815..7386332658c 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -5,6 +5,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 39b4bbb659e..e3ae8c2383f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -392,6 +392,18 @@ void tcg_gen_andi(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) } } =20 +void tcg_gen_andc(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_andc, type, 0)) { + tcg_gen_op_ttt(INDEX_op_andc, type, dst, src1, src2); + } else { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + + tcg_gen_not(type, tmp, src2); + tcg_gen_and(type, dst, src1, tmp); + } +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -665,18 +677,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)) { @@ -1724,18 +1724,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 Sun Oct 25 09:31: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=1790499716; cv=none; d=zohomail.com; s=zohoarc; b=LOVOW9hooHgYcYYhTE7lESKeGT/2r6PUrKWZnP2qM92bGKj+r9Za/viJiSDYznzh85Y/1V5zWYDGhTq4aS93TlmMUID86vc+feBLGdNfGihpWpbF8ZGDacSIfI8ERCXWRihwMHIA91p93X0XkM/mlh6ijGot1DN/PSZHaIFYnSk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499716; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cgqFHgbP5yHKTQHTL6K0aZ4BbCoBLWvG8Wuj8Q1dfQo=; b=ffjYPPq4O6j8Jr4PQ3Du8W8A3/SU4NBZB64mlCSbkuvx/Xy2iLQ9g/JqjVthY+WCOIm2mhuaYnTjz2P6xR5j9iZ+Df8TcJU339aE8uW8pSNk/dFEeW+G+A1sA9sd0+LbYxNzaxBkUI1wYIMLe3hvrMakLtsgHZ6beE0CxcIZQSs= 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 1790499716145635.4710776905379; Sun, 27 Sep 2026 02:01:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAklJ-0003HV-7Q; Sun, 27 Sep 2026 05:01: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 1xAkkm-0002ZU-Or for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:01:03 -0400 Received: from mail-pz2-x2b.google.com ([2607:f8b0:4864:3b::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkkf-0007UF-Lf for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:00:58 -0400 Received: by mail-pz2-x2b.google.com with SMTP id 41be03b00d2f7-cc7979d1dedso470460a12.3 for ; Sun, 27 Sep 2026 02:00:51 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0b8efaeb3sm14014181a91.2.2026.09.27.02.00.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:00:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499651; x=1791104451; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=cgqFHgbP5yHKTQHTL6K0aZ4BbCoBLWvG8Wuj8Q1dfQo=; b=QcdfIQe7+bRZZyIm94qqP/mGOXahIfyOdniLb47z8chu55Cegb7ZrSZISCSFWZRBLP OKGcri2SCIcfawV0BAWa0pP3d56/fpbj3Y8/bSbxu5h3KzfOZDZaXtuTR0aJFlnpe/++ c0/dK1HQIzkLzCt6BEIPbA5JLf1qRQ1XVSyETl9aI5wBI7iV0iLvnvl32NL5fLAyphr6 9yTdwngONfTBwXhF7henZWGF2F7gaoYKDoWDC37bFyarOkSrLrO8GeBrEq9Tv3/hURsY ecCECMWmb3uFL3JdGfgiigQc1BKfGYZNqTV92dVOhoRR5UJzNuspgSnMCNKMN3edIPcu 7kuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499651; x=1791104451; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=cgqFHgbP5yHKTQHTL6K0aZ4BbCoBLWvG8Wuj8Q1dfQo=; b=r9GCRs6KCMsesWy6H9eRCJw9NJ6MCJcvoxpTFHR9gQY6ZBrxGjOYdUQTO/dJ8yJ5vs cfS+btfIz8JvnUgbKHlHYRA9FvcQWGFMQMQi3eH14/KtiWAN9I8mnPq/9U8WBbM71cba KSTiRm6DhGbryb201SXM3nLBYZ6y4SluU70b5+kXks2noOtk6ViOMQ8/pXvWBHvnIybh 11MCyudgil0YNtfkiwynxAWqwo67f/4Fbvuy7ptP7Oq3XO5pDwDU6m1OndMYmuO9x2TF 1IHZa3+YOw2SMLAjibvf8JQ9GYHxzfZIyjwv7VJ6dBBADUdNQUB/VAhYe7HPDtm4n3J+ XZKA== X-Gm-Message-State: AFq9FYKQSCpi1rLiF+GkItfukyZQjSDlQ81/iqkisBk+TG08r+n7i+lA 1ub7ZeGRUk94uQriajtVyBvuh+up3/eU3ukjvYSszsaNTEdPDyjLln7XOedWMAkP3h+FlJzNl1P UB9gV X-Gm-Gg: AYBFou2JtmBNCItG6sldtf6gCp53OL6qnvgboNp0vcdwbWikD9UANhIzz6t94D01NH6 jbctTxJL13EfJqmaoaDy3AAmpfg8xhvOUfBV2hj0IIS+jH0uSjJzXOWahEAR9vVGOjK6mzNxwBs iLZ1Dl4n75Ux5THw1ORLbV7nsuy9odFa0abV3QI6hhDa/PlwivGoA4Mg4rVMIVmARAl7I7x4JCt hL1I1rJayHPYZvvrRh9bL+VOuRafFX4xWQpzSwbf3hbzd8XYHojaN3owZtB1eMv/za1hur6FBMK AR3af4MJtyD9GTRzJJ2fOGnqh/H1qeMbJDCEtbqYbTWyHGpGRoNmaAsLn4R9KbPfJL4d7LGGxsK 57gCXoqPBvbe3pxH/ytVpbTPcduj10z4JyH09W9TjdVU2fSR/H4iHgZSbtCySRfkuHsDkXpppFC bKMmz7GI5KqN1BtlvN8hg/CumIrf41Q5v4OKDjn4zW1dnNKqrc0rUIWOohnvQ1b5zcbn9kLysj2 XPjfP3dV/aAdhPwJUSgKZX/BXexnA== X-Received: by 2002:a17:90a:c105:b0:398:e96a:8999 with SMTP id 98e67ed59e1d1-3a098b3741amr8881256a91.16.1790499650548; Sun, 27 Sep 2026 02:00:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 039/101] tcg: Generic expansion of tcg_gen_eqv_* Date: Sun, 27 Sep 2026 01:59:09 -0700 Message-ID: <20260927090011.10724-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::2b; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790499718377158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 af50c90eb04..cfa94a1f5dc 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 7386332658c..6a4d726b799 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -9,6 +9,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 e3ae8c2383f..f33b25734e0 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -438,6 +438,16 @@ void tcg_gen_divu(TCGType type, TCGTemp *dst, TCGTemp = *src1, TCGTemp *src2) } } =20 +void tcg_gen_eqv(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_eqv, type, 0)) { + tcg_gen_op_ttt(INDEX_op_eqv, type, dst, src1, src2); + } else { + tcg_gen_xor(type, dst, src1, src2); + tcg_gen_not(type, dst, dst); + } +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -677,16 +687,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)) { @@ -1724,16 +1724,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 Sun Oct 25 09:31: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=1790500058; cv=none; d=zohomail.com; s=zohoarc; b=kCgtCtJUQ6fJdNZDgPO+11wlzSRyXsO8VrPdbTpb0gkIXwxdJ2bTPl7IO2hcjO97HcOamcwIqky2+0DIRPfYaLkepo+AxUCjRapricIUYl0VRAOpMcD5U911r2efTyhYKc0YNnepvERyC2DNpVlynMEAVpd0Bwfj9PmEMPsTDoc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500058; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=51CZ2xpfdkCXHB9ibTz57bSsek3b4ljykHln8pFfn50=; b=UvhecwWpijSJ7gWACLXbcGhJYKFOgOgK4eUJGb4FMR56uacdYOGHxC/X4w5K+iAIvc3IhLmeGnhK68djjk/56Io3QOyKBsd7vQUAfbD544PNXEcFz8x1KI52aZeHkqNamUFI3kC5bL2Ytn3Ea9E2suNeFEY57/E7irryIzUGJnY= 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 1790500058663284.11841816477227; Sun, 27 Sep 2026 02:07:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpo-0000jG-1L; Sun, 27 Sep 2026 05:06: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 1xAknj-0004P3-LP for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:06 -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 1xAknZ-0007bc-Ek for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:03:55 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc1cea34f01so925290a12.1 for ; Sun, 27 Sep 2026 02:03:52 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.03.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:03:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499832; x=1791104632; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=51CZ2xpfdkCXHB9ibTz57bSsek3b4ljykHln8pFfn50=; b=Iy0cv0kRLSAzfuwBKfXaPlSbp1mxUeC4R+WAhDtkIXRpZ+v6rYG1Kv5EFaFlUD8A0O yEcnKOsRS21kAXlCa5KPx+O3BwrD0FzyiPBGqoKPghAITJyimymTTqmXMGqBjKX40cwp p4yk1cgZ51/Go4YeaW2xIbGAt3dfrn84G74dKbhyjhw96uwzi6+odKMyg36GywoyBxev P3q1NfLkt0CnW+tzvgzUc3y5Re6v9ojoQI6fc/XDGPX5xoxPDlSLkAc5oCnjtw1fXikh Uf/FA66WbuZ/xiEuHDhWKPfL+NF4UklcMR0ZERVQZ8jsFXmWO67DzxKalyPFfsnyc9RR DOJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499832; x=1791104632; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=51CZ2xpfdkCXHB9ibTz57bSsek3b4ljykHln8pFfn50=; b=dELcQcYWbTkWVlTcrUu7Xdxq6dP1aSQ2+or40y+zLuRI5M67n1ZKqux2e4N7Uh8vmL dNB5/DF2ErXxYCgmobJuJAa7x2hdVebGp6BfGDVSblZ5q+btTGdE5tdNaXMjdkubsBFi gZBrgWHVuk1a5VOgqPQkJ6xmlLt1KvI+oIPIe2vKpogiwFg0Re9x2+3mND1iGy8XnxOk lnNteeH/eeTlKF/D94yCnO1IspsTIHDLf8+GVNO0vYK3EEOx2jlplXlkZv4rPts7lWmU 5B00m0JuRYP+QS5Koa+ERoGCd3CrVx1zQlKEbReySeMRUZdIWYSSfqNuX8RRZYBdfR/W yTfA== X-Gm-Message-State: AFq9FYJGB7KaA8dofEPgDKNxG0rDnMWF7OeHdYJUcPMFFvxhqkN2unD2 yuCoRsCjBYNl/k+ZJL2Ofg+eVMCygRCpGG+yumkCmkYPtChFIfLZUF7nsNmJ5JCgTuJgFLOLhsz 91nWm X-Gm-Gg: AYBFou0lHblylzsAd6DpjlgQp5yvGXOZzTarKpomakIlvXxdHYzAVEb2bgIHfnLoBaj OryxLkMALViO454+HoDb41UGGlmcEYo4+RgzRd+rBOlaFst7n+dX2gdYdk1z7MmPyY8LFUZE/i9 va0tz/+J19/UEsgvitm+BdzK8q7nxZwojI0rj69RBVBHOBsZ+4NY5YRIGCvTNnzWUgCRx1TKezC x/ym3zIYpYIGicyjcZNaVSSa+aIOxSr9fkAGZMxNPIchMPEYn3nfg5ZMhJgWV7vYlAhYmlIFPHK mDUA8P+7BxomA6v4O+vw4WqwfP08KatY77rH53HxQprk+KjVZYjqP2BgHJQ0EJhK6+/WyZYMi3x G2YyN4bXfF0DzuVMswtya17NezVIKJo8KtK7WtEhIj7kDrKsudYW81vPtK/esj8XkxoCj2z0wtd f0uZdTP1Bx7HttF6lCqMgjwd6Dfnw41e8O8hKwuut+vxGsgGOikJyZs07AODXw1mFAj+KO2MGU0 DHZPPujyzEpPcdIct5qGmxilHLfRw== X-Received: by 2002:a17:90a:ec83:b0:39e:21a7:5dff with SMTP id 98e67ed59e1d1-3a098d453aamr8010143a91.11.1790499831908; Sun, 27 Sep 2026 02:03:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 040/101] tcg: Generic expansion of tcg_gen_nand_* Date: Sun, 27 Sep 2026 01:59:10 -0700 Message-ID: <20260927090011.10724-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500059671158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 cfa94a1f5dc..04d85e25d68 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 6a4d726b799..fc40bca553f 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -14,6 +14,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 f33b25734e0..0e9a1758ed9 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -476,6 +476,16 @@ void tcg_gen_muli(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) } } =20 +void tcg_gen_nand(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_nand, type, 0)) { + tcg_gen_op_ttt(INDEX_op_nand, type, dst, src1, src2); + } else { + tcg_gen_and(type, dst, src1, src2); + tcg_gen_not(type, dst, dst); + } +} + void tcg_gen_neg(TCGType type, TCGTemp *dst, TCGTemp *src) { tcg_gen_op_tt(INDEX_op_neg, type, dst, src); @@ -687,16 +697,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)) { @@ -1724,16 +1724,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 Sun Oct 25 09:31: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=1790500327; cv=none; d=zohomail.com; s=zohoarc; b=jLOpgNKF276cw33XdZA0JKLY02p8ZW9z9Hk2K96MLYj1K7Xz9FQxoU21OT+O/JvWSrj9aNpqPP/ZSH+MhdIL5t7DRWI8W1zEilBff19lUobZw2uMqcbr/YDL/90hW8iLRG93GPgda1SXjDg0klmsuiRSWdBjvEnIcAb/Suc1PUY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500327; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wEcUFHQg1GZg7tDPlQnRu10ZOlApiawywfRqQij+n4s=; b=NO6IfPLsuxY+JRh5lk0Z2xAKKantwVdug+bQlJoKFiEUNvxfa3UQC7FW7j29BgYQvsDY0OUSZ3w9gqGnLsdZ9KFfipzzdC8on7hP67z03rTxk0+PitxWsfu9QLlJzapAhNC+uB7httlmSGUT+N/Ixhh5MK4w1Jm46DtVr51evQE= 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 1790500327088685.3088335873347; Sun, 27 Sep 2026 02:12:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksB-0006Y1-F1; Sun, 27 Sep 2026 05:08:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAknm-0004R6-Ij for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:09 -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 1xAknh-0007bk-2m for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:04 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-396ccda24a3so1202116a91.0 for ; Sun, 27 Sep 2026 02:03:54 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.03.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:03:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499834; x=1791104634; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=wEcUFHQg1GZg7tDPlQnRu10ZOlApiawywfRqQij+n4s=; b=TIzorUbSBVErX0AOnEfpFGZgdEdjGwqdQ5mztE/MfVZmPg0ZcFpJxHSf7qdbqwqBPa 3eMdupYytGugVCdbSFLMasNZ7fKd/fFM31BZBBprvjaiyd+eMH4nuzM16O6OLcM1BAry lzSxxvofeUVetMFBPV8nB/vMK5j8c1mowupmkFtyI+uAMJjlOUjTCGAfbehrWihG2fvQ LSE3Q1EilE95GjCAOuWQpOWQ5ftcqRddFcLrvKhvQxj2QfNw1XEgGCm6U9BxqE2+hrXk YQJfGrSM49Xj0uwop/joxaaFnpAMGV4+EZ5DoAvVW5w9UveTIFecFHHnp/YgltEYE1sC xdjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499834; x=1791104634; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=wEcUFHQg1GZg7tDPlQnRu10ZOlApiawywfRqQij+n4s=; b=MIonPKSdT8AmVfw9sxO298zUhvddBrv4XqSg4RrB65kM8Iu1Ld3NqfnoYvREGpdrMQ tlPItwelpfQGimlGw/j34k3yMpwKdsIZyXOerJyu255KpbXdc1Ne0eO7VjGxkYXedt89 wyiBocxQ0LnbWXhNmco7rifWnlexm1YJk0t9/KBu4iSRINk0qwRGWbIwiC2AmtA6EAPH RVvjDrIPvwKJhklriZ+qLeRWPEDXw/uZWWiLNbQhIif3AEJlDupnNcNJXXtlUHqQToYo 8KEoHX9YHnzhCjqVtKU86/poQPr97YU/egddcICL+hq3A3tdfI12AOFRKJ0+ocOrJxRx h6zg== X-Gm-Message-State: AFq9FYKs0vDEgRq/kT8eopHOb1nMuH6bW56QED5JaRZDjLiwenNu0j02 Uzb0iLbbimP4NS6//Cx4C5PuWsh19DLFSUV7Zb9CNJ83Fyp93iYXdJPPImVa8GxuRV2I4Ti1zSc BNS72 X-Gm-Gg: AYBFou2OMUkBdhvu3MO+NJXUnt+5NPqj5Ehe+Ea1shJvHr5yostfkYJt9Nlibs+a8OH bBIMYE/Q/2qEKjLKPRqibatx66jk1rVyfC9Fg8rR8YXj1HK8tTZs12nqbjbPO3mgYOrGX+m9Cv9 84GsQ1ZhK5UxwQ+zLHrLQ7WB5W9KuGrwuudcAm+qz0nSQJVIve/3VcEbV0egNlwy5IAONJCe201 ooDNv3Aiq2JxEamfInFCrAtAIf+wbfxRSJwGmznxJ/3fultHhS4O0cCdRr4qV41y0YG6D1Q5R/d slqWVjhgJ2iKg7GydEn8hMrlicmpJWzU2iyipQth0/GYtuJPNGLsOwk5QGuEEQLESkJNz4Ww9/d sD2Cd7HitWDxWLOqg/ho9CpUjiEusswsw5XygraKFTydqcDoIyz2pZb24ZrHB4tn07K3UpcJdLZ FXuQ6wFVa34E7WNuf0LyiiSur1pnooLzWBEmnqEpCWj1MExmboJY3hkXg4UZ26G/lPOdnlVdpno XKshy/iNl7nEwPGcs39fyREaP6XSoayNBTYB4R6HP+dWUPeMTU= X-Received: by 2002:a17:90b:3d82:b0:3a1:6719:6892 with SMTP id 98e67ed59e1d1-3a167198c41mr1257426a91.11.1790499833882; Sun, 27 Sep 2026 02:03:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 041/101] tcg: Generic expansion of tcg_gen_nor_* Date: Sun, 27 Sep 2026 01:59:11 -0700 Message-ID: <20260927090011.10724-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500327967158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 04d85e25d68..f5bb4d8031f 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 fc40bca553f..7d94e0cdfeb 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -16,6 +16,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 0e9a1758ed9..f06c00f7263 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -491,6 +491,16 @@ void tcg_gen_neg(TCGType type, TCGTemp *dst, TCGTemp *= src) tcg_gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +void tcg_gen_nor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_nor, type, 0)) { + tcg_gen_op_ttt(INDEX_op_nor, type, dst, src1, src2); + } else { + tcg_gen_or(type, dst, src1, src2); + tcg_gen_not(type, dst, dst); + } +} + void tcg_gen_not(TCGType type, TCGTemp *dst, TCGTemp *src) { if (tcg_op_supported(INDEX_op_not, type, 0)) { @@ -697,16 +707,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)) { @@ -1724,16 +1724,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 Sun Oct 25 09:31: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=1790500127; cv=none; d=zohomail.com; s=zohoarc; b=NiSYUJQdCDV0KKiayhrzAmJ3LrxlYoEA/xqktc+jZNv9S7jHzxrEDW+on6hj4KSDnurnVywAIKJTi4V76z2GiwxUIMLYFJj9keFoDNgYKYIlTrwdKulkmYbOhgyc+UIBdpXNPMhL57VRhI7ZDfWhycj5NE0bHDbf/wqMtj45ZSg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500127; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XlR7Qk+BfMnAouMn5Jgc92VT7YMAdNt0paT1pAJlcus=; b=KpsTN7fyenISg0/Wq96jW6SKwvLoZSQeMZuEfBFRWuF+Uw1Rl+Zvdyd2nTey9VP73eKvhG9/9UtB0YDxGAJdo2zen2SpQydkyky2PjijhSUd3QTKI+ZazlsgfhRrI652l2EuLVtfGSDT/oaN6rUofm8qd3RID0AKdUjjGRq03Lw= 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 1790500126914999.3975124210189; Sun, 27 Sep 2026 02:08:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAknt-0004bJ-Vh; Sun, 27 Sep 2026 05:04: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 1xAknm-0004RB-Lj for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:09 -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 1xAknj-0007bp-5s for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:05 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccda24afso1120414a91.3 for ; Sun, 27 Sep 2026 02:03:56 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:03:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499835; x=1791104635; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=XlR7Qk+BfMnAouMn5Jgc92VT7YMAdNt0paT1pAJlcus=; b=WcJ4B5q9arIXIMF+HVDAFfZphrPa1AANmg5JL5Xgv2rYL/VuZiZynb1+RQVxeuMiFQ yjzbx2L2Pe/Pis8zdR/8i8NAr7raz5/gQoDqmGYLDTJf4zxPS+yuAbZ4Zy79tuLGBSAi 1hzqILPAXhkeFo2GK8XimuwO1sC+HVIzXA3Ou+B5wC+r8km8VFL7l39ZWB5VXoTUE1v7 f1zsb/wxiddEiBD5/J1jYQ7kXTv3WzU2c7etVlEl1EryEiEVahVAFp7DDq8ky0XJJ7Wk vZ+F1z+DjT350MNYY5EeXw3O+1949VLY5NobUuMsE6Kq+ea9sk+EVgh9gbTj3HU8upAO eeeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499835; x=1791104635; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=XlR7Qk+BfMnAouMn5Jgc92VT7YMAdNt0paT1pAJlcus=; b=eZEfkAyVlF7yQohK8+Rz+yCN+v0uU1zHaOU4klh06wtlo7PjyOg+EvE+58ZBcrA8i0 sOZ7xcSjK1AV2rbFaMGBSpNKtS/oTQxheZtOOSvPB/aSeAVHjj9TWOv5082f/n4vWAuk PxTt6HV3byH4eRFVXZ99ERaHf0BGjNQYklJJOUaNLns/Ic/jHXb6s4w6qicI2KblnJyx tGqhVJprEHM3w/wO4CiJN9U2OIqIYKO30ieKBFy6E76jaa/dmCV/OXdQNGThBMvzqHiS Oq7YLlxh5/Z6X+pjIwMF3oCHT1fU0DBz1G8MF79aLSNcQe7nVNvRAyCm2Txd0Lg1dl65 x73w== X-Gm-Message-State: AFq9FYIRcOhYhWmjZfyDnCMKoMzdLEgwpMaCc4k5byCr6WV5fAMLoCEF s4hl2VjVbe4yOoc6TYHD34JZGpf5PgRPgFZDt/L5p4QtM+AG6J6stk+PR+3R6XiBsatNI9EfOgW O1TVe X-Gm-Gg: AYBFou1Qz+Sk8h48cHcy3IZKHKlbzuilbw06bi5h/YMDF8SLkt/Xc/iVglhHthFNC15 1FV1b5hrOR5xS85A/jXTpXGsfg8r78SocqBsX01H175/F33foC0LK3JBJFLn2k0/wcnP1MZe8MM YGhKGulwmC8T3CCUggDmXtSg1ZXV2KcnezmdPJZfymsthSRfLVIktw5puIg/DYTvZeVbcZlCeLT qymTfH0gn8I5TxJPVVip8cORSrS+SGD7SMCe1Tpmb/KiaIQZvfBH6FwJzBMzDkZseOp4NBrI5yw vQ0q6ZnHsWrMyM09u2tf5trxs1vHUpWE3lWHE2huex0+e8goG3cVxIVbtP437aLFToBSSaJeJYl a67WJvbAvGkeCkanEXgLOC65sayPuLr5z4I8vSdXJbUgAdUMdwNNiVaUjU/vt3yocBIRGuHkBnh wYUiL46bb9/QbT1BhI61AC/HcutcIX0TtlbG63vnm8VXYo4EC5wepGqwBEh+j32woRTHy3RJoYR L5UCGawLPM5SgN5/s+EIdI7tfqLyA== X-Received: by 2002:a17:90a:e7cf:b0:3a0:e243:28fd with SMTP id 98e67ed59e1d1-3a0e243355cmr2022786a91.36.1790499835183; Sun, 27 Sep 2026 02:03:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 042/101] tcg: Generic expansion of tcg_gen_orc_* Date: Sun, 27 Sep 2026 01:59:12 -0700 Message-ID: <20260927090011.10724-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500127750158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 36 ++++++++++++------------------------ 3 files changed, 13 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index f5bb4d8031f..fadbcbbcde2 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 7d94e0cdfeb..fa33d41e3df 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -20,6 +20,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 f06c00f7263..aeac3480754 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -527,6 +527,18 @@ void tcg_gen_ori(TCGType type, TCGTemp *dst, TCGTemp *= src1, int64_t src2) } } =20 +void tcg_gen_orc(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_orc, type, 0)) { + tcg_gen_op_ttt(INDEX_op_orc, type, dst, src1, src2); + } else { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + + tcg_gen_not(type, tmp, src2); + tcg_gen_or(type, dst, src1, tmp); + } +} + void tcg_gen_rem(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_rems, type, 0)) { @@ -707,18 +719,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)) { @@ -1724,18 +1724,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 Sun Oct 25 09:31: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=1790500114; cv=none; d=zohomail.com; s=zohoarc; b=hywzFUj9K+3Cw+WAx14cfZ4wWztsOyVQcY3pIzPSqMqmnGg9lBpgeAGsjSVoArbDU6F6cWi7hQOf49TaEqwOlaBxAzD7grApSdoorhzHZbg7rN8ELtNr3qtizSabeDRqp5yDeYBEHKE9Im9zfWa7vIosslh/dgEEbAGRYhT+KlQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500114; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/fRsuCYOhiDTmw2YSIOULc/tv6mzhQBnCxtnkHRZ96A=; b=Y1FqXkJjJ5oi3/AaFihj7ahaOubXRVwCKolww0Y+NqDjbxovglGuhzYTSALcKtyVBWZOlGTLtMmtYYaQTb7znI4qgIpVxov3yR8PACxQxQ+waYthKPoUaq34dt6Kol3/dDB6Bz3NNqijwrzCIQoJFfkKR37X/5KbzE9NGaIDgFs= 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 17905001146511001.0397905813386; Sun, 27 Sep 2026 02:08:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoM-0005hm-Tl; Sun, 27 Sep 2026 05:04: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 1xAknm-0004RC-M7 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:10 -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 1xAknj-0007bt-JQ for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:06 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2d747eefae4so4870725ad.0 for ; Sun, 27 Sep 2026 02:03:57 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.03.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:03:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499837; x=1791104637; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/fRsuCYOhiDTmw2YSIOULc/tv6mzhQBnCxtnkHRZ96A=; b=V/y8ZVpyiWDCvz1BzZ4xbexXM+IpBL3qkaiegM9LL9NGB4Fwb48Z4e4MESq9AtLNV3 6/u5pYu77u0oNDIA6P+nnu0nx3L88GSp02M0OI/gtzsLNz+Lz+Y8wSPVXeSxWIlGQ0zp nkKpoZcAcz4+v9C5agmEZOlf3/ts42Ja6XZ9AgKSBSefok+euHdG5aQOCFsmG2xV+G7m hAHXe7f54zrRzitZtEkXBKIkgT97mN/1431U97Rnd3tF6P2GnKbJ7MX/qyzEkH5iuj3x 5wIg19rv2f80fl1rDHaSnnJ9aynylnHdSDptUi+XpzSplL7l3+gNGHica6LJO8bMvM0t MynA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499837; x=1791104637; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=/fRsuCYOhiDTmw2YSIOULc/tv6mzhQBnCxtnkHRZ96A=; b=0mxeVR2JE8fUsZLOFo/p9Ugav8xQ+5X0WVWBdqtY/2I949ZIIJayoeEKdV+R99wooL t4kaoWN8xvy3Jwoi1YvpaL4iGgVfU7rEn6vzPuw5T140RYcCddv0/yQj6Sq6dfYjPTub 9BrK7LeX3qOifGiXyd8f1GJHaE9ta+XjRTtHCr8bUcOt76kJKMpvjSXD42JM1AQS+9hU pN90apRqjG2CeJDkB4ExvgdSt0dPkI8gOcWZIArEcSyBcFGxxloCV4t6ic61WJLc+ARy 0KRDPnl1CBKP8KsDVAs9pSEjgn5lSapw+0Km6gr+PRtmKxDH05h+oKk+ZpDCjn05DIAN PUFQ== X-Gm-Message-State: AFq9FYJDdWnSAPWmbEeXuoL+Aimaf/DQ+CTMKflbgxV+TYI3jCpKpgXD KEPs60P2prQsfwYDskhEgZzD654zJvIUVrGI7qv21cGSeo4z3FNrO/K53QRbPD9JvwJnQUTpk8L yajqu X-Gm-Gg: AYBFou2n70igGnd0DlUbXC7cV1p1HC5tjPVzUQxyMACPkzQofJy8lddFDgetmIMqY2J 7AFg6woeb5ygaio4+yGI1hGhpbYuv7RyOz6LA31vBueODqdqWtmirXM3w6KohTg8WbTsmrr/Yvh WtklEy6TEFGeDz4RXEEcjYMJo2xFgj/lTV2+3CA6Hy52AlxmzGRN/gGdUvZmPGagBrRDh7WCM89 LOCIr+oGDw+3zo3UsrMlPLfKhckweFK4TWAqr7AgL+QwpYc3LVND6ek2oko1RJC60bPtpmh3v6l fiedd0XVVCWREBlG3bZzYwtZNKlgukMdhqsOEb9XRium46LZZrTy0EQWlx99KVwHi8e7udX6+lS XL4pYp3tiK4ZGbXzLRj2a76yojJXq5nTttEcjJZImNEOD1+jKiASncrFpdzyHbR+pySKkI9i+Pg ZIMp5PNiuPiesEuXysGaG7Lv909L72I7v1OdkfH+aoOpWmTPt5Lkw7TWLjN1Kbr1/xgnJtopm06 r5XeY3I6//T7IEletQuAM2S0ZwJ6vhtD1nUJ0X6 X-Received: by 2002:a17:90b:2645:b0:3a0:c85a:ee12 with SMTP id 98e67ed59e1d1-3a0c85aeef6mr2869753a91.41.1790499836635; Sun, 27 Sep 2026 02:03:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 043/101] tcg: Generic expansion of tcg_gen_brcond_* Date: Sun, 27 Sep 2026 01:59:13 -0700 Message-ID: <20260927090011.10724-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500115750158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 5 ++-- include/tcg/tcg.h | 1 + tcg/tcg-internal.h | 3 +++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 44 ++++++++++++++++++------------------ 5 files changed, 30 insertions(+), 24 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index fadbcbbcde2..e1dcd18bf0d 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 16ac528340a..077a1b37021 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index 6b65228241e..cd481dfd27f 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -150,6 +150,8 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2); #define DEF3(NAME, T1, T2, T3) \ QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3); +#define DEF4(NAME, T1, T2, T3, T4) \ + QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4); =20 #define TCGV TCGTemp * #define TINT int64_t @@ -162,5 +164,6 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); #undef DEF1 #undef DEF2 #undef DEF3 +#undef DEF4 =20 #endif /* TCG_INTERNAL_H */ diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index fa33d41e3df..10ed0438fd5 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -6,6 +6,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 aeac3480754..9a22791be0d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -307,10 +307,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) \ { tcg_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) \ + { tcg_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 @@ -338,10 +345,13 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo) #undef C_TCGv_i64 #undef C_int32_t #undef C_int64_t +#undef C_TCGCond +#undef C_TCGLabelPtr =20 #undef DEF1 #undef DEF2 #undef DEF3 +#undef DEF4 =20 /* * Generic expansions for templated operations. @@ -404,6 +414,18 @@ void tcg_gen_andc(TCGType type, TCGTemp *dst, TCGTemp = *src1, TCGTemp *src2) } } =20 +void tcg_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 tcg_gen_op_ttii(INDEX_op_brcond, type, + src1, src2, cond, label_arg(l)); + add_as_label_use(l, op); + } +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -663,17 +685,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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) { @@ -1473,17 +1484,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 Sun Oct 25 09:31: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=1790500109; cv=none; d=zohomail.com; s=zohoarc; b=QxYs45rh5VKIf6ef+3F6SOk4HhtO+B63JETdkHSYiPSTQ1XmIF01IB7Tq5lCjDpYd2jR4JWvTCAQY1NrIn/8SbebHtWv/ALyPQT3s5JiMCLbBoDbNyPn7DtsVEjsPoSu0ENnMX1q01n2NMUWnnDbbGHI2gIPtmATweF+HTEVmd0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500109; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iTIACFZlpb8fjn4V2Ry/VlSxOGd96VijXrnH2l6hUuk=; b=X8rrmjViPFZXzUr8oNguvvggyBdFlxepOn3Uyx7HpDiuwGwjIK/EEuHq4X6KANiI5MmslyFzzz9t1NnMj9j6ZWVWWdlrV1SzwYKmxMlCW8eyknfyOeLnkLBuCqQbsJmBLPUMn7Om5VuSN4KvgMVdGLlOjTzBa0kK7OWpjIk8/TU= 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 1790500109455955.9677374401178; Sun, 27 Sep 2026 02:08:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAknu-0004dA-Ox; Sun, 27 Sep 2026 05:04: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 1xAknm-0004R8-J0 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:09 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkni-0007bx-HW for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:04 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0d2c37b0bso559094a91.0 for ; Sun, 27 Sep 2026 02:03:58 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.03.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:03:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499838; x=1791104638; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=iTIACFZlpb8fjn4V2Ry/VlSxOGd96VijXrnH2l6hUuk=; b=zNCiKthCnqp1mpi/i/n+Xl8DKkH46lV2tUyLTneryrcIwiw8ml6nlOerXHHWdOWe8J E3EY40sPqnM6TkeEZOkOJosWFTL86elT88a7cZlU7Hoh180BpNImYIIMMy8V3CcDkKdV QKRnwju2hjeT6aDSX5ymtg97VQeI/hBJKMQKYDw2fvnfyRYiSJM6loRW2Dm+hWgxt0bO wTk8hzZXD6UVq5q6gLetKDGQiwH+pFiJIF5r5oTs+OKSnlnBW4K5dOQKiXWOu+9f06pO a7iDa3KcOBMWL8mePmbc7bEj9R3v6GBo9gHh/jVtsQqle4ffQcFGR+PwfdbFYaX78PZH ZV1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499838; x=1791104638; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=iTIACFZlpb8fjn4V2Ry/VlSxOGd96VijXrnH2l6hUuk=; b=MAXdizVgAHplTJyWJxX6DOMeCBynybaWVXfdN2F0cs9/RAnYjjTkWAfWAuxhl+OW1L uC8xxNe/NwoVXZOYCLNOFQlPGOioDmTcny0oiEKepoVInVvyHi3ukWMiJDLiHMVO+c1Q T0UTc6sRjnEwUoeVX4/yOXiDr/hP8DuMlPeV4GGuvL2+RmPFmm/Sws30XaR0rc+AiArM Goj7c3nfiD1z/W1VyECMsJr0in7zhYNYQRdguiQEO6mJnUFqi9JdrWJ+CP4GXGvsp3VK ph0PSfcb6iNUTNqV/2rGEy5uP49dNASVYCrsvLxUTXAclr+N3HJs5x8jxalkLtVlN4Mj SZfQ== X-Gm-Message-State: AFq9FYIlsEmDLOOVjihNmupkPtJQLUAUMLlvaSnceTEIYPWLmgY80ndh 6mJVfHIddz/+NZ77IeSyt2oeJBta/m7oNzcYP5yXQOOrh8AzlqKOzx3dBSL+sDtNm2FSH8Sfe9I f0gwL X-Gm-Gg: AYBFou2vAE3TwZCm6scKrn5Jl9obP+RN5+QHmQFIIWKY2b4gGLUB325uYOuJfwgYPPp RMl67ZVO2TvSTPzPwd7zEpFS1OJxUJBiVHvjAY8LITU2TSqLBV1b8e1kR794NS0xvUJwyDTEMId 8SUZ4AEFEBUtalfHoik9f7aC45Fu+sSwcqx7Lm4AltC+IJiX1vPAZeFIvwx26+/VNt6LARihItc /VpXe6rb3m9Nj+7WjJI1pd/3+Oi71CnIJOzYV6RGmuDsPuADgLdw/WquAdusDMalS8hEyCyV7jj 1Is+0ZOimb+EAO1p5sPoBkhXZumUUSeB5b7w3+fGEsov8No1yEG537QfgwviS6qazCUOaze2Qca MXqBl8ljP2hgt69pECeJRhjOv5zLIG7eolBgKrpeOx4I+Qp9Xe5vI+GmAlnaIJgol9YGKnbTf4L 0EQfksm/5PnD/qQJWrNzcjzxwToj507cHRrxB5+22L9NUdqyrh93rQbKJ4sdzen8L9MHp2EVJzG j0qw7xCBVcswB16W7oGAaP1rSif4f7kxoC8a2VpLw== X-Received: by 2002:a17:90b:4a82:b0:3a0:e1f7:9b04 with SMTP id 98e67ed59e1d1-3a0e1f79c82mr3093202a91.12.1790499837518; Sun, 27 Sep 2026 02:03:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 044/101] tcg: Generic expansion of tcg_gen_brcondi_* Date: Sun, 27 Sep 2026 01:59:14 -0700 Message-ID: <20260927090011.10724-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500111706158500 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 e1dcd18bf0d..8540c30a58a 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 10ed0438fd5..a863215ffe3 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -7,6 +7,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 9a22791be0d..75d965d40ab 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -426,6 +426,12 @@ void tcg_gen_brcond(TCGType type, TCGCond cond, TCGTem= p *src1, } } =20 +void tcg_gen_brcondi(TCGType type, TCGCond cond, TCGTemp *src1, + int64_t src2, TCGLabel *l) +{ + tcg_gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -685,15 +691,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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) { @@ -1484,11 +1481,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 Sun Oct 25 09:31: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=1790499956; cv=none; d=zohomail.com; s=zohoarc; b=YUdM7pKter59WXhVfkaUaUg3aIDTEF91mqC/zAM96XwZlgiYLg71ziaaiwR/eLwlVAWblQ2+wOACTxduB+c12ju3KJwv3VYPoMwvg7g9XdXMyMi0TekCRlWn4zS+dn0KE203DzS4Nj8YwNpvgPPxehkTg5jtcDSdLXh1GX0rApc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499956; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jL0HH1VLbmzFSUfY6xyzUXfyqpGxMsPPgw7CTixdA+8=; b=BV11GPT3GLgwe8QmfoBvKsfhdj4htmFRpHncN7iA2YIyAyEDPmpyGF61P43TzSAcepzexSDmxr3pveFuJioluvotSBWE59e/XIYhZgbaOrlQL4JIHcaEssr9OXpiSvwpxB8LahDI5rUur9hXZ0VSObNytPnmwvHOCS7hfeINjQI= 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 1790499956563417.5307863813931; Sun, 27 Sep 2026 02:05:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAknz-0004kk-SY; Sun, 27 Sep 2026 05:04:20 -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 1xAknm-0004RA-LA for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:10 -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 1xAknj-0007c1-Ch for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:06 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc797656e44so467736a12.2 for ; Sun, 27 Sep 2026 02:04:00 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.03.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:03:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499840; x=1791104640; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=jL0HH1VLbmzFSUfY6xyzUXfyqpGxMsPPgw7CTixdA+8=; b=CiOExN6dXATublbWcn7HLBB+elJ24Gi/tPRiWAtEDguBijWhkRjBdLAzxNwFeEQDre dyfOiAMZVIYkZA+rB8flp0+TQqgcVMfc0rl3GruDIw4ViEwDYXHjsPYEYa6Kp2xIhq6v X5abLYWvST9SPK/4Zslu22OSbe3u1eNH0E/7M26KrfBFfnqQ17VbE6uPQpNuJhhKWnI+ ugiJTrDrCekm91myWaMp5vfrcpqGwvIGekh95T8sYRJrv0JBFAei3s/C2eXJ25xhuDiO JSlCmZw8ux0Y8VLb38yF22xKiinDJWN4E5j9D+hO6g+ktCvQRNrvztcJwvc0j5uCoTMH crpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499840; x=1791104640; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=jL0HH1VLbmzFSUfY6xyzUXfyqpGxMsPPgw7CTixdA+8=; b=YWiSpFtBIYLIy/qfWmghAO2MeYKIkF9wOrrA2/XdVIL1QA0oOHZiTANwpggsI10Zm3 DadXttYPlmqnql53DGzMoKAeBovBTYR9a+K3GGA0xQ4u9SgohGW6DCe7IU819GY47c7a PTogP3ahTPDjraZ/mijC7yafzM4iWRE5vxcr5xFWp81+u3QKB4pkCm0MYl4vAVsne21j /2DeTiVTVszEBsEPiLmTXM3wa+Ve6yPHOvm8gmxjD0b1EqZMdBaKjraopkGQXMrS7VF4 x/nCNGzhaBO2SBHprUD+IWuwP31yb5IfIm1mFJfjnceTR4eBOCfHoSPXwq/tdo8dPexn b7Pg== X-Gm-Message-State: AFq9FYL9oGhlkSkCYEsKs2ofAsjm0qC19crWPOiVv2fCjsfQLV46w4kX FqwTmBZ9uXIgawB+5AYqEEddDAcgyiu4iRIjKHzxwpYVrUCnapef/FWf5sgTt6s2b7OCNICoNVj 4dYuo X-Gm-Gg: AYBFou1fHPsSvlZlhH5zT5cIvHLrQ12/3f6BzrsgvKNFQOGnVIdru9eRQk4TlnHfbgq bX48F0c4/QgRpNAdwLQx6cGAq0d3TuU564esWeLClC46wqrTzaRYy1l3hTf77mHDsLbF55cIb44 jhI/uq4G3mwW1y6hGJQTuM4tLsdAlltzuuwCMdrN3FJWCjlmHQCDV1SvYemJUVYK3DEazM6/BPT AkQq0zQqQz/MEvGrvaxpwI6lntU69iPd25oucMKN0mluZOBFu9tKJckOr4Us0pOXPgNM1Esz+Bv kopgKMQ88FH0OrV4S6p+pEDkDUvp33r2UhDcPty8bfd9Kc5XhQFo32V9JeRCE8IzJ6ADVS150tB x88w2cfy4rF6srRiUxhZZ65u6JqHFTREmosXmeRTszhT5sl3yWl19PDmu2ZCfPA5DF4n9l8Ftnt jO0tSbJFBTS8Cbjpn2Q9+2JQOXHqbMy/av3/+LB1tjjn/nNGFvBTcCZHAVi5BzmuNPkxZkr32GI ONSnWqVSxkcrakjXDZw9cYY4U1ifQ== X-Received: by 2002:a17:90b:4aca:b0:3a1:8b70:d46b with SMTP id 98e67ed59e1d1-3a18b70e64dmr1523976a91.42.1790499839477; Sun, 27 Sep 2026 02:03:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 045/101] tcg: Generic expansion of tcg_gen_setcond_* Date: Sun, 27 Sep 2026 01:59:15 -0700 Message-ID: <20260927090011.10724-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499957370158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 4 ---- tcg/tcg-internal.h | 6 ++++++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 36 ++++++++++++------------------------ 4 files changed, 19 insertions(+), 28 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 8540c30a58a..66b72a498e1 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index cd481dfd27f..0de8516447f 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -120,6 +120,12 @@ static inline TCGOp *tcg_gen_op_ttii(TCGOpcode opc, TC= GType type, TCGTemp *t0, return tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), a2, a3); } =20 +static inline void tcg_gen_op_ttti(TCGOpcode opc, TCGType type, TCGTemp *t= 0, + TCGTemp *t1, TCGTemp *t2, TCGArg a3) +{ + tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), a3); +} + static inline void tcg_gen_op_ttttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index a863215ffe3..4934f117bbe 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -27,6 +27,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 75d965d40ab..f8ded81ed84 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -623,6 +623,18 @@ void tcg_gen_sari(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) } } =20 +void tcg_gen_setcond(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, TCGTemp *src2) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + tcg_gen_movi(type, dst, 1); + } else if (cond =3D=3D TCG_COND_NEVER) { + tcg_gen_movi(type, dst, 0); + } else { + tcg_gen_op_ttti(INDEX_op_setcond, type, dst, src1, src2, cond); + } +} + void tcg_gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -691,18 +703,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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) { @@ -1481,18 +1481,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 Sun Oct 25 09:31: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=1790500044; cv=none; d=zohomail.com; s=zohoarc; b=M+eldYG6RmY/QfG0AyZgvgWI77lM4/8dTcECXCA50R3eT+1EFO3g97Dfa94/DS1gjV/oaBnRzunI4C9MMKqIi/8Gx66R29VeINDnNWfuiHDVeMUqH/FssMTPsLOjqdHtotgQA68AjXQBLRLacUs/0lT1SyW4hh1vxUC936La/10= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500044; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=chhJeGZUKhzcxKwWK3dnVNwuTHEY2jN8FeBp2zvCvIo=; b=MgY7/N4cYAilUmhc+Ywq+CSFdNPC2JTvvKIUjk8q/C5I3kR0FMI27+xmmKd8iFIs7GsPvwDrDay8LTL3SA/FerR9jOs18jVkSTz83PyzNF1zgGWc1PnNUw9pSWz5TszbL0RI8w2MGO7mc62P4i+xLfQVo+Ev4O7opmvq9yBgbWI= 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 1790500044080316.11131180916993; Sun, 27 Sep 2026 02:07:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoH-0005TV-O6; Sun, 27 Sep 2026 05:04: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 1xAknm-0004R7-IV for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:09 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkni-0007c5-Tp for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:05 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0bcdf41a3so1025004a91.2 for ; Sun, 27 Sep 2026 02:04:02 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.03.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:03:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499841; x=1791104641; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=chhJeGZUKhzcxKwWK3dnVNwuTHEY2jN8FeBp2zvCvIo=; b=ucWPbb/FJWDDKXdx+TVTH4dWcr/7IYGtrLjUL7soHwvN1j38l15HLg/aZgyx8C1/dm PKwRrbFS612XCcAKeZ02n3d2/dZ6Nil0j2glhoouTv4lBFFKG6xTCnsi23hUhqDYPZ3Q 6h6uYf2eUJ+IKExDoZHv8hHMX7e34x+t8AkeapFSHuAm7G5nq/Vlg6uBC8QHtfvzV0Pe iSaKHVVG+3Ko0ib71Fu0kkRD/4cFvk4RdrW4kdwSuJxs5h7ydwGkQ7cVRcPOI8WfnoMN G1Cyz/OktIZ8vLYTCqHpdlRZNzLGDSjJ/N7pPC91186KdgMurjfcCJERP0ufpxC2P1ET nmAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499841; x=1791104641; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=chhJeGZUKhzcxKwWK3dnVNwuTHEY2jN8FeBp2zvCvIo=; b=eSfewGvnVIwy4wvdQxIddO/TVHD/yyaHTAQhO9USjEitxbDq207UQJf2PLsr5Wbemi mpiL4uriCY5xPE+Lkr8ENgHkbNCj92eFpGvNb+LUiP5FpF9whfBcBt21kbfvt648hJ1D 4aN7dafzMpn2796QeO4WpCeq2EPZTcJ64i5Imcjy2W4LrmEUNUG10BGSiUl5lIb/Gu0B wxSb3LF8B2ELaqznIc1B94o2W9VLYNmUDc/K9mhHIcJiAqD2loQpqmPU0+nJYDtG5W4u +KZ+LX3bjDdF52QYpOsGsTcquF6h2DlqrQbS6VZstGiu15fVYb6+DYBeEzLYiUTBJJIi 2rNA== X-Gm-Message-State: AFq9FYIFeFG0rQgquTN/H3JPMRzdjU6e6rJLKq8Q3i+ShoGSK9qTldqi rDk7YlLeSZKMgV7LQCZKLTr/sbMRvLgILbgyGmLPMdefq4iP2I/oCTYc0klgH+AFJnKHbFds+bc ijanQ X-Gm-Gg: AYBFou3Oge6ltPSL0StdSXDpkXmj504NkgSGeccc7NOmoukF2c0abdEnMw0ns0K2tRX mnOtDPcwst9VxBZyE7n1S7fUmxoBTU7MwZFu2dwKj0CafSfnrQZALDaMXDBT5bVDCEAJ7eaDH/s KD6d/E9NE4WxMTrw93zTimJBQLd/saW4WgiPbaBNWtx91sHAMx2uPakG6GZE50V7gwzBG4OlO2F hQnLBUqpu8HenUqkc3VpegTBV3uAREcLJ7OVe/wmenaxFRT1F/Fb8wYgqy3pnuPWz11psqgQF/z 99c8kqdNZq94BDx3MeeW6Y7LL8suTMLNbudhrd4W9CTQsV1c+8qi90xpvj+OknT9YqAzpll6Y0Y mPq2QXjlV+JcC6dR1SYFjcNmidUGu3vjrrTEnfnLJF+WtlGQuXxoG7cLEy74Zr4TXR2xjimayCo iGXOa/Ekosq6oUkclQ2Ok/+THGj/lCV2Ajboja7s7sxQoUz96lmfN8/GfacpF/9jyyaTRKCviAx 0MlVToyAKQKmmovxR1ltSySIRdkCQ== X-Received: by 2002:a17:90b:540f:b0:39e:4c80:f67e with SMTP id 98e67ed59e1d1-3a098980913mr8434076a91.29.1790499840977; Sun, 27 Sep 2026 02:04:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 046/101] tcg: Generic expansion of tcg_gen_setcondi_* Date: Sun, 27 Sep 2026 01:59:16 -0700 Message-ID: <20260927090011.10724-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500045525158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 66b72a498e1..54c2528b3aa 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 4934f117bbe..92a35e83f81 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -28,6 +28,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 f8ded81ed84..069926ce3cb 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -635,6 +635,12 @@ void tcg_gen_setcond(TCGType type, TCGCond cond, TCGTe= mp *dst, } } =20 +void tcg_gen_setcondi(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, int64_t src2) +{ + tcg_gen_setcond(type, cond, dst, src1, tcg_constant_internal(type, src= 2)); +} + void tcg_gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -703,12 +709,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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) { @@ -1481,12 +1481,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 Sun Oct 25 09:31: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=1790499870; cv=none; d=zohomail.com; s=zohoarc; b=dNSLarMM56Y1g87ggN0N2umt/h+d9VbzQ4KNwfUPVY1z9LW1OxM/BSuGzZxbLHDIGdhjtYiHEBCgEalyP2shmOkqrzUkEaHFotX2dE0wD1i9e2XX9L1jei2LZwR+TmPQCUNp2cTa1oFl4UpkKh3SY7QVA+Rz4KU+2qKlRni5uio= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499870; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PNROqxG93BF1L+uEgYWEYwmOpvcpcdpqK2kp4bG1IRQ=; b=UTd8GT0S6PeJZcA+taPvTutpm2UAxGRRllrocaY7cknYoGuDET7LPwH8Sj/B6NMibEfShx380kPx5mmfQTxgq8HNGZVDBzCz6m7ZHHHlDMydc9LKcKLgBG5vkrhB8/soVkiBKDuxySSCrxgz5Mp+OF/0J+BhN7mSTpxLASWobnM= 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 1790499870681986.6983092701553; Sun, 27 Sep 2026 02:04:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAko0-0004mS-ST; Sun, 27 Sep 2026 05:04: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 1xAknm-0004R9-Ky for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:10 -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 1xAknj-0007c9-PK for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:06 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc797656e69so444213a12.0 for ; Sun, 27 Sep 2026 02:04:03 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499842; x=1791104642; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=PNROqxG93BF1L+uEgYWEYwmOpvcpcdpqK2kp4bG1IRQ=; b=x6/CgW38t6zRIUOrjyrCourFCjUe4N32i8XaGDsWA7/HqFADhYwpJL+oYrfjalbvI8 tS1CJdugHZ174OWL773JK8v7WR3ibCdegh/FBXgjkAoLF/48OXXUWU9B6Zosuzu1zEE3 6QCIcGDLmal+OeGdbS2clFg8gxMFztL0UC8v4mpJ2RZ1qDDkQ4uCBJP77JRrBMyuHzYI hJ+qzhUgLP3dPTDb3g8xGIFZHDKMTBKt5zESWv0RFV2crE1G1lSeF15TPe4Mno1ID9Ui q2biHCfHluazxiRHvnazMOO/Y9PIztqVnYrb4cZXN/vQqCBGQSMZwULsMeQugLjsUkEV Sh5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499842; x=1791104642; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=PNROqxG93BF1L+uEgYWEYwmOpvcpcdpqK2kp4bG1IRQ=; b=eV7w8JqwiYdiweh820yCvRAoUvM+hRMUumRnKByG5/AqB0TRFMQ8h5GnuTt0KYYk45 7w/u0jjBqL4QUPERgGG4LSoSXtNwk+nJ2HTMzCnroJISIbI5NiG9AiwKVlnXw0ATwU3m k3mjjYvw3MA/zDup4OEDey96nqZQh6+uSlVN9POs8zVNeDoupjuIyHf2ejcFDBRzPFtw pSed7xUXxOaGZFgfQgw1lRkBfYzLZq5O7Q0tEpnqslwU/PCUoL9bYZjTK7RRCBViEPgD Ppo8k7vW0FC2q87Lor2tqjtAuetBiBnfwa7WRBG0Zrq4IhpD2ZnwrCyp7vTFdKO9UvfZ Jxng== X-Gm-Message-State: AFq9FYJsd6cCWLrVeMwaDq6NGTzCa7PU1lCaqp29K9ypc9Pq7bf3HEKk gq9wSLxKde+KrErss1z0AYCt+qeZ2cedjzlWH1/Hwvx98seh4qmxPQ6kpzzDn9CVtUa36muIagd x3zBS X-Gm-Gg: AYBFou3WuQkdjBiVZ6D/DcXCnPhiiB861YSTxWSWMqHY4Jfx06AK/52A8JAw5XpKs17 tlck2Jv/9epE7DmCv2S//u5U3lz0Yn3/+3PDINqtWiX00dK8wVsXTwNAgyXPNaKqfNoW9gUEoWJ 9pxfmAg5VWkrI/FX6E+2rxYqEAaKZL8JCkZdtUdl6Ko+lIZSt4Rqvp9RCEnDbBQ6aXh/YlNTJag F1pzxpdjOmzlux3lnIBnj+xeYEJtSHp+GAvfFkq8okxZuGyaIPHSWcHXMjaU0elW9vT5YLNzjAp 4uehXKWw1ohiGCSGfDyV6WacSirpCfPmtRKGOIF/98IpbMOKtvIdJSKWErHnsFqzigH94fFDhB2 y3ya804bT/5ecyNX9iPErGNT1q1H9tMdfutqH7NTBysFSjvSgGzbwbqaOmcCN7p1xVjyNFlHe5P bOZknLjEhdyYO/0qH/NUJI+DDtB/hv86/1WuIwWQZIaKxonlJJ1kGP4SLKY2iypA8vNklHf8+2V 906AIDwZkSn32fX5OQmBk95BRRlvA== X-Received: by 2002:a17:90b:4a05:b0:3a0:bb4d:77ff with SMTP id 98e67ed59e1d1-3a0bb4d7a39mr6005332a91.0.1790499841871; Sun, 27 Sep 2026 02:04:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 047/101] tcg: Generic expansion of tcg_gen_negsetcond_* Date: Sun, 27 Sep 2026 01:59:17 -0700 Message-ID: <20260927090011.10724-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499872792158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 54c2528b3aa..e752dc977f8 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 92a35e83f81..1ab2c69cbe1 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -18,6 +18,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 069926ce3cb..82917d148a3 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -519,6 +519,18 @@ void tcg_gen_neg(TCGType type, TCGTemp *dst, TCGTemp *= src) tcg_gen_op_tt(INDEX_op_neg, type, dst, src); } =20 +void tcg_gen_negsetcond(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, TCGTemp *src2) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + tcg_gen_movi(type, dst, -1); + } else if (cond =3D=3D TCG_COND_NEVER) { + tcg_gen_movi(type, dst, 0); + } else { + tcg_gen_op_ttti(INDEX_op_negsetcond, type, dst, src1, src2, cond); + } +} + void tcg_gen_nor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_nor, type, 0)) { @@ -709,18 +721,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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) { @@ -1487,18 +1487,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 Sun Oct 25 09:31: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=1790500023; cv=none; d=zohomail.com; s=zohoarc; b=mFzmJt4JQ8dipG29VkBG/Tt8jb/1AU4UASsrg7yQrj++WIW8P9W5ziV+E+xsgnz1c9Xa5VLPwxCTB1XdBit25fIvAe5khwq+/rRk+kKrCWA0FHLXK/cLZoH8n3y2d6KTipEFSCkltEiTBryz6NgEoUrsFvxnsTJS1Y5gn4MRH8M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500023; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6IArgRhkFR8m8dNT/pQ73PxvnVdM+ob1CUoY2TWlzOc=; b=JylqLPCKYihcV5kw4RhU2m3KBmcTHPGrWO5/cUsR+IOCrpw+9B5qpz/vpIPvakbpwS2Um9JLfJLlrnf6MF4yANHfg1z9hPoRI/c2vshp1amcUlvXYkWN9p/zV/NEXzSStet71HyznHpWOireXQiP/s9r5GecPU4NnpXwfKlIOkI= 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 179050002330261.65974187368681; Sun, 27 Sep 2026 02:07:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoA-00054S-77; Sun, 27 Sep 2026 05:04: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 1xAkno-0004RD-6E for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:10 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAknk-0007cB-2w for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:07 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0df0bb2d6so607743a91.3 for ; Sun, 27 Sep 2026 02:04:03 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499843; x=1791104643; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6IArgRhkFR8m8dNT/pQ73PxvnVdM+ob1CUoY2TWlzOc=; b=snbpJq/EQwTkzuAZ/wn2EZPgwfA1kP41q57E3gJ5Y9q5RinotCWTf1cGPEwnhtMpla N3ijJMTFZWmjiJ/FmXo4zzJm/Me51nIY/sIsItVDpyxtdDzMcJbDATAU9bEfd6/TGova D/BYERlAo7opefHHdbrqiOgg9jXgo+hhYFY3KB7DkDHLU8KRQKITJspaTBRa7hpp7xIu wXPZ90QWCcFFkHiEUGOrjNSsJHq14f0FRE0WZ348uIVetjHlyAhrDE+QcSPNj+CQSzfF 54S3Bz6Lb9HwO+W1wn/6tI/Dz6zZsLMFNWks/Dg2IzSIOeYhKTf5+KWiyK0WJBJXR17z Y7cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499843; x=1791104643; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=6IArgRhkFR8m8dNT/pQ73PxvnVdM+ob1CUoY2TWlzOc=; b=ia6JNY1tm04iSNzcVqRqTNN4SH8/y+G4Qnu60/nsu6/JwsvWzVDIlzKL/nQHfkImHQ vSSXzElUNDvpTmw1Az39Pq1n/XFy5ig6/EtX6pUqyg5ru5/aSbkjDQQcFJPRKUbKvL28 xFNC4tnS8SRSeZSzOaCIZUtbh23xIbWfdRVQnFa6fEuWatPvTexOt7/8g6448MzyGfW9 zzMx7lmpUyXsQjlrgVLns11E2DswMjP2D8DNNzdSanlU6RLs4msdWq8o8KgDVqqHsjkJ WKcLvbbBDaumVcSixTFuyN73gfnoDULk/mQTtRdk/Rml1Pr6+06M/wX9mPusROQ6pLIh iDmA== X-Gm-Message-State: AFq9FYIkhAhnnKde4lK/5X3rTcZkHlViZ5W67HD1h6gz6bI7Tu4xR1oE KfBr6X4s6RAurATxIzkZgluUs+SMRXwdmF/TnpI4Dgh3shMj94oHDEQbblfscvM+ubq9Phk66n/ eMDYk X-Gm-Gg: AYBFou2Juv3Fs3F1IaAvldZTgjiaDkv0Inawpt7ENnWCgt/yXQ3nJ9MWhLk9aqXzxOi IhLV9kagxBzBuKWi+K9UZ8mzlcgJENarC+KpjyerkDmtlQ68KcmxPba+6fxyCnsuUe1kQQbaZv7 RT+q6/nQrTDZn6E/lrIOvGax2h4+gWZkD9q2ba5IeH9O4qPiJaZ0BiZ4dzCKBM8VB7+6RQu1Ep2 UNvY/a0q7MmGzY2lGYBVs89FbWsZsNG0cizBFlEOC1f+M4lqcpwSsM3QQxWCS+4axHVPRPadQba zXDD/wBbtRDe/cwxdvTiDGXGxZAmw1FPVTGvIsndfE6iQ5ILJfjLLMgI3kRtK6+5KmX84K9WMUu j+A3zeD5C/EirEPE18Lequg/nRoBpmcNVLEyOQcIwKClOqZSVu47Jl0/Xfzl2/+qVnQDm0vl2+p RhzLpKtpBXKaLVqzpl9dtpbWpSjZBwXEOQ/SHQx/v8jFbvGYhtk7A3KdwcCQqYRMugFCUMXIvYj /qAiLHyFSKJ0CHyjBp5bvMypYJt9w== X-Received: by 2002:a17:90b:582c:b0:3a2:b70b:9cd4 with SMTP id 98e67ed59e1d1-3a2b70bb0a5mr169972a91.12.1790499842648; Sun, 27 Sep 2026 02:04:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 048/101] tcg: Generic expansion of tcg_gen_negsetcondi_* Date: Sun, 27 Sep 2026 01:59:18 -0700 Message-ID: <20260927090011.10724-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500025412158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 4 ---- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 19 +++++++------------ 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index e752dc977f8..7dd50bfae77 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 1ab2c69cbe1..846b781c836 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -19,6 +19,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 82917d148a3..a12ed17f3da 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -531,6 +531,13 @@ void tcg_gen_negsetcond(TCGType type, TCGCond cond, TC= GTemp *dst, } } =20 +void tcg_gen_negsetcondi(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *src1, int64_t src2) +{ + tcg_gen_negsetcond(type, cond, dst, src1, + tcg_constant_internal(type, src2)); +} + void tcg_gen_nor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_nor, type, 0)) { @@ -721,12 +728,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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)) { @@ -1481,12 +1482,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 Sun Oct 25 09:31: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=1790500490; cv=none; d=zohomail.com; s=zohoarc; b=X1HKLjOik0bcf8cjqRV0DfgHaCimxJiAFb5xYV85zFNlavGkck0GPuqb+f+um3X4qhKwjXrOrH6vuz9HhIA8otnmybJLzMiglynCwhGx8SpZpIBrvDWhgwGqFK7YilLSVJtf6wAk/TaDnc7ju4aVBijmhSfANdeYnb4vMC0qBcY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500490; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hb+rXhqtzT9CZBMm5Uy/Qe+O6p5AG9JFGI6NBB6fLNg=; b=nLdrHJVPPr7dpOKK8w6hcKTrkplEs1LuEqFY+D/pf2+J7v+Pn/zyhNPR0S9Mq9c5te2h2XjFMgxNqOYyKKvQU/rEkKm4GZqHdV9EYAhIYDiaNA5ilUBUd1X4xMAHysM52wGfRE7sKZHxCr/BVzuS0NClthpCrgK7jncsfrdBj3k= 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 1790500489969615.4979179102373; Sun, 27 Sep 2026 02: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 1xAkoF-0005M5-T4; Sun, 27 Sep 2026 05:04: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 1xAknt-0004cK-K6 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:13 -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 1xAknn-0007cW-7K for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:13 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccd5cf02so1090244a91.3 for ; Sun, 27 Sep 2026 02:04:06 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499846; x=1791104646; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hb+rXhqtzT9CZBMm5Uy/Qe+O6p5AG9JFGI6NBB6fLNg=; b=M1zvIOaIkilgsBUCZEAN+spuI/xMReRf8/lMcygrA3Z1nZmxra8s4+qyeqpp1rNxZu 1glNgvWo5JFb1PwXQKk1bq44tD8QS9Cg2H3VmwNwaNWnD7LH4j5WDHnlXvq1y1lvQ4gs i/aa3QRbN6T9Um5Lxx2Haf9CMOqeW8jLvQuDRxUmunsVvacQUj59VKcERxxTk5fgsj74 9I2Drp3IRlliibqfBcFX1EchyiS+limbUQBK+372GuUqfw1EwY90W/u4A8iSDaiFoUwQ 4D/3554FvFeQ5ir2zKkn614lQP0AGIGBj9eX2ZfriqC0+XRfCJZVWjJuckVzyAJuYWU+ C8XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499846; x=1791104646; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hb+rXhqtzT9CZBMm5Uy/Qe+O6p5AG9JFGI6NBB6fLNg=; b=VN5NiHnDCQrRQYG+fXoROABMdwMZdksf3lRdhhRL5UPf5wCvsXV8Hfoviv/h16QWQY bXbiAjHh82Cki/NvnjT8gPav3aYLMj0z5iAkT74roVqAi10EVzB/Afd1EOt7M56DcDfa AuIIgh3Kpy44x4q2KOWSC+JEOtSZPaHXRlnD00EBhant6Jy7SwgCRMTvLDFgDD+6MjQr i6bAh40wVXjNDM0vbf6OjSeLjvvcNU6m2DHrvWCgOFNuqzns1kT1NHali14CKEMLtzHx qeL3T8v6HvF+Ob2xBlWwpf050m0h7kPlUb1as2g1vT3IIA7ytN0IME0Ia7WR32zu45vO MBOA== X-Gm-Message-State: AFq9FYKcaI+GqunabXCuYsr1iGnXQX5PYMfotsrriD9iGbsreJ8zg/69 D0LZUBDHz+KprOLEoL1p8So2LUQX8kV5jEPqE+C02V8A+SUKh5IOiEAXwDrLwgaoiMXVeC6GZzO J9bcL X-Gm-Gg: AYBFou0lfT6+BTLmVMQIcvzXjYdVpSSUQeUd9+BeAz22aLL+tLktxp9qDUjlVSpIxAf EhfPEZl6LKrdASSEYHS+APhoqT82NNC3xxnN9Bz7hctmKPd5Kg3e2a+uu8UIoe1j74tyPVGIEYv Ep7XKcoPj+DVlOOMEp6dpVgRCTJ4ruvRi2qZSl3oeYI3JbalWxRwvfupgS2o+Z+9eVJWGvmIqo9 hNQvgQPG4vdAzqbPc2WKGkrOPOLaMFxPfxaBaj2Es/rdZvvL1MYQYsj47N2gf7hyK3hrDTtdcVe PFS8HPlmFR950gwPPIWU4myd0+vistDq69Nzbf3AkK2eKlwZCuwQE6KWUrr4xfMpksNenhPVhWe aNAXT6sVJwy9sC4eXEq1Cd+bGJdhavF4bQgAueu47wXk5x5kqIEo5Z2HRw9j/El5YHYZrbLpKII Y9QifItdHKzJ4HUPtYax441aEE18R8FnVvU38e2S9Xh8QepfZnWFInmCYG2FFUKUu3jtf9MscY+ M1kWU9hnnMQb1lv623QeOu+LnprsNXnAMvc+3ja X-Received: by 2002:a17:90b:2ec4:b0:3a2:b59f:639b with SMTP id 98e67ed59e1d1-3a2b59f6deamr369711a91.54.1790499845409; Sun, 27 Sep 2026 02:04:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 049/101] tcg: Generic expansion of tcg_gen_movcond_* Date: Sun, 27 Sep 2026 01:59:19 -0700 Message-ID: <20260927090011.10724-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500490539158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 7 ++--- tcg/tcg-internal.h | 11 +++++++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 58 +++++++++++------------------------- 4 files changed, 33 insertions(+), 44 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 7dd50bfae77..c6b8af46de4 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index 0de8516447f..cd5028104a8 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -134,6 +134,14 @@ static inline void tcg_gen_op_ttttt(TCGOpcode opc, TCG= Type type, temp_arg(t3), temp_arg(t4)); } =20 +static inline void tcg_gen_op_ttttti(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, + TCGTemp *t3, TCGTemp *t4, TCGArg a5) +{ + tcg_gen_op6(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), + temp_arg(t3), temp_arg(t4), a5); +} + QEMU_RET_ARG_NONNULL TCGOp *tcg_op_insert_before(TCGContext *s, TCGOp *op, TCGOpcode, TCGType, unsigned nargs); @@ -158,6 +166,8 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4); +#define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ + QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4, T5,= T6); =20 #define TCGV TCGTemp * #define TINT int64_t @@ -171,5 +181,6 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); #undef DEF2 #undef DEF3 #undef DEF4 +#undef DEF6 =20 #endif /* TCG_INTERNAL_H */ diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 846b781c836..a1c1e9b9186 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -14,6 +14,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 a12ed17f3da..35cffc6447a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -225,22 +225,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) @@ -312,6 +296,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) { tcg_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= ) \ + { tcg_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 @@ -352,6 +341,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF2 #undef DEF3 #undef DEF4 +#undef DEF6 =20 /* * Generic expansions for templated operations. @@ -488,6 +478,18 @@ void tcg_gen_movi(TCGType type, TCGTemp *dst, int64_t = src) tcg_gen_op_tt(INDEX_op_mov, type, dst, tcg_constant_internal(type, src= )); } =20 +void tcg_gen_movcond(TCGType type, TCGCond cond, TCGTemp *dst, + TCGTemp *c1, TCGTemp *c2, TCGTemp *v1, TCGTemp *v2) +{ + if (cond =3D=3D TCG_COND_ALWAYS) { + tcg_gen_mov(type, dst, v1); + } else if (cond =3D=3D TCG_COND_NEVER) { + tcg_gen_mov(type, dst, v2); + } else { + tcg_gen_op_ttttti(INDEX_op_movcond, type, dst, c1, c2, v1, v2, con= d); + } +} + void tcg_gen_mul(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_mul, type, dst, src1, src2); @@ -1037,18 +1039,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) { @@ -1962,18 +1952,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 Sun Oct 25 09:31: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=1790500477; cv=none; d=zohomail.com; s=zohoarc; b=m61jf5cnZSPCZrJEeDdfQIS5jhN/XoOZcAsB0Vw5AEAK34WC265SdlcO5812Zypt8nwC7KqMTcrVYac3irGAR8LzYyVj1LI2JUS9n+uo+92JPvaw3Yqs2aDV85H3WGN4JD7+evHimVYnNy0qIASwuZZ+dzUoBcZ0BvuvZsSGPiY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500477; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tnuNK7BCXGd0v1/LjVMp4Nmyvqg9IVK3tEL3+akaqV8=; b=H0g8u3qUuhDgFgZOs31gETvtWaDBpUdHnIIlKLkfvFTufI6g9L8wUlyHyE+RcnmESKyo1lgqVbhZcjOmjhWg0oYrinTySNqiY6w6O4fTwPnbZ1XVRC3oOfgvBJvZqIEzTmVHH4Ke/eqSYfYYCJedPPW2yfp47pXMJmhqa3yyVKQ= 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 1790500477504987.1487846107083; Sun, 27 Sep 2026 02:14:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpN-00081d-Tm; Sun, 27 Sep 2026 05: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 1xAknp-0004Rx-HO for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:10 -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 1xAknn-0007d4-Ub for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:09 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398b3b189e0so1122166a91.2 for ; Sun, 27 Sep 2026 02:04:07 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499846; x=1791104646; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tnuNK7BCXGd0v1/LjVMp4Nmyvqg9IVK3tEL3+akaqV8=; b=ppOAih9oRCIxGbx1qgX3s1yxSnETWNoA+wsrW213UQFtc4asJBppth1h8slIWJY6Rf YKGjn/q8BIPpJifhVNUlZb3C8hxah9ot3HTlMrqmtLy2aOtu7nrXtlodn0INso32mOBo X8MO3A7fCFQhSNVqSVdKTlRc8ULm4UksWglNSn1I4hKFMAYIvmnGA/ay6L5GgeXDNJ3p 6Ksr48L87Vt9shoz11g0c/ulDegrDGzt6Kc7A9ngp+uG2fgOgeDk8fnhmgvQBDK5tvk4 zDEHqIMj9j+D/5/bKqB0J4nhWnG9Ss+boPOXu4lhoc66qFmcwHSAlxbweizvfTO84tNC 7yJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499846; x=1791104646; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=tnuNK7BCXGd0v1/LjVMp4Nmyvqg9IVK3tEL3+akaqV8=; b=qhc1hF110VJ10h7SKfOjC1gbiWc+WRQ6V6njtbYIUB49KhJdHHDrq3Z6nflqt7LjkL ZIpU6pH1wQZRNzGrUvep/6rN6D9Ve8AZMQvHSxiE8Ow7VNE5ZEPzWu+JeNkA3bn7S2W1 FxKNX7txUpLpx5Y/y2dlAUHohE7GvnsRwmj3HT064qYeds70RYMNohDHABKHF9gR3v5h qEBxHVmVwYvRpv84kGO4OKprV4cCaCN1+8j/nMseb1lESfjjhsSEu7fe+B8My15sJ/hy Fizj59F2Mp61VdqPUZ0Yay4QeL72ZTU2WCADO52ax6lqfzcfFketnWxeW5qzJ9cgta2B cPCg== X-Gm-Message-State: AFq9FYKLZV2MjN7aBMjbzIZaeyMCRU0qtqYqb//xbMiMUL0X8ZrUKfpo dj0jR2D3XzFBBwwiESIFznKMXSMH6QoFgLatiUeLCueMNulo5XasE1eOJSm7OO2UhY5hjNtd5WY xWjsY X-Gm-Gg: AYBFou3LSrbRjVBK5tkM8EliU+ULfjcm6oqsuUR2q91pa4H2faDFplh95/esqKfkPB5 qXHurFvXe8S2o9W614vY1RXT8j+hsDxoysJC96IylcybrtL2vGoK8g2cZwdoPcn9VN7uTpkzLXN Dt5zNpv64aoiEwWFp3ZZSlZ98QxyCOMeE5xrORCvwt4wl8UMAxCpKFqPW2UPIjkBqIwea9hjSix v5StFKFKKsgpwbIrfN+UZYF0AW/nvgsdo+WDhu2aqEMKgmlWaU5q56l1znF5odaSMCQrJFT1Yl2 VcVm70Zwjl7bM7txqt3DIujqQnVyien4d874lkoVGQG4Ml8ujVrhW32ZUHMcRnZQpd/9Xm+mti5 83OIbcxRhzzyKI1GFnPZEAQva36Vvts47hWCr6FnFNnZwYGytek7v0A8CCLsXj9+njumGY9ojPf ACl7ShjV02QHgSJKzun1NaJcSOV2dWKvTVkzDqnCgJjtwe9kLsIQ0VYY91NQzxTRdpvhmhvhMHt gP5l9SbVnGpsCD8O6xtmlLOLzSqw8c= X-Received: by 2002:a17:90b:380e:b0:3a0:bcc8:1544 with SMTP id 98e67ed59e1d1-3a0bcc815bfmr5504825a91.39.1790499846390; Sun, 27 Sep 2026 02:04:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 050/101] tcg: Split out tcg_gen_ext{rl,rh,s,u} Date: Sun, 27 Sep 2026 01:59:20 -0700 Message-ID: <20260927090011.10724-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500478581158500 Content-Type: text/plain; charset="utf-8" We'll need these for other generic expansions. Signed-off-by: Richard Henderson --- tcg/tcg-internal.h | 20 ++++++++++++++++++++ tcg/tcg-op.c | 12 ++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h index cd5028104a8..a0edf112927 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -183,4 +183,24 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_= target_ulong imm); #undef DEF4 #undef DEF6 =20 +static inline void tcg_gen_extrh(TCGTemp *dst, TCGTemp *src) +{ + tcg_gen_op_tt(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, dst, src); +} + +static inline void tcg_gen_extrl(TCGTemp *dst, TCGTemp *src) +{ + tcg_gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src); +} + +static inline void tcg_gen_exts(TCGTemp *dst, TCGTemp *src) +{ + tcg_gen_op_tt(INDEX_op_ext_i32_i64, TCG_TYPE_I64, dst, src); +} + +static inline void tcg_gen_extu(TCGTemp *dst, TCGTemp *src) +{ + tcg_gen_op_tt(INDEX_op_extu_i32_i64, TCG_TYPE_I64, dst, src); +} + #endif /* TCG_INTERNAL_H */ diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 35cffc6447a..6a5f77e9977 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -2200,26 +2200,22 @@ 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)); + tcg_gen_extrl(tcgv_i32_temp(ret), tcgv_i64_temp(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)); + tcg_gen_extrh(tcgv_i32_temp(ret), tcgv_i64_temp(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)); + tcg_gen_extu(tcgv_i64_temp(ret), tcgv_i32_temp(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)); + tcg_gen_exts(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 Sun Oct 25 09:31: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=1790499968; cv=none; d=zohomail.com; s=zohoarc; b=E3t/RSLzoHbk47TdRM5VTKuu/eGlyjSMOYd4xKW7t6UN8xz57Ly4wVMwsuWaVVJgnlGkczKeZ6JW3+tcYqGf84LjDZqMNmHtja4d2kK7uYBtpEt+fwa/BP3g/84OZATWI5n4OaWDby+A1l3W2fAbVVqj8CTbDk5xIC6SPrzZ5Hk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499968; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vAH72kPbfcImibawvornnt4QI4YOAphsACDmVxoDJ3k=; b=niMEfhSOrS+5im084W/IVA9rHRbsgzuMWB4VL8x1tn7Xra/0Y8DU3XUvih36OXjySfmZgmDC5NB5W4UFGwW9eH6cKgiiHyrysn+I9Q/gPPlH0ntAC6lg/bX/JUqu/qfIbyDwUn/WDr5dASohZ9kEk/8PsMxoPraG5EML7o05SIk= 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 1790499968890266.61118091316916; Sun, 27 Sep 2026 02:06:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoW-0005yB-51; Sun, 27 Sep 2026 05:04: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 1xAknr-0004VS-AB for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:12 -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 1xAkno-0007dB-Fc for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:10 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc797656e5eso867881a12.3 for ; Sun, 27 Sep 2026 02:04:08 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499847; x=1791104647; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vAH72kPbfcImibawvornnt4QI4YOAphsACDmVxoDJ3k=; b=Bn6P/SNx8wWFLN5o2QGWqJhEJrpFvVW07I7Bq2zIdxxjT6U3Mkyt8Wtbq68PqKu0s+ swQM88x/GO8hIL8LWsLF99SBVUOxaccfzLWE6xeu+cXgGyNPQKCbBc2ncS0qGKpmurJS te/iazrYGPvsRtbZZDqrNdtsb6CSqctTS20GWbwQxhfMxbr6oS1QrXAfHBv9eyIFm8tU 6C1Dj3dp7RNSaoq72If4rLFDKxfoBBqKacWHOLzzOH7pHHJuJAxStVPMna0uT/HwJ3rN 9l9kmIc8JUrlGYkkTmtoVOusVoEksvMlJ4UrqMFGIo/XBjnmDYUl89DyvY084rQHNFgK 0DJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499847; x=1791104647; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=vAH72kPbfcImibawvornnt4QI4YOAphsACDmVxoDJ3k=; b=H8SEyYzP3Xnfb8gGrk/rUUPW3JFGec5UYzfnrylcuKDkP5m60DuPq0+WOE3464DpuT MA5vOKMPcsClX1VsJGOuDVPA7eTZlTtc9QxNWMu5H0nJpay4GRTQgKfBxJ6wumWIx5Bx pAQN+hBWEr3M9yr9H8eL9gitLhYC8859QCq2HYF8PDJYmolPq6X4Q3ljD2snCeEgsI1U 44E4pJn6V8moxQgBOWoQ27RvGQpHG9A0WmoWVk9shSjgROnBXC8adZYfOPRFR1nrEJ4L xGCmu0+Y88OgqTLEh9Q81FVdqm0d/y5O5PO0RBO32i/+Y2ySbR1P7aVLHOs46sgiUtQS BsuA== X-Gm-Message-State: AFq9FYLYnGCbVWFfyz7OVSyJwNXKK2Bsmq/CMXow7hKNPZihHWrk4B1a p6An8a8+GrHwOpGIEmelzzYFYQ/5ZE/A+taFkPy3X5xqwgiEar9YKc4wqYZddS8RbDM1Mbw+aCL sQF0h X-Gm-Gg: AYBFou3xn6u4VDC/L7LNX/xzYHdB4ppuj5wN1GQglLJ8nURFNn0GNJvJxinybrObcbJ tvkBVWY9vmT03gLXsBuR/0OdlPUFCzlT21C+m2XekVCgUDRzyZRU1rTe08F+rxztyO5y+/19/Nl CBF9OLouAZ7VkuEtrB9emzAoQQXrlrMjSFiACNlrO9KvcHBvIDk7xbrJAmj9Fgwr/nsFxozCbEU RKfZ5xgwLxhVa9eanZnxKHEG4UJTFw3LcZacJKHMNVSowv3MWfaRHvekfe0q5nHMgydYvVAEgR6 0jeobW9SmQWY5nDCtdWax7RreOow7Er2GNbXej92LL9d+qujLGjOD4NqNi2WUdopS85DxKDZhtO IrJoJv3uPrir/l/gJ6eviKh2KerVZpJFhSm/1mExEoSsVFNNlA9ulkiTWrID5QTV2K6sLK2eSc5 7JiP9y8t3vWkCWbEbNb/2kF6ZIR5wE4t9JHb6V3Jbb0maDBCdwWKiE700QgtwLm2cB9yBkONJNx z7utuwzZOIIP0zaSAioD/DVwfEgWQ== X-Received: by 2002:a17:90b:2250:b0:39d:f247:bb3 with SMTP id 98e67ed59e1d1-3a098b4b334mr8367837a91.21.1790499847068; Sun, 27 Sep 2026 02:04:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 051/101] tcg: Generic expansion of tcg_gen_clz_* Date: Sun, 27 Sep 2026 01:59:21 -0700 Message-ID: <20260927090011.10724-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499969160158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 52 ++++++++++++++++-------------------- 3 files changed, 24 insertions(+), 31 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index c6b8af46de4..f40c286a831 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 a1c1e9b9186..74c68f46b76 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -8,6 +8,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 6a5f77e9977..74e1e1aae2d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -422,6 +422,29 @@ void tcg_gen_brcondi(TCGType type, TCGCond cond, TCGTe= mp *src1, tcg_gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); } =20 +void tcg_gen_clz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_clz, type, 0)) { + tcg_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)) { + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(TCG_TYPE_I64); + g_autoptr(TCGTemp) t2 =3D tcg_temp_new_ebb(TCG_TYPE_I64); + + tcg_gen_extu(t1, src1); + tcg_gen_extu(t2, src2); + tcg_gen_addi(TCG_TYPE_I64, t2, t2, 32); + tcg_gen_op_ttt(INDEX_op_clz, TCG_TYPE_I64, t1, t1, t2); + tcg_gen_extrl(dst, t1); + tcg_gen_addi(TCG_TYPE_I32, dst, dst, -32); + } else { + gen_helper_clz_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src1), + temp_tcgv_i32(src2)); + } +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -730,26 +753,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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)); @@ -1671,15 +1674,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 Sun Oct 25 09:31: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 1790500334510257.2012551242789; Sun, 27 Sep 2026 02:12:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAko8-0004xB-08; Sun, 27 Sep 2026 05: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 1xAknr-0004VT-B1 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:12 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAknp-0007dK-A9 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:10 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396cccbba91so990175a91.1 for ; Sun, 27 Sep 2026 02:04:08 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499848; x=1791104648; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=fxHuGCuJQ2I8t/qnL1+80CoNNO6OTdWogGUcszyL0B8=; b=V5FzAFXBJT9UkSXIAOeH/k6MsS0kyuzUDEsrTNI7bMG/gz9dYhyS7OPnio4QpuQb+S RzJeMAloLhDBAmQkcPPIVHYrPi5+sW3nWxjcRWfMwsYdCwoL1sAzXLdgp3PeWGQPjmBa wTZHUJEtMtw54HChU8Dzfj8UcOjkgfzKTW8QHelMoY5biyH4WMF0IYuu2Pmru3KlZVEu L+HlkGGGfPjsKxCGGD/+O9P3/C4Fnl1+dxIZYo2Hs9b5WCnHGLjdP0GU7Przde3SXjG0 8Iy5A2vkC2sXV2V+7f8i7Iji3A3y5Rn80Y7T8xrrPhFN0jRJSfMKtQpQWoaJsp2y+TD8 Q6lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499848; x=1791104648; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=fxHuGCuJQ2I8t/qnL1+80CoNNO6OTdWogGUcszyL0B8=; b=sDeIaRCnlSNOEMGvic/hEIaJCjbAwOQVwdDW+F5X/j/zU2h8RVJkIHD7Q4eOhKQqze MsVyALCxy2SJEYagAGxz7SC+Gy+3Fq4m3wTCKBWX5mB/uYJgGYjsaiRqR0017a3pQAfM di77Uq83enc0jNrbRS80aMqDZXjw+qjVWfSEWXhSvfewb03CCbUHHLuhYOkQQNrQbHaI F50fdZEbj2PRl/gc9iOdxAziTnfRWziSFJmokhCC0tJnyimHJbYo4Wm79Ho/MtL/65RZ 64JBomL+UfwXJlhcD9r8t/pCrujry72p4rOEroh9ScOHWgdzlDaf3diSyvI2CbC8qhsF i/Tg== X-Gm-Message-State: AFq9FYJpz0uKWyWUYErFkO1JMSs4/w24Cg24OV7xDfglWJTEkZwdTACi Sd7/aOslDfN/PZXGu+fOHTArd/SbKgQMelJwG4uxGEnex9ICxLM1QulWkwCKbtYon5Qbq6Sr9SM F17q1 X-Gm-Gg: AYBFou3nn4MeYj6g/UUSzzq1V9itBULBBDlmYbIIDE8SPKDnJ9NCULoEVv5CKmJsGgF apuuh98LmGNgKUjHO3mBmyF/yo7q4C7pfdYFQaAIA4wKj3zr8W23BNJ04hwxpbwv040fdBzePxn nqrHWKdwebYX/Y5ycPDNeagNrsO5pqEWB1nYfeTrBD6DaAMVo/dIvYVdxj65YUI+Y5mC8aUAb0q 1DVR7cBh23Ci5SU9oj9Yai7kVlTAwUj+0nlN7h1SyeP6W4ONN/5YrNmNWduJkdw2EyY24oy9Svw 8FY08BiHV5L80lbeY8Y5uoIUaLAWayhx8zfc6v3enHDBsB7c3Npbh6IoYEHC/T0RkiwlZ2Q9sdF FVD+lvej8NMk5tufhjqM1rocO7SHYpv46NqoU7yuzynqWPhAa9dV9OBH/KIW7JQUdQFutsFsM09 m0eFTDCnQKLxuU+XiaPFGBaBs3au7p37wf02rEoWdkn/42Y8WowP5xhAuK3p8HtzO9w8wmaYWq9 YXuSfVZiI1lp0JKbjmzTYEJQSdi8g== X-Received: by 2002:a17:90b:3c8e:b0:3a0:dec0:c0d2 with SMTP id 98e67ed59e1d1-3a0dec0d44cmr3391121a91.63.1790499847941; Sun, 27 Sep 2026 02:04:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 052/101] tcg: Use signed integer for tcg_gen_{clz, ctz}i_{i32, i64} Date: Sun, 27 Sep 2026 01:59:22 -0700 Message-ID: <20260927090011.10724-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: fail (Header signature does not verify) X-ZM-MESSAGEID: 1790500336010158500 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 f40c286a831..40a7f94040c 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 74e1e1aae2d..1231cb4ca0e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -753,7 +753,7 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp *= 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)); } @@ -798,7 +798,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) @@ -1674,7 +1674,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)); } @@ -1708,7 +1708,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..5195db4e9a3 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 Sun Oct 25 09:31: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=1790499869; cv=none; d=zohomail.com; s=zohoarc; b=iDSp+VYgToXnkvFKky6lp7VeYTC9Mto5ZSiJNMmsHFJymiI3tqjDgxwCbP1RD18ONF80GaDYf2FPd++5DNppo6C5YV0ktQ0zQku3kpK3wpXB9O2smPGKQEAx1W0D6ZSpo4D9Y3i6fNm2TkA6SAJR/OBQU8SRkSLOExpSiIGVqAs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499869; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RhmEsVOe8JaSK7d0M3zsFdTZV9PjCmJ4QZiZ2z0LZLs=; b=HXc8oji0jZNTVVBh1V9pISj+FTn/lOlyaCJXUI/S5uJjMfAMZ0LiXhpZjUO50YQNSN3StGxVzhbJ5iusFmtY9nw6lb52mrEH/Rks9VlY2D7K4yKzln5iErsaYwozQbLMv+d1UScmDdbQBr20VFtAsm1K8Q2ku2+KNgJIN4pEotA= 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 1790499869315833.0145486598374; Sun, 27 Sep 2026 02:04:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkny-0004hd-3M; Sun, 27 Sep 2026 05:04: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 1xAkns-0004Zb-PU for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:13 -0400 Received: from mail-pz2-x2a.google.com ([2607:f8b0:4864:3b::2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAknr-0007de-2B for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:12 -0400 Received: by mail-pz2-x2a.google.com with SMTP id 41be03b00d2f7-cc7a15ba46fso162107a12.2 for ; Sun, 27 Sep 2026 02:04:10 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499849; x=1791104649; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RhmEsVOe8JaSK7d0M3zsFdTZV9PjCmJ4QZiZ2z0LZLs=; b=IBLu28aGBDykd6s026CMDGcVYQnXKW3QYYVBCO+xYCPhktZ91pJ2eNuKMsCsUkQtkh jX8rKUroCzd73hSjmz7gqLAGPiuUmPigoAJXOq9jq0Ymqn+PhBjy4Vpo2PkT66Q6p8oM mjYaWU4XKAD3CUOfA9Aw9llEyutuh7liSpbBcTHqPLsINmaNHnXcwZ9kwEychUKfKXG9 WjCczzwa5iTBIO1u6PgIEntdA1XDWjYI/ec9OMe0ZZmpOkmLo6tEXOfbPhDRjTasMZzS L2dh9Dkdzhgrw5LG8ZwF3z1KSg0YBKfmkwIitApcEX6il8TaRXLedaJJQpGdcDOY070g +UCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499849; x=1791104649; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=RhmEsVOe8JaSK7d0M3zsFdTZV9PjCmJ4QZiZ2z0LZLs=; b=U9j8CfMAkv9IfFwQdTSMZrwSGVidhcqRTvYcKpBo7Me1IIHGBv8GAuAknze+xrmhVb UsXjD9zmUJs/jZfi1MhWKu+nUpOqTmXiASaTIsfrAVl12fPeH7OvH2ejZiV9Q+fSavDK xUmAT/zcRqrrBZRGc5V6PyGiR0cioZxsk2cx6/XadSnOXjs3Mdw3Oh87STig14IYJtsx bdJpoVge5epQXJ8aNFcUSb98rCBD9HsOZo+pjqMBeziQENQQb8QOdnEg1oAuNjprwI/j Wi+5UbhmE3O8olJ187YtHCpb0dj8kzonVezy2HtmYo0DIZVO9LUar7JNfbISqg2fMNXV JpjA== X-Gm-Message-State: AFq9FYI9jJ/BCnL4OHx7emLkT8QlHdgORhZV7c2UtR7PGvfZlkjVP8pn BqP1+jIXUm8mx7hsmE5dNtXfU5fkKRWnvkV468Au/YQvY/qsfTE8CsdG+kuQP0/nP3V8npVVHz8 bYOpq X-Gm-Gg: AYBFou1kTD4+wonWO6gQxFy1OVnleiVOu2HlgHmau7EH0aU30zkyyJNSPkHeh+rXmDX o+v/cOXFJbdYrZAo1jc4eDsNpw3xNepWRoREAVDF1bTu9HyxKPdIlgkr0dWGI680g9QNxyxu3VP WzdMlR7HhsAMsJroFCz/pvkZOCwpNkJxG3R0f13eQl6BrIJcE9kZo5J51LqQuU7vztyuDK5hCaw j709NkuCzjUG39t7OiHMWsVq5ZRGdwVbwnFfbwvtya06YFG715fwcIt1rESd8edbuC4tkA/WE+z 9IHh3hjPbCiizMg/fSquIvyvwXoxUOF9Yg3ORp6NpR/Yvigut/DyAcNCdeGYeELXaGWacplxgfV ZRsg4MxrmB2F9TYsJOba3L2N4Pm4DSHP9z9ivnvgNKhYqAJN0qQ0fMrM+t5X0iVjcGisznodwAK rrHn7ivP5Cg7JzJDtUHlOWwCcxisM/FM/SWhFVZZYDCQTTVEx596l8YeFGsDc4Tgcis+2PLlcLq sHenJdCbaw/JFFmZOFl3x9PiNV42w== X-Received: by 2002:a17:90b:3bcf:b0:3a0:afc9:a51a with SMTP id 98e67ed59e1d1-3a0afc9a61dmr6560458a91.12.1790499849165; Sun, 27 Sep 2026 02:04:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 053/101] tcg: Generic expansion of tcg_gen_clzi_* Date: Sun, 27 Sep 2026 01:59:23 -0700 Message-ID: <20260927090011.10724-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::2a; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790499870791158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 40a7f94040c..acdd31dbeaf 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 74c68f46b76..cf832a6dc07 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -9,6 +9,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 1231cb4ca0e..f168386f46b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -445,6 +445,11 @@ void tcg_gen_clz(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) } } =20 +void tcg_gen_clzi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + tcg_gen_clz(type, dst, src1, tcg_constant_internal(type, src2)); +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -753,11 +758,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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; @@ -1674,11 +1674,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 Sun Oct 25 09:31: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=1790499900; cv=none; d=zohomail.com; s=zohoarc; b=Li5GY929r0POBL//l1rCk1cOWQTcsATAmEAQ00IGL/nnfkWKOZNFgTJSQKSKne4copHRfCWq9RIZSdsiNpPEeX8Ohj5Mfjjx9q7fl+FAmyqXiAZ1zR+R6F0V/ZuYh+95jcnYx56fB0MhOUawYCCP7bNB7dPZrl2WVleppWwZyT4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499900; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=T5QcgkylO1Z0/SmPVTFK2bRSwmuiWkqQ068QPJvr2I8=; b=bRkiomVNhI2QVqNTUpvPgddxLuaMGSyA2Saq1ln1NrcgJYajjLwjK2owUUL65DS00pH2i5p4QSfYBnrLdoQ1/XnNXKRXr/S23V7ECPqpLEkz4IZIWPq/d6/21sZfR5H3vCxbGKp4p6E2scCUqzGYmFvh6m3l9zg8or6V+1s+HlE= 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 1790499900528176.13499232443223; Sun, 27 Sep 2026 02:05:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoC-0005BE-5v; Sun, 27 Sep 2026 05:04: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 1xAknt-0004cJ-EQ for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:13 -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 1xAknr-0007ds-Hf for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:13 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b2ad83dc6so1441783a91.0 for ; Sun, 27 Sep 2026 02:04:11 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499850; x=1791104650; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=T5QcgkylO1Z0/SmPVTFK2bRSwmuiWkqQ068QPJvr2I8=; b=ihdi0S1ujE1lAcCGv1Osj54e/dbmkClSYVnHOhX+c5O9kwFXyXAK9jf26k/usRQ/Gt dgfdqZClne+X5pKLUXQuuVQNX28VqCmi5BenVRTodLfv9ySanJserSVJEI51lSL3fFDu CO5oKQLwkB2+ngSX9fYcQOMAjIX1OG6V3zRtjAw0bEhZoapTfOymhInaK4NN83csuSIW 0IVc2VDr7yrOVVUuFV62wEaEjZY8430GqQZVdtftyUrWYqM37VZwZk31vIXjq9odUzCV O59UJxZBiP/5HhN8wJNCoAolFurjAiwMFg+8jlns41bHbWfCRSNAVuhjbwR4W9pCDWZ7 hhRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499850; x=1791104650; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=T5QcgkylO1Z0/SmPVTFK2bRSwmuiWkqQ068QPJvr2I8=; b=wLFvzuAAxsXp3b7JmFAxULJsNtyIC+BtQJLgHu/502qkP/+l5JaZmf+/i2BxZBZ5Q8 KMAxYNRteraeQnaxpKi3DGEShyAjKdT2dSzE0AM1jk2fvG5eC8MGB3IDPqdUDFiSgier tUbe4ncUQGP4+qRBZHoVvto7Lk7iMt7f7+mTpMq+O5XPsdKgVCttA/qdsglSaIrdiIO0 3fYn1JMJ7XtPljyV9LmFb+OGoNlTC5fBw7oV+jHxWewPEwD9VJl2UbhNTfTAwbkAxArz z/FQ9VHu64V2+nwW8EzwTlL5K6t/2w6lV+CPIOVQFoDN5d7Go7bLKQZ4bu6syLvAnLOc XTxQ== X-Gm-Message-State: AFq9FYLGMBjXCMwF8rE83MqIs6pT6USiQ4BpZRO0M6LOnt3jGIbB27v6 jICoLVQPqlv7Llt/Fp0gT0/m9JREvAugF8K80RC8OfjMitqjj5emNRh7qW+6MpP74bLDfOrcPDL NjTaN X-Gm-Gg: AYBFou3qUwJOwYVDPtBMt+llD72n4wIaP/RJaCJMFx+jtFo8IUfgfrF3erTrcIsyyzi 9HGwuXcRwpEyDH/Sn+QCmu4QDh3ESI9KyPhO5G/Ke2sLpv1N5cw3ZAdHTVwDdlm46Ee+js94g1z SWFrRFv4prO2woouQU9Lhp9DJ2x3c/OCkx1eJh4U6SgN3kTVS+ssFboCpzJEhYcm0QEP/hRP2TN 3yYsbre7sge8h5byiG/DZtrXh6c97ONSSrFMndzNub1V8Kb/qRNaZzM3leHKYsaEWnQbSWrp1Wp /HyLY2mgd5IG/R3547MtN2g4lALQ5a2GeSuTayT9Y6HweENKkYbSvAYL5U/eSGPBW0XBhhlS8sx q6uzHHcmXXAYTXfj2iR8okydqmGk9x4g9g8U4Yqg7XtyEXbtlCy+qELZ94yG+pzujqk1CBEGdiR QdJW24T7sRJ8yBwEaxjPqsdKsrxDaOCjd0k0VSNUtGqlELQKWECWmlmzhYdY4oEq3kXJxiOz6lF N0Ui+q9iYCgni2Gg1YQoIOU2ddX8w== X-Received: by 2002:a17:90b:4d85:b0:39e:53a:c8d4 with SMTP id 98e67ed59e1d1-3a098ae21c7mr9513365a91.12.1790499850065; Sun, 27 Sep 2026 02:04:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 054/101] tcg: Generic expansion of tcg_gen_ctpop_* Date: Sun, 27 Sep 2026 01:59:24 -0700 Message-ID: <20260927090011.10724-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499900903158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 41 +++++++++++++++--------------------- 3 files changed, 18 insertions(+), 26 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index acdd31dbeaf..7f977661b3d 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 cf832a6dc07..66977cada1f 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -10,6 +10,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 f168386f46b..86dae114859 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -450,6 +450,23 @@ void tcg_gen_clzi(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) tcg_gen_clz(type, dst, src1, tcg_constant_internal(type, src2)); } =20 +void tcg_gen_ctpop(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (tcg_op_supported(INDEX_op_ctpop, type, 0)) { + tcg_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)) { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(TCG_TYPE_I64); + + tcg_gen_extu(tmp, src); + tcg_gen_op_tt(INDEX_op_ctpop, TCG_TYPE_I64, tmp, src); + tcg_gen_extrl(dst, tmp); + } else { + gen_helper_ctpop_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src)); + } +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -828,21 +845,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)) { @@ -1733,15 +1735,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 Sun Oct 25 09:31: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=1790500389; cv=none; d=zohomail.com; s=zohoarc; b=Gq3PsC0PnDdQnEnuNxNjq4OSqZuGVmbVl0gGNl+UH+kc9jW304TQppcdIac1fzYqUsLk/kCih3LI0jr1SsnOw/mQfXndvX6W5oDV0eQQ/wevRLEMoRNwdifizy+2zhagXxpzIHFwwxcfNuG3LvURhlF2bCMrtN3b+YfmJxb3tHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500389; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=x41GysWdsxkz4nzILMihHGD3RFvkb2qmv+rDm46YFHs=; b=j8B9FHcPaeocHbMURWGwwdD2K9YO4bQtHWG9vc+9hxJOihbTubUjz7vTA7jcnnc7UluvGpWfGFZYpAC72rsXrVMZWAwj/UEM8hSObJx7EYo3rKXhiqkegQOpJ6tJt/K7bmPTc+3mQSFRKTra8gtQ+u98f+m9LIr+NV0xlDtEn/Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17905003896721004.0286663405927; Sun, 27 Sep 2026 02: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 1xAkqk-0001gH-8A; Sun, 27 Sep 2026 05:07:13 -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 1xAknu-0004ds-HX for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:14 -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 1xAkns-0007eE-FN for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:14 -0400 Received: by mail-pj2-x11.google.com with SMTP id d9443c01a7336-2dd53691be5so14197345ad.1 for ; Sun, 27 Sep 2026 02:04:12 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499851; x=1791104651; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=x41GysWdsxkz4nzILMihHGD3RFvkb2qmv+rDm46YFHs=; b=da5/sYJcIOYVYiTIFG1spM/eCZroHIUMO16w+te8Phi6EMfMlx/NMfaCaAhP1iYK2z 32RGa7YN9JXsifqarBH8ZytLV+w/b1W9nrW/S15QxFz3e87Cb2Jy5RBI8Maq9gxhQSwG blquO8vz7cVaXSwHWJKB3ml6NDKMIPyj+CeMeJZ0g8Jf7/fpwei+h1Q4ChT/tfM5Wuuw mhTVhInjvlzGg8HzE/kFKTEjTnbhZ8eAgHvm+BOSFGyeykuhrhfBiXoLXw4nINYR72W3 pMWGHL6XBKNBiI8mEzekTsi5TB3DInV0zvNm5HsEbOPyfhjZp7HUlV7OE0+b2QUSlPNV +zJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499851; x=1791104651; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=x41GysWdsxkz4nzILMihHGD3RFvkb2qmv+rDm46YFHs=; b=RVmGIub1wPO0YR7tq3m5Dvhz8z99J6xOytTyOWkEnn2JqIcEqfuyBZcYEr3BbOKuso /OydUEIKKXSVbssDjOp9CojvOaGJxNllvJD2XzSrDJH2s4+t4hDQw6a6x6TWQvIKudd5 qHZP9iC4B0xZWNGAUJbuG7eCTkyWs/gGrlqWkHKU0M7mnYmsFiq8FPxZGlVJhWx3jned 5WPZP2jyLqN3i8gFtAXP7rqszydHj276g0bC7yhOlmu6RAeBUQ+dSibz0FF6q4OeG8Ld VIeN6iDcvjziKrNKU0YeMF7BnbATX2b19TIUh4W8fM6lPUDv+dRVq5gVZcfNpCxMJQNi Cxaw== X-Gm-Message-State: AFq9FYKpx3deQbp+n6y02W72NO9/tMEa8s25jpNAZZ9ERr5V6FRnOFH6 A5pIObW05ds9e11ULbJp3VEx3s6l3fMNe+BMk25+Xk1dltaX2LP8NW5R4mvpOtiKYWzd97OOmSL YLWob X-Gm-Gg: AYBFou3yv5Cr28ApS06IfBCP2HHf3ibpYc+V9080Yp1iTZRRpBUWRjx8b9iQAiV73+x +XTI77OeXs23IHuSvH2Dgn5XLMDGsSA4WE6HhQBNMY4A5IkT/5jFLHiXYQPOuE7mCRq5f8IPwmE qh1dR499aENHjDvryqenXSNiHVdQ7LvRgX2zOxRRAUUPOe4cbC7MBLiwoVYRU7wPieyWyhEOD3S 2EHGwTkf+L56k8TSyyaMBozOVmzQWWROjI+e9aAno8POtaaj1qw3YRmLyEhAXEpDvxSPOktENzR PYXq6g/qrcK4/IciGLh+xHqfZ1xnvvrGRFcAO9A89IjT1gQP6Tlmm58aDw6I7/1VnBvgrh05SmR kRN4M/38TT7AF7J04ptL1x8Xb6J5pcqLPO9Xn8DJD+n7HB/7SK2C5GAp1u2LC8XfTByLM1LlFZU PyfdQ5hpFMtAQ9sPSpyZEi/K/lzmhDftroOckPOi14R7Kxex9c/m/YL1W428gdZREGK5U+lK1PO kCEncyQnUl25ml5KtHsleGppBntMg== X-Received: by 2002:a17:90a:d445:b0:3a0:f0a4:a2c7 with SMTP id 98e67ed59e1d1-3a0f0a4b04emr1992214a91.20.1790499850804; Sun, 27 Sep 2026 02:04:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 055/101] tcg: Generic expansion of tcg_gen_ctz_* Date: Sun, 27 Sep 2026 01:59:25 -0700 Message-ID: <20260927090011.10724-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500390319158500 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 | 115 ++++++++++++++--------------------- 3 files changed, 47 insertions(+), 71 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 7f977661b3d..94c2a3d1682 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 66977cada1f..2436fea04dc 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -11,6 +11,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 86dae114859..1c0c1566d92 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -467,6 +467,52 @@ void tcg_gen_ctpop(TCGType type, TCGTemp *dst, TCGTemp= *src) } } =20 +void tcg_gen_ctz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + g_autoptr(TCGTemp) t1 =3D NULL; + + if (tcg_op_supported(INDEX_op_ctz, type, 0)) { + tcg_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_ebb(type); + tcg_gen_addi(type, t1, src1, -1); + tcg_gen_andc(type, t1, t1, src1); + tcg_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_ebb(type); + tcg_gen_neg(type, t1, src1); + tcg_gen_and(type, t1, t1, src1); + tcg_gen_clzi(type, t1, t1, width); + tcg_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)) { + g_autoptr(TCGTemp) t2 =3D tcg_temp_new_ebb(TCG_TYPE_I64); + + t1 =3D tcg_temp_new_ebb(TCG_TYPE_I64); + tcg_gen_extu(t1, src1); + tcg_gen_extu(t2, src2); + tcg_gen_ctz(TCG_TYPE_I64, t1, t1, t2); + tcg_gen_extrl(dst, t1); + return; + } else { + gen_helper_ctz_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src1), + temp_tcgv_i32(src2)); + return; + } + + tcg_gen_movcond(type, TCG_COND_EQ, dst, src1, + tcg_constant_internal(type, 0), src2, t1); +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -775,46 +821,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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 @@ -1676,35 +1682,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 Sun Oct 25 09:31: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=1790500090; cv=none; d=zohomail.com; s=zohoarc; b=YgrMpr6lnfRForx9U+QVlNuhLcb2R/1iO2ZATZ9vIHCbLoNAfsd9M/E6RC7oRuIRLFoyfpN/M3R0F4O6sThC0/gXCEvPkzImP/A65ReceZfBPr/50gR1KTy94z+EiIit1EIW8cyvzTzA36q/Iurmvzl8o5ezApSWhw52jlXOKXM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500090; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ng3sgW80Xzeb9sb+obeASA5JwXfs3ISjUa09IbUQL9M=; b=mRSY8eLohxhtgW8al1q7JqRKZ0RLLe/oSkG5w1P2U4cK/yvFDXFN/hGvSUWN714UnnK50gQNYA8k14SHdCsY5wZONknijoZV9OWXhzwXUFmxikFITmtfzidsmKYzhq9QXkxvedDUuoYIdgasDBFsX/opkMyB1mLwEmAbjsxkI5M= 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 1790500090472868.9378559911347; Sun, 27 Sep 2026 02:08:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoJ-0005YB-8a; Sun, 27 Sep 2026 05:04:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAknv-0004gR-Bf for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:15 -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 1xAknt-0007eI-0X for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:14 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-396ccb652d7so1378122a91.0 for ; Sun, 27 Sep 2026 02:04:12 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499852; x=1791104652; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Ng3sgW80Xzeb9sb+obeASA5JwXfs3ISjUa09IbUQL9M=; b=o0ru2RwHSIR3/o2aMC+n+tSf5rlbMZRIoWTBPwvIDPMmQ5tYCB6LAL43DRTjqSNai7 XB/JC/XwlXaroOYV9JSMYPwJLADZMZOJskS7W7Y4TF0S3ePVQ1BDVuPDWCG8kg8PNEJZ Adqs8ZbwR8SpiQ2hXWBuQmbyp6Ua+PykP4Q6/ddnbtuugPZPWN3CTnq0eU3lfOZUjpaL 5PnRXnUxVeDaNiVXK+yWrlJl2MgPkUN5dOGgHSZTiemOe2dEeyoiQTwCTjkxnjssNY2f HImjJrbiG+R0KvvyRLayruhxQPS0EeRbLqW/EaFzoETvZY2o6k8xyXeT//aBxTbLCJ/U NQgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499852; x=1791104652; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Ng3sgW80Xzeb9sb+obeASA5JwXfs3ISjUa09IbUQL9M=; b=VktLbVVkAkzAnZalfRkSr7t/a5N5PY+vtxr0TVfqTkjRFbZmgsy6JrTr+/8cuB9xKu Y3wtJpL5lQxw709QMKStUVUg2bcEtHwvFSpr1bLEIwHvIxn3Opa93S54cEah0/1hlNZe lQWt2NWGfj8MKEvw5u/YhsIYjffGXqqPwl7W8D/aTKu/qye9iy1KjzuGIdjKBZw9XxrX 8UiakOTiLzZvOwUt8cRuOk9zz+XoPb3Qxf+VLSbMIZwlb59tr48irDy0Y6A8+3BObL27 kNV8ndYeIvNugq5ZCo9LTuGckYsH0bb5YhbPoqz0QJG94OU1NprJddNxjLuV4+iOhjw2 /AUA== X-Gm-Message-State: AFq9FYKUD/vuEh6FucsFOYxXjeV5pJHTYsvPYt6vey5hXiNys6HKKnM4 5KvmEzLAODAgU0Amn6ObFwxaw9bUYmc8gaNN2SkxvR41s4b6HNT6NMuIQ6PrT9QLEIqmOlN7Wdr 05X0M X-Gm-Gg: AYBFou1XyCGMRQaetuPpwNnY5MCg+X2sY1x4ilys+RAyboVleGZusnSSQo3wIO7I4hA QbXWdc4LCLXawYdniqYXoBxykz2NrSAWeOwMH14sd9sZxrINzdw+KkGc0yDva03g1AptE4jOpRv BN8YXVmGcunrFAwr5rwKh111jNBENt6xI8hFM9vebUJHbAxDcVTP/9d+L/VqvU2Kr59WfsCi9af Xcr9Buo/HxM82puF11IpXLgoKqPKfrVNiu1PAHIuuyOWJ3xB4ffXHu/L15GRbO14I1JlsvbafW7 C150FdVVaEgYY6GfB4vJDfFHkPP3y5yyE/D8zCwbxu4zFgqA8lirAKF/ULCVbTvh5J3gvsCuZMh p+jI2JsQjoaPIBFwW27ZInBFDT5SbdnPAMHzctQ7LxMjnTpuuApNOWqe7LcrkCl/MaJSJfNK60T GQi1Gt2j0kgbRFcxcwUgv4P7JAsvPJ89HhpCxI2fJT73iLPv0epCNbo6YHJaLYxs4DlQdt3IMk8 AGcINNmKB3N56IbwkSJXLheNyWDdQ== X-Received: by 2002:a17:90b:4c0c:b0:3a0:f2bb:53c7 with SMTP id 98e67ed59e1d1-3a0f2bb5768mr2012039a91.30.1790499851560; Sun, 27 Sep 2026 02:04:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 056/101] tcg: Generic expansion of tcg_gen_ctzi_* Date: Sun, 27 Sep 2026 01:59:26 -0700 Message-ID: <20260927090011.10724-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500091595158500 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 | 45 +++++++++--------------------------- 3 files changed, 12 insertions(+), 36 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 94c2a3d1682..ede4743b1ae 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 2436fea04dc..7ee00c9d53e 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -12,6 +12,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 1c0c1566d92..3498be09e70 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -470,6 +470,7 @@ void tcg_gen_ctpop(TCGType type, TCGTemp *dst, TCGTemp = *src) void tcg_gen_ctz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { g_autoptr(TCGTemp) t1 =3D NULL; + int width =3D tcg_type_size(type) * 8; =20 if (tcg_op_supported(INDEX_op_ctz, type, 0)) { tcg_gen_op_ttt(INDEX_op_ctz, type, dst, src1, src2); @@ -479,10 +480,13 @@ void tcg_gen_ctz(TCGType type, TCGTemp *dst, TCGTemp = *src1, TCGTemp *src2) t1 =3D tcg_temp_new_ebb(type); tcg_gen_addi(type, t1, src1, -1); tcg_gen_andc(type, t1, t1, src1); + if (src2->kind =3D=3D TEMP_CONST && src2->val =3D=3D width) { + /* No fixup required. */ + tcg_gen_ctpop(type, dst, t1); + return; + } tcg_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_ebb(type); tcg_gen_neg(type, t1, src1); tcg_gen_and(type, t1, t1, src1); @@ -513,6 +517,11 @@ void tcg_gen_ctz(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) tcg_constant_internal(type, 0), src2, t1); } =20 +void tcg_gen_ctzi(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + tcg_gen_ctz(type, dst, src1, tcg_constant_internal(type, src2)); +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -821,22 +830,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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)) { @@ -1682,22 +1675,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 Sun Oct 25 09:31: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=1790500093; cv=none; d=zohomail.com; s=zohoarc; b=QrdoD5yyYP3mY9aD9qx+nQCnY4G8yJDuY1SDa/jpwoiT/jMgipamc9gDhRfITg/rXThSW4JzYn9jJkoGpgWSvhRKpKllRM94IhIep4X3kb+iZo5yp1MVgY57RAC9nfObCVyVzKdInfV9XA0ab72GD5RVD/idgQjnjfcszFTEMVE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500093; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=n1DzY9pKbQy5un5XM7Bq0Ui2HlgjI9YNsNR6ZIJ7ZdA=; b=VL/RYNRpSNKDVRDnioyvvF4eCUumSu7R76DUwfbx2+ibSFgUa1oHDksMhuV5e/GJkZdwQ8Rsp5UKYCMCKlNCoR+fONxIbKxPlGBLKFxzUZNQwXv3TJuzVBYk6Ji3KRo3OEzU4aSkpHgc7HD04Vv7ugN33w1osKR5GW7EPuy2FpE= 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 1790500093136540.6083782025554; Sun, 27 Sep 2026 02:08:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpA-0007Uq-VO; Sun, 27 Sep 2026 05:05: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 1xAknv-0004gY-Fn for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:15 -0400 Received: from mail-pz2-x2a.google.com ([2607:f8b0:4864:3b::2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAknt-0007eU-Kt for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:15 -0400 Received: by mail-pz2-x2a.google.com with SMTP id d2e1a72fcca58-88286981a36so129726b3a.2 for ; Sun, 27 Sep 2026 02:04:13 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499852; x=1791104652; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=n1DzY9pKbQy5un5XM7Bq0Ui2HlgjI9YNsNR6ZIJ7ZdA=; b=LrpK6KnXM7r/vZesQ9LJ7Ge5jiyY0uhuA7TEr3Zod5M9Ig0OrZM3FQ961G/lylco5A T8pggZmfOfy9/s8yzSi7UD0TeRsptqk2E6KPjlIvpt4KHivgXJyQuwfgl72ZR1GwBcxm jxTwOlLaeqz7Byhf35phuuufC5rHxxZyIkPxm7LKkFJ2Nb8+4G2oBA/8ktktp2vWK6K6 Sn+3lvJGEgWraHzYK2HCgU/zf7m6lzDZv/BS/7pc4GN+vSNR/MIqX89t2V/k5pZugBP9 AFCR2VHT6mxPDKM5CGJ+Hz0qP5wr2kFeJvWP0TCFrUsGHAYuDPApbeq/AHjZe/Uwvcq0 Tx1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499852; x=1791104652; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=n1DzY9pKbQy5un5XM7Bq0Ui2HlgjI9YNsNR6ZIJ7ZdA=; b=u//vZVJ9i31Nryh72ZKl9pqn8ZBkYvvTx1/lXQ9ff1Sbk2ZpbhB1pBRkzNUGeRUTjP CEEAuUKANYC/jvcsooIklwgIUD+ZzkuBHX5E1tQ7cT3JmO+aBr0saDgxNw9v7mGAn5aG e33QLZt4pf/eeRKFYaUiyQyRy6TtAJDw62EpT5ShZOUxxhvwrgPMoaDPT/n4gcubybQD DiXvSD4yM9qxonGsxFwU1oNctUF/ajGOYmrleDR97sozzYD7v+LP0THPDNEQbCYmPJhb EDo+fjwye/sVTq40LhoJCa3MzdKkU0bzqhxdTb73TQbD23itNp8vohiP6CRJCv1rQpau tuOQ== X-Gm-Message-State: AFq9FYKpxJV9tr0APz5/CYT/fS/4061Ilgig0Mfiu2w1oFptyeuqs6kz Nwo4TJDu9wQlwuIL84iSOVrJuYBxtBPvbCNxjfBX30WKurpuN+kw/EOnSIHUV/Uy9lcIfsg5LT3 j00VC X-Gm-Gg: AYBFou0kxEIuEvjYqNgG4ngmmnt8GloTZ3hVsr1n/Q/APfriy5dOnOLJBmTn7ZzrBjB GTGj/9jDGkCvWSng0pltKR7DL5kMIbrvupbqUMU9nodRDNNDWKG0WqIFZEI/xmxWgUomRKwbaGY fpuBTfv405KHI44xhlM4EnwkAEY5Fi7ZvSum1w+5tYCdweBqxt/KYc9TPelWYFS0ZnwKNAl+TIn IMtEHiaqW7eUf79VXyk/2+RA5IEYoEIUaqOfGLReOM6mCF07xV6yy0ftfB4fDk1mrLBQESTGW3Q uvaEB6o9D0XYzu3XWzDPWgjH/TEVCeO7bVbcJyMEDViUp0F4HrVzID+92GN8Enj2vXkCXY2UbOb UbzDgeuTBl5+qG0Jwbh4UVqqFhtuKXRZF9zMJPyUsclufbFIDoFJrMXBoFiuAjPSYDQBP/n0xt/ eADWynhJjXa9Coh7W1z7KDxagCDUpRR5S/dnlwlcOCVeYc/Vwdg05aOad3P4Lz6Ux5ty3i+QsF0 8XEcyesyg+GSP4CvcrtXb18jaIIvw== X-Received: by 2002:a17:90b:1807:b0:3a0:c8be:3227 with SMTP id 98e67ed59e1d1-3a0c8be4232mr5046157a91.13.1790499852216; Sun, 27 Sep 2026 02:04:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 057/101] tcg: Generic expansion of tcg_gen_clrsb_* Date: Sun, 27 Sep 2026 01:59:27 -0700 Message-ID: <20260927090011.10724-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::2a; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790500093638158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 45 ++++++++++++++---------------------- 3 files changed, 18 insertions(+), 30 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index ede4743b1ae..d19feb49cbc 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 7ee00c9d53e..ef0ac5aece3 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -8,6 +8,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 3498be09e70..5ee49e2553d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -422,6 +422,23 @@ void tcg_gen_brcondi(TCGType type, TCGCond cond, TCGTe= mp *src1, tcg_gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); } =20 +void tcg_gen_clrsb(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + int width =3D tcg_type_size(type) * 8; + + tcg_gen_sari(type, tmp, src, width - 1); + tcg_gen_xor(type, tmp, tmp, src); + tcg_gen_clzi(type, tmp, tmp, width); + tcg_gen_addi(type, dst, tmp, -1); + } 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)); + } +} + void tcg_gen_clz(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_clz, type, 0)) { @@ -830,20 +847,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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)) { @@ -1675,20 +1678,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 Sun Oct 25 09:31: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=1790500144; cv=none; d=zohomail.com; s=zohoarc; b=gsF5AqT5nWIOCe7zUBo3EEeNPssr1A8eGz39Bu0TSAIS0/W6tPt2Jk/4YZruntcN1x20gWuqWt79YCssZ1P2kafxIBtFazKToEEcSsvLOlg/WBeszsjmvy1TnumPMyuVNuwojiLRTICFwEBNgb+pWdPb4QaDBmqNaKc0aPGNqvk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500144; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hcssWbsWIs6yiH2SjT/QMRTst+uvnmK6W6l5MrOzAEg=; b=UEJIrm+UkLw+anjibMZRMWAU07zmzjD/TSxZu9m55zC9WHQH21XiZ0iv7KQK8eduayRgtr2EEObHr3HIAUNu0aE78ODyBOfxf2obBSg72Tb/mmVqDq70KVqgqGYpxXRWvzxFshb1UbpyEQ6/zOsaSu3oLfnuiaUr1iGrRlhD0uI= 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 179050014426292.03208961361565; Sun, 27 Sep 2026 02:09:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoM-0005dq-1o; Sun, 27 Sep 2026 05: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 1xAknw-0004hz-PZ for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:18 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAknu-0007eh-Mr for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:16 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0b6200eb0so1602469a91.2 for ; Sun, 27 Sep 2026 02:04:14 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499853; x=1791104653; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hcssWbsWIs6yiH2SjT/QMRTst+uvnmK6W6l5MrOzAEg=; b=ZDhy65XE8gXq1OMC2O9uFRBsrxBaNB8K0pxQb2lfGyoQNbWi38vczZxiqfIcOhDtaO TZJwmqyiupbqIPOabn+a1Qcj4MHRbS8lM1LWs4vJxcRtsIAEnXK+IrcDLtZvkTEyjY6i kyagH4PuCeONgHJXvow0RYXiul8bNfGE8q9PRrbzUUSbWDj8OyPXJjpBu3wApPjf47ar G7OL3GG/UAP8I0vKT4M/s6t5QkWflVT0e1oe3ohqQ6FYNASNuW/TptexSX1IpbtdSlbN gJv/nGWDjOlAMPKpJR1tmfOZs86pLEvjl4TQH3C7d1WZdD2Vko4cq0TxIwuoc3aEirNe iieg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499853; x=1791104653; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hcssWbsWIs6yiH2SjT/QMRTst+uvnmK6W6l5MrOzAEg=; b=a95RAyDSxW2iXCht9u0YbNTCkFp/zjxPP89ni3BqJrfKYUBZyumKuKVHmQmRNK5mkp nBXvKBThAjLAQ1dV9AU50DRjc0aWsEC9ouU2cV6A6jFlkx9tmx1+ELQSqMywI6j88SNu rqu/jp8/CYWjs6EI3LW/AWGTHulZ/tnV9jUV5AUgUdijhs3XwCw4Q10jpuTLto81s5IB 1hPfAjs1CwfXJ790W600ym4E2+qoPRn/nvOZmmo5Q1bMLiANxcvJoNQ9JlJdjyxjoDpb /H7CMZCuxsIZT1LdzzlUjWwk1+tltW5U2h14jYJDFzbDRFWpDp/dbH11H3jX687Il08G 3pSg== X-Gm-Message-State: AFq9FYJZbjqoKyPGHoMAbmMki/CXr2JAiw4Q21RDA3uA//7Wus1yWuMr fEAo/DU1V3NOxcEEsEYlKD/XdYYrUCgeQNRtk5LCUB1V6LPE4CsBQ44YK4lFk2vaX1p8K0BdTLM G0EaA X-Gm-Gg: AYBFou0guJX9CPHDkkB7b5jICfPxHf8fcve2YsI8PlIBwpEOSFspYqjkZois54xs4Nz OV9Hu4DoulC4FMoCzYknehJp9o7FYiNpktWXccIomqJfMsqBql7cKwBTwWAL+b7Lzw+iWkFQ0x7 GHTp3qowLEy2vYj2okugtYkfrtIYD1Z8Vi2ESlCnRkiVjOVkDmyt9S/JhXc+g7Uxn9Q+iBmdsKE g3J5dcavISvGZRj3jcK9RfiIu+kpZRAo96wZHaEyCwfX0bxfh8oDltfJuMQ1sU1n0EqXCW+qTLW f/JGooOdXrFy+o0S9DKr7AfTJfDc++L/jlcqOC5TDm/SppE+YQrvZ/y5BJisPLiTi0JbhobbeFa dSV1hkCYW43T2QxW32F9IU473S1CxlaPNBhbtIBoucoTn2E8mL7uM9KbgNo7KGCR3WUrMg2wmbf yde2U3QX63Vv+O2YT+PnLUk5KzMNqqDVKVoxucu0eha6XRNfqqchGEG0vd0hFq0sUD+FRISDY7Q zAaIvqVs28trQp2mBZHiOpyfcijXfxF2QGt2AqA X-Received: by 2002:a17:90b:5292:b0:39e:6c6a:657e with SMTP id 98e67ed59e1d1-3a0bb6596femr5601333a91.65.1790499853254; Sun, 27 Sep 2026 02:04:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 058/101] tcg: Generic expansion of tcg_gen_rotl_* Date: Sun, 27 Sep 2026 01:59:28 -0700 Message-ID: <20260927090011.10724-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500145796158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 62 ++++++++++++------------------------ 3 files changed, 21 insertions(+), 44 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index d19feb49cbc..1a028da36b5 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 ef0ac5aece3..f832e286aba 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -34,6 +34,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 5ee49e2553d..37ee848f24d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -746,6 +746,26 @@ void tcg_gen_remu(TCGType type, TCGTemp *dst, TCGTemp = *src1, TCGTemp *src2) } } =20 +void tcg_gen_rotl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + tcg_gen_op_ttt(INDEX_op_rotl, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_rotr, type, 0)) { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + + tcg_gen_neg(type, tmp, src2); + tcg_gen_op_ttt(INDEX_op_rotr, type, dst, src1, tmp); + } else { + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(type); + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + + tcg_gen_shl(type, t0, src1, src2); + tcg_gen_neg(type, t1, src2); + tcg_gen_shr(type, t1, src1, t1); + tcg_gen_or(type, dst, t0, t1); + } +} + void tcg_gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -847,27 +867,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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); @@ -1678,27 +1677,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 Sun Oct 25 09:31: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=1790500473; cv=none; d=zohomail.com; s=zohoarc; b=EmVMKUsLdh0Z9kZHtkf6roBuO+ilsRdKweg+TMxZhK1Hg5X03SMBxVjLzXALwC/Aerhm7X+YSxaFohHljeIIuMYaXcf994WgKwQF1JeBbHkBasVDBK9wi6ibTybzpPpFPaV8dBqkPxZpNdH/d8j7wfOzkAKSVWytEXVpYtQLpvA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500473; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OE6R9KvYFUpS6EfuDvjzInV2LyPSAM+caZ3fLcrwHHs=; b=PgjyzOmMc0F+dwuan9gCdWrmy94lTIfTQa0zSZhSL5Kqo56QjfaRF2R2GAYRgShmvH6aQg1G95voo3aEshvRgxrtN4g9KPtQ9G/rAvteCYcCI+/qPSY730b5m1zHeJJlxCTKkArBxg0MyWvKm8lAe7IR2HVbaBWErXVkUWijXNI= 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 1790500473146999.3053996336332; Sun, 27 Sep 2026 02:14:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoN-0005kJ-7s; Sun, 27 Sep 2026 05:04: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 1xAknz-0004lk-GG for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:19 -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 1xAknw-0007f5-VL for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:18 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398cb5615deso1778358a91.3 for ; Sun, 27 Sep 2026 02:04:16 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499856; x=1791104656; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OE6R9KvYFUpS6EfuDvjzInV2LyPSAM+caZ3fLcrwHHs=; b=vrub0Ia2aibzw2BFi0KVLO4UmKT35Kl1RCSEQyxPB4pTE4obO1KBov5UYRpTXY8jKD YsdeofgmNvapjFS/EPnqFDnnAJ3Yuxf1fyHOmxx+10ZZAIkWGLe4+Z4nwWAbeUZ+GJB1 1WewN13d7dqUC3HYnZOMKn10q702BoAmE0MYFKnpPHf1oaMbExiFY250uacZBxWkkXMU IKlICWy2HqD47ZCkz4kzeuoWFALP1LJr7/vH2KNNayxuQMUONRSdD1L9jgEQRNcZxMfI ZK/U9TdwhMtyHsute7gXozmsrZK719p6Z8cQ5YWQ33kFqLl9teUvRVlyZu5mrd1stc8s nxKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499856; x=1791104656; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=OE6R9KvYFUpS6EfuDvjzInV2LyPSAM+caZ3fLcrwHHs=; b=fMTbhhW9gH3GEsYnTtOPnDCDqHgn0/6rFFDXIcQ0qVkpynMqL0QVtUtmVxHK7QZaim nLCdP5SgaP9TfcAi9SQEq1FBe6LfVS1s3rz8eZ/SPiaDs3Fp9lklXhSf0vrImZOwMvxn DCE2EaN2OqgRfa7RFlx2PdwtYJVV8NBfN7UzeuUPKz4CU7bjX3L/ySTRvj92TCEs31Jm Eqp3NabsZXcSR1lQvjjDr9zYjghIap5iACMWhXZRjP+sql/J149RpmnXftgH6odfUgJu J44NLDn1I9kjVBO8U0HBrgUL+xcDtPTzaDzekD4/dlYLSPwQbCVuJVirSKdhZxZzlqA8 i7MA== X-Gm-Message-State: AFq9FYK5+Uni2mQSTXSje7xXL1vqf/j9tOH5jM4EIGjnY+Ux5il/meiY VjSe2frO70xsgGQeQZiG80teEsM4wm5b/1OWcj8t2o79yQc9fxIh41jQdQj8VP6ZYyeRovluH9A h/JWw X-Gm-Gg: AYBFou0dkx8oW+Wakvf5EFQSm9NJus0zDLzQLqMmPFBVos/wvN3V0cSRrFmx+/fdGd/ HGXR2UbIIcwnOpoviIFphTTTJwcblBcJpzULVZGXeuVvK+89loZeftVKlYgPT/3DRvUCDrpAqLW 5Rvu8ATLzY8Tu66gqwwX4ME12Jovmbwnqc7QC1AqfAtw8y6E9i/AtgchYfVN2iCb160hgisTuJs z505C92gRf2hfFl0SwQzmAox54leo8qm28GzzSKdl9UkDa4Bwf3Ph5V/VK3x8To+RfUB2zJS+do SMpwGPpJvmpdYzawbj7Y9Q8T9voKB8ahzHGE9xEo06NDnNowHs4iUsu+WoAR9bslLhpLqlw763x XzCL1ypjreWDQ1Hy8Brbx1PvpdQf8+Roo/tK3Ws+mUlueoRVHXKRr0OdI4Hh0VMlWhyKqGwUbFc bbkghzScATmaMWzfHVMG3j9QfqwmdgXZwo/JKNXVXBGZTDWdGAk31aKnXib4p8Y/E87v25pk0s+ G6AL3ybMb1T6xi1NdQtapcJwJFCRw== X-Received: by 2002:a17:90b:39c7:b0:3a0:d7e4:c4aa with SMTP id 98e67ed59e1d1-3a0d7e4c553mr4205437a91.61.1790499855492; Sun, 27 Sep 2026 02:04:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 059/101] tcg: Generic expansion of tcg_gen_rotr_* Date: Sun, 27 Sep 2026 01:59:29 -0700 Message-ID: <20260927090011.10724-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500474654158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 62 ++++++++++++------------------------ 3 files changed, 21 insertions(+), 44 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1a028da36b5..eb860ff8c9e 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 f832e286aba..84ef1d53782 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -35,6 +35,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 37ee848f24d..6414b3b627c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -766,6 +766,26 @@ void tcg_gen_rotl(TCGType type, TCGTemp *dst, TCGTemp = *src1, TCGTemp *src2) } } =20 +void tcg_gen_rotr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_rotr, type, 0)) { + tcg_gen_op_ttt(INDEX_op_rotr, type, dst, src1, src2); + } else if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + + tcg_gen_neg(type, tmp, src2); + tcg_gen_op_ttt(INDEX_op_rotl, type, dst, src1, tmp); + } else { + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(type); + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + + tcg_gen_shr(type, t0, src1, src2); + tcg_gen_neg(type, t1, src2); + tcg_gen_shl(type, t1, src1, t1); + tcg_gen_or(type, dst, t0, t1); + } +} + void tcg_gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -879,27 +899,6 @@ void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, in= t32_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); @@ -1689,27 +1688,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 Sun Oct 25 09:31: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=1790500113; cv=none; d=zohomail.com; s=zohoarc; b=QY+eyfZRu81qiNFh5rpS3WeUwobJ3uzAV6eh0NSAwRadzV84trVJufCxihf1ooGx8IgY8zgSNPpFq2YuPy2wk1bIwZVxTqioZmdTesPlDMA/u9a0FT8Fqhmt7zfsEBxedfATale2aHIZ4WLFOkqB5EA6zNSIx2W1yzVNF4GuPDw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500113; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=y35PbqnC6Y+DIb6RSkkKfD7qwrSzmucLhLN0a912meI=; b=aM0qCBLkPUfLAUrZThmOLqHR6hDgLckLni91SP09yDVo/sclgACAC/E22NBs2dmze6fBlxii9JV2+wm9D0pnTSx6p7CMQFyqo9YOmiVzS/idELZgi9j0OmVeZAmOwei4rbd9bDw2Xf5h0uw0uUL3uILyvNqnEcLUbgMGrUH4bhA= 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 1790500113309995.5542969664988; Sun, 27 Sep 2026 02:08:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpT-0008Ae-N1; Sun, 27 Sep 2026 05: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 1xAknz-0004mm-Q7 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:20 -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 1xAknx-0007fE-Pt for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:19 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398cb5615deso1778363a91.3 for ; Sun, 27 Sep 2026 02:04:17 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499856; x=1791104656; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=y35PbqnC6Y+DIb6RSkkKfD7qwrSzmucLhLN0a912meI=; b=U8fxH7c8upe0qx7jwuhHAQqpab3Gu45MwuJZEN+8BQpilT2TWR6/DAXIetu/f+dJt1 9IRgNCmteCACj2WNdbLG8x2G+/1SSad1TAimCMS8oiqAu9YO9hqxiUMp+dmQ7MP6Okw3 g5YM0lr+lkymyDodDGGDH4UfQqbj17Ry3jxv4OdoHyMh7/CttTETaJpNwVMX5nRHcKxK CVzn4jyGPjQxa4FPvhEwmp0mmlf6Y7q806+xTM0A2i3hEpo+QAUJnT9YH0AcLp1BEDmB tcuCAulhXn/WNU9g+KGRGruaRXJiL3sMQWglugErZ+p+QBPYGXIGwPxIvvvPVDkQeNBk PXOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499856; x=1791104656; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=y35PbqnC6Y+DIb6RSkkKfD7qwrSzmucLhLN0a912meI=; b=N59do65LU8fzIPtGRV9YdhxHkQQxajPelVDp+QuEv+bkBTyaD5sq8jvFRhtlmYdUu7 Tb4Pf+Lszpf8VFLEl+kpxbkxKeU0F15fFyfh4u5URg3S66tJ2dozIeji1Yta28GHqFZc S4YNnSYCPHjcoyCXfLL5tYdYFCaHpIWuY9UgR1kkYyASFsS02erRQySkMw0BnDOHMLCg 13qbzzxgYYl92EQAdLK972A1YQ7tgUQQmde2Gdmf7/Re/Zb/MMWOisBvtznzGR0DRxUP ZV9e57XQ5Xcc0b/ZQTEA1knJpLqLGx43tCxZaU8nW+SM9yYYJBH+5qjZQhWgVhNHlnjV 5EeQ== X-Gm-Message-State: AFq9FYIGpnUs2dJFgiBNaU0F9RQigF/gsdIXt/dTkjd1FmE/A0TwZT3Q oKt9Pl4LmJszT89jfviBSZ50dYYl1+LEL6up5mdSxmRJPEDPkLzyuwnu4and+NBlasikv3KbsEY Mw2Q1 X-Gm-Gg: AYBFou2AQiSMECbnC9PC88p6OXcdeXj13CeS58s9yRCAKYJQ7GXTAgIOblw2BkRYyVj GS7WtbSwgWySm3tlTyPhAI4xbDXGcxV7CZUVQXk9hi6VCQVnBTtzYN3c61BmrD3zG24zcJKCAl3 /YyDN+Fj7zkUvfRVEkBuqYnBd8VTf7A1ddFUpC8wigyjTBlCjlTM3fOaw5ClZPgmZR3+l2XOfn3 fuO1zOu33drSnLS3feYPsF5l12+sjycM++pB9dLBWm4UO/IeiPe9NDN2n4QVVHscLcxf3oJ3DZK vOA6vAJKH1hKJw/BSkyg3fR99nUMchKsaE0En0YUuR858OH9aiDngtTlG7eG33mqNHhLEQrIGHd IbES77o89MD8b+3BrMytune9EnGI9Hr9RY8KlpENYT5Z2/leu8+27hHfdjmxB/MQRedAJBUcbNH 4qTTysfyhUOT/1F8zJypBt/UUxMrUBeDMua+PzXfatSlNjkqj/n3FgWW8qCG7MUCDHwh2w8P5BI QKpCVxPjUZcAqTFTxYTKL6E4oPj+Q== X-Received: by 2002:a17:90b:164c:b0:39e:6d82:dca with SMTP id 98e67ed59e1d1-3a098df465emr8789650a91.30.1790499856388; Sun, 27 Sep 2026 02:04:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 060/101] tcg: Generic expansion of tcg_gen_rotri_* Date: Sun, 27 Sep 2026 01:59:30 -0700 Message-ID: <20260927090011.10724-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500113748158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 eb860ff8c9e..b27d6c7975a 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 84ef1d53782..88a8001601d 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -36,6 +36,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 6414b3b627c..4c51428f935 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -786,6 +786,25 @@ void tcg_gen_rotr(TCGType type, TCGTemp *dst, TCGTemp = *src1, TCGTemp *src2) } } =20 +void tcg_gen_rotri(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + int width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(src2 >=3D 0 && src2 < width); + if (src2 =3D=3D 0) { + tcg_gen_mov(type, dst, src1); + } else if (tcg_op_supported(INDEX_op_rotr, type, 0)) { + tcg_gen_op_ttt(INDEX_op_rotr, type, dst, src1, + tcg_constant_internal(type, src2)); + } else if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + tcg_gen_op_ttt(INDEX_op_rotl, type, dst, src1, + tcg_constant_internal(type, width - src2)); + } else { + /* Do not recurse with the rotri simplification. */ + tcg_gen_op_ttti(INDEX_op_extract2, type, dst, src1, src1, src2); + } +} + void tcg_gen_sar(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sar, type, dst, src1, src2); @@ -899,21 +918,6 @@ void tcg_gen_rotli_i32(TCGv_i32 ret, TCGv_i32 arg1, in= t32_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) { @@ -1688,21 +1692,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 Sun Oct 25 09:31: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=1790499898; cv=none; d=zohomail.com; s=zohoarc; b=HDtOAffqwUyFVbuvI3+nFzb2GPyaN83P3BZ/8tppyzKJV0v3CNZZIscUkjjZCrwqV0cZgHPy6rlr/Rr712Tdx2ZL5Nc2G8S7iLckyeZsF2Gfz8Szhu7xW5v46pC9yAs7zE8rkmwQOipG196/NqltDU11K7GykwqwruT7L6GAPfs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499898; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/kG7KGHZ8vpvulHnGfTtdd9Grzai//q09XPrURF4x0E=; b=FK+zZu009+xktVve51pmngXSRlmCsMVVUKpWPjLys5Kce3KoJR+0NNowOnyYM8xV/Dksh5Tn8QwOpV2Is0Bg1j1mRLnZCV2m/tg+2SQQ9ZebqoxeUQt3py/YOOzn0rkL9OOgxmb/iZSnGj0bBxMCzR7YonCeqZjzXfbHnfkOKI0= 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 1790499898245465.0267744931417; Sun, 27 Sep 2026 02:04:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoX-00061X-UC; Sun, 27 Sep 2026 05:04: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 1xAko1-0004of-5u for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:21 -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 1xAknz-0007fL-8Y for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:20 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccb65437so1200275a91.3 for ; Sun, 27 Sep 2026 02:04:18 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499858; x=1791104658; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/kG7KGHZ8vpvulHnGfTtdd9Grzai//q09XPrURF4x0E=; b=VZzXtPSikstVCY6g/CwP0W9GP1tygAfIRzGr5xQq5seFZaeNMjVeTEUiJTKwgW5kxH 5A0DtGxDUC6xDhct1R7pvE3NakwO3+eVoZ2iSVEfeWsS5OgSoVv4YiEKH6lhWG3GHFv6 PrAflfXNKBXo0eOF2GIrXmj8ebpIBHAG5X7VUz2Wwklan5eK+78VZZMGAyJXFWFQhYhU RBa1QqvNN5kN9QympKYcij+In6FDU1yrxiTNta0306s/61cO68aRvWq3pZ5PwYzjfpy3 d/ApAtsHK0UA0ELQ/F2AR1cPzmCbWlI/oRiT2TdvF63wvNozEv248ZEndzT/tS7xyAZe eu4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499858; x=1791104658; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=/kG7KGHZ8vpvulHnGfTtdd9Grzai//q09XPrURF4x0E=; b=woGWPiNTBfzpETdUjBeDGgNXXd9kI8RQCMVylWpY0VBHeh3FtyzWIEsnz44B6iXPQf 0FfRcYurEQL7hSz6hlb8BoWom+RAS4UiUlwI8YRpvLzrTDx5LZ2hbgcMWcVu2QcD5I2d C17cavGF/gQCEhXvOIhqTN3wHSHDqw1m00jrK3aTUx1KUZmwhsrR4lPdmzRWc1wZuoh3 7dZEJbYXS4qgCJ2RwMFkO9i9ZHEL/UUPKRWLxRYc7OxDFlsEoQSdM4ovvToxTzlT2qK7 2U51raifsmMr1QP8L0JoK2mGG9RDsPHVseRALQgyDt9SmfxebLuYGQxismTwv/dTmAhL qWvA== X-Gm-Message-State: AFq9FYJZQ00/eFx8WzjdnPpeLK0h5KM6cwinpPnF00o+nX906AUEqPaA BKltgHkY79PBxBrfMcYJD1+kq9XFnLKpj3db5ADGahjkrVL8nRCXXP8u76XA9F2tjk4hfvJBnVa WGaxZ X-Gm-Gg: AYBFou1ynCHm+/EEg5xOnRiExzn0BcRobxLiwJW16JZkIONhI7C0x3mrINZmCVCalG6 H9tN6HI0Oo9fff4zGkIKXz5L1jtUTa1O0GCIRNbJs6B3Q9mEWnP5c4zqy2m2iKFi6vSsTF7JF0v gMh6R+BYSpXlFL+wxm7hmeJTqkBAFYqak3dYvmputX41wFztQ8Cb31uPxam4L1tcP55z1mZF8te XZ3OvX6mhWYpEktkuIzDHLzE+v3hmofSmafw32ECyBiuTEeC0R/7zIlFBLZxYolHihacSTkhUUn 6xRWBRWPI0hIE3erHdR7WyZD49J5WWWm8/9vaJspU6xkXmXK3jgwqI5g/UrMYi+d98ULp3Mv2Hx 7z7sGN09LM090JanYoC6m90Lwsq61xKFuNEX7GHKcjzL8fx4k2WKLDq46aicEFmF25H3VLYuYXg q7vK8akkSZh8mjE9oAUz4UGdahoTwdPWqmepfArZLupuwerUBcBkbJgZX6aaDXQOBUqKcr6JtMg moWlOz6DYfseNIhlTvvO9Ve7R49TQ== X-Received: by 2002:a17:90a:1689:b0:3a0:b809:b9ed with SMTP id 98e67ed59e1d1-3a0b809bb33mr3403573a91.8.1790499857762; Sun, 27 Sep 2026 02:04:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 061/101] tcg: Generic expansion of tcg_gen_rotli_* Date: Sun, 27 Sep 2026 01:59:31 -0700 Message-ID: <20260927090011.10724-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499898901158500 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 b27d6c7975a..3eed9e6c2ed 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 88a8001601d..9b88373ff23 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -35,6 +35,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 4c51428f935..dc6079a9e45 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -766,6 +766,21 @@ void tcg_gen_rotl(TCGType type, TCGTemp *dst, TCGTemp = *src1, TCGTemp *src2) } } =20 +void tcg_gen_rotli(TCGType type, TCGTemp *dst, TCGTemp *src1, int64_t src2) +{ + int width =3D tcg_type_size(type) * 8; + + tcg_debug_assert(src2 >=3D 0 && src2 < width); + if (src2 =3D=3D 0) { + tcg_gen_mov(type, dst, src1); + } else if (tcg_op_supported(INDEX_op_rotl, type, 0)) { + tcg_gen_op_ttt(INDEX_op_rotl, type, dst, src1, + tcg_constant_internal(type, src2)); + } else { + tcg_gen_rotri(type, dst, src1, width - src2); + } +} + void tcg_gen_rotr(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_rotr, type, 0)) { @@ -906,18 +921,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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) { @@ -1680,18 +1683,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 Sun Oct 25 09:31: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=1790500339; cv=none; d=zohomail.com; s=zohoarc; b=IZXDGxkpExZ0lyincvkXmzigL811QxZN5aJ9fkClNvnsySY4bEXK/phWYXm74b3d9C1Vx5uaL1rppfmCOXuqjcb2QBR/Ch/aNnZgbgdvnWMxnZgrJ21U8jFmjZ5tr64Gh+Vby02MYmZZ/PYIpjtxmqLxQIPtWiyNtFpNYXRoYeE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500339; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ize1mUlRPveWGTOE9mSnk4f2htHfkqtn1cDj0e3BVzo=; b=F2qQshmGSQSqcxDdn/AhGZuDPghIumTfS7g35qJ+EG31wKXFYevEQ6Hnbvjh/4Tx1ODSx/Yz5yceI+0VXkuTxXkV915l9aoVPImnGqrN1q4ivo9ZpFnJ+7nmeWJDucjoMSJhuL7j1mqAs7mKh6vETS2XMNkzEEZcC0s7ZyEAVf8= 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 1790500339829395.01415499929465; Sun, 27 Sep 2026 02:12:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkoa-0006AU-IA; Sun, 27 Sep 2026 05:04: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 1xAko4-000512-6n for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:26 -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 1xAko1-0007fb-Lc for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:23 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc797656e36so457639a12.3 for ; Sun, 27 Sep 2026 02:04:21 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499860; x=1791104660; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Ize1mUlRPveWGTOE9mSnk4f2htHfkqtn1cDj0e3BVzo=; b=SSpQADfCadKsXQM0SQZGyCmpGP5vqR1lqbftHjYt5+KzG+CaakplshJz3aGAciNF4H i1/Un84t32eRKg8vkk9Sr/1YfoXpKGVMVI9j5S1JoawRvMlTviUK3xmF1BvhfNmJkAsx s1a8UMHMMS+mw1bVL6ubVPp+M4DmGGuswR8JkHbB6WOBYMsO+LuXUr7pfvz2wMzS3Qla sNWdgzZS5l3+h7oJkfKkGHkmwnwuDcdwn/xybNCixk2heJvI3PorGROUmdxyX8CL6Cb3 Qj2SpPAhlAFsYZe1RrcCtm6oavV/FDDfZTF1U92WLjSsWNyRcYgUr3d2v8zfESfGRdIt OgVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499860; x=1791104660; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Ize1mUlRPveWGTOE9mSnk4f2htHfkqtn1cDj0e3BVzo=; b=Dp17Za//E3UxM6SGz12pt2ZB4EcX455Vx0WBRK3/zmtSsx/F/6JTTaXO3h6uFZMLsR /PooRRoNOxgKXDX2a8KnkhENNFaORgJhtjT4hRZ0J5VrtJ1KPzrfXSi8MKVkgZmxugKt Xt72Q5VQaqt0yPK1S0qU8kRvsqsqAbVnCFd4cT93yFiMSGYtTI+r8i1Zr0mtOHTV0WyP WUy8kCSp2aDk0Sf+oLlPmbCuI+R6UmqPZlywY5nwqrd6q7WuMA60ZV6y+7hpnjsgrvZ1 wFitSZbwqKz86FhizzSbYdP+pTHFJWjv5RZkCS+QrJPrKP9erve456EOIg94y0+f6TsB q5Ew== X-Gm-Message-State: AFq9FYLKQZpFKNXOcYKiKXQZ5qzoY0mPOaEr8vcRhhuWgT+WiyE4rywJ q8iRFvqbzTqtomHJaRhmBa4t7zsBZdDBU0GVq4Q0MxttPDoGvJucC+PCyrQxndEQVwBEfQ/Rm0z KVErp X-Gm-Gg: AYBFou1KnpxxBX73iDy9tn/KbhalIHO1DPR0pQpsb7/FZUfsEZlPfokJO2pk32V51Fo JZ2388z8QjHtTFnWvy8GI1VsPBzqwzQqS1ePp5vbvGdMV4Babzyz9PWeMsAyVuEjHkbAgCZ4/n1 wT7yKiXXPMrX/hsk/Kieoouk52VaE3PTH4k7F4fxsV8U+Nlyyi0gs8pLquPMKQUTXfNZIjzI6Su h4qEZP3OCOGKsjUWprj3vtsX/NeuLWzhGlNwIZW/AsN7GUFdKp/RXCIxU3LXM348UXrxpOhYQbs npZoqffIAaleX8ATe+aeQhQ26gZQil7e+x9N1CxV7hqFZWxbfEn3p6etRsSS+ZM9JitjEWgUX5s 3MLU4O9XOmY3ql8jO2Kp89eEUZgAebRyiQJnkGcgJTGP4qrazNzZ+W4rbgNDDEldVWlhr7xLPXT CmmFocBF5FtuB79mHPMlKItI9ys2CQvcw7QsQqGcZjEfAKRc0xpcaAqDqmB88+1C2z/XKeXF/Ts RCqk4P+E4cqSMVtiw/t1Pxi7qL5oQ== X-Received: by 2002:a17:90b:4cc2:b0:3a0:e22b:1b2a with SMTP id 98e67ed59e1d1-3a0e22b1d7fmr2201739a91.32.1790499860082; Sun, 27 Sep 2026 02:04:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 062/101] tcg: Generic expansion of tcg_gen_deposit_* Date: Sun, 27 Sep 2026 01:59:32 -0700 Message-ID: <20260927090011.10724-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500340033158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 7 ++--- tcg/tcg-internal.h | 10 +++++++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 55 ++++++++++++++++-------------------- 4 files changed, 39 insertions(+), 34 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 3eed9e6c2ed..e3d6c9bfd8c 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index a0edf112927..13c4be5a5c7 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -126,6 +126,13 @@ static inline void tcg_gen_op_ttti(TCGOpcode opc, TCGT= ype type, TCGTemp *t0, tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), a3); } =20 +static inline void tcg_gen_op_tttii(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, + TCGArg a3, TCGArg a4) +{ + tcg_gen_op5(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), a3, a= 4); +} + static inline void tcg_gen_op_ttttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGTemp *t3, TCGTemp *t4) @@ -166,6 +173,8 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3); #define DEF4(NAME, T1, T2, T3, T4) \ QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4); +#define DEF5(NAME, T1, T2, T3, T4, T5) \ + QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4, T5); #define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4, T5,= T6); =20 @@ -181,6 +190,7 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); #undef DEF2 #undef DEF3 #undef DEF4 +#undef DEF5 #undef DEF6 =20 static inline void tcg_gen_extrh(TCGTemp *dst, TCGTemp *src) diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 9b88373ff23..95885d28d83 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -14,6 +14,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 dc6079a9e45..f5771240803 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -296,6 +296,11 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) { tcg_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) \ + { tcg_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= ) \ { tcg_gen_##NAME(TYPE, glue(C_,T1)(a), glue(C_,T2)(b), glue(C_,T3)(c),= \ @@ -307,6 +312,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 @@ -336,11 +342,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 /* @@ -539,6 +547,23 @@ void tcg_gen_ctzi(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) tcg_gen_ctz(type, dst, src1, tcg_constant_internal(type, src2)); } =20 +void tcg_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) { + tcg_gen_mov(type, dst, src2); + } else { + tcg_gen_op_tttii(INDEX_op_deposit, type, dst, src1, src2, ofs, len= ); + } +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -921,21 +946,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTemp = *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) { @@ -1683,21 +1693,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 Sun Oct 25 09:31: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=1790500161; cv=none; d=zohomail.com; s=zohoarc; b=GfNwjzVQx+YljJP7zsvZRk+rAGiCjrsc3GrqaUxloVTjGXGusmFBRvPUcawa/8HSX1KpR8nxZJKH+3yo2BQvSBvrBGcsdlxLPgVLvv0r2fh2radlTtToy8D92hU9d6K51ErqLVzWwAb9n4tsDSNgPGzvnvy54R1Z8PPkjhNIZLE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500161; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OscULSjy8wssqzSVr96JdhVkFKqur+1rSjrLAytjFYQ=; b=ARvE5E0ynZaJlzk3RgYo79ruvjbmxeHfxrmLsLU0B2DC4EuZ9K05LgsHGklK+kd/TWAwLpT+osSqPDbx/ToojtvnOlKl2xCBjKfpm403PLUPt6+7S+97yUMPA0VPoC50gjulWhqyL4PcVDvjjkD5ExAgVTjp1PHvA2MYVvprc90= 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 1790500161501111.48652126169816; Sun, 27 Sep 2026 02:09:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksP-0007i7-K1; Sun, 27 Sep 2026 05: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 1xAko5-00052n-3u for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:27 -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 1xAko2-0007fl-Dw for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:24 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-396ccafb751so1006349a91.2 for ; Sun, 27 Sep 2026 02:04:21 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499861; x=1791104661; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OscULSjy8wssqzSVr96JdhVkFKqur+1rSjrLAytjFYQ=; b=gW8kXC6miZwT90GUMydYpy/b97bGwuZDAiOTVUGBXvI6b1pwUadw8FxwsukUAkgRHc vgLMCpLkNsxkhY/FBOVkU6LbxYJdCcqdie+53CQ6KJ2GOmI/9DE4W4y6xuEQpnWj2LVT 9ETkYT6dBKmnl5P90Hk9Mo/38Qi3KaB9QA4TSMHkogFv1bEKWxArm7/KJZ4RwfEYvH3h bLEsBIehd2IjPUGz/C4YxRqNUuBHpJlomFZDuqf1VlzkeiKJb3ocGbsxWXam1MkablZI xk0kZg1XO44BuayzGw6DSxe6Umtq8dgNzgDWR5tl2UbX8xE6QQ0JTCZWYcmhHVCTg2R1 OshA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499861; x=1791104661; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=OscULSjy8wssqzSVr96JdhVkFKqur+1rSjrLAytjFYQ=; b=WMSwdvjg4fkDoHY+k5LkL0wIDmolXN3cbq/m8BCHlMDtEzGeNm4U4Co6G1UAqLEF3d LY4/bvsBWq3JzSCIj6gXOtwT7spd54OUTl43k7uiB+itNW1gopB8pnDGLQlsCCuWoUx4 jmgLBesHrZKgcj98hEiye5MEx7Oc5AHTL9OHtlf70nwwLjWDRqWrGGGQ+td4aIPLt4cu 5qT5MCY+MnUDUaId0aERjQHiGnIqfBkgUJEW/seFNsso3WYKVl0IBRO4nUT6VH5V0Unj qz1K1LgLRjmhejtdc/LLQ/gfiPxAV298/uVGgQf02Z84Hej88I/d4WITeMT9OGhF5OhT rcOA== X-Gm-Message-State: AFq9FYLZfWQox3dCvLKO3FD9Q/vGfErcb0zxHd9lCjJIo93UKqnRebv3 qtYR5XbL1Gh8FKQe+OnjykqbLhqX41VW4Kn3XzgeAlhiwz5f1kFgpgYUwUUTguJ5cwf97nFTnFL Ai9T+ X-Gm-Gg: AYBFou2v2zOZJKITNXQD0C6aJpvdZ/5Q74j6gMfyhd/Ec4i8tzzsNdH6Vb2Wiob6A4q /S32uTjy1/cae5NoeZuW7fnTCOttgD25T1bjPnyBI7PgRUhDkifwBB60rHLKxxWxQ2cK0a3QMak KsF7WmgIaWvNqO8v+lsLDH1548bPP9kQt+8pwM4z0z6r6WV47LrM0rw0+4Z1lsee/MwXONAmhmn U/5gW5WGIpBqHgks6PkEFCSbmOm2QYFx1JD9xdNwhj6CcP0KXn2S3rNRqfzXOrsBXglbyzrSKmD xwSCuNyv6jijUSKcZ2mP+UmhIeGlO7QCXB3/x9ZXs1PD2T6bRs0iA+gk5NTkfKiRfAKw1QgIt7B xveSuPtly9qCf/zeZo9Es/oKYlep/MNFsF/p5CT3EPwXMQkfk3iQHkgA657AEzT8G/0SIsv+WAW n0ld1ipPrI/xQW8LQSpgO6hDqfYfq8UKjLoEGMvdHLJM1t5Cn7RUNyN2nfVJ5HRkp9hI9OMI0O6 1/abRbDMwcGCpUt0uoihTeSUG10ZnuBwxtr2v+n X-Received: by 2002:a17:90a:4c85:b0:3a0:aa65:2bb6 with SMTP id 98e67ed59e1d1-3a0aa65315bmr4409079a91.29.1790499860936; Sun, 27 Sep 2026 02:04:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 063/101] tcg: Generic expansion of tcg_gen_extract_* Date: Sun, 27 Sep 2026 01:59:33 -0700 Message-ID: <20260927090011.10724-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500163445158500 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 e3d6c9bfd8c..ec4cf775b38 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 95885d28d83..69f76f1d232 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -18,6 +18,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 f5771240803..a7d815b9e16 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -608,6 +608,51 @@ void tcg_gen_eqv(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) } } =20 +void tcg_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) { + tcg_gen_shri(type, dst, src, ofs); + return; + } + + if (TCG_TARGET_extract_valid(type, ofs, len)) { + tcg_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)) { + tcg_gen_op_ttii(INDEX_op_extract, type, dst, src, 0, ofs + len); + tcg_gen_shri(type, dst, dst, ofs); + return; + } + if (TCG_TARGET_extract_valid(type, 0, len)) { + tcg_gen_shri(type, dst, src, ofs); + tcg_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)) { + tcg_gen_shri(type, dst, src, ofs); + /* Do not recurse with gen_andi. */ + tcg_gen_and(type, dst, dst, tcg_constant_internal(type, mask)); + } else { + tcg_gen_shli(type, dst, src, width - len - ofs); + tcg_gen_shri(type, dst, dst, width - len); + } +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -964,49 +1009,6 @@ void tcg_gen_deposit_z_i32(TCGv_i32 ret, TCGv_i32 arg, } } =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) { @@ -1711,49 +1713,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 Sun Oct 25 09:31: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=1790500107; cv=none; d=zohomail.com; s=zohoarc; b=jRnUhIc8XhkWNFIUbcBOQ/x9r1+qj9b60pyNEXbY6onxf27LkNV3w/BiM7xg4h+EFiLdOjh0g0rWb9K+n5Dzjf3akmdqykNpX7EZ+MSAz3EyCbYqP+pCi586RbRChZDOEfgvpb5ER5zhumQFwVuoszwTImnTTnoGJMW1G4ghpRg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500107; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UQ/JoYuf2jf+GFX53wrIVtRYog2opFC5Hus4CPvsRIs=; b=Dj3FU2rOz2U0B5GTQ0BGPuGFA9j6vg5HhzbFT2S1k9YlGMVEgb/ladh52O3hmI+WUSwBH/QnwQEZGlYcQsVkFLdGI0A+2d/tlX5W5wLjS4LZEF5U2n6eyOoxXGklYcZWGCITMI1fgVHrjzPj6f84p2T+Uu2Z2/hSi9+0X6IBKN8= 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 1790500107839241.83471881583284; Sun, 27 Sep 2026 02:08:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpJ-0007oa-0t; Sun, 27 Sep 2026 05:05: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 1xAkoA-0005Bg-Nl for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:31 -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 1xAko3-0007fu-7c for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:25 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39dacf053eeso1067848a91.2 for ; Sun, 27 Sep 2026 02:04:22 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499862; x=1791104662; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UQ/JoYuf2jf+GFX53wrIVtRYog2opFC5Hus4CPvsRIs=; b=T9hyCQ1xo43bv71VMb2aPVIo7ku5EyQul5j8AIFqIPovPvBiiLUbJqYUrsXp5oyoKO ZlWaOalISJUeaRLIwlbkYWJ6eJYFFAtjs90yiirTl10QrPezaeU83ao/AbAe1j18Q2q9 j/w4L0L+GLxQ+/09DKxrQ891kg8mRwLlnzeml8ur3WWIqwKL/lglapO7d6Q9vqj4CaCr t6XFBcgK+uDH3s3EmBZr1JNNNKeWT0B5tEfqcb7vaatmPpJ0nh8UyIr5qcdIoAQGw/kY 6/et3YI6b/DE2a3SYECJrtZZKtEjIkbzLwy0BvMfYQ0SUzVwHB25CYS7h14Z3ZLrNFhI AVzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499862; x=1791104662; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=UQ/JoYuf2jf+GFX53wrIVtRYog2opFC5Hus4CPvsRIs=; b=JHRFle4ZtMdXSgUvTowuJ4DZYRTe7gahbOpSiT2tz3wjk+j/cvLq+zTwEg0F+xNpPa n/VMdUHsMsgcWy9tWhVA1fJImROhrteEP/pP5ga43dzptEwHMhnTvBULL+B30ojMB17A JVSWH7pruxWZtBsvbRWpbYzwdXCmTtfHr2mXog8c/hNv27PIpW93pRN39lzPPbOHXxl2 06rnudwjFQEbZdEkc2n/Jo/CjgZn3Rt+wr1tmKtt4iT6yZwxMpsi3WpFD7OTprJQV0zk DQNGU7jfjwadtmi3aImEWM8iIyrANvdaFlt/lI8oI3PVqncNAOmYVgnzaMIrhJF5I0FC XuUw== X-Gm-Message-State: AFq9FYKzPFkLhrEXnFhcq/ryzpz0EZBxkaHFD7OfwgL/zcKSYqjSxxXB qX858uVXBIKffzYY/uQBS7/SrH3PO9ldZDprh6eXFZA3jFjp5lS/z+/iyR6IDELxoYXHkiUNVo8 t5Xfk X-Gm-Gg: AYBFou1uf9fLunD6i3mfBQxf+Vdp3uJ2K2N5FX6XHOBLuBOeKazOXGTAgxMlcQU+++1 t03GhYrPHfvZ6CdWyETAenoTAwAY4cnYZzlUcGqYnIkdP3JMJPZM8iaPpcApl3gjYOXA6+zskIY MIrC87NlMl3hBRBIq7UAeYrqNBVuR5auDAQwTOESlCC9QGDyn+sJkDChJLHi12ntnfKrHc01lfs R7D+ZPYetZs91GbbTMgKdcSZ0HdBC7enUpZDByER52zPmx7GA9G9lMuwqcfcgxLy4WJomJxuBsz 8AYfmVGT07/RSyUNGfRKm5d+ekFhzF+PRdIuebFcjBM5rmq6Ce8us7R3i+X87IMegH4W+ervAFU xvavly5VqrjNkxqLpn1ZS4/iUEF78CnL0oMtKi7NX/8n6DnocVa/pqMgvqioLDD9InG+30Xb378 +goRQsoVUEqU8Vu3PTDUiQmy0xHSGZ67+SyPQ2NWrvXBkH7Nsa6timcd6TWCNdjIHKaac4lDqAz 3yDWX1lXj+McNXLTxlK+N1DIdZQkA== X-Received: by 2002:a17:90a:ec8e:b0:3a0:345a:3620 with SMTP id 98e67ed59e1d1-3a098df852amr7936062a91.45.1790499861725; Sun, 27 Sep 2026 02:04:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 064/101] tcg: Generic expansion of tcg_gen_sextract_* Date: Sun, 27 Sep 2026 01:59:34 -0700 Message-ID: <20260927090011.10724-65-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500109756158500 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 ec4cf775b38..ef47b704bc9 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 69f76f1d232..338ecce6fce 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -44,6 +44,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 a7d815b9e16..8fbf07d045e 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -197,20 +197,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) { @@ -923,6 +909,43 @@ void tcg_gen_setcondi(TCGType type, TCGCond cond, TCGT= emp *dst, tcg_gen_setcond(type, cond, dst, src1, tcg_constant_internal(type, src= 2)); } =20 +void tcg_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) { + tcg_gen_sari(type, dst, src, width - len); + return; + } + + if (TCG_TARGET_sextract_valid(type, ofs, len)) { + tcg_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)) { + tcg_gen_op_ttii(INDEX_op_sextract, type, dst, src, 0, ofs + len); + tcg_gen_sari(type, dst, dst, ofs); + return; + } + if (TCG_TARGET_sextract_valid(type, 0, len)) { + tcg_gen_shri(type, dst, src, ofs); + tcg_gen_op_ttii(INDEX_op_sextract, type, dst, dst, 0, len); + return; + } + + tcg_gen_shli(type, dst, src, width - len - ofs); + tcg_gen_sari(type, dst, dst, width - len); +} + void tcg_gen_shl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_shl, type, dst, src1, src2); @@ -1009,41 +1032,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. @@ -1713,41 +1701,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 Sun Oct 25 09:31: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=1790500145; cv=none; d=zohomail.com; s=zohoarc; b=iY7BOlbBETPmnkBeMOe6aCZqDjWuw04uy98AM6jvcvw7WSkFJCtaik2UtkA6FW2wHQJ27vlvDLrTmABtIrJIUiCK5PZ1+8MBu2DTWswn93YecBn2mlQ1NUXuTw2tuJQbTG9BFlHgCMJCRD4LjN3jSaJzaehpD/V/3vWooBIGqDI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500145; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PEW1fBHbl6Kzb2BexrggggMaWEl2U+jNwnahw5LdGpo=; b=Rs9FNFXLq8jOaOgMLTd4kXWM9uv+tv3GyBWaE2OX18miiCRG3BlzH74Q+p00E8bU1aSOw5EwBb7AYN8MowwVukyEo8Tomgvyw+heDYCWqJL73ZZlddxbc03fD4StahlpZ1gmOXArbLoyepwYYdy5rjqwrj+1lClbHFmbOs8QJPs= 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 1790500145639509.2243141933533; Sun, 27 Sep 2026 02:09:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkod-0006HJ-A7; Sun, 27 Sep 2026 05:04: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 1xAkoA-0005Be-LL for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:31 -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 1xAko4-0007g4-37 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:26 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc4aa0f1766so1170595a12.0 for ; Sun, 27 Sep 2026 02:04:23 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499863; x=1791104663; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=PEW1fBHbl6Kzb2BexrggggMaWEl2U+jNwnahw5LdGpo=; b=faqDXxWlDBHPaePl5p3Vzt3WqU/C8GPOXfZOeF73gCdUj0UTNULSznfxAF5zACbox9 CUqlOz4SvRidqfpR5/IbI/bbspDwn3hho8LKjqdGfcx+2cyB6dXDxxRS+a0P6f7/YNSr 0mr49qbBtnrX1FIfjKbQk7N0VXYdDJh2QkMdmtOMPJ4vUp/aguDsCSXhWw01sXdA2Mdj 4N4pKxVIZEmoglM3SHpa3567SV1Y/4ViJ4JEDy6WMNtLtZKlJYzx/GcV9F3bK3qTAJM4 jz7tEqXUUt5D5GVRdgPtGoQIIEmSkYAgVIV5hsJjXpPYvqb7lamTyVmfStwqKgRM3Zih Skcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499863; x=1791104663; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=PEW1fBHbl6Kzb2BexrggggMaWEl2U+jNwnahw5LdGpo=; b=LONH7+4b5nqDi5fKvcoPixBscY2u46LmDEqZOLF5fnC5lc5w4YI6DOriQxfzsz9ULu DLgjSYW2xqlgcRwCVT/t8UaR/59hFIZUYE0iDZlwu8Oc09UhrWlZAZXIxvciQ7y5WGAB Hu9ZuM65dP32cFAfXJMfjajkUa/Qi08c++eTfoPv5iWSaL2XGhPsdFfaTl9sdaYHlHRx 1BBQM6sP9tLIxzxOV+Btx2PqOR2iDeDsMRazX2XmRS85k8Eby/mruRPzqJmRaNewwEvi ie52Y5R8mgdIuzDDmm8FQFBywrCMghHy4PNOb6n9iaFvFx5kC9U2iCGbRkMSFwdGgkHh lBXA== X-Gm-Message-State: AFq9FYIRMepXoPEj1R29GYx+TIjST+VRO4DCxxFrwvljt+0ioi2yaRSy p8koaeiVVgRBBIcUJYQ7IyI/5zmNGmvTEjpo+jWFarday6+iKxQ+lZUo5m8JqqvqWzK7teiS9G6 uY25B X-Gm-Gg: AYBFou2qCxV/djkTnamhz5f8fEnY4kYDyy5kzqA/tRXGojmZlwBRQCvoOa1MT2Hxcr5 XLtPsWLDOlLD5xoiIDfkxy8kGwWJtrji108S6VlI5a+6wJzKusVWNXQcJEO+Dt+RyuX/PpokRHo 2CwaqhAinp+QH1F+/fSSBsFIn2WkYeQgldJrA06J7s80dirPGXdNGXKdvHeupCn3isKjUwO5XrG lHAh1ZsUICVVPSgYEigt7W1HkLLKmd/muUFVRtHImLwlaFR9luO3pxWe/PRwcEO+6I8cF9k4LAh 5EcO77VwEG4PlZDgsuNkstKS3UXTNotGGhb+sQAN1GSBQ9e1mwqlIRbzrBVHhGWy6dWyljundfs GsuTMt9MTiWwWCPH/aLUu87P2k4AkqtULrgv8mL8zyC0oMpu7GCVORH22zQK29TOIDUcgRFjRYC iGSEgnB3ugDlrusfqtUfPmQF2/Vwy2X47IbQoPG+bMWVgY95XVwb5cP70bVihdmutzbFcZofJsW 3xGk2BQd7e8c4CaYMQ5AqU73GJHoA== X-Received: by 2002:a17:90b:3c4a:b0:3a2:a145:ac7a with SMTP id 98e67ed59e1d1-3a2a145deebmr1361073a91.36.1790499862519; Sun, 27 Sep 2026 02:04:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 065/101] tcg: Generic expansion of tcg_gen_deposit_z_* Date: Sun, 27 Sep 2026 01:59:35 -0700 Message-ID: <20260927090011.10724-66-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500149412158500 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 ef47b704bc9..f80e9dc2e29 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 338ecce6fce..88e87ebc2f6 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -15,6 +15,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 8fbf07d045e..2e5bc1e8200 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -197,20 +197,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) @@ -550,6 +536,26 @@ void tcg_gen_deposit(TCGType type, TCGTemp *dst, TCGTe= mp *src1, } } =20 +void tcg_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) { + tcg_gen_shli(type, dst, src, ofs); + } else if (ofs =3D=3D 0) { + tcg_gen_extract(type, dst, src, 0, len); + } else { + TCGTemp *zero =3D tcg_constant_internal(type, 0); + tcg_gen_op_tttii(INDEX_op_deposit, type, dst, zero, src, ofs, len); + } +} + void tcg_gen_discard(TCGType type, TCGTemp *src) { tcg_gen_op1(INDEX_op_discard, type, temp_arg(src)); @@ -1014,24 +1020,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTem= p *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. @@ -1683,24 +1671,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 Sun Oct 25 09:31: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=1790500206; cv=none; d=zohomail.com; s=zohoarc; b=MjkY+2Dl7us7XA1P68sOyAbP5wB9yLu+DPtPtwffrWB8lTDn3U20anu6D3WbLwhEqzTBAWQzDwJ873BNB1Ox/x6YPGNX+qDrlNrYh1/eMlZyyYOXvNdw/edXXpv4aNPdB/7ITUsbNWB8J6xtsQPkLleTsdFGT4AOG+er7zUcyg0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500206; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5L8yVK4ncB9UnbbLeWRaxEzRDbg26f8jPxDocOkjPv0=; b=XDEEZ2cqW9MEoPDbXaWXwkYfnuzpr2DsI14c4lwUJEPY4byFdRwJ3j0Oij5ocg184WMw/yA/nVHt4v9oU0rshClMM1TRf/9PYq7SfYj2mJ8b/NOWrE5lDhinuqDjOde9+xs/Qb36vrWWumXfSRvxODUuZ7Or99o5uO1hldPpTnU= 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 1790500206962408.44771547082746; Sun, 27 Sep 2026 02:10:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpe-00005E-Sv; Sun, 27 Sep 2026 05:06: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 1xAkoA-0005Bc-LC for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:31 -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 1xAko4-0007gC-Oq for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:26 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398a147688bso1553220a91.1 for ; Sun, 27 Sep 2026 02:04:24 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499863; x=1791104663; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5L8yVK4ncB9UnbbLeWRaxEzRDbg26f8jPxDocOkjPv0=; b=FhR1XnH00/n3FhCIr7KTQXL4TuN5I0ukBkBZ8Rb0Ob0/XnQowieHWR9AwNuaFtI0Zs oQGBsiXKR7+5e3fRhejjZEaABZA1A/xQZYhBFYLDGcXfR2D4qaEVpbq5Gsh8AE4x4WaL Iev8OUeAbTnruOdHacwUmtW8NDPClERA26DDm9Z5g2184M9yOH5NH83bRuL3dFmTeiA4 sHNu/5uH+X40ooFYkdl3KityvL90lmRNzbpveLkdySfer0mVhYJ+0oVT+jLSfxtnLEwp ZnmTkheTN+YzGOX59X6cj8RdaRc2BlEYO4ENdG4QrVMNrCTxTabhroH/pFJJ+bIfnszX WzyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499863; x=1791104663; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=5L8yVK4ncB9UnbbLeWRaxEzRDbg26f8jPxDocOkjPv0=; b=YKW3jJkFDIX2g1bMO7M9eNQ1n9G76DCo3uenMTiGQUB17zZMyU0waBRGxRMtYzHrzM SS7PLobEBnQiJSC3DQS0EPEDS46IfbWOoSBtJPoC9FOhtxxvakS+DQI7jyMoASJfVX38 7Myhv5GCcTBdfdGa0vDzFw35T1pwP906+ElVjm2eC9WVk8RmD4nBPWN8V80pPrtVFX4c EAqDQmmWOp6kYHF/CYv5FgO9eAF/Nk11yT2U9KPNvfV0MmAlUBe2CZA6zXgumtZY3Hcg z5GxfvVE1FRvKmYU25QZ52CJYVX+g6D3A1W23xpkAFhZEo3qY2scSRtR3WjGqoakm6Jr gUGQ== X-Gm-Message-State: AFq9FYKXwxab0KM+viRwtYCfni9XoSwTjgxuUwV9ywZC/1MRN3eG6uTQ meKvgsIRmA2s2HS7BwHossmC8M23dg7qVAOIzryWxbRdUiebKzNhBVbMeEXsZBs+Dhy9pgrZFmE fO6Qr X-Gm-Gg: AYBFou0x6xo5DsfUtmWsNDueCmIwetIpr0Fd6tBNX1cVSDx3qqgv5vItKRGuK/oPHn5 Wjn6+anDf87KpffgieFVtJFd87qEBpopjVmzSkHisP1cP+f1N70QqEop5QgGI104ILRfiHYY750 oailEyQkoqaPSBwvt7L4tUPXVyUmYH3A7gvVcWpnLYIQ2UrTjV2q6iLM9vrpYc6A1n6KHprIKZf FAaoMLawlCQZcEDuVAHnJhbrgmtiraM3vXSXAMoBi3jgvmAYe8MChBktVDJ93/t7aia0TxY+KJA YmBL3fb+moU1+zxcitCzSWhwq/jd1viTVbRL/c5+nQYQit2Oim2wb5KE6Jhk0YJl8Uy9ol0fH1I l7zVktDjIuMmmVNJMFQ3q0iQDYFVJeV00FMpI0F9ccyKW7IGsleUdW4ut3XXUia00LaRRhj0gJN x0rf4DQUBKKhP0gjB0lWncZtXONTY/LxX1m23JC8MnNAojXXEc6f7s/s3xN9g7AhMIaibMMmodv UbSyRtF4G+is1orrLh1ZE88L1W+nQ== X-Received: by 2002:a17:90b:3c05:b0:3a0:e5ed:ef99 with SMTP id 98e67ed59e1d1-3a0e5edf00bmr2473299a91.45.1790499863327; Sun, 27 Sep 2026 02:04:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 066/101] tcg: Generic expansion of tcg_gen_ext8s_* Date: Sun, 27 Sep 2026 01:59:36 -0700 Message-ID: <20260927090011.10724-67-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500207531158500 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 f80e9dc2e29..52752db2655 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 88e87ebc2f6..a5b2bdcb432 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -19,6 +19,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 2e5bc1e8200..6dbe396afc1 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -600,6 +600,11 @@ void tcg_gen_eqv(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) } } =20 +void tcg_gen_ext8s(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + tcg_gen_sextract(type, dst, src, 0, 8); +} + void tcg_gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1166,11 +1171,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); @@ -1472,11 +1472,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 Sun Oct 25 09:31: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=1790500102; cv=none; d=zohomail.com; s=zohoarc; b=JS2PMvvPcLE4jcClJUUOVHEkAMMP4EF1gqlgEbswaNXtm9wTEcmHFKCUSwwToy8NpwGu+Rs1GggnheqM0w4sEXCyEJuzZwdEmPM9DiN2CmJcGFD8iMeDGMxSiPzrF9R0kPWd7lG1ZHge/bwosCrVBxfQ9O8kbFMX03AiCVlPu0M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500102; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Op7/yEllLBSmqqPA2pToawPC2qhFBYign9kv4qyczIU=; b=LhIyTgyMoGe+l8qAFePcJSUjalH5dH+v2ZGraINeOvJQ2GB6fvNim/9eMp/7y6P3cATDFVCvHM/aeUvjqKfsdZQyFyrm39Ju/11b8sV5vZlmNnEhnlL5Gpv4d9lEifLDTOvhy6Z0UAxT1FmngVE9I8ga4KpuuOq4Gr6c7xlgSBc= 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 1790500102988119.22313029498969; Sun, 27 Sep 2026 02:08:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpQ-000842-4V; Sun, 27 Sep 2026 05: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 1xAkoC-0005Io-4k for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:32 -0400 Received: from mail-pz2-x2b.google.com ([2607:f8b0:4864:3b::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAko8-0007gR-QB for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:31 -0400 Received: by mail-pz2-x2b.google.com with SMTP id 41be03b00d2f7-cc78dd54610so635004a12.1 for ; Sun, 27 Sep 2026 02:04:26 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499865; x=1791104665; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Op7/yEllLBSmqqPA2pToawPC2qhFBYign9kv4qyczIU=; b=HFvkRZuM22hjTH2sWvjXze9ZEbyUk2w0EDKJNihW3DGg17nrlEiwB6JnNNj4FydHci J3Sx2Zgw+Zn/qkL8y3/YBx3AqgLOcL6G5DyIO4h26Hg3uoV1RB6VwvgW/7bpRt7CNFJq ck+RglN2SL4KW6t45KJmKJhR84KQGzd3hTAggG+7ydOyoMYzu2hNYxW9EwCWXczqCzyX UuMSaBCL6/ZqFZhKsWRiKJE7OlD8VjYfI8ppDtGWua1/GxwEHkwelv38W1ZVgPvtYwui xg0uPAZUNmKvLMWdgnleBbJqP4AKMVeE0VhMX0uAa0Sbd7l7evPDBn7WccAKSTzn0Jg8 DaFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499865; x=1791104665; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Op7/yEllLBSmqqPA2pToawPC2qhFBYign9kv4qyczIU=; b=g1NjgutJTzn53WLXneqlqzfzDfnoYUD8wgPPDCzyKw9kc1vZ5/BJcMUMYHRlWDwvv6 tFI8ZQiXSbmvu24YPt6fnuN631oD7VJ3DKEl1fs/27getF0xOfzqE9CQe+ZTDGlsRNi3 k3C9eInwsgTLTl0QBMC9iI3ECs2jbZ2jyk22C2AzxDVfYRtjK+/fGGtWlCkXqHyWNP8G PYyW/I6MY4Po/zavCrbyz4iOau3UnmhPpzr6ppWkWNS3IKi/Po392aN/wxp2mV1CNlaS TsfbE6zTs40Vtd/KWs5Hi7Y17fog24RkQIizmgM4lgz2rvtEFImh3MLBaifxWckEXLXM kPoA== X-Gm-Message-State: AFq9FYLbjrHWMh5VH7Q0QY2y+lwhQ4rGK6+P1e1cK+DYAYVlMisjK4Sp WgQxl0MibKslIyHS7vsU0w3l85RxRKLTubjNBdlGlqk689iM7TScb0EBPaUlrZQfnzhoEmj6bEW fozJ6 X-Gm-Gg: AYBFou38642cwF+vZOB3Q3BGROnm8vWLw0sEdhXNu2MFZXUTEvPnfROThYXHhPA134u VmETOQF/TWT0U1FWYaYdpep6g1GbbgG6twX1VNDg0I1aZWTZRUCpZsJ9we9486RU7ByQ2GD8aob QGy5fLVHNf2Fm9tVNIiEyYGbAt9gO1GautJ4I554ED+vic1swYJmj/RPUp4bj+2Wre6TDTXhnRC /QHNSU82WIB2fchTgez0Mx8mn9/pXd0po75Cdfm2thVnQRccCrl0shh15p4RTkyW9s7TCBLZEKg ni3VLg7ufmjlN3ifrcTc7A9/eCOHxNesdXY1Koqn2MVWBfU74JGmcojaKR41mC8204waoFc+YBZ 2i3aQarmwe8H8BJtel75g4sncRPtV7FCAtiVaniZNnw4gIQzoOXcFDFLA3tm5BIgqyOZ6Zvquqm qRZpoUaypKCVlihazQZe1EiKN457mc8qchXQ9XyAG++vNnuMRBBHREIT3I8W88TuDndoNJLSJEj I8Y7XWuZb/pqM5fGAZoIcU1EkDmhhU= X-Received: by 2002:a17:90b:53d0:b0:3a2:590c:a85f with SMTP id 98e67ed59e1d1-3a2590cb587mr1122856a91.21.1790499865153; Sun, 27 Sep 2026 02:04:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 067/101] tcg: Generic expansion of tcg_gen_ext8u_* Date: Sun, 27 Sep 2026 01:59:37 -0700 Message-ID: <20260927090011.10724-68-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::2b; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790500103773158500 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 52752db2655..260f65f3305 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 a5b2bdcb432..1cdcf3aeeca 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -20,6 +20,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 6dbe396afc1..60a4f1c196b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -605,6 +605,11 @@ void tcg_gen_ext8s(TCGType type, TCGTemp *dst, TCGTemp= *src) tcg_gen_sextract(type, dst, src, 0, 8); } =20 +void tcg_gen_ext8u(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + tcg_gen_extract(type, dst, src, 0, 8); +} + void tcg_gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1176,11 +1181,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); @@ -1482,11 +1482,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 Sun Oct 25 09:31: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=1790500140; cv=none; d=zohomail.com; s=zohoarc; b=CjAf4Zigj0AsvXRN3oHhVv/yIIi7NFrzYEqGta83fHOZIwxN0MUbB/MN+2nDWbVvKihIG0gTDBL8xUtBOntYm6YQ8DsyblmXSSzD4buFWZCViivaOvjO7rk/2pBAkAC0UshG5LBWkTN7VpfonxN2+lfGyQfyftpe13nYdITa48k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500140; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3sOHdUEHN4gpVB3b1E8vPPHzKg1lSZSAe8P9+6/P9hU=; b=R2zNCOzl0rjvkKbXuHgW2X/bHQqtJdAjJskRQ0rQRtTRRWxJciGHQt+r7EmyomWJ+IHZZjZ8b23NMPq0iOmyFqoD/xJTYcJ66+Pc41P2hyG/KZDV3w6VgE+qVTpHxsjQmLoIpcdNPNXOGBEFHnvWMBwv+jJFDE7uNrdP0dA+yyw= 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 179050014005841.655567590301985; Sun, 27 Sep 2026 02:09:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkos-0006b4-K2; Sun, 27 Sep 2026 05:05: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 1xAkoE-0005M3-53 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:35 -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 1xAkoA-0007gY-94 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:33 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc797656e44so467773a12.2 for ; Sun, 27 Sep 2026 02:04:27 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499866; x=1791104666; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=3sOHdUEHN4gpVB3b1E8vPPHzKg1lSZSAe8P9+6/P9hU=; b=bfi8GCCazjDBvq05POLiaWhrjyzXD79MtcM2a5BWYaKV8LHlqKy+a45WRlP3We8efh uxiUeOYZ59IhzwFkjn4Sit5WX6PJesi8iwjBWNQM8++tMgEbwc1ImGA4FNUq+3kmRP/B sK8wdVeDXh++sMKHR/FTh2UZQA7uvnra9pGEgMMhF+kkbG6zE4sIDzMEXCBuFEy40qkc hki9RpWcNXw1/AS+qRytlBh4v9teBbXRJlxjSJET5k0F3e/RYnE4VD7Uxp/9XQsYfGpC 6+yqEn0l7hgBIPahFrV4iE1IfNxSGf9sWFsugH4L97mzH5fFTRKM3OyakmTp8I/Sb4kD J4lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499866; x=1791104666; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=3sOHdUEHN4gpVB3b1E8vPPHzKg1lSZSAe8P9+6/P9hU=; b=RSDIjHGUhw98NKVBzi7tKx/NdYI0ZMo9iFUM2uoWOGFNB5scyHse9rbwfacax70SSq icIKIng2eFWgaoLzkk3Yfg73Eee7FiYrid4ed9yfofSqE0X1qw+F4HU9MEv9fRsK8UtR ymc4P+UFzcwqt1RqqWUcGEk2RdBao4r/Xl/NqfnroJQytxef9+xMXkQuIMVsFWJnt28q v8fzlYxHz1DiCJ0Veb/eGeiUUzJ4qEZFeXI9kcm2xu5nlJHM5fBUehWD+oMg4bwTpSjF FqmBxZ5ysDBWkh/hTddKCHo9g+UVk+0TQ6Ty/u0pNYvOCYwuu7ow2mYlV1ywqBTXoSD0 h2ew== X-Gm-Message-State: AFq9FYJbnCgW8e8kjj7IJAk0o7VAZIoRx4pubiAnU8k1nqj2MudwjXzU bcL/agxmv8VuZtINijsEDYRv3WD1+EieWshfbr9KabBSMjrf9j4e4q2oLKdeQ+QizLnmdPML1nd +uc20 X-Gm-Gg: AYBFou3z1VIF9NG9IGrbP5DsZM0gqFzYHFtHI/G7uUfXvUkXD7nKUC4taYuGxvuKR3x MmWM3hphOyPnvuTkn4YdH4DJ1bAUKXDRdAxabvaoESstSG4UNvV7Mdvb+7saPNlmTAAGOaZcw9P o4iUJUd7QuNqDUFBglX9yiab8UCbLRt6WRiRxx4rlb7tI+uH85Ii+WVa+gLB3NDqRQhw3bBXTqC XkfXudtymPGDqDpchDS9d5RwKxrP2SLbkZ4a4OjiFedj+BepijbHkSwq9toHCXar2WkiZ6u5F8W H49ArOjONEpGKgywdwQjjQNcjJUbsCV049G46m58c1EjRLrUUJiuDlaPBRcYMm3rpMNP+WaQHM+ HTJ/kUs7hIpjyd0W9njtSVKItlHJhRyknJd1t6HSgpMJURFaHluTIK9isN+5A71wud91kwjOeBL N4Cmddr5sXWXjs2P7BjnwIvCX47B91vVjc6bG2XA5Lr+Argxi9/P1S+NzyCoome5BnXRck/5IyJ +iM3aaPBQjNMnv8IelOunDhgLMHpQ== X-Received: by 2002:a17:90b:2745:b0:39e:5c75:acbb with SMTP id 98e67ed59e1d1-3a098ad3c68mr8169894a91.11.1790499866178; Sun, 27 Sep 2026 02:04:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 068/101] tcg: Generic expansion of tcg_gen_ext16s_* Date: Sun, 27 Sep 2026 01:59:38 -0700 Message-ID: <20260927090011.10724-69-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500141784158500 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 260f65f3305..d8bd08ff1ec 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 1cdcf3aeeca..4c1fc9633c1 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -21,6 +21,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 60a4f1c196b..c4ae16273fc 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -610,6 +610,11 @@ void tcg_gen_ext8u(TCGType type, TCGTemp *dst, TCGTemp= *src) tcg_gen_extract(type, dst, src, 0, 8); } =20 +void tcg_gen_ext16s(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + tcg_gen_sextract(type, dst, src, 0, 16); +} + void tcg_gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1176,11 +1181,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); @@ -1472,11 +1472,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 Sun Oct 25 09:31: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=1790500125; cv=none; d=zohomail.com; s=zohoarc; b=BZzy2IzRAAr7tRKIIQzeqJHZhoxz+CZUBNFzzFe0RCYAEIpKksRcxqR0qXFMmnkOTXw/qBxcAul5R9ZQYKwUa2002qtPB8qkWTjqNnX93DvyCtJMO1X6NA2rz31RPFxzgKyKR845i/SWzLDQdLF35Y85t8U46EekZfYlb+rD8OE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500125; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=c1SFLe1YhpqN96gdaHmQXtfEYRdPenlxYcoWUhuO+qg=; b=Gs32Wmfnu0tl/kqRqm+keE2Z7SCux4yBuq/iVyuWl3IQYNxiPEFnh6SgFka80KoB5bUVvWWcyMtxR+n5CrYjMcCz/wbc9rayAGVuIdVk4VG8tAX/xKyRGr5EbZtBWH+h5pmxAi5VbPMYS5EbImlmmbXUY1d0KqJ81dj/CFhhMqw= 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 1790500125677222.41465135346039; Sun, 27 Sep 2026 02:08:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpj-0000PU-IQ; Sun, 27 Sep 2026 05:06: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 1xAkoE-0005M6-6O for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:35 -0400 Received: from mail-pj2-x0e.google.com ([2607:f8b0:4864:39::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkoA-0007gc-9c for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:33 -0400 Received: by mail-pj2-x0e.google.com with SMTP id d9443c01a7336-2df8818fe1eso6311655ad.1 for ; Sun, 27 Sep 2026 02:04:28 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499867; x=1791104667; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=c1SFLe1YhpqN96gdaHmQXtfEYRdPenlxYcoWUhuO+qg=; b=KtU3+u3ixbJ6r1p7yaWlnDLcsdP9UGs9Wf3sY7UsCSJ0Iw/bBqhZogxj/kC59KoptF DZ3iaRH/zNFA8qWWyTX/DIJ9xXCNwrz8LaQOZ5xEeV7oFreHR9Nhu0U9DQkmVNIfwNGl 75vK4ZSe+2dMgdl8pp7MAk/P7r3uwykPWFRvsyhoAUaqQvfBM06AoIHH0yDPZnXRI3CW M+d/PcLS/6Y3A601RTgzOL1SLVlYsTOi5gpk47HIq55VYnuT62zfUehpdDrFyTOOODhe VkqFLiLpCSm+opjkOcAR0d01JGyXoxbLZiOXQd1oKEftx6QJ+35HyxI3jQHIqqi0jKhw bxjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499867; x=1791104667; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=c1SFLe1YhpqN96gdaHmQXtfEYRdPenlxYcoWUhuO+qg=; b=LNItXIOtDEB+2kRpQBe681N1zhCf8y2yTcXCemrAnWX/2XxjsQwxmGEtAMbWcq+/7q 5yXGgKAIbtNqTjwC8C9sJdUlUG6usKTayWFg9nn4/8XN+8O0hsX3e//H+7tW6L833Qq5 /PmtCY5kVn2H2C/c0oOK7qZPBd+PbQDdt+Rve6AaiLC8kfIDRZ1hJliMmIOO2HS+d3hD fV2ezpnHJz5eUk2CgwCASq6iOeRW8s1tCOweYRCbBac/M8FTzY2XthCbh99EGcJnT6lL LtOnCMZDTG0nemjR0jdLbME+W7vVTkcDt1cylAoobWUk7sWGLZ0PHiZGR2IDlAXVd9OX 1K4A== X-Gm-Message-State: AFq9FYLkY+0DuiD7BG82CD93P1hkrnqq4VKSeG1t9N2MCzyq1bFpf1NB mCwCBIuLATFhV6ckhJpZwrBt6/cMJnCUfF3imIXGH/cl+Oeg2rbrDPirzvWH+9kHqiA1Eang6Or 6vnPI X-Gm-Gg: AYBFou203SfvJRKQNBcn5J/m+TSaF5gzxDt3orubABXoF6S6InHUPf2LQdnLGYmKYgM GHrtXDaa3xTebSfO9qlAqY8hT6OYs9vtiAeltpAz4nXpttCTXFlOL47s37bC9c60X8DgsW/WsHH LYv1ruYDLy/Z/4CYjiWCQlE+iERK5dN6KvfzLo2MqAvTG7pBDkknaeoudM5bBZqZqojvikis587 R2U0nZMlsQR/pPC3AOgixo6UaXoyKNHoil03H0EwhR4e4HL2KCn/CD+QpYwAr5NIR3yDnl5sRI2 jKXKKdFaZKTXUJSGb+y63fKQxusgp2wr8Cho56vi0rgbyr8c4SUogBoN2ezVlC//oGLBlXDo7TD Idu4SQLXQ6ecbGpjFg3M0y4Ft4/zOwLFxdMgiGGzKRpdSQ5O4emKvz19yaaaCJWbI3wYnVKFyA8 oFb02cM1Bq08rxUExQJkmIk1JBXh+ViarTwdXHaI2gRWWzJMyFBRBCMIqtdLSRzNniyWg16sW4F H1kZr7aaQAiClsFjNjZ9fT5iTYSVg== X-Received: by 2002:a17:90b:4a05:b0:3a0:b61e:e321 with SMTP id 98e67ed59e1d1-3a0b61eea8cmr4533113a91.26.1790499867060; Sun, 27 Sep 2026 02:04:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 069/101] tcg: Generic expansion of tcg_gen_ext16u_* Date: Sun, 27 Sep 2026 01:59:39 -0700 Message-ID: <20260927090011.10724-70-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::e; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500127752158500 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 d8bd08ff1ec..2878701b105 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 4c1fc9633c1..6208a51f536 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -22,6 +22,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 c4ae16273fc..362eec23f76 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -615,6 +615,11 @@ void tcg_gen_ext16s(TCGType type, TCGTemp *dst, TCGTem= p *src) tcg_gen_sextract(type, dst, src, 0, 16); } =20 +void tcg_gen_ext16u(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + tcg_gen_extract(type, dst, src, 0, 16); +} + void tcg_gen_extract(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned int ofs, unsigned int len) { @@ -1181,11 +1186,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 @@ -1477,11 +1477,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 Sun Oct 25 09:31: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=1790500088; cv=none; d=zohomail.com; s=zohoarc; b=JmGK3sD3Oc2LIPZ1XGEQcGnL8eR4z+DqGm8ZFkSSvBNlEBgQm3V80yagmMVXjUvHkkBIbn8N3YZOi+FNRteIWjhc0XtwQEg7/6xOVp/eEFOaNuSRzx3/qdaiVYpuVAA8Qj5Mfccj/Rs83gkM98u3bXoOBbvXW6Arn7kiwQhAK1M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500088; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hLP+TtjTkdi7sz278ozLee5pzfxzJnjdaZIPG+YeIww=; b=CwalX2buwLsPKpaiOwUb9TiljMDcuZSIaJMWXGFrF0RqsO5Q+YJIM09Pvi8DGmOzgHdjJAzijO/aQZfe2wl7qD/lhx1hZF2Ip6xgMN2f1M8Ah96tR4kT5DAqzUt8TX4k/ig+JVSC1/Qj5O3y5w35cDNjp0S74UqnPKNn02M++9c= 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 1790500088118558.1842877045383; Sun, 27 Sep 2026 02:08:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpG-0007j4-Mh; Sun, 27 Sep 2026 05:05:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkoD-0005KD-3j for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:34 -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 1xAkoA-0007gg-9i for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:32 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccafb751so1006364a91.2 for ; Sun, 27 Sep 2026 02:04:29 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499869; x=1791104669; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hLP+TtjTkdi7sz278ozLee5pzfxzJnjdaZIPG+YeIww=; b=WPLMlN8VjmbIP6GfY8Ka6XgwDwQX2JZHNO7lPtsTOMvLJD2QJ31e4u4hIGcLplCbR4 /NPGsOAXc3Q5E8KtabC7zZsalhKJ5V5XfXXBbTuJNhhahnTpv3K9FGdeGFksijbZln2H 4DwmenHF+WubCSrUvfs0yORcgyglFSV5KN4bxh2zdFb+6ILCUntnjInhIWDlQ6nPUQIW 90GunZffNdK8cRKmowrfvAgb1ooXHWS5rVhXi1oq1b55OXSMH0MG0aCRPkNfLNVQf5W+ tFcZDIrDsPBqXrpuiKHsj2eOteqkqRNcmHUR76Du4Vyjq4a+g5H13xuxASyDvpL2cWvY tceQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499869; x=1791104669; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hLP+TtjTkdi7sz278ozLee5pzfxzJnjdaZIPG+YeIww=; b=FEsQmAb0qjzJ8mSUgcQ5eUbGCC3aBWCXNvGAE0lzcatE4kJBHUZvD9pk42eewhTLcq Sa8b/9BDSTYQ+19CZDOM0sPGrhqD0+0L4fokNj7VpePu79X1yoO6uUZnA1XyqGFBm/GP Ep/I6K0a8mRlTylZ+GrMunnt87emWKL2CNX7cIc+oXBoejuRgrMoBrQ6r0hRrimNr1xd eB/rLlhpkkowg0e9X6VtoJnhJ8g30Ws9kd9tMRiyofv5Puh+XNI2+7ebpfk620GYiVdO RzURJYmFeC1KOUsVrx5CzIsxnx418D+w+r7RYBD6Lz/fPQ1xSHfy5GIfiWLKjVG60ciL zDKQ== X-Gm-Message-State: AFq9FYJVbFUI1Dj1tsrM6/LydPjZQnWXN1g2w1JnJ0mAV5RM/jARdWiL og7T561xXQqrmn9JiD/wQCx3gcRLh/5dn+WJUo7AYD8dmH3UeZ1941FtXcj/tVJThpMrPICnA8S fCerm X-Gm-Gg: AYBFou2gbyaVP2MyKsgXHMvNGAsoTfcZdElg0K5Gzv0vNK+Jlt5Lsof2CX5gZtV6sdy LdSd+XZgHfTqrjOY2jDlcPXUseCAs7uMmEdUtXSebqmeNdG3rPPJq1IXN5L0tsWZt6J57BGtQUR 2qRSJ28mNHnKCvUE05UmL587udzdYMjJpoKuL0eMky0Yy/XBtFuf4tPITdYUhekhtOwKfJeX/Lp +WnXfNqaq18IhdozuvgqbBXTuHG7jZa0TfJiZacani2e84EuHXXDvHi9qYAlNMROIq08eJkvMTA bGBKfktUmXqvfJi/D3B/skJkcrSg0lXwM+ip0HNbaA/NKKPjUlxk+wBSe5QQhFJStggVbigPSpH 0DrY51vFE+ksgAxT5G7SFiE6O/SOI8aHE1uIstVCXgaMIsljSeH39Yh0vXrRIFIJ97kPuc/Yo82 YM459qi6Xno+Rpqoujni3oNIDOLfNUdAkTm6KeTPEyqYb7riV8La7OUmSCNb0OEmwjc5jQusNrE gvilv6dursquwvDOsBKaTa3xnoAmg== X-Received: by 2002:a17:90b:2ecb:b0:3a0:f036:5a13 with SMTP id 98e67ed59e1d1-3a0f0366a44mr1769425a91.30.1790499868574; Sun, 27 Sep 2026 02:04:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 070/101] tcg: Generic expansion of tcg_gen_ext_* Date: Sun, 27 Sep 2026 01:59:40 -0700 Message-ID: <20260927090011.10724-71-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500089735158500 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 2878701b105..383cd093863 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 6208a51f536..f9812c1f882 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -19,6 +19,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 362eec23f76..96675ef77b0 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -282,6 +282,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 @@ -312,6 +313,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 @@ -600,6 +602,17 @@ void tcg_gen_eqv(TCGType type, TCGTemp *dst, TCGTemp *= src1, TCGTemp *src2) } } =20 +void tcg_gen_ext(TCGType type, TCGTemp *dst, TCGTemp *src, MemOp mop) +{ + unsigned width =3D memop_size(mop) * 8; + + if (mop & MO_SIGN) { + tcg_gen_sextract(type, dst, src, 0, width); + } else { + tcg_gen_extract(type, dst, src, 0, width); + } +} + void tcg_gen_ext8s(TCGType type, TCGTemp *dst, TCGTemp *src) { tcg_gen_sextract(type, dst, src, 0, 8); --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500157; cv=none; d=zohomail.com; s=zohoarc; b=gb/bhXnG1fAOOSw4/jPHV9+wKIcgY38Ykzq7LJ6dmffSooPuveUS0HDjZumb/yAj1ss9EHqLDazJ4Xq9s4miTo7gGPpOunnZhPUNY1gf1RkMLuDb+p5kapwWN51zGsIBuQcHkLyAvhFTeZ2ZWkkkDXZw9eq+HcJQMDZhJHkSZwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500157; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=P4zI6amx5vIuGOPoHhH4u+tC4e1lQvSyPyR7n0HW3co=; b=RnpCQjkNpfXnT0/rcEb2hg7tCI0qctUEtNSUJjFaEI6QBpWvmI9b4an7P3nwgW6B8A3/U/23sKRdB20zqDDgdMSh7JQ06jUmLJGT4iRyVpxUlxtGEDxME+5Y+dorvRE7uaDPw/d+eAecxM4LUhAS4twZu6CU3ZN6FXkTEVKuvgY= 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 17905001578642.092336806966273; Sun, 27 Sep 2026 02:09:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpc-0008Pt-BS; Sun, 27 Sep 2026 05:06: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 1xAkoE-0005M4-5X for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:35 -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 1xAkoA-0007gs-Vy for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:33 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc4c08393b0so842393a12.0 for ; Sun, 27 Sep 2026 02:04:30 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499869; x=1791104669; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=P4zI6amx5vIuGOPoHhH4u+tC4e1lQvSyPyR7n0HW3co=; b=uRk/6AUmDo3hsFgn/Qy42KSASQlm3Mjzd+iE8ciHHSVEzxM2jeRFUPrZzekQrgT36q ZZLw4CzzSC7STDgJ99fyu99f7Npq13+DbLSxf75teKUmfKXW5C5U8B4UdAYeNG/Rd95H hlqWfamf8iejb/gpzOpYk6dJZX+cw7POJjE0LBMWu1gg9jesm/c2B6U2mWX594P+Kyq+ oO7N8j+8bm4rvskpsoNs+Vb/XhGzUMpPYpTrwTBjM5hu7mT80iPBQkAfo4CQvWIaCKjK tQddXB2SOrcnVDg2HTRLPt8fzrqdHcYu3h6iZK6W6SsmtbJUNmjuVaZtlu8i5Z6y7xI0 KJuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499869; x=1791104669; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=P4zI6amx5vIuGOPoHhH4u+tC4e1lQvSyPyR7n0HW3co=; b=2uWcVvTprIGoz1BWq6hRPpbxCxgCpTOPwZuE0jr3W6BXHvgEbyYRk6UnW0PP8Bu2ob PwHRnazH3hx9hVRvc3Zpl5e9hU4qm8EaV2KtJBZlJZ270G66+884dvDtJXRm98PcN+l4 xIyFc5LmRNuGfdNSyIbN3eD+wESF9Aj/HOEhDpJYIGZKHOT5IdaR0UBXx2/u87IcxXrx QMfgepEvWBsMDrsLYflBUUQ5g5OaeiL6YMKCKXG4FFB4cN+KDozV1skmLR5I8u/Bo6Ok 48HvDBIBquqadvwTXy09TOxVBvbeBwbkQvzLtMM/g3vGqjTCVyNVspI3XbHykw55Tl27 TpGg== X-Gm-Message-State: AFq9FYK7UOnZYamPCPyt6FWWQ9vC/OI9tYtnX4ihSu83CNYyp615JW3M UjY6Kcv0VJ+CQS6YUOmubx/ybaDqUxZLKYqoX2QLQzH07zYgYsKfNM8w0GBSB+XqfSnR8i57Tjc izAmE X-Gm-Gg: AYBFou3FA9YSVL3zO6Lqg2Ke5QgOp3ez1qbvycNmVFrddVvboZFMeuISwSfPcCzU4oM WdEgVGz3k6E6Ttss3Ca31jyevtxqThVxpRs1XX/fAIw+jhmgjg/oCmYeBkMl5FgP4JrjvvIwCQg gc0w/n2zNAcByYIKFk5rIpbumlRz3YtWyLMPNfJvuanurmge7Jo1BM+luiFx9rR/x1H41Id7v+v QqC1znMgpUuaZU7+ywOtHeQhqHsaOkouL08oF4k19/TMVE5zL/ZO8QyzawxuhlnsrV+04mTESFW l2taXiqBeOiYitLdGh9LesqTJKoaldK45kRxxB7yvm98D5eysdUs7SSD7AvikkJZ7iTFFLxa/Bp LKF1oq7E9rNpXaBMvbfXRUi2lh5D6hVbdcoKQzi7uvGRs9lY7/21RD1ZqoBAqQ0iNnPAfpm+Jtb 8YW42JtDSosDResvHdMMM7hIDoFhxjZiJ9Tx9iT0o4qXMySMnoPyChOFVm3n5AriZHjReLXp0Fq CHZ19k1hPHyTXsVHDEmO+FqqlRwWg== X-Received: by 2002:a17:90b:2681:b0:3a0:cc33:22b4 with SMTP id 98e67ed59e1d1-3a0cc332593mr4169214a91.52.1790499869430; Sun, 27 Sep 2026 02:04:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 071/101] tcg: Generic expansion of tcg_gen_smin_* Date: Sun, 27 Sep 2026 01:59:41 -0700 Message-ID: <20260927090011.10724-72-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500159389158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 383cd093863..3f463725d68 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 f9812c1f882..14860667283 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -55,6 +55,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 96675ef77b0..207a62450a1 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1015,6 +1015,15 @@ void tcg_gen_shri(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) } } =20 +void tcg_gen_smin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_smin, type, 0)) { + tcg_gen_op_ttt(INDEX_op_smin, type, dst, src1, src2); + } else { + tcg_gen_movcond(type, TCG_COND_LT, dst, src1, src2, src1, src2); + } +} + void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -1331,15 +1340,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)) { @@ -1871,15 +1871,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 Sun Oct 25 09:31: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=1790499980; cv=none; d=zohomail.com; s=zohoarc; b=UlAF05LyDb4WEiSN8xWVarhABNE2OGDL3V2nUQjyHejgcMymNOWAatE7Ettm1Ak1cE/p7fjbevOKxe57kcSq5xlbCORvvJ5k7WlibDJwuL9ltveqz1Rn+B6yiE1l5uICQ3Hsd3B3vGIOeAo7hLrSibSssplhvlbOJY6xL6N7CvI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499980; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Eh63sKbaDhrmrkekaT6qtYW/yBXCG+IUR0JZG1FUz6o=; b=D0TfvAAGsRQ4h7OQk5pq2wiD1R6PPK2whGlK8JTOfpbriBg/mc4mZgO7x70IpxGCVRV2AjUTeJWXnFmoCapJurB+gmnNHOeYIRAuvNgIGqu5LWTREoQ5Inj5MKkP909luuL7EVz0OVlFhwCjlw1/dw2huf7JbCZJthIsF80/q2U= 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 1790499980385275.61270895765006; Sun, 27 Sep 2026 02:06:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpg-0000Cd-5O; Sun, 27 Sep 2026 05:06: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 1xAkoE-0005M7-64 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:35 -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 1xAkoB-0007hM-M4 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:33 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-39b5b07ec78so1139099a91.3 for ; Sun, 27 Sep 2026 02:04:31 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499870; x=1791104670; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Eh63sKbaDhrmrkekaT6qtYW/yBXCG+IUR0JZG1FUz6o=; b=zgYP+9N5jX2yKH35FTlMoX0qPL2GpUE9UdUrWb3WyoxKLfCmrclEW/Yk24bYuLg1DR Zpd0ZBzAstq6sBX5upXl4Of2H1Q40TDn5FekycbUsNu9tPCX604pI3cSF8mxPxBErVnj FPxXsWcri08RI5Njz9IgvYKAZTUds/mC3d68efZjxTpStczyCikbuHmAW6miZk1vgWSN Q2EELnfBEA4JFs0X49TUCSa8f8hbNEGom6yEm0pJHcLEG7BTgBQgrTA+pmoynoDHBPyv d6Ow4NR64eBzqQv3P2YIkUWaL3QoL1acOQ2Rtu6sflaIIFj1SIeBJBREuLdfZwjIWm4P CuRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499870; x=1791104670; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Eh63sKbaDhrmrkekaT6qtYW/yBXCG+IUR0JZG1FUz6o=; b=wbV9P67EGcgernpy4SRkBmSQL0k/nHPGMCdzjftTGOKuNWmCxcvzIA+RPj3nTOIAsg /MRvK/oot1jNShr0M5qwAZ9aDzq390i3O0yfJa1LOpmLfEnAOZj2jsjLlvXui/snlmWP cVaxzvZGKP82pH5HcFguH5E3qya87ewKVwkbk0MOWmMhVriRgEBBHIh+5FcT+eJyFDD2 PHkW3VGuLbyirg6B0zO7IpBEmwhM9ap28fMaIA+XHiyISRvFeMPYVJ4MGhs9E9ioeQ8p lTaBub4EOMpUtehF2Sxp0bZEG5OByk1nU6d9oqumdcipqTy9N5GU4xZ9bJpNhT7gNju/ WWyg== X-Gm-Message-State: AFq9FYLtCP51GwMZQkAV11kdMAzauTzAtDFmrLtEmcgE+6UykFnBVWZ5 sNVJXOXNWwQhcahqj24Sii9/CsQi4syS2x+fnjXhjaM/Ih2QF41XmDa0dlU20K34ZG+XNdC4ckC kKbN3 X-Gm-Gg: AYBFou1duskg3wvI6daQ0zBaeH9D/pngCPwyZT2Ys3M51g80DUOTuVuzqrX8agDBwXw F2uPIZ58EOhAKa0PFiu7KlMNSQNQ8oKgAYIleBw0z/UQFR0h1m8EBvuBgl6XCd9DBaUQAVd6f1i 5DtEGDzwsA3f7RN+zZPqU42ZVvB3GT6tj5r+2M71wd0a0Aap7eEzB3xTw9d6+3JWgQkDIYiWslv KxHCm5Wm5D9zpjiu0iO5itTlrtMtEbh+g+yxGHvTZwPCa06X1UepvlALCNjJUbZLLXNoLPDA38+ 1M4QYOr3Ae6A5y5BxDRiBkyTBS8It25hmwibKFKdyu/u8wK6K1hcH10XUMu+TKA3qegmISNTtjB 8q0aUiYC8G2ywiKDqlmtIQI8oKM06tIjRqU+q15g/r18CT8meZmgi3fMIY3huHlHg3tR2lUlPBU n1dCmVLp9mON5WGjVtZ/luWpTZ3kevAs3PwIOxO7dlQy+UYBPinYEjqQ8h3zNWQCy58nR4aRadk OYa55QbZf4UcF4+hynM7CunNEpv2w== X-Received: by 2002:a17:90b:51cb:b0:3a0:516d:9f87 with SMTP id 98e67ed59e1d1-3a0985710a5mr8369075a91.13.1790499870254; Sun, 27 Sep 2026 02:04:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 072/101] tcg: Generic expansion of tcg_gen_smax_* Date: Sun, 27 Sep 2026 01:59:42 -0700 Message-ID: <20260927090011.10724-73-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790499981362158500 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 3f463725d68..c7dafd2773d 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 14860667283..de3feeabdb6 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -55,6 +55,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 207a62450a1..3deaecc7e0b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1015,6 +1015,15 @@ void tcg_gen_shri(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) } } =20 +void tcg_gen_smax(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_smax, type, 0)) { + tcg_gen_op_ttt(INDEX_op_smax, type, dst, src1, src2); + } else { + tcg_gen_movcond(type, TCG_COND_GT, dst, src1, src2, src1, src2); + } +} + void tcg_gen_smin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_smin, type, 0)) { @@ -1349,15 +1358,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)) { @@ -1880,15 +1880,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 Sun Oct 25 09:31: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=1790500140; cv=none; d=zohomail.com; s=zohoarc; b=nPgaOROET6rtbkr/8uWe/fCU2CyMTkEcGMPbzV41PlYjbxe266ZHH2Rw4fCwlJ3mvODYNMtMDcAWx64JaJ4d/ymF6WXrNmvIaiFP2U2Y+/Ni9g26uI3Tfos6zz1bbxg16VtJIrzntJejBxP6FiR1mp0NinfyDshEPhQFrhErY2k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500140; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mXrrL12s3/rTxGr73ZNI9U9KNibAWMsQrk2NR1R4VzU=; b=dzfo5u26BCVPsJ8LkAizujXIJh1tezVxbIDBEpkn2nwvADSlS/O8qnGdxanmaBlpfTEINs3qkpbR4doWM0nk3pQmLheJsWgxl/tnJhbsni3i+Qq4vm/bAUIOrtYZXvUk8WZP6S5TIuhQleyh04vpoLjxBeBSYjBIPglxPqMFuOg= 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 179050014012752.815865583111304; Sun, 27 Sep 2026 02:09:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkp4-0007F0-Jd; Sun, 27 Sep 2026 05:05:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkoE-0005NV-QK for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:35 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkoD-0007hf-3g for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:34 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0bcdf41a3so1025052a91.2 for ; Sun, 27 Sep 2026 02:04:32 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499872; x=1791104672; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=mXrrL12s3/rTxGr73ZNI9U9KNibAWMsQrk2NR1R4VzU=; b=TNuDOA2MKIzA1MUy+ItGeB2148ZjeV/+f/BMeN7Qkku8gLXUTDzA8Vh0+kPZNdEo0y zA2pYXXQrl6nzl/26ncHgdoDnhFjSd+/Mpyvx7xGrKXJg+ewY2Ozkhqz7fEX7uzJorUQ 6T7omhOalU/r3yg4iCAYsSjszwQ8HRbL8bcQE0vvCWRG0ene/O8tVNXLOoXj43dCfKfB /aAOg2w92lTx97sFh2IObkSMgApWUnQfY5DTRTnyKpmpQYa4TuGN0APPbRMltwxk2hvs M0uibhEa/8Fu3nBzHBHfNGTT/dYH19siGNBURFdC9aJphLbav61GBJztr7l2uwUF+eP+ R7Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499872; x=1791104672; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=mXrrL12s3/rTxGr73ZNI9U9KNibAWMsQrk2NR1R4VzU=; b=YKvyWEZXtB2s2kGvjupR1dKW4O61rv4D9qHJBXysllICG31p35CVKGkl3rLP+uPAqc WeZuOeoa9udzgTDtRPR4zIAwr+DaiRy/ywuxLRrJM6FDr9CmdGlZW9eKiozHmrdRO6VD C+ticG8ekDRYM3aHCm+KynaHYHSRW77iPn4vfd2pYBnlY/TDiwDNBcOrto4nxZinej1S 9ayzYuLh0OayexualGE5PCRADea4jNvYDwt6dordIqWyYrZ69+7tFiFeg/YOs16qh/Ly Z+5AQXy1bka1QCeI4wMT9ONGvL5XYwxeviZY2XY8uYaqo/SwYpfTgX9qRnNliS1ElKHS UCXg== X-Gm-Message-State: AFq9FYKph12FD0AQSrZoN3e0uHdXN95LyVqUp3UBieXbJw8dhW8Qz8Wl ACu2f1zD3VkK9osNvJbzafY0H5rvKgWHz6KedsJeZ4zutNaVwGymLuWnqpG0XKWHZrbHeSuBUaI QSR2j X-Gm-Gg: AYBFou3WpupgiqB6rNV6ZskdIM9+m+Kc5ozaZ5y2mm8Ke34ynuiYvSxOpEs+wrhnBUA x7L/nPe36fFaTTu54rOCC6Ro3JCVp7C6gsDO7moHHjWZBv1u7niiKq3qiv1vrBYWLACaz8C+mMl ZtIkdfOEN4fkSSDXErXLdga9XiP5vBR5MfxO/ekabC4QY6tRMu0wrir4RIANcFMkAShqia79UWS iFRUMfepybj+bStU4V9WxEp/3TNMH8rjPfJ+kudo+XMaBSKnbzJXkrZqzc/LmEPhSwRFVtuGOWN 6iIblZlD361NR/UIhn+Hxv8CYTZ648WRm5v4ab7pXUlIsp7WGV4J7nJr0cANUfy9Fg9dXumXpE0 CVqJUlbV4b+NkvJ0Le5jz3Yi+ikdws8XcDzqZVTnBcGM3ZhgVqdosZuoJS5KC5y59sIyKQBthxA 3Zdot+o3oh2RkV3AaOlMq1z+qBoIWRRpXkAQvLd9LwFr069O7cl0shhd4ZEb9JGYqPHcvsrdQiy rCD14I32qQJZoEYEyvDOkA2UsSFUec= X-Received: by 2002:a17:90b:3887:b0:3a2:b70b:9cc3 with SMTP id 98e67ed59e1d1-3a2b70bb06emr269129a91.8.1790499871501; Sun, 27 Sep 2026 02:04:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 073/101] tcg: Generic expansion of tcg_gen_umin_* Date: Sun, 27 Sep 2026 01:59:43 -0700 Message-ID: <20260927090011.10724-74-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500141781158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 c7dafd2773d..79a2716e29a 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 de3feeabdb6..7d1035a8c84 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -60,5 +60,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 3deaecc7e0b..904c3ed0e1a 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1052,6 +1052,15 @@ void tcg_gen_subfi(TCGType type, TCGTemp *dst, int64= _t src1, TCGTemp *src2) } } =20 +void tcg_gen_umin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_umin, type, 0)) { + tcg_gen_op_ttt(INDEX_op_umin, type, dst, src1, src2); + } else { + tcg_gen_movcond(type, TCG_COND_LTU, dst, src1, src2, src1, src2); + } +} + void tcg_gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); @@ -1349,15 +1358,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)) { @@ -1871,15 +1871,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 Sun Oct 25 09:31: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=1790500110; cv=none; d=zohomail.com; s=zohoarc; b=WM+Er8uMw6yHQ71FmFKqQqmMwV1Lh1BIOe3oG3GNXOWDiYvqwgB+liczHbBZa/KUKA7xQSkAjMxQZHL7lp4bBuO8Eyb7GAkXTpd1zu/fP0dRFO4VNFYk4w/O0wqTpXillta8Zyssr+gZHkM56E/8ebEKPWlNnaIdmMK48jU+ozw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500110; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rEkPXMSWXNoSRGoSWGDfDahVE4EYg98Vs5PGaNTxmfM=; b=EQmb5OQrvZXs0QFatGLD43GhpVYSDxvcDuzFp/sUmsN4AYSgWmPDDGaLctXoczZ4pH903VNhp8+Cxmabc25AIjc7mu2Vk3VLWZLXLbqKkj5kk1g57wAULfsNUZAmjH+b2b5NvnjZD87jHKaX3RutAwSVEgLhXyTHlk6oN1ekJCg= 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 1790500110074138.2476068633897; Sun, 27 Sep 2026 02:08:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpt-0000rT-SN; Sun, 27 Sep 2026 05:06:20 -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 1xAkoF-0005Pk-LM for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:35 -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 1xAkoD-0007hu-T6 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:35 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-39b2ad83dc6so1441863a91.0 for ; Sun, 27 Sep 2026 02:04:33 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499872; x=1791104672; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=rEkPXMSWXNoSRGoSWGDfDahVE4EYg98Vs5PGaNTxmfM=; b=uAHZBYfzO1ruB49zbI3T/dYXEK14QZ0OV/Q+inZwUgc0CzwuGhcqXV3rMjdI4fITqe NCpIT02UpoJY4LNZz1xOOfFzTpcDeisfJ92yQEyzPKIslppPdz3xppnhVAQ3JTZi/TAo zfLIItDBIPY8ooS7KaUtR5OUO5jkxbGzsbzPvfZLNyErCBaaR2IynGsCYyyI8Ik5359J 1lqMWf4Z/MaFgH6JcGZtd2UVfLgHEkJn0QPfR1gl9fKiEFv5K+Zo2dZcBI/0ZLJvzYwn rqBeftzeAxp6BIzv9x2g4Y14+r8sUzRFChGZtZIfOsfX0vD06O7/LeG0LItrW+kX7FYV FcZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499872; x=1791104672; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=rEkPXMSWXNoSRGoSWGDfDahVE4EYg98Vs5PGaNTxmfM=; b=eC/LnTtlb3ABKfHFPMXY40M+xQ4vqXepzAoQPNiQMy0GLuQbu0f3jVFoUEYcO8f5cD OZNfH+7fBiKq9xWSDv8Bbb9C0TA2iQbaQ8pUxSLeiDA6a8ynbtVP42csiUigEv9mEY/b tXuY7S4U6FjRn6Q/9qS6srNedCrda9zb6fI7UpCCN4rSDQotshDNjNzOt76R+/2NsovF IrWKS5sizp14qUXEwjfyH/DebrcEKxk4CAcM7MXb7Z+OoKh2C66Tl/c/PpzJubytOPzH yMyOwojYsmyarHJMyoUX6gIJR5fX3garv+zRUB1XgkZ29ZOZDeWZo438nfwY/dd0ilab RSkA== X-Gm-Message-State: AFq9FYK8fjT71ike9FuAuCsYecz3Ji0sPD78AGU3sstwUG55hibs+coz EU5EF37HokxIH5V9/jgsIV+l6/4pDn7iFlICAAvEmvQhJZzwvp0aYEbz3n2CZ/KgdqB+xXoauAn mVX23 X-Gm-Gg: AYBFou01W26qWNnwFtYrXhZSzUqkBKqNRKsSNXUH4J/XA5vNILtAbyctillaUZk15Fy dQ8uQCPd86oUMFUbwlizACV1t09qBOcvS1mYdCmU3T0vAMe0TXS4xTqRR0TiR9G9ByLB+v7cBCQ KtXyuI4pxOpdgWDuUuUr6jaM6OU1M7B+HIX7L70ERGXLo8NKdfFCcJ8wmiQ2s2KUZYjV1m17Eg9 gYrVT2wAFw5lrU3cQcczPV+7pFsb/83f8LLMzZeYogYCJhj0ph6O4z3819eX9dB8j6tEg7+ZsG8 zUnDkvsO6ZbXCNkly7Fvw2pBpo+9wQER8saLuWqFwEc54BUiKMbpD6qZkkHdZSz/jV3E0wMHf2C 1BlwCvqKQAj5ugYVVin/SV1TTPu+gokxUJ8X+UrbCYSDCx+qhjnkMVeHZ9LwW7QBQl8+7HNl/P1 tjzsexMwSuppBnMeivH6PeEOO22GCODIGmAt+ZH54LIyCP9o2ZdkRw2jEw64xhE+Wo33tanaKsK rEfExPHMRz+qjqGmXrzS8GOgu7Tww== X-Received: by 2002:a17:90b:2b45:b0:39e:6a7f:1dce with SMTP id 98e67ed59e1d1-3a098db96a8mr8902831a91.42.1790499872470; Sun, 27 Sep 2026 02:04:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 074/101] tcg: Generic expansion of tcg_gen_umax_* Date: Sun, 27 Sep 2026 01:59:44 -0700 Message-ID: <20260927090011.10724-75-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500111686158500 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 79a2716e29a..18130617966 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 7d1035a8c84..3c93c207044 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -60,6 +60,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 904c3ed0e1a..d16830c8dca 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1052,6 +1052,15 @@ void tcg_gen_subfi(TCGType type, TCGTemp *dst, int64= _t src1, TCGTemp *src2) } } =20 +void tcg_gen_umax(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_umax, type, 0)) { + tcg_gen_op_ttt(INDEX_op_umax, type, dst, src1, src2); + } else { + tcg_gen_movcond(type, TCG_COND_GTU, dst, src1, src2, src1, src2); + } +} + void tcg_gen_umin(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_umin, type, 0)) { @@ -1358,15 +1367,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(); @@ -1871,15 +1871,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 Sun Oct 25 09:31: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=1790499984; cv=none; d=zohomail.com; s=zohoarc; b=SjQNnb54HmQ6M84+EmMTLOTUsxzRyuTWPTHXZXvRNGCtguWBJO7z/ekYzvlAP6GwhJ4Jb9gAz/5rQ8fuOvBmpwlQTAArZnxNGbuWvBLa26Kz8r9gVugihAins89ROFplUd/S7vtaG9sM9CFO3l1M45JLBwcY2Vd6c6O6wb2oIXk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790499984; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WfPDqQtDwps6T5uO6+6Bxqsag86wKBxeP6r86jxsUmQ=; b=Mnw7HIiTUC9tgUbMerchclLaFY6K+3Qz33OfQBWy91oQDF4aMLHRde5enov3bv3hf71VHGMxJ/MeY9C2V+8/v6ohkU7XRgo4CWR9TDcOS1LP2NgJSdyw9/Z4uejDGY9GLR3IaaqywcyYxzjSprg2SHqIyo4Li06RUj4zqgIRM3c= 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 1790499984762132.46375103989078; Sun, 27 Sep 2026 02:06:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpk-0000WA-Uz; Sun, 27 Sep 2026 05:06: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 1xAkoH-0005XL-0f for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:37 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkoF-0007iJ-7s for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:36 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0bec20a6fso794986a91.0 for ; Sun, 27 Sep 2026 02:04:34 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499874; x=1791104674; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=WfPDqQtDwps6T5uO6+6Bxqsag86wKBxeP6r86jxsUmQ=; b=jt0BzXZNrFcBPbbeKRroy1+wOBPqUgisliq3Bmy+UobcQYCwVd+krh3IYUWMaZ8Ya4 Wvxln8Vf+oKcZ5dAEZLnxV7WmNqR2KvCzqRdFYE6P6FljTieG5qVJnVzoh4ELsaILggw akmj7EX8AeRaB7mK+ziWyq4NmoV5MOx9gBiqxkPh19Yr7YMjn2Z2N1lMC/oHtd7VKmrm pH88F2216Pc2ygSY6JUsspeUm+JCubRpr/5wFGy4Jx8QjwHXQaKMPyNHpWLryqLpCc0r VpqIacuT55BKX+u7m8hnrgo7A0k2bcVtSsgoG9MPAfWJdJYdcBSNS7IxZnnHWtRyBy36 592w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499874; x=1791104674; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=WfPDqQtDwps6T5uO6+6Bxqsag86wKBxeP6r86jxsUmQ=; b=CLDYSMcMzssTeWj0SmotA+N+hC0XcilXptyu8n7lmTeICaWTqEz+zfXdZmAJL0Qz6F v/qGIb38nkXeWFKO2qG4ibqMFx2Vog6sV4+J/6KbZT9uP4DnhUnj2m4LeNlZoWW310UI wxkwdCgMA2PIA/W+WckUvsO0zbieWStx/B1IoFIoGMBGKu6cLtBQRksh4ns48uYEyPxq avcrOyQHWoPeEgxoBsKmDGzn51h2h43M1K4rS+BmBoaGCON0ZVvRPHpmIjFIzgP+W7i7 XQi/3L7YHJUg62Zinx4hvOHWoGx8IeWGiDW3yasBZzV1ttSePo1p3MkGoaDc0hDX/V8E bSTg== X-Gm-Message-State: AFq9FYIJ+2WTPpQgC8mS3smmKpD90hfhhY8oPr7XuTYIhc/T2/OAMjac 608IJ3DphWDUQ6PMGfo6nxbU0z0i+GCxH+js/dIbLvOJ9ujj/TNyBht5Y5W9bYe0aBKdwsFZ8Pu YjTNO X-Gm-Gg: AYBFou0PadFQxKvFpiKPcAPeFb/djKGRxynkFjnVnv1zpo4D5xagHXaStAwOvfEiTQa 7F7famd7tV6KHoMDUl4jU81cylycuoLik80TZ6cRMgovhMlOrvlVJqMd0EvGYaMVgLwLu2olbRE BFLuJmqn/Ily8rfEJMnTDKuTurZFPFPdhQ4aLcXdmFeoOmP2cz1r+uA7pJJyMCYeerdkREM99IV wH1Xc3OIY285RVmlZRNKXPC6hJ3XpPwG3Eyv0cTDAO+fNwqECgPCppPNR1Ux1QgcFPdmirk/4Ir PAoq6tm6wOPnqoLYdlYQlu+QOPYYTpokjkmYQmgg8qcJlJGroz4vAS6Of/1OTLC/vLkb/TXHjpj z8najnnpXFDB+BLlqXJrbgspo9ChRQvv+7WMH0DxdazpwjXwULvgu9JoBHonzC649JUazPt1zll OHZEZg1/lhimuIVnNVIwaceimUMM6+SPaQcGGzlNbcwUWSmkk35EkZGF98PeM3buo0Vv+YzYc37 /fU6ePK0D7eyU8C38ePfMY2YuzGIQ== X-Received: by 2002:a17:90b:1a8a:b0:3a2:bb9f:f87d with SMTP id 98e67ed59e1d1-3a2bb9fff91mr47867a91.21.1790499873752; Sun, 27 Sep 2026 02:04:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 075/101] tcg: Generic expansion of tcg_gen_abs_* Date: Sun, 27 Sep 2026 01:59:45 -0700 Message-ID: <20260927090011.10724-76-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790499985222158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 35 +++++++++++++++-------------------- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 18130617966..91acfefb1a1 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 3c93c207044..19c6347fa7d 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 */ /* Templated TCGv_i32 and TCGv_i64 operations */ =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 d16830c8dca..67145b43d12 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -331,6 +331,21 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) * are of the proper type. */ =20 +void tcg_gen_abs(TCGType type, TCGTemp *dst, TCGTemp *src) +{ + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + + if (tcg_op_supported(INDEX_op_smax, type, 0)) { + tcg_gen_neg(type, tmp, src); + tcg_gen_smax(type, dst, tmp, src); + } else { + int width =3D tcg_type_size(type) * 8; + tcg_gen_sari(type, tmp, src, width - 1); + tcg_gen_xor(type, dst, src, tmp); + tcg_gen_sub(type, dst, dst, tmp); + } +} + void tcg_gen_add(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_add, type, dst, src1, src2); @@ -1377,16 +1392,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); @@ -1881,16 +1886,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 Sun Oct 25 09:31: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=1790500113; cv=none; d=zohomail.com; s=zohoarc; b=kTnuVwh9pVim1uLt1h/wxAVAIITywUe3UoqzJd0YXvXdiq7hr+qc1BlgzvUV1gH42Je87/b2cknnmNtLMMtSNj0yOMmyL5R9yQgsAXVs/Pt/ihXXn3Xf0fgAV7Dv8ttz2cmfKJl+ltCirYOWuSYCaAb6LRKV/TyJB5OoskqheVU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500113; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=H8T41gabBwsFE/qCroIgcfDi4e/REwzGERsP1YK8lCg=; b=nRoBHA4mt9hPNRGufsZ8FF0HFgNVD77y7vOYEQtF7AgbtsX5mCK43+O+GuqRLCEZ3a/dlIKHydH9L06ERvVGgdBQiAx5YrO0+FBcBDKF0UryJwKdkUlP98gMor89Sx9/uY5jCGGZdALEbs+kNaOM1JOaHT8x2sXSMZbGdYEAC4M= 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 1790500112966880.133779970398; Sun, 27 Sep 2026 02:08:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpY-0008Fn-Du; Sun, 27 Sep 2026 05: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 1xAkoI-0005Yf-3d for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:38 -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 1xAkoG-0007iV-CP for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:37 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39b2ad83dc6so1441870a91.0 for ; Sun, 27 Sep 2026 02:04:35 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499875; x=1791104675; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=H8T41gabBwsFE/qCroIgcfDi4e/REwzGERsP1YK8lCg=; b=jc+3Tm2i7g95fcccAf1JdAeDM+p4lhIrkalh3LKPId4wezsT8y4R7nmzway7iASXQC 9MwnQRzOhLCYAAFRIiWJAejWYd+1gjh841yIVMAclU2sYRXn7hRoZVzrAWYtEyrDLJ/s 2os3XY0hmgxwhgAL966wuisrn4uG3MSiW/hfIlE6q5AGS2LELcgej9B9tDPZe+Xv/A7P YftIM9Ut0l4emh4xNGCDyahL0sqCA5FUfohUrQNVmSFs4fUrTiQJzn84vt70e9Xp2Ffh 1ahhdr1aiTjLRfB05IPkIHo6vaXof5fYA6zBd5Xz6oeUscf0hmsPdIn6tN8ObRnv2VtF +nDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499875; x=1791104675; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=H8T41gabBwsFE/qCroIgcfDi4e/REwzGERsP1YK8lCg=; b=GNRZoxqP9NFiINI3W2HSAbj0eU1uNdPXDjpXxL0mDH/q2l0wg6oga/sEIy4IeeZt9h 58gUz4DnDlyjoMJzf7j/UJG8SjmMEvh/MuE93PECVYUl7CiE0qpm/htyiCRNLlRBzyMV 3tYIpOFOtDNkRhRXILr0RTh7q019ULN+tXF+A324X/I3qoOzD4rLUj/IKTEbuRlXtGDh 0nu76EhMlczgcv1NzMA9kE29zhDXfDvUdSXALP31QUHnbm/DL1IuQ9oo9BfS2Dw330Tv clJEmVEJMdxxNgxVX1/SFGbv9TedqJiWN30lAoA7SzoHh1sixqrbYXl0GpM9RAC8MGIi qafw== X-Gm-Message-State: AFq9FYLDy++cdcugpawjmV+8CwnvGwGt8iCdNjRSvwr24Pxe3pLkVLCG nin6i8XiQWFgb2FRkS6hFBQPCvKDIRrqc9xuopFeQhDIUEfUIXGqctTKTyG/ow5wwv/laUlRnJP FqVTn X-Gm-Gg: AYBFou2nf7xybO3I7OnMHH+F2npnykDZqdN+dBY3EutwZq5L35ypyeQtEU5K1/8xvkN BOek+cBrZfzPaXYggjFZuaqoRACaysGOeXUK5f40A31Olkw55IjwTvL0H/utVNpVoQ6ixkNbrxf 35xQPRjWfXd4XeJL4UAgaxacY1EOVBo3ib8rKAfmq9SwhvIEWur3tBxgZTUaFglevaphKMiWmKh umRKNVeDj1VJufuCSJVKGzviAE3j/KVtWfGAT5LqHYCJrHdbWBj4Rdschp477kovmNcI/5wFqbL Tx/pp/A6o0FPd2Wq5TlMscXSK3mBLlwm5534KV7uAfDwvpVvqomEmXInYpv4Ng0OTd+aKmj2RLW aYKFD8ln2j8Enoa/thhQc/8Bk5iZeibFevGyMGDNkZ91FvazMsGHDH5Gdon/oIa6dkkZhTV16i/ oCDwiFbuwcHgofbuk2Q2KuMLxNesFcBefBFpJpuTP/V6f/o4FctEiQnJrCmuRU8/zfCVTD+rAp6 4C6/iG1aS+++L+VAW0gTG3/RPEg6xCRQgYujrzf X-Received: by 2002:a17:90b:3c87:b0:39e:4c7e:f040 with SMTP id 98e67ed59e1d1-3a098b9e6f8mr8286741a91.29.1790499874668; Sun, 27 Sep 2026 02:04:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 076/101] tcg: Generic expansion of tcg_gen_ussub_* Date: Sun, 27 Sep 2026 01:59:46 -0700 Message-ID: <20260927090011.10724-77-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500113747158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 91acfefb1a1..040bdbd24a0 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 19c6347fa7d..82dfc90009c 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -63,5 +63,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 67145b43d12..a1c1bfc8912 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1085,6 +1085,15 @@ void tcg_gen_umin(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +void tcg_gen_ussub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src= 2) +{ + g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); + + tcg_gen_sub(type, tmp, src1, src2); + tcg_gen_movcond(type, TCG_COND_LTU, dst, src1, src2, + tcg_constant_internal(type, 0), tmp); +} + void tcg_gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_xor, type, dst, src1, src2); @@ -1382,16 +1391,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); @@ -1876,16 +1875,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 Sun Oct 25 09:31: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=1790500298; cv=none; d=zohomail.com; s=zohoarc; b=HeeqoRMkePxZeDPEVpoRdScNuGF7mtoNaTtYansc8rgqiKT9cZMWCrqJyjD16FEjE1z1zSIrDXlSTwXPKluyqTl+QF7k1ofeTs5myWk0LkM8yvFbKhrE5qvZgcOm0Gt2s2onU6lw9gRk5C2vZl1UpaXpEw9WpquMxLgpJ+mVGDI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500298; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MUz4jdu5xIKHnbLeGk9IeooxVgpWMi18K36UZ77MUH8=; b=FYLk2wPEzSGZm92HYNnBcIkAMNm/EFsq7/WsVeCJoEDnh6aslyi1ZZiJaTBktV1p0bUbyp0rjCFigRmZjG/Ky7maRQDndowg9Jz4aLRYhtbTDbT9zOrGNGGrvMoQwhfivtPYnPsTwErgOs/hA0MyEh/A/M8ujgquGyVdakXY53Y= 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 1790500298110127.89032207934542; Sun, 27 Sep 2026 02:11:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkqK-0001PY-6Y; Sun, 27 Sep 2026 05:06: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 1xAkoI-0005Yi-9Q for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:39 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkoG-0007ie-Sw for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:38 -0400 Received: by mail-pj2-x0d.google.com with SMTP id d9443c01a7336-2df90e859e8so6133925ad.0 for ; Sun, 27 Sep 2026 02:04:36 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499876; x=1791104676; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=MUz4jdu5xIKHnbLeGk9IeooxVgpWMi18K36UZ77MUH8=; b=afgPbbf6+XpxIqYebbN42upzg19nzvOay7d3fA0m1MuygoTi80qI0ChrqoxzMyrMS4 O6lfUA2jA8urwB59ZFzaBNppBXtC/vW+zLOPZpPPtEBcfK9S3CeYpUKuLEBQTclt+ruH Ail/vA7i8CXd4t/glpGFx1tDHmsLgG9dafVqG+WxbhwBZycf2qmLEOh4FQ2JnIoCET/M nLOAeP8G9diyTyb10euhbi+lsxpgBdhIxmzHbfEFIOZ1sSj7Ql56vbUrt7gfdLz4Fasw uxbBj7jQhg+VFATcs80KQhYSpQCXcmwrg/aadADOXuKmMmtgUbLOJ7Lc3fBM/bdzwy8Z yn3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499876; x=1791104676; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=MUz4jdu5xIKHnbLeGk9IeooxVgpWMi18K36UZ77MUH8=; b=RpXP9x7jaLHWaDXBvYlmV9J4fQvXRCysQtSa2ZuTGyTdYDZlX0XYcXCXfIWbXtiDZN K/8NjkG62rb4qqUXMRP6MI0PL7c8lcsOwtD0XkD4E/O+AV/K/HWjk+YKcOutY6Nt4aHD mjvJpbpLoZ7LP4Gm6lI/ZT2v91hdjtQMRZuqmovpSPHlgk2YgS85TpsVA7jzd1ICf/lM SkLaHxtGHBt3LrefVJ5anF8Tb3wnMD74tW7z9G5j2c0kJ1lumQj7295u0+vlFFEvu5cy gpCmw+tpvVD9RY5WlHV0RRsHACY4PSE09DBCn/jqe4gpIK645y6H4Ka1sCvEAVEmeAZ5 oFUQ== X-Gm-Message-State: AFq9FYL30xy+zKDLGDv1AKj/l24P/+qN/jzZPDYgKuDpABqnXcqbZs5w UyDw9HurcgLl5rWCY+45y/WqLE7XG0BFlBPlW0casaOd9VMFtShmPrVdB4D5fO9XKKVMdrfoofB j5c0f X-Gm-Gg: AYBFou1Hg/qDiwYX8Ek7MMkkTmi5lO2/8IvOj1g2yXqoc6nrrXMgE+oh6nxuaT3KKBb 1I/2QP9TuJ5fpURejGmBw8C6ad9fp1al/G+Lw8iJ5Nva3k8AEO70wPTeuRqIzuCQSa0kl9ra2Ob ajGN+9uFS+JSGF1uErATJCZ4g/VPgZbiO4jRe043OdZx1ji2mOCIBjuXj2geqdwFVxh0pYH7xg9 5E9Vn9qmlfZOu0k0JTGuZ4hl3iwSozpSV0Gnuo2qubR2yWtgMgzEqyqsGpJxnYAZDI+Mtcl0/lo vPu2Z4+1q7Lfol1MdH3rvKiiQIDXc6XX+k3edWKTId/AYZoOTWtWRQKhqaXsGL8mHjtxwtyCIHk /Yp9AEkGy6SzVqik/1iiI4QsRpgfA4h0pt2CXx7BoopSuf9tJL7ITt1d8JLkRtjuoW4ARv4VAl2 QsuRn7IV0xciGZs5QK3AX12PFpz4VtI4nAEbL03A4AfA5U0ogTntbLDpmLlmRPhuY4XtisaMVg3 MA29LGpxF/CICK28T7AgMTrLf/sFA== X-Received: by 2002:a17:90b:4f89:b0:39e:6c68:fd92 with SMTP id 98e67ed59e1d1-3a098b92d1bmr5624044a91.39.1790499875535; Sun, 27 Sep 2026 02:04:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 077/101] tcg: Use umax in ussub if available Date: Sun, 27 Sep 2026 01:59:47 -0700 Message-ID: <20260927090011.10724-78-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500299933158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index a1c1bfc8912..b7b3451a4f8 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1089,9 +1089,18 @@ void tcg_gen_ussub(TCGType type, TCGTemp *dst, TCGTe= mp *src1, TCGTemp *src2) { g_autoptr(TCGTemp) tmp =3D tcg_temp_new_ebb(type); =20 - tcg_gen_sub(type, tmp, src1, src2); - tcg_gen_movcond(type, TCG_COND_LTU, dst, src1, src2, - tcg_constant_internal(type, 0), tmp); + if (tcg_op_supported(INDEX_op_umax, type, 0)) { + tcg_gen_umax(type, tmp, src1, src2); + tcg_gen_sub(type, dst, tmp, src2); + } else { + /* + * While umax can be expanded with movcond, some hosts can + * perform movcond with a zero source in fewer insns. + */ + tcg_gen_sub(type, tmp, src1, src2); + tcg_gen_movcond(type, TCG_COND_LTU, dst, src1, src2, + tcg_constant_internal(type, 0), tmp); + } } =20 void tcg_gen_xor(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500111; cv=none; d=zohomail.com; s=zohoarc; b=Lvmfz0uFUYm3RF0PRJTgBdjKFJByg+JCroAslpCdWLyHfuzOj/TonuB5UDLx8AUDQDxHZA94M7IzDChALr3PuXfYgqBMWVrAKTsODtBwkpa3OQLDHq3xB8SEXS3l8ArIbia8Fdz6OuWgga8zbjWLbwu6bzRh5iO2lnA12I/nzx4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500111; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RMEAXlsTa7TeoQW/m8y8mJaD79gFnvCFZjybF+jgecE=; b=lkCxpNH60GUkc+fFQjupDWZy+QuN9tTuvKdxe7R3cLwKcHFHGL9M+eOR03taa1lvfEtv0H5OVVSuoAFFrDe5FvV9sEFdolENmtQis/onHbGuZo8gk3OYdDTOwANKbDto22xzGyU00gLfH0A8sK62ldV12acDBQ0ZHOvzrdKAgLs= 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 1790500111121164.28734548809723; Sun, 27 Sep 2026 02:08:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkqx-0001n1-9D; Sun, 27 Sep 2026 05:07:25 -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 1xAkoJ-0005c7-SX for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:40 -0400 Received: from mail-pj2-x0e.google.com ([2607:f8b0:4864:39::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkoI-0007iq-58 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:39 -0400 Received: by mail-pj2-x0e.google.com with SMTP id 98e67ed59e1d1-396ccd5cf02so1090326a91.3 for ; Sun, 27 Sep 2026 02:04:37 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499877; x=1791104677; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RMEAXlsTa7TeoQW/m8y8mJaD79gFnvCFZjybF+jgecE=; b=sd/WNqOyJUhI600kogoSnHU702usy5J3VNqobFzEYJAaTsgL401Mc0cltlIN1txp1A 0g2Zxuuw4YUmA+3Fw9uY3kP/AbvhdgXoVReuOXSwOVNn2YePRiASrywSy2nlTmqFrRWh IinuFCf8pJ5EAelab5iQhl7q1ONA1+G5YP564N7PkuheoSYC+Vem0VTCKdKID0hHm5S0 IaaFqQ2baBcUM1eQtmLGLmI9kj/C8uVO0eVtnLP1EgWl/3qaiMaCGr0opwbqS3HgoINL GB4cfwV8NQelii0A3vrvwjIS8mJvSwDAdTsRKpXL4chZGM3koywHOmxjhg7a00DMu8kk WBXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499877; x=1791104677; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=RMEAXlsTa7TeoQW/m8y8mJaD79gFnvCFZjybF+jgecE=; b=2yc6wjwQhaU5ajGo4Ik8VNBRGzCifiwIDQONcISU5vWO3EWbitcUExRViANCzEqd94 eEM3nVgCH1uhKI+uj2BbVhIYH/JPETeqFmcpLtFl/S18A18tjQMMbB/YmmEBnh7yWuPF JvAZaltiMrcZ6Olqh+weFTe8B2Z82/vJATEsKgrNDPOA816EjGxc7G1G5H1asugcd1fx NtWE6FBYaMalzAWgQmIVBRi4nddF1eNTBr4AO8pguBt7HFCIwlvAg1/dHLLd3DRjFynd Vtm1e7jdlDjBO012cprjyAhjK6NqRl1x5qFX71sBqSbB1r7Q8g0F/Ra4XPzABjs0L5w1 vrPw== X-Gm-Message-State: AFq9FYIKWhAsvs0qZ0c696ZEl9ETC53adwsFJvRh+OgDKnBWcs1Lm33A cHKPVZAcfmhHtROvdttdr4p8O8MHMBKoEpBkKgqvJO8f069FwE3Z2zIVUBarRmBGdycazG/Zvs2 xOR19 X-Gm-Gg: AYBFou2bXuSgFAZGEkdXbSwWUpvGn86DtnvqSYfRhi4HA8iBXnwxwIIlpI7+RrYgdYx Aaa3KMxS11O5LB9aqRoQWVVkOKIXSocDBJ+kwa4DP+5TPmBHN/uQz5+qBIiDonoieN84jZHym+r YCz7nI+sgOkPpISZrXl3YUOLv5VUMI5bEwyEAPvWISpLWJeGaQId1l+gX+lb6Z01IPwZCdrtdoX BgIbP3uCOvAVGcQtzTYzk8JeklAzlGTghiqEJRk57RjHOuwlw7aMN+HWdxjmkTnvs4VFbl9nolO pIS0Ie2Z2JE1aocPfvQ/H22sdwZmU3qvdF0vmK9kllVq5mKo93GQX9EPYOvwWhYD93kKMoD2JTm gZu0OgK2jLlLBLdmb/Ubh2TvrWBDLiJLz4XBKuJ6DN4ffk9Y8F4J4Zz7Mzu8Fvp9VOEDgdE2Dqw eWm4O2ni1o+SpmZfp4+6LVMh7WE6po8lfIRNEstUM7YLQOQ6Ijiwk/R1LNUqCtd78QKP/yRCv7N nlamHJuf+LCxRjkkiXu7jyB4JaFkQ== X-Received: by 2002:a17:90b:1b0c:b0:39e:6c69:f46e with SMTP id 98e67ed59e1d1-3a098cf46damr8586059a91.45.1790499876714; Sun, 27 Sep 2026 02:04:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 078/101] tcg: Generic expansion of tcg_gen_extract2_* Date: Sun, 27 Sep 2026 01:59:48 -0700 Message-ID: <20260927090011.10724-79-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::e; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500111686158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 040bdbd24a0..9fbf582e413 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 82dfc90009c..a237ccd0c51 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -26,6 +26,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 b7b3451a4f8..98f21004a84 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -183,20 +183,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) @@ -693,6 +679,23 @@ void tcg_gen_extract(TCGType type, TCGTemp *dst, TCGTe= mp *src, } } =20 +void tcg_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) { + tcg_gen_mov(type, dst, lo); + } else if (ofs =3D=3D width) { + tcg_gen_mov(type, dst, hi); + } else if (lo =3D=3D hi) { + tcg_gen_rotri(type, dst, lo, ofs); + } else { + tcg_gen_op_ttti(INDEX_op_extract2, type, dst, lo, hi, ofs); + } +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -1122,25 +1125,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTem= p *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) { @@ -1677,25 +1661,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 Sun Oct 25 09:31: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=1790500264; cv=none; d=zohomail.com; s=zohoarc; b=i1UtNbeTejPPY6yrPSE+Vw7K1nsUtrrIpWf+X5X3DQI+KOuSFFECPCYfXie/xj3kqIItf2NIBnN63Z+TzDGg18a88sln196sA2LHh/NxNpk4r7Lho3NRR+TV+pwBm/zABi0/h9mYfFRPZ+jXviinHy1e2d1Pg+wezObXesPVQ+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500264; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tUUNLz8lYScv/+rheYXCIAhl2z60y1qLZmtOekMyZPM=; b=X5559mIe+HvS2ISrMrnz6PENAsJPwwpHU+BRtgTy2kLTgRB8RpyyOSE5reR2qBSzqrqf63QsEXMQCOayHZ4JWpnPZt4ygICGVRwC7+YToH0VnBWwcl5odnZj+HTGzf8uWLFpziczj99zt3dW8EWEI52CePs2UpKGdLsWhZCHGXg= 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 1790500264486378.84433859646583; Sun, 27 Sep 2026 02:11:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkpM-0007zR-93; Sun, 27 Sep 2026 05: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 1xAkoM-0005iQ-IJ for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:42 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkoJ-0007j9-6b for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:04:41 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0d31bda43so888650a91.1 for ; Sun, 27 Sep 2026 02:04:38 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e0ec367csm2916932a91.4.2026.09.27.02.04.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:04:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790499878; x=1791104678; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tUUNLz8lYScv/+rheYXCIAhl2z60y1qLZmtOekMyZPM=; b=nkaPnA7pf7MDU+hypg4zHicz36C88Tc6PC0Bltc0s6/fBB14ps8t4ZRa2kvgCm/vyC aSTucDbpbWB6KBGR8LkDvWDQitPcb8krdMmtk207gvxie6hOr6LfhGXN7oVWjOLfn8wT QDFJcsPDaMA0fMkDKSLBIH1b0HUuMLzanpoN6BYNbF1gbI0mgNsBHkZ3/7IiZqWbKEaF toD7SX7Ye+PnIGChRgPxlxn8JtpkfcuEX7RsuCMO4b/LNDZzEYeil3WsDOH2baSginVN AFevysWSU7kx7YNzcIyEM57UQCzCseuW/ALV+ohbM4R9QqLNchmxqbVkqPL6FOeBgsMp Je0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790499878; x=1791104678; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=tUUNLz8lYScv/+rheYXCIAhl2z60y1qLZmtOekMyZPM=; b=na0lTnrb6sgLU8dSfKXtHkQldUpmTZrHZNWwWmxv3MCL+pul/tN7vWHkmxhDg+3AqO /65pGChGJL6qRrWf91H3OqT206C36gE1yIIk6UBhGjlJGqHGqe/BND7cte8Lt9HCz+oF OF/baDLo6d32104kHJSRpxRla5BsGl191uL3nnGSDv0fwK8xIabktlxEaxHnMQ1TInN1 u3HljRl4kxNLMT0fIbUCnVstkb4yeZaNK+UdkE7wfGnJcwU2PeAyYGJCMCG4g6RHJWVE htH4MOVADSulO43oNGF1kwiEMs8liddWA3TC/eVg+5HqGmaCa6JE2lVwml5FHGYiuM2E Bq1w== X-Gm-Message-State: AFq9FYIch7KDkKKrdp0rjhOuD1nIr50RWi4Mnc6g3siID3EsQM3TOL1t 7fLNSV9qx1hV8JA6GIdiz9iOH8xyWIMBOPHtRqLtbTeLXroqFQlDNF6DuEcgep1f33kaQkd0l9v deNgX X-Gm-Gg: AYBFou0h6TUU62zta+xm/Je/6LxaFpRIMIZk1HYlCNqyvJiS/EgWOz98aT/SUrxu32S 9BNXyo0Nyc8VN0TlwHhYpTFqNhM/4HrcV4Bq/BxIC58M5AYLwRT7MXFBUBDqWUJk3mC4cOTPIUo Tmdkthav8jmxh2FgD5g/dUR4ThZ6N8PoPnAVCRegvjOz6ypFme6JCoKh0E8PA0BqtT8nOxNeg4y /KyI33gK0To5VerzOgCcJ6G9yUdQ8Bq/erUM0Y+knyATakt/OdBrXb91fBCCbEMK34H2q+XA50v VNiJOjD+gFiy59rlajKYu9DYsK27uEbZXoGhlcYoPSOw77fDHRfrRYWi2ZWbpFNZbeGvkJThIJt IBV6nNI4NYuG4lrOmQJWxncosGFiKDO9mGr6hQHhm0n/i8Ur65qsU+JU5CGvtMTg2gTKhIiAMUR 8OjC6iP8d725/RM2AiVvyhnkRKvc7qIb3pLYojhEOLNyKD4qr6M2WFBqYooluosrlRK2TLmFjPV hO6DXR6EHBRmiws5uXduiDBVrh/VROENpcsyr3d X-Received: by 2002:a17:90b:4c51:b0:3a2:a576:f67a with SMTP id 98e67ed59e1d1-3a2a576fc30mr1314001a91.52.1790499877739; Sun, 27 Sep 2026 02:04:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 079/101] tcg: Generic expansion of tcg_gen_addcio_* Date: Sun, 27 Sep 2026 01:59:49 -0700 Message-ID: <20260927090011.10724-80-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500266204158500 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 | 77 +++++++++++------------------------- 3 files changed, 24 insertions(+), 58 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 9fbf582e413..9cc941478ba 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 a237ccd0c51..003384b65df 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -4,6 +4,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 98f21004a84..eb59bc37631 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -346,6 +346,29 @@ void tcg_gen_addi(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) } } =20 +void tcg_gen_addcio(TCGType type, TCGTemp *r, TCGTemp *co, + TCGTemp *a, TCGTemp *b, TCGTemp *ci) +{ + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(type); + + 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); + + tcg_gen_op_ttt(INDEX_op_addco, type, t0, ci, mone); + tcg_gen_op_ttt(INDEX_op_addcio, type, r, a, b); + tcg_gen_op_ttt(INDEX_op_addci, type, co, zero, zero); + } else { + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + + tcg_gen_add(type, t0, a, b); + tcg_gen_setcond(type, TCG_COND_LTU, t1, t0, a); + tcg_gen_add(type, r, t0, ci); + tcg_gen_setcond(type, TCG_COND_LTU, t0, r, t0); + tcg_gen_or(type, co, t0, t1); + } +} + void tcg_gen_and(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_and, type, dst, src1, src2); @@ -1147,33 +1170,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) { @@ -1684,33 +1680,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 Sun Oct 25 09:31: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=1790500500; cv=none; d=zohomail.com; s=zohoarc; b=dNGbLu/UALphrJuAk7DRSGTvhskKLTrEQgQpcCIX1MP4oScjOjJhv0inDBgA28GUhsBna9zKizIJCE5SBIKq9DzDh9qf6zSI/Mk2R9MTnXS1CdwnWxKIImFVXYliH6wU50dwZhgSJH4jT9gM1+ny/R7xihoazYK30rgBGkOYlBs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500500; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Z+B0hqdtNJw2hTCS/123O1p/aL9KGAye9pteDfVSO3o=; b=l8mI9ASj3Uy171y1EafErChD+eBvmXZIr1yhYoBlhi+BnKL2wekfDHdi7SsLoeDddrkMZak89Ne40RCbM78ony+Dn/JPJfZia1TvtaJ4XbwHKAyiWGblPOPvoxGk4BBwLkZRpxq7yy7jNp5lSJ0nyGAkd5SbobPcxy7DVS8D5hg= 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 1790500500071625.035486291917; Sun, 27 Sep 2026 02:15:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksF-0006pN-An; Sun, 27 Sep 2026 05:08: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 1xAkrH-00026t-Dy for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:47 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrF-0008FR-Fv for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:42 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0b6200eb0so1603278a91.2 for ; Sun, 27 Sep 2026 02:07:41 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500060; x=1791104860; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Z+B0hqdtNJw2hTCS/123O1p/aL9KGAye9pteDfVSO3o=; b=v+HR2Pu4E1L086STarqro8GDBm4ez+MF6xVrc6P67bHzQvw+c/xV8I3Qjx69hJM6Gc OY0169MRQsyPLzSYjaI76na9QEu1As5wf2xzU96lU2exrC7SxFGYTV21xVyLzkkQOr/9 BGZGA5PZc8yTKohlP3TCxVVKfMQNEtP/d/NYbezgHk0UlGBLgWESsbOXzqrfWbyu6G78 l8aMk+MtiQnpIZMZFYtUik3ghSuRh8uqZ2exU5UjmedaUrAuSt77/bput0QlpNh+iWNO 1rpu6wuowsQgp7nMjD2uh/G7KEJSCmoEd6R0wPxaULOb72JvbARZcpQ5a/4e0BdCtBv6 QB0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500060; x=1791104860; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Z+B0hqdtNJw2hTCS/123O1p/aL9KGAye9pteDfVSO3o=; b=n45ujsMGT08jYEJspuc3ZN1U5tw4Ug7SyticmuDhu9o9cgZmnZ7L5/mwZdsMDh64Y4 8jDP7SRfFKNg5Xv/riVdX7IORGT1Io/scJrmvTA8G/9FsrZPZMWRNKKeMq4Fch7aNZ0c DVOpNKukR75+AkjXZCzME7za7VD38s+WLqoYY9/ZapJntnucNfihpKv8at4mTlZ8vshY xBZ34sMyrZgrPY9YkAZq2LowzwNuay7zWvxOS3fx86pvIxXg8GP93Wezk1rCLCPlTr6V yryPFJluU1jvQrmdFmKgxTZYBBfgzJnJ60Zlr27R865iC/woCgoZe05kJmFELKcA0uaw lUcQ== X-Gm-Message-State: AFq9FYJ92DhKMlj/9Y8MoLh66UxuChsXzNaS4uxHh3dg7WlhmItUz53y v7YfxT36hcIbq4b0Cdcq46QqJ71AFJA7zlE9sPNfU6t8BUmdF+bdq8tkrSFyFaqzd8clTzvmVqz b1BKC X-Gm-Gg: AYBFou2EIZdoEWRPbLxwSHT8CLhodjJ+dEebUQyjiUsARQ60xS0OwixnKbCXJCGbBMS jrQwtrsmUgHWEuzf1n9FVNDEfx9ApkgRSAS0g25v+B7YIH1CdZgDiflcxH2zbERbqAdNYXshPDk YGFuPRAIsZXR72MQQzAumw9DDYYxButuo/rWlScsZvQGreJtF2KvfXjRVyVXlQdoqQr+haWBimc YXqlwkCkGBjCatbHeJkgIbzeI6f39S5W7+nMsPXdbQfu04UgaVpERtSx85bbKgd8t+wLOORyrbi Qwcpuom7O716sNJ1wtGtyhJsT9WR1XTjfa9qbGI1oCnAh0GeqGoRbts7VH61qStpI8IZtDTWpug eoGkzpjlOJjVNAGDqNb32/4MyU2pAuTiykuHNEtOp2OZDoKxGTi7ud6tJjocv+5DQ6ly7WRwfcD wYnSMTxW9JrzPexXP+hQTSfZ28V90RAExoZnz6uWE+o5IuFTwi1FI4RoYry822o3avPWkaKrV4+ EnEXRQakKHnw8yeQsEZrCjZdceg/r8= X-Received: by 2002:a17:90b:1643:b0:3a0:345a:3646 with SMTP id 98e67ed59e1d1-3a0bb62f2d3mr6108657a91.45.1790500059570; Sun, 27 Sep 2026 02:07:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 080/101] tcg: Generic expansion of tcg_gen_add2_* Date: Sun, 27 Sep 2026 01:59:50 -0700 Message-ID: <20260927090011.10724-81-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500500573158500 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 | 64 +++++++++++------------------------- 3 files changed, 20 insertions(+), 49 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 9cc941478ba..0a1ff0c5b19 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 003384b65df..e9f0b971a2b 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -4,6 +4,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 eb59bc37631..0f478e65861 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -346,6 +346,25 @@ void tcg_gen_addi(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) } } =20 +void tcg_gen_add2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *al, + TCGTemp *ah, TCGTemp *bl, TCGTemp *bh) +{ + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(type); + + if (tcg_op_supported(INDEX_op_addci, type, 0)) { + tcg_gen_op_ttt(INDEX_op_addco, type, t0, al, bl); + tcg_gen_op_ttt(INDEX_op_addci, type, rh, ah, bh); + } else { + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + + tcg_gen_add(type, t0, al, bl); + tcg_gen_setcond(type, TCG_COND_LTU, t1, t0, al); + tcg_gen_add(type, rh, ah, bh); + tcg_gen_add(type, rh, rh, t1); + } + tcg_gen_mov(type, rl, t0); +} + void tcg_gen_addcio(TCGType type, TCGTemp *r, TCGTemp *co, TCGTemp *a, TCGTemp *b, TCGTemp *ci) { @@ -1148,28 +1167,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTem= p *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) { @@ -1657,29 +1654,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 Sun Oct 25 09:31: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=1790500306; cv=none; d=zohomail.com; s=zohoarc; b=jjD+usZW1D4CSQEriuckktKgBpGPmfw8SjPvOMGO57M61IEZBUhGweKYuexdh8fvjOCSM6GSiWNzPys0bvziF5ODik2DMjX8RntSAL5uEs+4KSxm+YyZ4ApXYq+JZItZQ8phUyOcV4dfWIJ3KsCnwc3KMBTCKZHKvmq0NjqCFtk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500306; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Zz2ZYDhFh1/+MTpRAJxkmZ5x0WPyVxB0ucW71kVadow=; b=AOWkGeefTxK3Jj4Kf0dXg4N/VQQ61AX6mYpBr4YiewNdDbp1VO2rLGOGGEFNxEwKrXNfuM5bRlwg2cErg13KYUporb0nxcd0BnyxtwaJRopoCIrblnrrzDibsowcMXcUzNv1vX/tw/phAODtn0rO0LramySO+jvR5jHKlw8UrEk= 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 1790500306624433.145840989313; Sun, 27 Sep 2026 02:11:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksp-0001lA-W1; Sun, 27 Sep 2026 05:09:20 -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 1xAkrJ-00026x-8y for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:49 -0400 Received: from mail-pj2-x11.google.com ([2607:f8b0:4864:39::11]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrH-0008Fa-99 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:44 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-39b2ad83dc6so1442580a91.0 for ; Sun, 27 Sep 2026 02:07:42 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500061; x=1791104861; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Zz2ZYDhFh1/+MTpRAJxkmZ5x0WPyVxB0ucW71kVadow=; b=JXDeeWZOXvKfbV5+F2Xwt2r8cq3JMV9Pr+dEI5j3UuH8rdDm019XnKR4yCt2+1Sr/B uFiN57YFFZG49PYXOz0hWkM5sSbwKldGvh38338KcQtruLckFgYw8QbXKMkUp6EtwMaF sRLAH0vZ0qT2uNhZ3J/n4OYjMX6xbtSBHDNhxPJ1FT76giD+6bOf9Ygm9BRuna3k/ezy CyAZzEWzHIOpD4unJxtRhyzPvPfQa0S842FZ8fjyn+cE/Wi6ID5T+5tTt4jPdvxYE4j0 P23MRyiTwfR2PlmGrz35uKWKzMF/VL3nM0gf1hBWC4rZNwAPgYvuveo8moar2zlzX79l 7DHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500061; x=1791104861; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Zz2ZYDhFh1/+MTpRAJxkmZ5x0WPyVxB0ucW71kVadow=; b=w2kw8Ec3/elXu6Y5i28D0YhTzVKmH8+1bMt/R4ppmdMtbkymkqJJ29nI3C2BVHRyG/ VnqlSL0RJdAkkOnp1VI9MvZDjCs9OBETAacw8bRkTi40otzeXvHRw7JSnhtgQGHy+1S9 SV/H8Kq3vd6f68V3Rrdq5bEvm0/ZZ3z9v3dPJg59hzF1+BBldDaiGsCdB3aISy+H47fj s5ERr8LZyUJ2NY4hLMfTySenED+/XPjJvwwqwnObkZbvGm8c5AHQjLo1VQ8yiTNX6+oz PsZwX1Ei5gxV+vljT1k72u/BPFJs+1z+CqQcsI7FZ113prLTBH2o8KHuhAY4tiQ1t1Cy KRHQ== X-Gm-Message-State: AFq9FYKrF+cfRYWYPTXmjPJG7V4DEmjLJltbzbmxLDFFb0dLjk2r65rb o9vIJxgEVhsT1avNrn2tJLez0T0c/8hh5m/22Kgjw7Fj22Weu4kruicp0b3U8dQZWjRKVAqFmQZ p99Y8 X-Gm-Gg: AYBFou3ipwr5X4IOghIs8xIVwjQC6kELTLhEUV+pxNbNM/CxSMb308lq5AoL2Pgd2LV zn/Jr2U2TRA4P1KhbToeLDIdg6fgQIUv4Eijl3C3rb9D0IRFNYExEQe0wW+tGbAvjo/rLNHKPvB tjZn34GmHBYi6XDccvMIlhKR6GDstRJwZUtP4Yst/vlUQl7a+oOBI88H/aaXOQd6np+fmsVsftn btDejQxBTBx5PWz75lGSZsz9ClW9Dhhm9dwx8ZASP0VYYCqNU1cab/BNleaKHECQnrhv+JrEY2Y h6vUvL8L/K1S3Dww/SncmnlkBZ6NvOh0jh79eFSVFqcCSM2ky+iZ8oGJrE3x/F599H34dQ7pn8V KCrGFBciLAyDoRmtzFt5lPXC+oI7imppfiaVNkvU4xmUWqG38wiwFt9Q5eGBB5BdoXQmNIQfKL3 XJGMeWlefdcnx+BZiy0ArE2S1UBYScflyOhUDCNqnVv4qgdvE2c/i0lsCY5snDwy+ik4fzCmDjB ETsQuBVYduV18AT22GHhwjypoAkfg== X-Received: by 2002:a17:90b:1c92:b0:39e:6c68:c77d with SMTP id 98e67ed59e1d1-3a098e0515cmr9335860a91.51.1790500060727; Sun, 27 Sep 2026 02:07:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 081/101] tcg: Generic expansion of tcg_gen_sub2_* Date: Sun, 27 Sep 2026 01:59:51 -0700 Message-ID: <20260927090011.10724-82-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500307912158500 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 | 64 +++++++++++------------------------- 3 files changed, 20 insertions(+), 49 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 0a1ff0c5b19..267ef111ae3 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 e9f0b971a2b..14bdabb2f15 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -63,6 +63,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 0f478e65861..7b8e158c2e4 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1103,6 +1103,25 @@ void tcg_gen_subi(TCGType type, TCGTemp *dst, TCGTem= p *src1, int64_t src2) tcg_gen_addi(type, dst, src1, -src2); } =20 +void tcg_gen_sub2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *al, + TCGTemp *ah, TCGTemp *bl, TCGTemp *bh) +{ + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(type); + + if (tcg_op_supported(INDEX_op_subbi, type, 0)) { + tcg_gen_op_ttt(INDEX_op_subbo, type, t0, al, bl); + tcg_gen_op_ttt(INDEX_op_subbi, type, rh, ah, bh); + } else { + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + + tcg_gen_sub(type, t0, al, bl); + tcg_gen_setcond(type, TCG_COND_LTU, t1, al, bl); + tcg_gen_sub(type, rh, ah, bh); + tcg_gen_sub(type, rh, rh, t1); + } + tcg_gen_mov(type, rl, t0); +} + void tcg_gen_subfi(TCGType type, TCGTemp *dst, int64_t src1, TCGTemp *src2) { if (src1 =3D=3D 0) { @@ -1167,28 +1186,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTem= p *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)) { @@ -1696,29 +1693,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 Sun Oct 25 09:31: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=1790500215; cv=none; d=zohomail.com; s=zohoarc; b=kS1JjlHjs1TEy2m9QDBFoEtUVymbsXPlCx05kRpI+Y0om1R/VjVHpNDRjIpvGZ61Nx3ASaCJhg3rgesWqYX/UYqZNdQkx1nK1mVlHiexpeb4Mln8D/bbjYs8QkOfhOcBbPFkP+9ghgovtd03lR4PinVAhFSJ2pyLubzt0cfvB+M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500215; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+P7QrvtukKLtZx0xbEEzDI2xgJw/ZlA5B95MfZKMeYo=; b=ejae6LsPUWbsmMm5T8dG0JBqqjs9PwwKjoZoBKVefX9TkNJwVaP6UqM8BggVM9FzqijLFeX5bq/fWOUr7VHZiD5osoMG49pCW+AberntcM3OMosTkA+wESZKLYM/1Ee3GTvLI22ulAA4qTfQTQNc1odilqmUW+oqsyYjGv/6QoQ= 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 1790500215687607.7302560201994; Sun, 27 Sep 2026 02:10:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAks3-0005an-Bv; Sun, 27 Sep 2026 05:08:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkrJ-00026y-CT for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:49 -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 1xAkrH-0008Fg-KC for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:45 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccb652d7so1378939a91.0 for ; Sun, 27 Sep 2026 02:07:43 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500062; x=1791104862; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=+P7QrvtukKLtZx0xbEEzDI2xgJw/ZlA5B95MfZKMeYo=; b=sfacH+QRft8lQfnYJTNRfTdVC2SFTjlVLlbm9+3N2PnByWVW4ofzLGLJ3cVUXtN+Cn eiBNW5H9n04LUPz+K/OdoJ3Uq9rRVotghAHaya/D7LgqS0O72yclmIUnLG+LSl4TbgUo xeipoaWkHZC1Kfw0Xz4QFEHTQM8DUgd1sr14Zc8jnxxMc39nUHccje1gAu+sbJ1cEui8 PP2FFKWONd7nS6FtPUVDR+OtGdB5u1q1Sn4lg1596jxeGAyL84SmZLVJDfSPrc2N3GmA cDWh8/fNG0BvbN4jYlTgPJmfREM5XRthDzRQ9ekbyJD0G0YRoZSsUjGlo4YAGk3x6uAS QbIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500062; x=1791104862; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=+P7QrvtukKLtZx0xbEEzDI2xgJw/ZlA5B95MfZKMeYo=; b=W9vEOp7OERT9knyI6Tf9rMmiQZmqIf33slDVMLX5tUkALK7HDGAYm3HraOXL0p9aqo 2UlGmvtN6SkWb2id7Y92qFEKYnh18z4GPk75DgprO3vg4L1/tMbdwj9p1ZesDywjh7YA PTMku+oJ530oXp7uRICzw9GukvfCjV1Y43ep7Vlx41vBSDP1tXSgMe70zOxDTbJvILQ0 HV3gCi1vXwJHxveMl8/kkMIL8z8keiuYAO85+9mo/KSEfWLKQfM/gw+8v0DY7cDVwPHl dRAiPHZyN/kDLRpyXaRJS4udtiXgahzRpc3cCld38XY+vRsqYotTGIIjvCYyqiEH4074 8TyQ== X-Gm-Message-State: AFq9FYL2pgYjHaKHb7t4JtonA0rgvTRXqI9Ilv1xxg785ViSTpZgMlPf u/IgdrtoA2g+capfArWytkQTPR/N+sTMW62K1Lc1rdUa0UWwuw3EDLckkfbX1tdIOTwJWqJLdU4 CfV9r X-Gm-Gg: AYBFou3GRAj4Azwq+RLFbePf+EEUTr8uFqEo+st8p4j+S/waCAWS9srM1JnHk1ymbuL Wmu9eJ7o0pMZP1qqSqWZ0zqYqY90oDoCcDbzugJKp8BuGQxpsGCDTVBWP0JAasYt332PFhEXt+o HP0/yZHcG7t6XQMA/eINJLLu8rXJQWCcg+tLgixYuiqmHSidqSYU4mVF9XoXGuc05RypHqiiJW+ 1PIGPKHQ63yyJHRv6B8M6zQRVK1/l6qz6XI2p9tNhHVxKyNMadOrw0PN151qiL0kS9DgDC7yRhq JGfIiPzrEye/eSWyNli0k4cB592UyJBjfdON4rHdqmBmifHObfKsk6xwqLbVJMifeAYjRWktqX4 r3xFu5NKry8eiFUvKaWd0mzsgyjtnLOyB+adAVBuyKJCBoEzyTf9z6Yyn1M6S8OjXbdbmUAXUsT CAV4wRvbxdM/QFSAA5tPE8D2UtJ6UcYuAS+zUo1sIBtH11CLxUrf8W1JLfzgPoqC+vFLJ7Ysvo2 LnEH72B952YtUn/syBg59NeRAMDNA== X-Received: by 2002:a17:90a:ec8e:b0:3a0:345a:3620 with SMTP id 98e67ed59e1d1-3a098df852amr7940099a91.45.1790500062161; Sun, 27 Sep 2026 02:07:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 082/101] tcg: Generic expansion of tcg_gen_mulu2_* Date: Sun, 27 Sep 2026 01:59:52 -0700 Message-ID: <20260927090011.10724-83-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500217563158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - tcg/tcg-internal.h | 7 ++++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 72 ++++++++++++++++-------------------- 4 files changed, 39 insertions(+), 43 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 267ef111ae3..41a4d52d497 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index 13c4be5a5c7..09899cb3091 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -126,6 +126,13 @@ static inline void tcg_gen_op_ttti(TCGOpcode opc, TCGT= ype type, TCGTemp *t0, tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), temp_arg(t2), a3); } =20 +static inline void tcg_gen_op_tttt(TCGOpcode opc, TCGType type, TCGTemp *t= 0, + TCGTemp *t1, TCGTemp *t2, TCGTemp *t3) +{ + tcg_gen_op4(opc, type, temp_arg(t0), temp_arg(t1), + temp_arg(t2), temp_arg(t3)); +} + static inline void tcg_gen_op_tttii(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2, TCGArg a3, TCGArg a4) diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 14bdabb2f15..b24122173a2 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -35,6 +35,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 7b8e158c2e4..f107e3a85ea 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -778,6 +778,37 @@ void tcg_gen_muli(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) } } =20 +void tcg_gen_mulu2(TCGType type, TCGTemp *rl, TCGTemp *rh, + TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_mulu2, type, 0)) { + tcg_gen_op_tttt(INDEX_op_mulu2, type, rl, rh, src1, src2); + } else if (tcg_op_supported(INDEX_op_muluh, type, 0)) { + g_autoptr(TCGTemp) t =3D tcg_temp_new_ebb(type); + + tcg_gen_mul(type, t, src1, src2); + tcg_gen_op_ttt(INDEX_op_muluh, type, rh, src1, src2); + tcg_gen_mov(type, rl, t); + } else if (type =3D=3D TCG_TYPE_I32) { + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(TCG_TYPE_I64); + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(TCG_TYPE_I64); + + /* Simply extend and use host 64-bit multiply. */ + tcg_gen_extu(t0, src1); + tcg_gen_extu(t1, src2); + tcg_gen_mul(TCG_TYPE_I64, t0, t0, t1); + tcg_gen_extrl(rl, t0); + tcg_gen_extrh(rh, t0); + } else { + g_autoptr(TCGTemp) t =3D tcg_temp_new_ebb(type); + + tcg_gen_mul(TCG_TYPE_I64, t, src1, src2); + gen_helper_muluh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + tcg_gen_mov(TCG_TYPE_I64, rl, t); + } +} + void tcg_gen_nand(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_nand, type, 0)) { @@ -1186,28 +1217,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTem= p *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)) { @@ -1693,25 +1702,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 Sun Oct 25 09:31: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=1790500128; cv=none; d=zohomail.com; s=zohoarc; b=aYA+bkd/P7DgUIcLP9w0/zBshq89GyS6HR+rsGJ8UeShJthBm2nVnHurztuvIItweVvpVFK9T4MjneLqiGBDI1VlBXIo41e3c9sVwIhFn027lBA6E8NmUfm5BadnaqkEcRf1pSMSItGvWjA35H7EKA/kTUeAvQkbFAT9SUq2gAk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500128; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jJviLshxn4QQ0NUyEr0bDDWphQikuBszs40RWdJ/xjM=; b=hjLmwDZLOcctWmvPeV5cvayT4NFRIjvRBFppjL9E4KUJnWsYe+sn/qC6+6eHP/6debXmYKUePl5NuJpg8yFTK1R9MYSmR0VvYakgzZUP/fGJpjgXwbmz4dX2ib/zslLhMM2eQQMqbyEV2jM76kpfpCayBJDAep/yUmxJ+pEN7G4= 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 1790500128097126.87618345804992; Sun, 27 Sep 2026 02:08:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAks5-0005lk-4O; Sun, 27 Sep 2026 05:08: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 1xAkrL-00027t-3E for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:49 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrJ-0008Fy-49 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:46 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0b6200eb0so1603289a91.2 for ; Sun, 27 Sep 2026 02:07:44 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500064; x=1791104864; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=jJviLshxn4QQ0NUyEr0bDDWphQikuBszs40RWdJ/xjM=; b=OVspBs3xgVN4mXrJeQUMW/Rur25g280G/ePRpDT4wfkn67F089Xh8sM+rUGm1Eu1Oi 9ov2Yoj5LsDs60hpS3W+tUKvr7fUAXUo06CxrPYI02Qs7qXOgdeVQPozdJRJE5uOQnSV sEsl4i8g7uo+yQbvDdR7HcREE0mz1QtrUfpNsJ+6qQp2RwQ3DN/tLsfp18fqusT9sJr8 lx0P2XC01Qt55b+stUYw6PcP1INx9TWkknE6hw0mf3jka+23jDYzV7sQfvf3O7BhVwr3 CwU6czdPYreolLs7MUkfR0Dk4M4kpUjZVxdqLrIBUqbRqGpzxSfD8oC6Dv4lGr+1YKI0 FraQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500064; x=1791104864; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=jJviLshxn4QQ0NUyEr0bDDWphQikuBszs40RWdJ/xjM=; b=a+gRGI4jiqmbm60bd2q10xJHdXRp7EH2BkjweOvhqcB7Q96QK7fg+59giXELwqJfov lT0NgBpUpXx+T1OLIlD5AIuGg1fZVVe0980Jhy1YYsmS47vAObu+AddwJh5OfEByvSS+ VjHsEPO5voJ5eC5iORHMRWGa5ewNiqsy7CoEBXv5lA49b9uIY4f1pvgpddiUWl9zJDMv ns2IedmO1Gr3DzvBURJxp4B+v4R7/pfHPEs75WWz0s1t+cGVYkbTi9ZuZbpUcSYromv9 JePdVDofLGN0sM3CDdL4vgJGHUbEsKrhAN5HdrOaSKdv8S0oxyRIEs8kNBnkZcoSYuHq 9cYQ== X-Gm-Message-State: AFq9FYL4vCI4JElFIl/+IeIoXH/SUlrMDf1b1CpouLJf5TfADZDYsboO j6y2v7m2GCw/cc3uw7tCz0cEi8g44WIXFCOAmXY/Hx/HcvaSKhJxyjJjtYAakgmG/1+GHA/WmaY j+YSz X-Gm-Gg: AYBFou1qKEHjkIvVpc/dfxjzBKTsunKQB7wUg/xPk4VMKaBsgOYHucHiw/iWWZbWO+p 4Kfgv72tsMFXCsBl+qhvp6Ts7tSwmt2Nf4kMVs+J4djZvBOYZYWIdsqGTWcHHVubQOliElF9MAV ApyvCi3M0XtQtnc/1XQTrkLgPu6HvVklsImJM6CY2CiVjkcYGXoUVGJ43sgI8OZ+kew5kWX+5iF HcuaXeEaQV/evhszK6V4LyPNsotjrMF5BelJkc+Y2iS5EV1c4/bMHHGkBOQ2wuArOxvoZI3cQTu FXrK8Hk38I+BUTjeXB2IFxjJkPhAn915ruakK1zgAkxeBtynr5W9wrREMNH9EQIPiKh+RWqat1f AJYY3KEGj1ktTuj6UeQKm2+qQ8b0/IoYDDA3iwS3x4dK2SPWco3vJ7bcDuYjZiQJpscPlSaqpvB whhsQ+WKXEHZJYH7aWqKQcbMHmBPNJSHsDD4XFbSvVzN5OlzXRSPQdEvxNRCMRun4YW7bxzqf+s 5/gjNn+6crCWlShYIqGqQMbhBGialUNmPChFpep X-Received: by 2002:a17:90b:3c8b:b0:39d:f064:3a68 with SMTP id 98e67ed59e1d1-3a0bb57874fmr5580902a91.21.1790500063383; Sun, 27 Sep 2026 02:07:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 083/101] tcg: Generic expansion of tcg_gen_muls2_* Date: Sun, 27 Sep 2026 01:59:53 -0700 Message-ID: <20260927090011.10724-84-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500129762158500 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 | 131 +++++++++++++---------------------- 3 files changed, 51 insertions(+), 83 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 41a4d52d497..5f73601ddf7 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 b24122173a2..b606aaab128 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -35,6 +35,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 f107e3a85ea..61d50294a68 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -129,13 +129,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) { @@ -169,20 +162,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) @@ -778,6 +757,56 @@ void tcg_gen_muli(TCGType type, TCGTemp *dst, TCGTemp = *src1, int64_t src2) } } =20 +void tcg_gen_muls2(TCGType type, TCGTemp *rl, TCGTemp *rh, + TCGTemp *src1, TCGTemp *src2) +{ + if (tcg_op_supported(INDEX_op_muls2, type, 0)) { + tcg_gen_op_tttt(INDEX_op_muls2, type, rl, rh, src1, src2); + } else if (tcg_op_supported(INDEX_op_mulsh, TCG_TYPE_I32, 0)) { + g_autoptr(TCGTemp) t =3D tcg_temp_new_ebb(type); + + tcg_gen_mul(type, t, src1, src2); + tcg_gen_op_ttt(INDEX_op_mulsh, type, rh, src1, src2); + tcg_gen_mov(type, rl, t); + } else if (type =3D=3D TCG_TYPE_I32) { + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(type); + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + + /* Simply extend and use host 64-bit multiply. */ + tcg_gen_exts(t0, src1); + tcg_gen_exts(t1, src2); + tcg_gen_mul(TCG_TYPE_I64, t0, t0, t1); + tcg_gen_extrl(rl, t0); + tcg_gen_extrh(rh, t0); + } else if (tcg_op_supported(INDEX_op_mulu2, TCG_TYPE_I64, 0) || + tcg_op_supported(INDEX_op_muluh, TCG_TYPE_I64, 0)) { + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(type); + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + g_autoptr(TCGTemp) t2 =3D NULL; + g_autoptr(TCGTemp) t3 =3D NULL; + + tcg_gen_mulu2(TCG_TYPE_I64, t0, t1, src1, src2); + + /* Adjust for negative inputs. */ + t2 =3D tcg_temp_new_ebb(type); + t3 =3D tcg_temp_new_ebb(type); + tcg_gen_sari(TCG_TYPE_I64, t2, src1, 63); + tcg_gen_sari(TCG_TYPE_I64, t3, src2, 63); + tcg_gen_and(TCG_TYPE_I64, t2, t2, src2); + tcg_gen_and(TCG_TYPE_I64, t3, t3, src1); + tcg_gen_sub(TCG_TYPE_I64, rh, t1, t2); + tcg_gen_sub(TCG_TYPE_I64, rh, rh, t3); + tcg_gen_mov(TCG_TYPE_I64, rl, t0); + } else { + g_autoptr(TCGTemp) t =3D tcg_temp_new_ebb(type); + + tcg_gen_mul(TCG_TYPE_I64, t, src1, src2); + gen_helper_mulsh_i64(temp_tcgv_i64(rh), temp_tcgv_i64(src1), + temp_tcgv_i64(src2)); + tcg_gen_mov(TCG_TYPE_I64, rl, t); + } +} + void tcg_gen_mulu2(TCGType type, TCGTemp *rl, TCGTemp *rh, TCGTemp *src1, TCGTemp *src2) { @@ -1217,28 +1246,6 @@ void tcg_gen_xori(TCGType type, TCGTemp *dst, TCGTem= p *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(); @@ -1702,44 +1709,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 Sun Oct 25 09:31: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=1790500333; cv=none; d=zohomail.com; s=zohoarc; b=IcntWaaE3+1jkXUhXZDV17uvS2JAjwb7DyX7hYUbUdc+lFWZaEI5CL0ijLzjy4XQTtODDQzYJQ5iqic3HDzeWhY8XyO1+5wxvqpc6sgi6HZS4WeXPJaMD3TeRF5IK/JFqmU3X0LaDu7Zm/9j5wwiY00chAHzfRquARZ8RPxMuXs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500333; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OflXdFdak4kGZye2JWnaDHf/FnStixzyIa2tWTcncE4=; b=npB0MK5YuvCQatbaEBx2XQPzrCPAt3i8vQvE6RR9uTE5clvJTuAL9zNVgnwAdaWNYd1Ez7NwdlKben4cLjzflaATdazr7u8eJVp+Gi9QHTsZObHr97QOc2iV7+5RUdQ/MUAaM4jF2tLRAdbp+v5/zX456I9yAvGxxpjrkL51akY= 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 1790500333575307.7704941333784; Sun, 27 Sep 2026 02:12:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAks6-0005tc-5h; Sun, 27 Sep 2026 05:08: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 1xAkrL-00027u-V1 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:49 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrK-0008GD-98 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:47 -0400 Received: by mail-pj2-x0d.google.com with SMTP id d9443c01a7336-2df90e859e8so6137025ad.0 for ; Sun, 27 Sep 2026 02:07:45 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500065; x=1791104865; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OflXdFdak4kGZye2JWnaDHf/FnStixzyIa2tWTcncE4=; b=yUP+zwzefArgXFomhewBLsBuCJJJzXYzLIMFS193509Wy85jQ5CmMIVl+1c8JsJtDd eWGb2CcjetIROU0sdCeRJgeCfANjK2d84S+JOIgtGE5kr7xeAzesJLV2x1g3n9IesTND /1pxDEuzesZWVSgipfiSTSRM45+DhHPNKZBEaZ7McYSdJFIxegMy8HIFjUpG/eFfogyi PGuO42zzZ1l6wmT+fyBTMeNZnvS0CfT3I6VW18p5lf7dczYtpLn+uNNqz4zL/TvpdtxF tBYQoqROS1B5joORDmWXpTHjZEvWMKmceZnyPZ2oy4XBHmoKXR1rApaLVvI74D415VJr gshQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500065; x=1791104865; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=OflXdFdak4kGZye2JWnaDHf/FnStixzyIa2tWTcncE4=; b=qaJZIuZiXriQJig8M725U/G7JRsL/GlLD20puIxR0COVyVXUAlWfS4gRJnMaVCLD+z gZK5cWslIYsOmqhZolXM+vl3lacCr1NxasgQ5c8HZsMOkLdkfZW4HxJJ1ZDn9UUd7Op6 wu/513TBMOiAbXieFIB+DW7urEtkiuEOwt8m+Y9lePMs9g0Bc1a8geWa8WQAw2IZjBzq zgxojsMjODmAOcayctYcGXnStwaRObG1XsjeX330yzeMTvg9oB/t3ukAjL3vAg463KkZ dQiaS3NuV3YlTwRqLTfJHok2flFRy0hXHReiUpK+Ydsjk19f9/rJk2qVvq8kt1T26lpT dZoQ== X-Gm-Message-State: AFq9FYIOK8B3e5wHLbw6Ur5ZkGPjQ3a9q2OPBfqlkYM6bWjEwdMj5pKN gnOufQyP2Kpf/R7g9RenBb3/zyYeHmZzF60sD+MijVnzdhyugPPbOHJBF6mEYF2hjyLTavo+2EF S5iZq X-Gm-Gg: AYBFou3Y7Mf8jHtjuCN+H3EHTKjNuEO6FNwJGiqf1ldW6c4HwVe/z6bQVqCyx0CBG/M BLwAQklzWiOu1oNDEaLy5KzRLYR/vrgr8O+inUR3GljatGYXgbYG06DQoadZHcco3bFb6ukQxw0 nptRk6rNoXo+ExU37DmZOnieinjlk5Y5l/KIxAMGsVP185uzcsWsLPBIkkjE3hkjuINAgJYUtU6 pINpciuEH7w6B4yLVvHP9t9SS+B5xQ1rdCMFqW9Y9PnkY4s+RAOZJJ+tnqsvZHAHYqHm3svOFua tXY0N8ZIZCaJuT5EisHPDNNbBw1eVdSxo0cvvkzRwxJQPBZGUUEH6mMpLfh07Rjheor3Ei/FUNh E8Xrxs1KGiIy3HVpG2G826oBKby7dT8N2hnRtTP1RXQcG7+4envqaQcQMazrVNgXlyNxwVFhbZT chriM+Z/bOwutQ0lm8QPJkTqeUtPZBiY608A1YCm0LshDbQmRYI8ApUJI3l9BiUMvFpq5X9mVwu xp9iv9wDMtxHJBAX6qG/OwXG7GZqw== X-Received: by 2002:a17:90b:5110:b0:39e:6a7f:6187 with SMTP id 98e67ed59e1d1-3a098ac9ea1mr6016931a91.24.1790500064741; Sun, 27 Sep 2026 02:07:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 084/101] tcg: Use unsigned for flags for bswap and revbit operations Date: Sun, 27 Sep 2026 01:59:54 -0700 Message-ID: <20260927090011.10724-85-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500334116158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 5f73601ddf7..7971619ba92 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 61d50294a68..e593a4d8758 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1305,7 +1305,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)); @@ -1506,7 +1506,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)); @@ -1549,7 +1549,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)); @@ -1616,7 +1616,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 Sun Oct 25 09:31: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=1790500305; cv=none; d=zohomail.com; s=zohoarc; b=jw7bBrbr2DzV4JKtecM3OkauHdIJdI4x/Sg3Yu6bTxxk5zCgm7Xk+I1ZBi4hECCKNbkl2HWvCx0dot8hUqYx9mAlRMHL/L3nAIw2P8kDrJkXVWoab3tIZKi3x9/RWawAEvkzFJ4Hbi7up+GJkgoGzWOQq7LhzvMYtAJKVmHK6bA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500305; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xs07YEujrADw1PNPU75lQ8ZkzdY4KDXERk49bKnQ1bA=; b=jwsJ5jVSF8QwQ5LIizPQcTcibzHSUa5jGJiSOL/n0L5RI9C7QMZCOabDZz3rJteHaLnvJSD8VkS+xC13AXVKQUW65qybc7Twpw6jag3PQIcMJk9J5yBbEdqSr6Goms0kzmlLqfcGmUr4L7NVem6MwHubYdIQqkYnxy7mW/rsOAQ= 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 1790500305198562.2964780492965; Sun, 27 Sep 2026 02:11:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAks9-0006Oa-Kc; Sun, 27 Sep 2026 05:08: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 1xAkrO-0002AM-3c for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:53 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrM-0008GQ-5p for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:49 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-398b3b189e0so1122815a91.2 for ; Sun, 27 Sep 2026 02:07:47 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500067; x=1791104867; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xs07YEujrADw1PNPU75lQ8ZkzdY4KDXERk49bKnQ1bA=; b=vVaS2WKQ/7PF+QWY0noHLopLzB6zXLQBj+I99Jfvv8oZgapSROYUn9sGNKEFZgGjKt qFmHej78VeYl8ALIUZjVu0agJACUZkQv/E69IcZlL9QEfMCMS2Oo5Qk+yzDroBiRLwoT HGcxogt2s6DgwS2DSCAc6zvvwPkBaawowOUcOII3XCkgaOsw21MQuMCFsDdQTeXHAYWN ab4RDkqe+5j/CSTna1ZvE6tlrOResnU66CsF9KMJdjoXsEqadka+GQPNrDU7gURqzFA9 KsirP1OngmazcIe6zbQ611Fvr5fuC9gZY5Ky9Zz+Y/E8UKgSbdzTWFt9rSqgE6Lox374 YxOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500067; x=1791104867; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xs07YEujrADw1PNPU75lQ8ZkzdY4KDXERk49bKnQ1bA=; b=VBTtc/Fg/bNlFCElfSS0a+GmTuPAdabkFGYZTU62uQGytYgx78bK4p61I5BD+TTMZi 3Ek6VDC6CJ9vqqSx4SUo2A1h9Y+SoEl0TT0Ay4D3AVavzyPcAyu1eLdnMRa6ojazgeLS UZawAkoCCoWy2yBT+Nr06uyZt6EUIU7UP2K6aCY72Wpe4ccgiv0lJ9kM4fz+u9/VEibQ Hy2JhwYdW+eWCoD2PcTXX6pKM5nvIB0agrOwAr+eQ07stQiV5I9EFmFOI4VzYOFkCh+9 itu8gU2KCte2bSNcbzOXoMwKOElqWx93kHMHQH028UegllyVJMHvx9zrit0YNTw907Pc UghA== X-Gm-Message-State: AFq9FYKIkrNMXc7cnUs1YzmEt/lnHD6GMU9MP8gXKuXPrq7umYCCGKW+ TLpVdKk9KNh4Alvj/ldc1r/GytMxJg6RfDMXTYXrKSVycCLOfbuWhuL28EY4N2Wzgpyye5ex3gy qn/K2 X-Gm-Gg: AYBFou3xOU0JlpeLUa9YJ7BCzvaU7CznvF+Qs0oT+/T9y/SRTWdgvEPUEjx922E07eQ VRuPnl3glwUvcgI0B/ew2uzMHvoFKdVZMQvlMZDWWRolpMIOYzDbmBk39bU+Zqfe/cuV5abuceZ DRFCzxJQxFbreUqVV9r4cbZ4b9bPPi2boymkslzfrDno/ZH4FZY9b4z2Pu3sKCLvtqYlBe+jVk1 TRRnJ0G1FboY069s3lJ1/jpCetKZvC1epSSz+yW6eP9qAT3/rZmgSuvL8P8Rs3U3nYnrY7UgN1s lLnr++hg03xxuSHwU9YTxGLOe/VN+VzXZwxB0tE1rV4mdU1APph8bqPVSyDeHpxr3+f4piMT0aN 2F2+/nIdriLGgpNz5GzqM8qzNR0jnlKUqrbZZqNbw2g/yfWJxIRLTV2dgVbt/u5SLC6MKJ2gXSz 4jO70TNEZ2R1SQfHQHsIDQj5N1V2hV1goLRL+djSbUxZHYzjtuaaLJ+B4NkKOa9m2swqYgA5Osv ylejEzi0YIBDOAfwvWS1pjBCaRU1jA= X-Received: by 2002:a17:90a:e7c4:b0:3a0:809b:1972 with SMTP id 98e67ed59e1d1-3a098ce5e08mr9207497a91.26.1790500066702; Sun, 27 Sep 2026 02:07:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 085/101] tcg: Generic expansion of tcg_gen_bswap16_* Date: Sun, 27 Sep 2026 01:59:55 -0700 Message-ID: <20260927090011.10724-86-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500305914158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 2 - tcg/tcg-internal.h | 6 ++ include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 120 ++++++++++------------------------- 4 files changed, 41 insertions(+), 88 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 7971619ba92..d5915ecc1bb 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/tcg/tcg-internal.h b/tcg/tcg-internal.h index 09899cb3091..d6ea11d8fcd 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -108,6 +108,12 @@ static inline void tcg_gen_op_tt(TCGOpcode opc, TCGTyp= e type, tcg_gen_op2(opc, type, temp_arg(t0), temp_arg(t1)); } =20 +static inline void tcg_gen_op_tti(TCGOpcode opc, TCGType type, + TCGTemp *t0, TCGTemp *t1, TCGArg a2) +{ + tcg_gen_op3(opc, type, temp_arg(t0), temp_arg(t1), a2); +} + static inline void tcg_gen_op_ttt(TCGOpcode opc, TCGType type, TCGTemp *t0, TCGTemp *t1, TCGTemp *t2) { diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index b606aaab128..2ebcf4a0665 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -11,6 +11,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 e593a4d8758..0bf7c2fdff1 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -426,6 +426,40 @@ void tcg_gen_brcondi(TCGType type, TCGCond cond, TCGTe= mp *src1, tcg_gen_brcond(type, cond, src1, tcg_constant_internal(type, src2), l); } =20 +void tcg_gen_bswap16(TCGType type, TCGTemp *dst, TCGTemp *src, unsigned fl= ags) +{ + /* 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)) { + tcg_gen_op_tti(INDEX_op_bswap16, type, dst, src, flags); + } else { + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(type); + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + int width =3D tcg_type_size(type) * 8; + + if (flags & TCG_BSWAP_IZ) { /* t0 =3D ...a */ + tcg_gen_shri(type, t0, src, 8); + } else { + tcg_gen_extract(type, t0, src, 8, 8); + } + + if (flags & TCG_BSWAP_OS) { + tcg_gen_shli(type, t1, src, width - 8); /* t1 =3D b... */ + tcg_gen_sari(type, t1, t1, width - 16); /* t1 =3D ssb. */ + } else if (flags & TCG_BSWAP_OZ) { + tcg_gen_ext8u(type, t1, src); /* t1 =3D ...b */ + tcg_gen_shli(type, t1, t1, 8); /* t1 =3D ..b. */ + } else { + tcg_gen_shli(type, t1, src, 8); /* t1 =3D xab. */ + } + + tcg_gen_or(type, dst, t0, t1); /* ret =3D ..ba (O= Z) */ + /* =3D ssba (O= S) */ + /* =3D xaba (0= ) */ + } +} + void tcg_gen_clrsb(TCGType type, TCGTemp *dst, TCGTemp *src) { if (tcg_op_supported(INDEX_op_clz, TCG_TYPE_REG, 0)) { @@ -1297,49 +1331,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. * @@ -1498,49 +1489,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 Sun Oct 25 09:31: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=1790500348; cv=none; d=zohomail.com; s=zohoarc; b=A+eh54yJBYXM+xg8nbyjv5PlYX34fS0Fnywq7uR9il2Wj9MvJ8shqVEHBlOwgh1hbx6kUe9pPzGv+P8ahG3G/oc/T4UF2fftvozAQUi6HdtCncI7JHTVtxfwhSBf5pZuyp3Sgmr5MzD1II37xcoMZKaFE1OQHl7lVXVDaMiYlCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500348; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UX0xQBovpEREz5D93muEOF8+6jWv4DzWOIo1Qb5cFS4=; b=MfGV4hGBRtOlU8WHsM7wVXxdp+2na3z562a3Ceo83sEF6BcP79POJ/5N9SMaJo5mIJz2drlGouJVQzVuVZUoGQE1p2e1pDG3Jogp+tItbwNUZO+/2koZ5bDcd6+lOfA9eYtqGIiqtLhraw5UK4RxXT+yHvd8gL/HEwDnUYCczgk= 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 1790500348341960.6099170803925; Sun, 27 Sep 2026 02: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 1xAksX-0008LM-2q; Sun, 27 Sep 2026 05: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 1xAkrO-0002AN-PY for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:53 -0400 Received: from mail-pj2-x10.google.com ([2607:f8b0:4864:39::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrN-0008GY-74 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:50 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-398b3b189e0so1122822a91.2 for ; Sun, 27 Sep 2026 02:07:48 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500068; x=1791104868; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UX0xQBovpEREz5D93muEOF8+6jWv4DzWOIo1Qb5cFS4=; b=ubrdCNwd+63BeBGxnq9ByeXitRvuvdjlxIsdeX6vl9DJhNMKRY8jcue9INvXR4xy2H Zlv8bpM4ROnoA1cSP7QSpGApKTr7QM/l4LodPx74Cw+OK6a62XIWcq67pHYGZeXFyiKE +4V4/gy5taHFpe4FGgCUfVYeNJMZST+mPOUSq4LadN4jeSsEzhDH9a8Z3UrCqBpEZbPS 54zhED8ISaFMN6Nw/erhTOPQ4AL3EnhQcLxrpbwbx6BbRCJwG7lkExyqplTspd8kt7M7 bW6P8IhNXD7DEB8VKMTL97PURGsMpgOj1shBpIme9/JVtFK8s1EgOoeUjgmbGJ7SQX6k qDXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500068; x=1791104868; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=UX0xQBovpEREz5D93muEOF8+6jWv4DzWOIo1Qb5cFS4=; b=oSzWQ8tYFZ6Q7PFmlM4md+7o0Z5KJaEM1vgOVFYJGUR1SijULdHdAtWjYtHWJEIbji oKB909R8ex0yilr7bJHIRczE/Rx3ZlMTFH7Qu9mgBbzpgUA67KkP8ITl/y8grbv5qmc3 X+zmT/DMp1TrLfL0+bsAz+Yk8M1KCJoe8q9a/cVgHj6GXL9oLda/OgJdzs2Ffg6ZiEsQ I3P5dEivxLReHE0t8SdiBaqbhnWJs7ibWLHYHJ+YmAclclnoWgnV2SUDYzanZyD2hGzf DFtaFWnjNmDv59O8PQTncvOvZVwFbUZpqP0eUbkrZY2/Ywkgwo+Ko6oHUsK/E4Ikq6tO +xOA== X-Gm-Message-State: AFq9FYICyIeAivsev8dFhzKM9G3+Ys9iVgKrCQlvseak5U33gwCwairN MDjxwCj0XMzt4STL2jdCKXZTEFypmnSSwfs+5o8mJa1iONgyTl0+rnIYV9gZFlk4cSfk2BQ+ke5 Vy5SF X-Gm-Gg: AYBFou0vMgFVl2QoD95G/lfCkJdx3QtpwZV2dAfyJAwdBCBNGWzpNRHztcmoQPhN4WQ raeMmGPzu4RJ6oXv+6AImZx7aIOJRpq6lw+uKSuWyk7ByTIR6VyWU6d39C7jSPDM9ymwnJ/yKmW 14P7XRzuAzigBbxqTPgr0mINisnKgxBRCkDB6QnWWkJG9wbLR6uXsE8S2gPU9BrjXk/c3ZhBcDB eyooXqIXA5813yAQJtXLERXa4HC7g7U0E97Xd2rxWxVu7rFsOaXsRa80naLsXfD27cdAIzuWZLg jJsFoiPO9e7GU3x1qykNuXtSD/oS3W/8jTT3JpYYx8j2af1qVAvOZ55xqDslvFmv8f7nKahOPC6 9yrQfaRtlO/YOqUybrH+S4yj6J/LuPsTy0v9/Hae9yqzbPzsWiGLgzNrdPGGJdOqk2l4W7AgN45 EXcNXXrK+9o4tvrsxzRXonfBIE7pm8XSMMMYd9HryEx/8fHn9/iGflaAnMeYOCnYzXIfXg86f1Y UCpmofvl7JmwnqKJZ9ShEqx04HKSegyV7ho1hbyrQ== X-Received: by 2002:a17:90b:55d0:b0:398:9bd5:490b with SMTP id 98e67ed59e1d1-3a098cdbb1fmr8519247a91.18.1790500067622; Sun, 27 Sep 2026 02:07:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 086/101] tcg: Split out gen_bitswap Date: Sun, 27 Sep 2026 01:59:56 -0700 Message-ID: <20260927090011.10724-87-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500350142158500 Content-Type: text/plain; charset="utf-8" We'll need this for other generic expansions. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- tcg/tcg-op.c | 58 ++++++++++++++++++++++------------------------------ 1 file changed, 25 insertions(+), 33 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 0bf7c2fdff1..0c6146cfbe6 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -290,6 +290,27 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) #undef DEF5 #undef DEF6 =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 tcg_gen_bitswap(TCGType type, TCGTemp *dst, + TCGTemp *src, uint64_t mask) +{ + g_autoptr(TCGTemp) t0 =3D tcg_temp_new_ebb(type); + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + TCGTemp *tmask =3D tcg_constant_internal(type, mask); + TCGTemp *tshift =3D tcg_constant_internal(type, cto64(mask)); + + tcg_gen_and(type, t0, src, tmask); + tcg_gen_shr(type, t1, src, tshift); + tcg_gen_shl(type, t0, t0, tshift); + tcg_gen_and(type, t1, t1, tmask); + tcg_gen_or(type, dst, t0, t1); +} + /* * Generic expansions for templated operations. * We have used compiler type checks to ensure all TCGTemp @@ -1292,43 +1313,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); + tcg_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); + tcg_gen_bitswap(TCG_TYPE_I64, tcgv_i64_temp(dst), tcgv_i64_temp(src), = mask); } =20 /* --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500498; cv=none; d=zohomail.com; s=zohoarc; b=FTkPsZQiFYVj8l84KNhdBkaPxuSEsPlzQWO15FlMqH+dpckUSFuTtlQjRSBAt0ndmVRRvfvL02SDR+Z7Y1xONg/9HJSVx5sXcD6ma8JGGtvu0XTk9EN/o0Kk9vKnDNiCgerZVaKzMRJH4GPWDX3kWWmKvN6iJPXIvnzWc+Cbiiw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500498; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=REfCEbljwD42oKESMb/2r/IzSCvlv/AMvn2Mo7n7qso=; b=Znv37atAUJH5WjxoQtwaGeQ2BmOOcKdDaE9+a4nAKjvJhamPUc9Koe1dyqi768UleeOwIgv53CPY92TlIiykLBd82hjhXIMwbzhMkuATGSKdk20+7/IRuDtFEfMaqyN0I/PTXQGqa8BBRT+k6cBSozcE7j3/o+zYTy+6PvvEn4w= 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 1790500498248273.64240048643853; Sun, 27 Sep 2026 02:14:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAks7-00066b-JY; Sun, 27 Sep 2026 05:08: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 1xAkrQ-0002BP-2x for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:53 -0400 Received: from mail-pz2-x2b.google.com ([2607:f8b0:4864:3b::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrO-0008Gg-79 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:51 -0400 Received: by mail-pz2-x2b.google.com with SMTP id 41be03b00d2f7-cc79223bcfbso1027240a12.1 for ; Sun, 27 Sep 2026 02:07:49 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500069; x=1791104869; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=REfCEbljwD42oKESMb/2r/IzSCvlv/AMvn2Mo7n7qso=; b=PVE4QIhFBmGpmw0WBLdyZCk2ls1hhxgAXbF1XT7blNi6+D4jMZUkZOLbCPyNCIWl6n yiNtP60IO0dfW92LDa8Ur/T5sTC4pXxI7dABGJVshvRW0dZEc07ZyjiaKMqLIpcbZ8UF p16nUMOG2+cVp7+wvTZQ00YsQvVlgGcr7AvloX4pCdMXX3Lss1bCpp93fdedssV4GagD eEQw1IeyJwpe0RRGlu2td25kmDPrDX7hap8YbbxNFmhygwKxXMZNha1E9E4gAbP2J9Z6 CcLxwavKC9/8vL+/EurHe5T7GTPD/vstLnlOn1thhwa7NAR2vB0/Z+WOrYjRjgO5N9NS a5QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500069; x=1791104869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=REfCEbljwD42oKESMb/2r/IzSCvlv/AMvn2Mo7n7qso=; b=RDecR0br4AYhIwSgT5eLeFXXbEgSk4umQ7W3E9Gp8Ksj8uREHuR6Gp+LU39JlwCpcG 7j4/5eRJEccsbSQ740NPUBguc79H5WTdt8nfMExk5xsx7LJ9ORFoS3yoREsd9IVX4UFX u3z5VNDMmBtlap+aqtIdrIE9wvZ+DSCS+fBtrpttvXBoRwDYsGaMqDR5/kVBSuvBrow1 QmiNHtcLAK2HvVdzdCyamZLxy3TWsp9psOhqk2v3s2z6Wc6ZqAgw2+BJofchdu9aJn/y 3B6/2yMDeSEfcNN2t1S/pH2QmNpPY+KlmaI3bQqVhfVre6suHR+IVOMC0wv/fPrsoEGr QzMQ== X-Gm-Message-State: AFq9FYLU236CoOp1kdaBr6pBHi5zSNJa0gTkU4z+z4ar5LpspuBK3QFx R+KziEcNU9caDdSC/ij7PRWCvhY+BWntPisr4xvpm2T0U0p9Q4u3qJzZ6+HwzY629GHiaZshl9y im3oy X-Gm-Gg: AYBFou3ujnz/aL/Gj2m4Al1v5M9bUIiMrK2ib3KujtSTrnzUDGFJ1bL0TFOxARFoO/n 86ojrs1noAIhsDpJSayd41EC4zGMojD95LHYELsKLP2KPjLhFXPBGBVjOKi5iebJi+K0ubGkkKX JcpXg/Fc2302omHz6bdIlRDlsD3DWHoosveOJdHFAFnbAiNdMHgGjk1dM02o7fGnuRMuO8Lul0J uXMBsrMVYE/pZnObz+fYtR850A4Haa4bmIM7EcTPlmGzdrziXyTAnvbLuZiA3IVeCy+2NiMQAYE 2lPmMMdlEmyiLTLl3tHUWsgxM0h8g7TerIZagHN33u2RRsd9BlPMioMnt+zOpG6fgut1Olp04Ar AG86Xfz9BV1fnevfYXeL7rzpz6U/eJ9q1qpKxrHYW8YLml2GZ31rBNzOr+IXi31TOgLdyMIiM8V wYxC2JnsmH0d8siWkYDidiFD6cuwp2pmXmdoSO6mkm5tG7FKf4RJWYB/H0ip3osSapyjzbaAm6c GN+qooNIT5P29R4B6bjxg/tkjvDng== X-Received: by 2002:a17:90b:55d0:b0:3a0:4066:d3b0 with SMTP id 98e67ed59e1d1-3a098e560e0mr8718465a91.59.1790500068695; Sun, 27 Sep 2026 02:07:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 087/101] tcg: Generic expansion of tcg_gen_revbit8_* Date: Sun, 27 Sep 2026 01:59:57 -0700 Message-ID: <20260927090011.10724-88-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::2b; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790500498564158500 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 d5915ecc1bb..ed503462a2e 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 2ebcf4a0665..ab1bf259296 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -49,6 +49,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 0c6146cfbe6..17f323b1b72 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -119,11 +119,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)); @@ -1016,6 +1011,24 @@ void tcg_gen_remu(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +void tcg_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)) { + tcg_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)) { + tcg_gen_op_tt(revw[type], type, dst, src); + tcg_gen_op_tti(bswapw[type], type, dst, dst, 0); + } else { + tcg_gen_bitswap(type, dst, src, 0x5555555555555555ull); + tcg_gen_bitswap(type, dst, dst, 0x3333333333333333ull); + tcg_gen_bitswap(type, dst, dst, 0x0f0f0f0f0f0f0f0full); + } +} + void tcg_gen_rotl(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_rotl, type, 0)) { @@ -1349,20 +1362,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)) { @@ -1583,20 +1582,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 Sun Oct 25 09:31: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=1790500127; cv=none; d=zohomail.com; s=zohoarc; b=Ty68Lupgl1Wj1yrNg4EBRu+ZMMMl5La09/wCV/wocDjfAJE3chDOJKf4FDVW9ql4NYOrWy2Dq+1V7uOI8PfSubTyGIZiRA/CBW/0ZKjU/+PiYFy9q1sEqn5byH4sH3YwH5It/2LRkFh/f9+peN81n0zeYI8ZC2Fyhpy8ep8TmUw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500127; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aiL/W+aVYvVi37G+y8gfUdyGZ/lxujHcsa9u0ASXM4k=; b=k0wpuk5j89Bk1FwTamUgaq4DLTgjJm5bwUlRbRlw5DfyeKpPEkmmzIwExdw1NZZ/5Sxcwksmr/8HNE5rL3zrvaiV8fbsl2vXahQuF3923w4t1VyXiQTmG2GagDiNBlY6ly90+/L489NEI030WxsJEetdk5oCfG1IFOg+ZmPcZKY= 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 1790500127723542.0800391564866; Sun, 27 Sep 2026 02:08:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksG-0006s8-Sw; Sun, 27 Sep 2026 05:08:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAkrT-0002Ei-1L for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:58 -0400 Received: from mail-pj2-x0e.google.com ([2607:f8b0:4864:39::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrP-0008Gu-LL for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:53 -0400 Received: by mail-pj2-x0e.google.com with SMTP id d9443c01a7336-2df4aa80a73so11766685ad.3 for ; Sun, 27 Sep 2026 02:07:51 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500070; x=1791104870; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=aiL/W+aVYvVi37G+y8gfUdyGZ/lxujHcsa9u0ASXM4k=; b=IJZryVyhf/MNJD+a80piMRgTr/sO2rnDe+TRrXjVFw+8mlkGTTS3NkN6FEdl7inxnw RJo4ilIM3kipwGIiTY8Jw3L20cYDAtihFmj4x6/KqAJgvkkB+WDS1z14R//9pYTwH4Gu UqvPcvNWZ/t7dE2YWXn/EB+vYMZLf1pfZswKvxcSe8SrVYE0PNPTJ3aytNuspsf3QwBl NDn/KYoivx79HI67aHGVWKs1g+KqRXvzvtRz5pTr6jHtVT5lpS/UrHHgZnrXhyTtR1L0 AhBlwzLhJAfgSonRDW4kVFSPagGst49yFbGcmFJqwr1WahhmbF8iD6lUFe8rHySJpm4W NS+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500070; x=1791104870; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=aiL/W+aVYvVi37G+y8gfUdyGZ/lxujHcsa9u0ASXM4k=; b=g5WGO04FqkYdOBfMRISjBcJU1ZM2ToxQynyaMV4YQVErhVKc50GtGwmZ/Z/4VfcigZ CJLJTwunA3fzLV1jj5s0jc4wJU2k25XGLJWc8HtsI/mqFTBKTvlUBtBcakf6RruyfTlp aDqdiHQ9l46FvximIGg3mzQJ70v4mtCuwRRTxvDcvh8YkFarOOWWQGvDrI/BMyrIlE6/ ARszFSgDUJAJGCgZwxRkPAadz1omQBrNDqZ3UuF2V/tj8buY8nATIukE4xknxcYjzN/M lS7luCXWPBzKHRxcuoZfhFvdCgNdn8Al6qYA3LuFl7GsQOSNCW421SCRrIWqOcIxbDN6 FOcw== X-Gm-Message-State: AFq9FYIhjNs2fPYaU6b6zdDuRaFM12LwxupsNsEFdEMrml4irAPkFo0q fasRjVToY9ENBlVBuEvMiI9YBN3p0Tv+MblLN5/crQ+d0yF2W5P5qNSuLsPOsKLSQMZGI5esKbl af9uU X-Gm-Gg: AYBFou2YNbDunvrvbBguNikxB8lD9mhWVnYlPkGMChFLEY7m7mF2JmjBgQnZ/6+Hcu+ YuQUBprWzlu1wwgfq3Pxu4l1kJ1s3hUPQy+G3H/UuOdhCF314tkFPH2V8+dQHO0Zy7ipigm/1YX mIfcTRReeXdA+RcWZVea+DG3ZeS3q/QIiJIiuuUP6/OCZweEHi6jiiEBW6OAdLSGl5b241LBHb5 JkvC+JQzjBB/3L7Hts4WMrnAyy+qPdC5JpTalYTc6ohroTdyKHEy1sMfame7Bb7BkWC4/eg/m5d YJxNEE3/c75vGvApEhP/8zepFBmdc7z6EBKHYIJfh7ewmRRxjU212oxrjWuQh2xn6El7CGedkLw bQEqxx/iFCvf/VzgDX5Mzm2/kfWdS3/lJJX4H23M0OkXpjLj/rjkzfqwACp/Fv3kTnejhvpWr0c CVK40mKrK4Fpmnj7vQ8UgwpSk9LIXA96CVZ7SObXaXi7lp4lBezP8j+4Rp+HAEjWgqPPH96M5AI DLlBtMcRGnGrk+cO4NT90dMyJnp1w== X-Received: by 2002:a17:90b:3b4e:b0:3a1:ef0b:5a0a with SMTP id 98e67ed59e1d1-3a1ef0b5e90mr1288856a91.23.1790500070183; Sun, 27 Sep 2026 02:07:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 088/101] tcg: Generic expansion of tcg_gen_ld_* Date: Sun, 27 Sep 2026 01:59:58 -0700 Message-ID: <20260927090011.10724-89-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::e; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500129756158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- tcg/tcg-internal.h | 6 ++++-- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 19 +++++++++---------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index ed503462a2e..b7c31ad6c8c 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -144,7 +144,6 @@ 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); =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= ); @@ -176,7 +175,6 @@ 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); =20 /* Size changing operations. */ diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h index d6ea11d8fcd..bfd34905ee7 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -191,13 +191,15 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg= _target_ulong imm); #define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4, T5,= T6); =20 -#define TCGV TCGTemp * -#define TINT int64_t +#define TCGV TCGTemp * +#define TINT int64_t +#define TCGv_ptr TCGTemp * =20 #include "tcg/tcg-op-def.h.inc" =20 #undef TINT #undef TCGV +#undef TCGv_ptr =20 #undef DEF1 #undef DEF2 diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index ab1bf259296..6284358a132 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -31,6 +31,7 @@ DEF2(ext16u, TCGV, TCGV) DEF4(extract, TCGV, TCGV, unsigned, unsigned) DEF4(extract2, TCGV, TCGV, TCGV, unsigned) DEF3(eqv, TCGV, TCGV, TCGV) +DEF3(ld, TCGV, TCGv_ptr, tcg_target_long) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF6(movcond, TCGCond, TCGV, TCGV, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 17f323b1b72..4d6838e8dc3 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -240,11 +240,13 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo) =20 #define C_TCGv_i32 tcgv_i32_temp #define C_TCGv_i64 tcgv_i64_temp +#define C_TCGv_ptr tcgv_ptr_temp #define C_int32_t #define C_int64_t #define C_MemOp #define C_TCGCond #define C_TCGLabelPtr +#define C_tcg_target_long #define C_unsigned =20 #define TCGV glue(TCGv,TExt) @@ -271,11 +273,13 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo) =20 #undef C_TCGv_i32 #undef C_TCGv_i64 +#undef C_TCGv_ptr #undef C_int32_t #undef C_int64_t #undef C_MemOp #undef C_TCGCond #undef C_TCGLabelPtr +#undef C_tcg_target_long #undef C_unsigned =20 #undef DEF1 @@ -767,6 +771,11 @@ void tcg_gen_extract2(TCGType type, TCGTemp *dst, TCGT= emp *lo, TCGTemp *hi, } } =20 +void tcg_gen_ld(TCGType type, TCGTemp *dst, TCGTemp *base, tcg_target_long= ofs) +{ + tcg_gen_op_tti(INDEX_op_ld, type, dst, base, ofs); +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -1392,11 +1401,6 @@ void tcg_gen_ld16s_i32(TCGv_i32 ret, TCGv_ptr arg2, = tcg_target_long offset) tcg_gen_ldst_op_i32(INDEX_op_ld16s, ret, arg2, offset); } =20 -void tcg_gen_ld_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i32(INDEX_op_ld, ret, arg2, offset); -} - void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_st8, arg1, arg2, offset); @@ -1445,11 +1449,6 @@ void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, = tcg_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_ld32s, ret, arg2, offset); } =20 -void tcg_gen_ld_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i64(INDEX_op_ld, ret, arg2, offset); -} - void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_st8, arg1, arg2, offset); --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500330; cv=none; d=zohomail.com; s=zohoarc; b=i0QQvOaKDYRAxXo9UnT1g6sfv3/1LgDNEJe+44G7RldEdrgIA/X+IzHemb3O0tjyuVB89RlZZ3dreNnzBnFEQpy9pP8ogqsgawBwIrCXLx4uTFMlcpLqyQG8DURwFC9PSk1yy8MF1TVTEXQBGFEfPJIb6wh84KvIxwNbJtEBqRo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500330; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zMD7ymTOYJDBoYV7LsUQ9zk1ZoLly78yNzWsLIls5+M=; b=K1qtXasHgP0wiEWaUoH/LT2we3HReZ0dFVb9fjBG7tiK3VtZqZEAk7yKzSvppCrlzk2IIdFc/BGfBcns2xZHm7be219TdwrQEmHm4nv9v/+XbtXRxM1P07lPqqQr9aFAU9Fsm5lwpJ33NFw6SXZH4C7/3lwJbNFVP8F7UrFMykg= 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 1790500330421678.4863381028727; Sun, 27 Sep 2026 02:12:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksI-0006yH-CJ; Sun, 27 Sep 2026 05: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 1xAkrU-0002HD-EK for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:58 -0400 Received: from mail-pz2-x0c.google.com ([2607:f8b0:4864:3b::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrS-0008H8-JI for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:56 -0400 Received: by mail-pz2-x0c.google.com with SMTP id 41be03b00d2f7-cc78d45f78fso1200690a12.3 for ; Sun, 27 Sep 2026 02:07:52 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500071; x=1791104871; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=zMD7ymTOYJDBoYV7LsUQ9zk1ZoLly78yNzWsLIls5+M=; b=ZwXCwRwz4qyjQsBG40QdelLDPUh0aTZVz3k3TwkGpObd7hQ2IZhT4mJLmtzrBE9CRU Mlk4gJezOiIZM0PyFt3gPsKcRFwh8TauyJg7lqdEZf5UuDwXqbsXQJ9MaZecew7GcqJ8 N6BbUD0eps+6aFzU234+rlrcQNg5tYDs0R2GBu3FDTWsJe7c5w5DumWVDe4J2akc2KOr yesusFLs+qA5bBIykMovIEs+SfZonxBs8yQk6Nggftm+OaLgKKLPFJoBvbTF+UTA855n uR/s5JOhGXzshgiB/szm+1hmZbq+GabEBViPbJdZKnPlU7BYRVWNo5b7ltoWovb3qC8y wIrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500071; x=1791104871; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=zMD7ymTOYJDBoYV7LsUQ9zk1ZoLly78yNzWsLIls5+M=; b=NIfykMW4H2bCIxgl8/3LebQ5XlZmBFcfqeWpF5lmyjfbvwT1mJB4iaYRQOcqh8EH74 ydIWB/IInOsefPeRVSLo5GRkKtAuRmVLeBPBWugwkooiHad9a091HeD+h77+BXtAefar 1GyTgaAnkOqiQKrHYf0GdMyBPBqKNlMX5MCRYUKvEQjKZg5imWVXEvQ+0e+8lHynHW8U JXpW3LiMWOtLYRj0z5keuOWQ7bR/KgFcRrb+Qu8+TyXjpy/LwwzfsdOtRkN0GQDSOhh0 +gN6OZVOXWmMTucM/udNd16zVE7eoSJs9B3VbA/eefml/WrtClkVMV63omlShCOyfdC3 nqpw== X-Gm-Message-State: AFq9FYLlXrCaic+UZmapZaKFyUy9w2YlKRoQO5npbSWRvX5yk7csq69n J15sdemyQy2lUwjH05VqdmkxjiqHI8ZeV1YObEKkqW7RfT6GS4UO4UuPikhlkjXjlK/SfXCDOyf sl3a8 X-Gm-Gg: AYBFou2JjfzsNc+sGrtcdYQeMIubB/KzMDPS0EhsQodRyL0JltzMPkjtYdEqLot6KQV 4ESP8uB/+CkVRvX+A6u6PqsD1X6T1C+YnFqOcnYW6Ny5gwiyZPfje1QCqxHldBjm/1f3bkan5cu PgJ0TuE6MfO9EPrLbIkpv0piSxA54ympf1iPQM+MfUAM2YYhI9Ex056Uo0qUvF5KFqZc60+vLG/ q+mDFhAL+NYKndEid2JUfunHizngjZ8tyM57jgHAWi9oJssmSN1PEcpWcXbRrvE20noWCrMVOtx GpM54f6VoepjFgGBjrKX6S2jQRQIzvn0X9DX9+X6CNP02gpINA5xcWILOFEBadVogS89eQUjoTd lbdDrNUuwW5gFPycWqe8VDYa0gkFE7giTPrveiq70vb51xlOxaKOi8VQtwoisHV6L/JzLsoiV/C T5USPbnbNoYVqOGQZBNmjob3mFsopwSBojxTcFeDubjs7tV1wnQ/46G60CTLKb1lBGAbAnDUeCO qOX5UZdE7fff6kYlXSbLgS+J+jMxw== X-Received: by 2002:a17:90a:d2cb:b0:3a0:dfb6:aed1 with SMTP id 98e67ed59e1d1-3a0dfb6d480mr3339159a91.18.1790500071171; Sun, 27 Sep 2026 02:07:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 089/101] tcg: Generic expansion of tcg_gen_ld8s_* Date: Sun, 27 Sep 2026 01:59:59 -0700 Message-ID: <20260927090011.10724-90-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790500331983158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 16 ++++++---------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index b7c31ad6c8c..981dfb73019 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -141,7 +141,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_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= ); =20 @@ -170,7 +169,6 @@ 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_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= ); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 6284358a132..a110e645104 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -32,6 +32,7 @@ DEF4(extract, TCGV, TCGV, unsigned, unsigned) DEF4(extract2, TCGV, TCGV, TCGV, unsigned) DEF3(eqv, TCGV, TCGV, TCGV) DEF3(ld, TCGV, TCGv_ptr, tcg_target_long) +DEF3(ld8s, TCGV, TCGv_ptr, tcg_target_long) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF6(movcond, TCGCond, TCGV, TCGV, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 4d6838e8dc3..cbed2ce790f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -776,6 +776,12 @@ void tcg_gen_ld(TCGType type, TCGTemp *dst, TCGTemp *b= ase, tcg_target_long ofs) tcg_gen_op_tti(INDEX_op_ld, type, dst, base, ofs); } =20 +void tcg_gen_ld8s(TCGType type, TCGTemp *dst, + TCGTemp *base, tcg_target_long ofs) +{ + tcg_gen_op_tti(INDEX_op_ld8s, type, dst, base, ofs); +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -1386,11 +1392,6 @@ void tcg_gen_ld8u_i32(TCGv_i32 ret, TCGv_ptr arg2, t= cg_target_long offset) tcg_gen_ldst_op_i32(INDEX_op_ld8u, ret, arg2, offset); } =20 -void tcg_gen_ld8s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i32(INDEX_op_ld8s, ret, arg2, offset); -} - void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_ld16u, ret, arg2, offset); @@ -1424,11 +1425,6 @@ void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, t= cg_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_ld8u, ret, arg2, offset); } =20 -void tcg_gen_ld8s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i64(INDEX_op_ld8s, ret, arg2, offset); -} - void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_ld16u, ret, arg2, offset); --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500226; cv=none; d=zohomail.com; s=zohoarc; b=Pn3PCVUHc21PYRs/HctSo7MNhdzf1n2Ckb/Z5SIzSOV+0JU4Dg38JkFdyIqlh6kRSOt3fP33BTKtRRDV7KQUVfLUPudndaC8VpErHnROEJU/rWTgRbW/oYr0kic4fSOW38lHeGIJ1DF03m1RC3Irj0aNkytIN6PXuieJP3/P6Ys= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500226; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=y9pw3OmFbDMZGRxcU3/AveybLavelLjphoam390pneU=; b=OFz3RNoKCfGFikPaBkTdLue/oBS8gezbnXVnIgCBbPHDFfLyklEKr9Auqs9wwHAIC6G0e2J0scEmDCO2ntJdllteNMnXeGN3bPILWGQN+ubwMhKG4KJ4GiFs7aWcSWF0zFHIBZvY9/ny0RKHY4rTizNu/yBXu7r98BMWxEdtxCk= 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 1790500226116714.614595971575; Sun, 27 Sep 2026 02:10:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksW-0008Is-Na; Sun, 27 Sep 2026 05: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 1xAkrU-0002IC-Go for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:58 -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 1xAkrS-0008HI-Q9 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:56 -0400 Received: by mail-pz2-x0e.google.com with SMTP id 41be03b00d2f7-cc797656e44so468054a12.2 for ; Sun, 27 Sep 2026 02:07:53 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500072; x=1791104872; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=y9pw3OmFbDMZGRxcU3/AveybLavelLjphoam390pneU=; b=bWD4gblmG3+8T5x9GRLfGi568GbQTRh0qqCnatBxhFuOpRrMrSUsvdDPh5ex291Kw1 K+EOeX9K3jheuIL6jiT/BbsGPzMEZgLAfSQVR1SRU9niAcbjcLqWfyq29e7v4C/z+7wU Nzjzlrej/cVxsKE1sKV/zbA2fKpKiFoFY55XTgYmtifYVc5BIjIdwg6ihB58NCDfqTXM dKJiLQFjML5vPKVcTCgDRn3s+W+9kYERrzh5DouHkAZipylww0R6HO9iYqh98WgVJXSX UF1cbAANAE3Ip0/TqOywaNFHkDUZGNB1YbKap7zbj6i/UIsuVYGTLhiyt/txcdinknZm FHBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500072; x=1791104872; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=y9pw3OmFbDMZGRxcU3/AveybLavelLjphoam390pneU=; b=xD+Bvi9C7BxBNR6X1mUGp2M127EU7knGCu0+Hg+RBzSwslwSje49AljYVlWQ8hgrsW nqOXHo3hDi7xi6QrpVTVOOhGY/GYoPZUuU3NcGc/G8iTUiCdWjra/p8G74OoE1SsNBfv 6Oy6fcbCw6PkhQiW05AhYcf2jPRWrL90L6cM/Iq9PkJvVad6X781bD9lL3TQs1TI4pLf oNBn8CvTmCTKhXUt5jigwubw+Ta0wULqi+XxZhSfShPtLqvZzUMQ3xd6XRwVDcema8Cb 1v46iTjhFFz+oaiDi2kHwdHgbz/M94Z8W3wtdJN26XoCoIw5DLJQ/FYPwAAf+mQDKQsJ uSEA== X-Gm-Message-State: AFq9FYJjPXZf+QafVyJ4JLvcoPPHyfKsO9LUU/LUMsPfm4nwxZBq+ZdZ CcvidcCC0rShuQN9jZhrMO7y5M/lRmVkmQr/m5je2ypnRGsKPLreJcPmZD2ZFFderGBzN4EnKDd 9dBbg X-Gm-Gg: AYBFou17hoDxH7bodChiroyQlt1FWTE9561i5sp5Cyu8ed1z1tS5LE/ZKZr2dneErQr 7fhhddnt0mUb1Cmim6L4i56s2Fgbpu/hv35pSmovoCxNWKPN80Uou46eWbmyoFtZIolkeOLu8lM v7Z1PGL4RFJ2Jkm+7Bqfwa4fcwizAr+eQ4C3xp6kskXIdAhalr0crcWnzAEaIzBfNk2vzbkSuR/ QCY/4HY5zxv1tGj6fvqN0BkPr8hpksym47ICB04i881UCgrL+ovMgmuoNxJyuGbAar7s5tzBYwY zCzumxmh+wYsMni0Nqh1lp2gXZFUDbbcssUmUvNJcHx1FcodU7D5IiX0gZUtnQ5AnV9Dpc76Ljs hg1nC0unZHYtnWu0WruiFEixjwQvO5DFFu7ocFvK+X7pxHyWO7V+ZCft3+5JhYsg5zbzILTu2AD TRo/lLw3eYc2Qci/jtrpM3qOmtSp01a3snORtdunHRgrzlDbdJzE3dIwIunimaYOroXHYJPlQEG K3cy5pa0D4qI7x862rtwj/sIvFJvg== X-Received: by 2002:a17:90b:540e:b0:39e:6a7e:ee1a with SMTP id 98e67ed59e1d1-3a098da41a6mr8394533a91.38.1790500072481; Sun, 27 Sep 2026 02:07:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 090/101] tcg: Generic expansion of tcg_gen_ld8u_* Date: Sun, 27 Sep 2026 02:00:00 -0700 Message-ID: <20260927090011.10724-91-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500227615158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 16 ++++++---------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 981dfb73019..bf300de4b9f 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -140,7 +140,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_ld8u_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= ); =20 @@ -168,7 +167,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_ld8u_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= ); diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index a110e645104..75bb38a07e5 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -33,6 +33,7 @@ DEF4(extract2, TCGV, TCGV, TCGV, unsigned) DEF3(eqv, TCGV, TCGV, TCGV) DEF3(ld, TCGV, TCGv_ptr, tcg_target_long) DEF3(ld8s, TCGV, TCGv_ptr, tcg_target_long) +DEF3(ld8u, TCGV, TCGv_ptr, tcg_target_long) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF6(movcond, TCGCond, TCGV, TCGV, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index cbed2ce790f..608010bb542 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -782,6 +782,12 @@ void tcg_gen_ld8s(TCGType type, TCGTemp *dst, tcg_gen_op_tti(INDEX_op_ld8s, type, dst, base, ofs); } =20 +void tcg_gen_ld8u(TCGType type, TCGTemp *dst, + TCGTemp *base, tcg_target_long ofs) +{ + tcg_gen_op_tti(INDEX_op_ld8u, type, dst, base, ofs); +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -1387,11 +1393,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -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); -} - void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_ld16u, ret, arg2, offset); @@ -1420,11 +1421,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_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i64(INDEX_op_ld8u, ret, arg2, offset); -} - void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_ld16u, ret, arg2, offset); --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500473; cv=none; d=zohomail.com; s=zohoarc; b=AeIi19AIojYUSYRqold4k6kiDEImd5ugOSxHRl0ElZOgl+jSX1uhGQi4sATLfSJTfd7dTP7JLBXalBZlS1Q/fP5FRNnX/xNHx2gmCjdQryYy8C+5ow3qlaRDUaiG9OXyr5HaDrzLW+qF0izGwEls3XU3JcXLFt/YbbFV2JK8BcU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500473; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Uu2xaJ+fNg2AxWgY8ED6VJtHshgxiIKwKiGTq3A8uGA=; b=COVYE6ZX0Z/OZ6kpEoXRFzBBjIgGJCDdQ27fLCQpBqqcdAjj+cHcLkAcKHQZGJNDY6gGyFZVnqacBJPAurpH7qmtdb67RUuvu69p6yOvH/CzZQPc6GCti7WOYBeIj7+sU/cQWRuxz5SGGlb4lv3t2wMx2cKHOEbV5IenaFnlIZg= 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 1790500473210957.6897740520626; Sun, 27 Sep 2026 02:14:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksX-0008R7-W8; Sun, 27 Sep 2026 05: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 1xAkrV-0002IG-QV for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:58 -0400 Received: from mail-pz2-x2b.google.com ([2607:f8b0:4864:3b::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrT-0008HM-Gp for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:57 -0400 Received: by mail-pz2-x2b.google.com with SMTP id 41be03b00d2f7-cc78d59bb02so640779a12.1 for ; Sun, 27 Sep 2026 02:07:55 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500074; x=1791104874; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Uu2xaJ+fNg2AxWgY8ED6VJtHshgxiIKwKiGTq3A8uGA=; b=qtwC4tCqrpNqG6FXH0E9ciPOkqcLgM3CodlLiJaKSe4RXeUIzW/dGc7n2Nceur2QdT Qz5Ti8GiygkPgEZrJiU/4BZq2cy9Nn95be251OGWUf/Iujn6L9dLVGf2WV660sjCGsn6 Ku1qVLzV9Jtb9XJPAYQCZcTLT/vVuasxLRYI1UTVV2TlKEcHf9X3lmf71zp5p9Iydopu 0HowdTJ3xgW1nKqhJk3ZldqHvpUcEXyrzO0SH/EFpjbEAYXTqdQ/6AepSiq9kZtFPZbV Rbb2+G84xWxTmUpTF85DVL3iDcX8OcAOMhUSpP3bVVAfB4MyQcZxaDZpFP0sT+vEc4Y0 gmag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500074; x=1791104874; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Uu2xaJ+fNg2AxWgY8ED6VJtHshgxiIKwKiGTq3A8uGA=; b=czLeJaqkP0s3zgYYas58qejmiRDEz2XX+5B60ov06NpknOIHNuSprFiV4fUsdbyq95 PUVWFr9PpcAb8rFzQKN5tEVqXwoWteDoKazzeU9xnOwBG3m9+xo4Ei7ytrUkn6zelBeT a+Sedg6J/HvsTj9Mo9ZtmgV6ZF3PW8iatczUbFEO7g66HMXjNLEdjhDgilNm0093UNEG Lw4emVolAcIQ1ACNbmmvp5tKdyYDpEsagXi7hSq2U9gO1LPjUfQJ6+VMN0L7qWDwBmiK lOCRkYG4WSgJg9zjtpXfpVFcCZyhNNgqFKOVJ4R3zeFCPwMydKsO5RzzNCKyKzMDGjDa 4HTw== X-Gm-Message-State: AFq9FYKiGccSL95+cQhxgX8idEDfPtqxuNqETTq2P+rOIikzS0OcZpX/ I1f9cK9D8AbBP+S/ZoggIxXMRMdw6sFbMVga+gW3VQjODy/4yTnBbSa6PCkAlZ95Dj44X5goIqc IuavF X-Gm-Gg: AYBFou0K7SkKhb/HNKRaNFkNpjho7zT1Ck/3l8UNWjuYDyHCU/uRDXBv+rcilUkrUDv C7MUuRb0/DxJ1X400tRVfw5yi8JiFKWMrPieCx1KuobrQlvRoHNa/2CQu5g2vGFz5xx6c3QH283 hCoiDwFvZl/vOJDGoeTw1KidELSR7fR39S0iC3wGtzYdmZTo7/bwH6S4h7+Lr7djhEdrSPgUr/f RoEYILa1gy10vqXdajuG+iTMZrGofIARYLDjniXOuck/DxNHFx2Isef1SlOkXopN8uFZQdHaiBh p6wczEBN73QwpBSWtvdBGXAC1ddcNxPLnLBk4SleiuOPQsT567JIz1+zWkLmD0oG9kcH6d78drK 3pZyPf2/9TOYgCTxbT/swacYY48G4JvT2ve6qQGZ8UFn7rHHCHaYLAOzkdA9HuGT4wm4iNa7W3v xWmDyjsSx2oPBZSGxMAugDrQ4MtT7gJTSlYkb/Lby6Rbb9Kcluxd5M4YmcRMVmKtWAADyriZjsl L01XK0v4OPuKleYJJKyKWGkOyLllA== X-Received: by 2002:a17:90b:540b:b0:3a0:4384:adf6 with SMTP id 98e67ed59e1d1-3a09855cfa2mr7806444a91.0.1790500074078; Sun, 27 Sep 2026 02:07:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 091/101] tcg: Generic expansion of tcg_gen_ld16s_* Date: Sun, 27 Sep 2026 02:00:01 -0700 Message-ID: <20260927090011.10724-92-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::2b; envelope-from=richard.henderson@linaro.org; helo=mail-pz2-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: 1790500474654158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 16 ++++++---------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index bf300de4b9f..3782d1839fc 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -141,7 +141,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_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= ); =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= ); @@ -168,7 +167,6 @@ 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_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_st_i64(TCGv_i64 arg1, 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 75bb38a07e5..785c417a74e 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -34,6 +34,7 @@ DEF3(eqv, TCGV, TCGV, TCGV) DEF3(ld, TCGV, TCGv_ptr, tcg_target_long) DEF3(ld8s, TCGV, TCGv_ptr, tcg_target_long) DEF3(ld8u, TCGV, TCGv_ptr, tcg_target_long) +DEF3(ld16s, TCGV, TCGv_ptr, tcg_target_long) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF6(movcond, TCGCond, TCGV, TCGV, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 608010bb542..af28243cb73 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -788,6 +788,12 @@ void tcg_gen_ld8u(TCGType type, TCGTemp *dst, tcg_gen_op_tti(INDEX_op_ld8u, type, dst, base, ofs); } =20 +void tcg_gen_ld16s(TCGType type, TCGTemp *dst, + TCGTemp *base, tcg_target_long ofs) +{ + tcg_gen_op_tti(INDEX_op_ld16s, type, dst, base, ofs); +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -1398,11 +1404,6 @@ void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, = tcg_target_long offset) tcg_gen_ldst_op_i32(INDEX_op_ld16u, ret, arg2, offset); } =20 -void tcg_gen_ld16s_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i32(INDEX_op_ld16s, ret, arg2, offset); -} - void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_st8, arg1, arg2, offset); @@ -1426,11 +1427,6 @@ void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, = tcg_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_ld16u, ret, arg2, offset); } =20 -void tcg_gen_ld16s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i64(INDEX_op_ld16s, ret, arg2, offset); -} - void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_ld32u, ret, arg2, offset); --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500477; cv=none; d=zohomail.com; s=zohoarc; b=EsxPdNQJwcfhUPn9H4F27awujyzNyYoCyvKxBHFk306jUSLUYbrp3mp+C/JD09qewsw0+SHMT3V1+A5WcdYtrTAE3YbFl3t5SZTzAwr2QDlxfZqu6fembeqRJA1ALjV7gfsWOF4lVyWOuWDURNHXSVujctRbBe+T1i/8ySHa/JE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500477; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=34GesCfJ41uXeINMySRlD+FbBtQ/i+nUzxw2l7ILNk4=; b=Zb9z+wcpWgtLRemuwtS0l95cqe3zxnj23anOJQ0y/M+HkqCHSXcFJM8J3c7LAuR+nII2JlFMyxtxfW1UrCCCWJOtp/IJOf1Owdre0Ingf4VUyCP+AifXDP3LRSpSJBvq8vPXDGXRFkyc9VmQgVhoa6/bLNGflNsDXapAux0MkGU= 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 1790500477169147.3001397232431; Sun, 27 Sep 2026 02:14:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksZ-00007W-NC; Sun, 27 Sep 2026 05:09: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 1xAkrW-0002IN-6p for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:00 -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 1xAkrU-0008Ha-Hq for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:57 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-396ccda24afso1120955a91.3 for ; Sun, 27 Sep 2026 02:07:56 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500075; x=1791104875; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=34GesCfJ41uXeINMySRlD+FbBtQ/i+nUzxw2l7ILNk4=; b=Lm9NKOBCkFRpXSw297A60NXpwdByK58hxJBgxPL9GLLSQQtbpW52J+M4xyNS+c7jwy jGmveY3bq6/RrVojPLhEqIhXvmXmElglyGB64LVap9eHJpntOwh5RkTE6Yg0uer18PMb /FpqlbbwVP6mUD43aqvq5uv7zrw9ppY9CTIEsQQRlccevcQjRY8Z2smKfrUpa6ybyg8X 4fGFiFjDRHuotn2XgW3xw6r0nzgzg0muy0OR2tK1DsGIgZZUFfq40fE54oChzmke+KPv Y1ooYIxZT3OFri0IOROFAoOgxoGZGENIlHlX2AQDt0dRzKtWNOmSfoKQVPk8SP/o6EoP OfMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500075; x=1791104875; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=34GesCfJ41uXeINMySRlD+FbBtQ/i+nUzxw2l7ILNk4=; b=LCm8vEBJwbTe3z/GkkAE2Frv0p47OxwEJmdW/wuCXWOywO0n8C/hBUGeoGj8F9CJj0 lKsxW5QBl+x/Bn6uDOouH7xp1NqEwpseAC2aDyDlrmnYs6QIG5e/fNQLYSQEJcRN/fsm ikaMPLJxHfLxnwL8V4+qGtoMqG9pZTvKVBclwP1alNli1yfIjOyKKrkELqIuD8ODs7eY qQjUfnXj4BD7s3ZO84D8cYfmcq6xGwPNg13caIwblOE+UVcrcziJ2T/H1NI/4gQFlYKy IxfokxTy+rxA/SEv05QDgDGB7+FXlAurXv2DbdyiQThUXjggMllWKRtvbl6k8SJrokSI GqGA== X-Gm-Message-State: AFq9FYIv0p/bCyk/soZo6wyLxQb0FbEJEBGLLCCSqVTUr8sNBuB/9Nfq TSMgBq7TLuk9kiMFVIWqEla9npAydZftY/Lu9zDt1iLulwQPRg+hP9BHVChlAQ81Gm0nJP6613O N2ziF X-Gm-Gg: AYBFou3SANbot6/daQ7YrIPB1wYyz5x+MmtmngNHbh8/zgW8/qFaki89307sfOjGmfD mPgeUMSv7iIP09QS5fto0TPV+1uCac72UmSJLmSx4WxaXHz92y8dodtbIFCuJLHi7y2ciTLcUlP QWzOlr04Dvr2SN8pyHuYLV0PR2+QOTPmFZiQlcJop3adERPWjqjJPn1gqGiBXE/xCbj44oANEwV YAhKTJKSgRH67aSHJkcKIBHOH7GzAiBd0QZ3NyCG7rIuo57U9zINF8m8ixzJtVS6iNq3fEB7Hk2 G4m4jBmLWvBvUBw5ABh9yFmRCqAm4sxx4V5FRXN5ydtV+ZwxVu8YFZkzNzcwDaZaYRyb5mrFY09 k/HOS+Wt0onE0ZyYy9yjf/nd9DWESlQulz+Nyl/OPzv5o5DxmElb22+RkZoUtaWGPRlw/G1ppFB R0ohqevxUaSPYccnpGHyQr26POMM6UHgc4TGXNT/FaAjiHo5jmzIT3jCxXaLG11XcSET5Rzfq+C bTz49wIFtx3K1NHYhVXmHHTN0zFBf0= X-Received: by 2002:a17:90a:f94d:b0:3a0:becb:914a with SMTP id 98e67ed59e1d1-3a0becb9310mr4066290a91.3.1790500074993; Sun, 27 Sep 2026 02:07:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 092/101] tcg: Generic expansion of tcg_gen_ld16u_* Date: Sun, 27 Sep 2026 02:00:02 -0700 Message-ID: <20260927090011.10724-93-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500478580158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 3 --- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 16 ++++++---------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 3782d1839fc..a2786b8bd55 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -140,8 +140,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_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset= ); - 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); @@ -166,7 +164,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_ld16u_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_st_i64(TCGv_i64 arg1, 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 785c417a74e..98a07a70f09 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -35,6 +35,7 @@ DEF3(ld, TCGV, TCGv_ptr, tcg_target_long) DEF3(ld8s, TCGV, TCGv_ptr, tcg_target_long) DEF3(ld8u, TCGV, TCGv_ptr, tcg_target_long) DEF3(ld16s, TCGV, TCGv_ptr, tcg_target_long) +DEF3(ld16u, TCGV, TCGv_ptr, tcg_target_long) DEF2(mov, TCGV, TCGV) DEF2(movi, TCGV, TINT) DEF6(movcond, TCGCond, TCGV, TCGV, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index af28243cb73..647c7d1308b 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -794,6 +794,12 @@ void tcg_gen_ld16s(TCGType type, TCGTemp *dst, tcg_gen_op_tti(INDEX_op_ld16s, type, dst, base, ofs); } =20 +void tcg_gen_ld16u(TCGType type, TCGTemp *dst, + TCGTemp *base, tcg_target_long ofs) +{ + tcg_gen_op_tti(INDEX_op_ld16u, type, dst, base, ofs); +} + void tcg_gen_mov(TCGType type, TCGTemp *dst, TCGTemp *src) { if (src !=3D dst) { @@ -1399,11 +1405,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_ld16u_i32(TCGv_i32 ret, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i32(INDEX_op_ld16u, ret, arg2, offset); -} - void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_st8, arg1, arg2, offset); @@ -1422,11 +1423,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_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i64(INDEX_op_ld16u, ret, arg2, offset); -} - void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_ld32u, ret, arg2, offset); --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500329; cv=none; d=zohomail.com; s=zohoarc; b=MtV1pjs0kZ+SYFe3msDcgiBSsdn+o0IH2BBgD7h6nr0ON+fVovzlJm9NC6C70+IBPhM+F+33v4X1KZdyPX4F+bynCmlcRDyEnfk4TTv1H36jWzKAAp7GsMxmRFI4R72rrsUep2g6p1ZPNHnifNtU7cwvIDJflV4vcQ6/0yqfq5s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500329; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NBid/Df+8xwSnPdPiDTf6owCVQi+vyqpZvS/U0w4JtM=; b=T2EPY3pvjZesKgC9RR2T7wFjne5MzmVRXeqmc7wQPU04i9YuTihyv9vs+GQG1saYUruM/52pLfq4U/1kQbyp7dGGvj3IkrAcK3RJAky563JxgmdjvFnAbvTZ29E8Re3kNtB0WRajRb+BmdmiSz7kTxe7hM2TL1TI6pnUzm6QNMo= 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 1790500329489351.0474766846909; Sun, 27 Sep 2026 02:12:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksr-000202-G1; Sun, 27 Sep 2026 05:09: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 1xAkrX-0002Iq-Cr for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:00 -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 1xAkrV-0008Hp-L9 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:07:59 -0400 Received: by mail-pz2-x10.google.com with SMTP id 41be03b00d2f7-cc4d04d740cso719656a12.0 for ; Sun, 27 Sep 2026 02:07:57 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500076; x=1791104876; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=NBid/Df+8xwSnPdPiDTf6owCVQi+vyqpZvS/U0w4JtM=; b=Tthh2iUVuTGvtvzX9YkFp5dAoLf4md04Ie3QmoF4l0gizzywbTMYhLD3wDX5dIzrzu Fx2oZdkEPSlW+DkUEaiiK0Bh4M9XVsohoXOUo8MfdirVhG7IMlZJ5NPYEKcGlnZCQVAP l5E2FL36WC5pAWNy2OC2hFMgzAsyg6ATPnVo9LJH7yWGa4ZczRwrkFkzoBsFnHFfQTZS EhjTqgJs7oTngv12FZ5arp6x80gI7ui8e65FyJNt0ehc4MGMWMDwHzeDH0qMbFkgIkM3 3y0GF7YugP8FsdNCI/2BWTX/ryeVaTtLVTdunyh50CQgrYwZ3fdUU9nVCer1fQjJ7lcW noQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500076; x=1791104876; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=NBid/Df+8xwSnPdPiDTf6owCVQi+vyqpZvS/U0w4JtM=; b=eW2Iti2m2r3A7E4l2C5zdHpmv2mbjHU0oFGlmIsl+aKytlrgWmr2z27ugythjwE6ah zKFJKQXYdfLWMlIYHew9Ti6p1m8d5KeY3wlltnt9WTSHelenk84bbC21+hhEsHI7y4XV LjWxX/kZ7U9CaS1NUnkkxvhPzBChnNxIn3ZFsztwrTSVrbCmut/OaqSFkXsDwGWHofk7 ICptYlI7r2Yq2n9UwlBojf0CuNjvzblM4B76na4YKGZ6WoBH5HvYaoq4yb7pdNI6E2Gl eLpT3J+Lm3h7OIA75oS473oSjVGoltkCRF9dXPg1fsdKVol3Val3a6K4ctoKzD7eAVof 2kSg== X-Gm-Message-State: AFq9FYJNwJUV/ARiBiB2eHL8ovtmbdzwJLFi54Kr8XdSc3eEnT4187ih 62dXNPeT9yBzcYv6wGm7r60iF8hFgASAEIGxNeZd6PM40SCtGlxvpAbG95tVLnKnjPsqSsD0/wY 7jRbg X-Gm-Gg: AYBFou2eBpYwGf47l5yQslwP0JvPCVsepWAFUPMKyEl7o/9UAIncSwPkJYXD2gbiLaB Te4WqD7wj0S2VvpyzkFy9NTyQGWOLoSAaAMXU5kogS151kDNvwM3fOLW67flREZCQug2hHgEIeL 0kwXQkDMtiX1wpH5J41fOIJx5PisuCM0UzMgtFxDUHIUOqKyhzlTDxifcQJJbJFkuJR6x+Vyl0H cGm7eGavU1oBe1HYXY6rAlhsgZqe+AYLgFfwmbxW8kQn6QyS/tloB8lq/zeuJxmf5BPZQjf8dmF yvhEYXC/h1nErAyNtkmWHC03EXuKzFMc25pZtKO3JU4HhV617NtrNxaKmKkZa5EFvvABI/qdvBe 2cpdSqz4klqYx4GJ8WQE6brb4v2ZqLk4sOeoYBkdWvB4zHX2/U/K0sDK3lUvNIU2kjDtA0Nfe1W sl4q1stWoimoIAm3yJV1YEkRgLqI4y/TVWfDyXDkzpwwb9rKIfGXhG550BCdJON0NYcVsuycic1 UzJpon6G4WSsCGsohRNpBs8xKXuhg== X-Received: by 2002:a17:90b:2e0c:b0:3a0:be99:27f7 with SMTP id 98e67ed59e1d1-3a0be9929c0mr5525820a91.7.1790500076009; Sun, 27 Sep 2026 02:07:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 093/101] tcg: Generic expansion of tcg_gen_st_* Date: Sun, 27 Sep 2026 02:00:03 -0700 Message-ID: <20260927090011.10724-94-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500329985158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 2 -- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 16 +++++----------- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index a2786b8bd55..6c10f15167d 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -142,7 +142,6 @@ void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_= i32 in); =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); =20 /* 64 bit ops */ =20 @@ -166,7 +165,6 @@ void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg= _target_long offset); =20 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_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset); =20 /* Size changing operations. */ =20 diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 98a07a70f09..514967f91db 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -70,6 +70,7 @@ DEF3(shr, TCGV, TCGV, TCGV) DEF3(shri, TCGV, TCGV, TINT) DEF3(smax, TCGV, TCGV, TCGV) DEF3(smin, TCGV, TCGV, TCGV) +DEF3(st, TCGV, TCGv_ptr, tcg_target_long) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF6(sub2, TCGV, TCGV, TCGV, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 647c7d1308b..20622be3daf 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1254,6 +1254,11 @@ void tcg_gen_smin(TCGType type, TCGTemp *dst, TCGTem= p *src1, TCGTemp *src2) } } =20 +void tcg_gen_st(TCGType type, TCGTemp *dst, TCGTemp *base, tcg_target_long= ofs) +{ + tcg_gen_op_tti(INDEX_op_st, type, dst, base, ofs); +} + void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -1415,12 +1420,6 @@ void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, = tcg_target_long offset) tcg_gen_ldst_op_i32(INDEX_op_st16, arg1, arg2, offset); } =20 -void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i32(INDEX_op_st, arg1, arg2, offset); -} - - /* 64-bit ops */ =20 void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) @@ -1448,11 +1447,6 @@ void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, = tcg_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_st32, arg1, arg2, offset); } =20 -void tcg_gen_st_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); -} - 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 Sun Oct 25 09:31: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=1790500345; cv=none; d=zohomail.com; s=zohoarc; b=UCTLJEGjHPJm4WNxrsMgVu4bcBnj6NVQFQQrdyhmflG8/qLZk7pHJnnQtOv+oedN9ostUnXiM9mf3r2/bxQzUQZTNqI1BRDumx3/jRIY2p6S6zljyCPGKZL8rhFoCLUYS2kXXnCCVg5M6hckx4RLeklWxbmMs0lGEDTdGPD90xE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500345; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=g5lVb9UHm6MoXumPH+HknGbfOzhEdYpNEcj7Bf5Pfm8=; b=ZHAN+YzUn/Z3hL3EhK5l2yk8SOpuIL6KxxqVth91fXmDmFZbTDfPNtXG9CGqcSXfbromxsCZPepMOEA0aOYriPK9jOQvad7JRrzLQxVqEEa7IKRtMhR32x9+5HC06zHsekfY9cFCFoySA8gobdkqWD8PexAeUkhlOifWP73ydco= 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 1790500345735288.36313223615457; Sun, 27 Sep 2026 02: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 1xAksM-0007X6-Hy; Sun, 27 Sep 2026 05:08: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 1xAkrY-0002Kf-Uj for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08: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 1xAkrX-0008I3-29 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:00 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccdaea76so712239a91.0 for ; Sun, 27 Sep 2026 02:07:58 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500078; x=1791104878; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=g5lVb9UHm6MoXumPH+HknGbfOzhEdYpNEcj7Bf5Pfm8=; b=H3Ah8y/iWDCirspXDg2SJhxttSwW7/YLWuurfu9HG1Acpbq9x9o7nGmJcQ2xFQ00uc jTR8XMP4ZKVFkvqH2c4rddr93KNvx/wAyQmWnyNLBR6G8lZymJv8W47Oz3wEM7t5spU+ 30xGqa63y4hGgrfYkG2HZAscdh2keTr1jEqx7NXgo501qOzfrWCGLMvBR2EcjWxSUWzU F9Xgmp6JxbOLLCAF24tXimNEna0y//VdJQzo53SzpbdHVqYypsQduJu4Y8R8F3WEeBZ1 qOa0IDT0PHavMpLxonTjzr7phBugnfy2pzq/hEhEDTKhNVdxg0egugaZ0M/4fRYACnkk 41/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500078; x=1791104878; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=g5lVb9UHm6MoXumPH+HknGbfOzhEdYpNEcj7Bf5Pfm8=; b=MC040Whf3ShjvkGTXoPcQMwSXk/3wEoe/FEkx1pd86K9pz7sQ0nK+/WR1c+gQXYQDk T3enAGRktkExuku1q2GYb2WmgLzqrVS76YcL40QgGBvciMeIToZB/EdHaM3tNdrWCznR S2pa69q39W3a9r6aY7NqjYUf79LuhFEFKr2FoxiAz3jA8Bb9Nd5ArAwRzESHDeUcVfZC M3ccgxXtzOj9dxNubwJdkS2CC+F2TVTsGAMqv0OtkEmCUjyA7LI/EpgetQU49Xv4VlQu MEiLq0yKLihVsVB2TaDdGiaFlJrBTPmL0RQBln7OTLY12eYpwBsARHYJTGezojaq1w9h t8fw== X-Gm-Message-State: AFq9FYJB0Jb3oyfPAh2G20ofItSuFa2mpjilWpFlzO7Mpu7u1KJM7KKl ypgewCyazF+AYM1Wwa2yuBB+cdaW1DdVc/GzvXR9Z93crLBv6H+5UO4JzKqtBA+jRhPkZUmC74+ dfqxa X-Gm-Gg: AYBFou2mdjDFDS03XJOQpN40zajo3BusA3FtzQu8SxCi8WtDCRAehrJT6Lfg9E+hi9y a4tN+uh/J58hWuVKbpkz2To/xni6tzKWspwocevEZ+3U4QKBVcqtkkOIeWrcjUhn9bNcmL0xfLB W2pLWG8BCDkH2KQrzAi09pChZ6hKtlEhAKvTMtse3cKCZppuLOLJFY5jE+7EC2QWSQHsq7W0YJ+ qw7FNHen7l8toIGZg5kLTe29+rLhURcfY1jjeRnj6DBR+c9IJXp10sniKHdiPdEzQVA10bhi64R V30AnnkNnlYRCgyGBPWFM1ij8AtpdkFfk5gy/n+EtNUlY4ZAcJ7Ag0xl3h43RfQtRp4IptZ4f4e WbarQXkhOEuPxTL/YfnDUNAfOKfKTZW+PhsqJFtTJNeyYUCVLjyxQPWFWRoRESmUMVgdWFxo4fI Zp7utuogKOHPjWctC1NIOorD7KxD5JGj5mbvbZRrf0homyAyjFDoRp7RgxWmPrDP9AdcqEZ4IeX hW0OsLPE0wvKCQ8SMY6TsTQ0fylsg== X-Received: by 2002:a17:90a:dfcc:b0:3a0:cca0:4a8c with SMTP id 98e67ed59e1d1-3a0cca04bf4mr2756124a91.7.1790500077705; Sun, 27 Sep 2026 02:07:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 094/101] tcg: Generic expansion of tcg_gen_st8_* Date: Sun, 27 Sep 2026 02:00:04 -0700 Message-ID: <20260927090011.10724-95-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500346135158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 6c10f15167d..b04a9a76e00 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -140,7 +140,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_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= ); =20 /* 64 bit ops */ @@ -159,7 +158,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); /* 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); =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= ); =20 diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 514967f91db..90bcf9e5ab8 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -71,6 +71,7 @@ DEF3(shri, TCGV, TCGV, TINT) DEF3(smax, TCGV, TCGV, TCGV) DEF3(smin, TCGV, TCGV, TCGV) DEF3(st, TCGV, TCGv_ptr, tcg_target_long) +DEF3(st8, TCGV, TCGv_ptr, tcg_target_long) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF6(sub2, TCGV, TCGV, TCGV, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 20622be3daf..257ce2c3e6d 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1259,6 +1259,11 @@ void tcg_gen_st(TCGType type, TCGTemp *dst, TCGTemp = *base, tcg_target_long ofs) tcg_gen_op_tti(INDEX_op_st, type, dst, base, ofs); } =20 +void tcg_gen_st8(TCGType type, TCGTemp *dst, TCGTemp *base, tcg_target_lon= g ofs) +{ + tcg_gen_op_tti(INDEX_op_st8, type, dst, base, ofs); +} + void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -1410,11 +1415,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_st8_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i32(INDEX_op_st8, arg1, arg2, offset); -} - void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i32(INDEX_op_st16, arg1, arg2, offset); @@ -1432,11 +1432,6 @@ void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, = tcg_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_ld32s, ret, arg2, offset); } =20 -void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i64(INDEX_op_st8, arg1, arg2, offset); -} - void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_st16, arg1, arg2, offset); --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500389; cv=none; d=zohomail.com; s=zohoarc; b=ByARTx/YEjx4js4eKVbLkYxEczSk6Z1tRuk+JOBt90e5nGMMT4HbM/MOmPcfdJ6DffMPVz2V/OYcDK1hXVsPU5Utn2S6Lx3dTm+w77GAykTc5tfcU+3ErqBvu1ZhyWtFQopt8SnQo/4PRxAWCbGoTCl+OB4uiWYYpCFTLJ5yBHI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500389; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7g3P+ptvTSg0B9ssOZlWVCFqJ5n4D8uhlvWfKkbNayY=; b=arwgaI+umU//jNxh8Aj7S6URMtag69uuL5uKkkktABa1F7cNBzuOZL8l59QMw2ECGjvdhwRz3StHRV+6+2g9FUTfTLpGPYGZdCDpTy+a6URAANbQl/Qw0XasGC4mANHXDsqHuboCe2hjoO2u7sqslXk1koHjNmx3ZMZ2xI+jJ5o= 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 17905003897141.8854782686049703; Sun, 27 Sep 2026 02: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 1xAksO-0007fK-Rm; Sun, 27 Sep 2026 05: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 1xAkra-0002RL-51 for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:02 -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 1xAkrY-0008IF-Ad for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:01 -0400 Received: by mail-pj2-x0f.google.com with SMTP id 98e67ed59e1d1-39b31b4281eso1540709a91.2 for ; Sun, 27 Sep 2026 02:07:59 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500079; x=1791104879; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=7g3P+ptvTSg0B9ssOZlWVCFqJ5n4D8uhlvWfKkbNayY=; b=Aupxzmn0/6OdH4DifDbRdwpcpFba2Ey+AnGZwdHEbI/t/2MRBAc4iG4SNBvGVMWDe8 1IlddTUiPhuuGUfT9qC9sIyElmZQTOBa9hfFHGy/0MBUSMBfJx/nXBVLIeivNB/TIRI5 XGY70OPNrzXodjBWCmXa80JZZME6XnWfW397AiqW4RqN7KjjSsGcM/0iq6SKayrkuGAZ FkyREMmQ6MotM8w2xBq0greCgKpojujjwEV9IhNQq/ey5xjji6hQVjMnL7O6fUwCXoLG iBruVoziqUjQAW9lTycIOZbatTSt16dacXfHn2rKeMS3a6jpGkCt3URlH81a55OUZege SseQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500079; x=1791104879; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7g3P+ptvTSg0B9ssOZlWVCFqJ5n4D8uhlvWfKkbNayY=; b=pkj6eHNysIILPkErjI61zq+6z7h4ZNLQExLpDSAYp5HSLmCnu705eMWmhKNkts4vjP PzekPHYyVmQr4a3dtTlzfsM1j15+8+wC8QWYeZrBd0HqnZMaeMvNgSKkJBxSpbPSFct5 w83w3KbUAg3FO41lFCz3A7zgCABLqHyk2i05B2LeWRzzZtrGxnBlldtQNi7GjsIjTYRd 21T5IJiD/mbjcdQM+dz9RANkJHQJCw+37Ei31D1VkBN3PwUSclNOPi+W0jiT3URRipEX 3/CHBYpR/0ddY9ZemyfkGSyK6gZUZycBbbc5NR9iKwEkaPISc3JyTAUlknLFpSJVoBUO qDCg== X-Gm-Message-State: AFq9FYLp1kz1Eo+eAMvWksm5snLucQFKtGjcomWJRI+DIjk4TOyeGhco fRKcttIk+ImQsN4ioLQiFdcW0KifMRSPdUdoF0F0idXHTWDH6HaVNEIiWBPbnuIEFaLj1qu8C2D ih9cb X-Gm-Gg: AYBFou1oTx1eFB77KVm9u7PGie8UsIAlzBTsL49Cf5zuSEfYZ2qNfW2Z4gjuzDDY+g9 ZN2Bpo/6JdDvjLa/Wq6dlf+sZ6DPqeG+5jJsgjazI7u9FqE/F2xbFrOc5mdGFZZNzH451oLNMEA ed7/mbpfSRFLkVb61bq7aFsJSY6cUGSoFpEBce8/FmG/ErVBN7Bff7r7cdYBQQEPsfu7d1iwT4G PqztVh8Tsyy8hHEn39GMTkTE90UIPmHO3xpr6DEOsa3J02bpZf4gAVKA126XYl7DIZmGM9mcpkB 3ADN+ARvK3T1BbE0pcjuBXhiD/cpnquTnPn2O4ez7pgpchR0V0WjzgWIyPg2XLmAhQTa1aQGwWb QrlOTEyAajUK5QlPuyPh32Def8ceCnlRXHqrqhBVqWoVNkcEcaeCwe2h7ihP5Y6oG9HwEoCKA+P MUb0ZcndcEYsi42tO2zl2sGi3XG35MngdQ+odxERbGi2BQR+3qEAQaoCBlPEdR5nSAy0E+R8G0Y V7357EBJEQPCIttBkBSbqQjLz9qyw== X-Received: by 2002:a17:90b:1dcb:b0:3a0:e786:84bf with SMTP id 98e67ed59e1d1-3a0e78686a5mr2679133a91.60.1790500078801; Sun, 27 Sep 2026 02:07:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 095/101] tcg: Generic expansion of tcg_gen_st16_* Date: Sun, 27 Sep 2026 02:00:05 -0700 Message-ID: <20260927090011.10724-96-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500390406158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 3 --- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op.c | 23 ++++++----------------- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index b04a9a76e00..65b9d828e38 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -140,8 +140,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_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset= ); - /* 64 bit ops */ =20 void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); @@ -158,7 +156,6 @@ void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); /* 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); =20 -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_ld32u_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 90bcf9e5ab8..f9dab50a911 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -72,6 +72,7 @@ DEF3(smax, TCGV, TCGV, TCGV) DEF3(smin, TCGV, TCGV, TCGV) DEF3(st, TCGV, TCGv_ptr, tcg_target_long) DEF3(st8, TCGV, TCGv_ptr, tcg_target_long) +DEF3(st16, TCGV, TCGv_ptr, tcg_target_long) DEF3(sub, TCGV, TCGV, TCGV) DEF3(subi, TCGV, TCGV, TINT) DEF6(sub2, TCGV, TCGV, TCGV, TCGV, TCGV, TCGV) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 257ce2c3e6d..2e8087c938c 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -143,13 +143,6 @@ static void DNI tcg_gen_op3i_i64(TCGOpcode opc, TCGv_i= 64 a1, tcg_gen_op3(opc, TCG_TYPE_I64, tcgv_i64_arg(a1), tcgv_i64_arg(a2), a3); } =20 -static void DNI tcg_gen_ldst_op_i32(TCGOpcode opc, TCGv_i32 val, - TCGv_ptr base, TCGArg offset) -{ - tcg_gen_op3(opc, TCG_TYPE_I32, tcgv_i32_arg(val), - tcgv_ptr_arg(base), offset); -} - static void DNI tcg_gen_ldst_op_i64(TCGOpcode opc, TCGv_i64 val, TCGv_ptr base, TCGArg offset) { @@ -1264,6 +1257,12 @@ void tcg_gen_st8(TCGType type, TCGTemp *dst, TCGTemp= *base, tcg_target_long ofs) tcg_gen_op_tti(INDEX_op_st8, type, dst, base, ofs); } =20 +void tcg_gen_st16(TCGType type, TCGTemp *dst, + TCGTemp *base, tcg_target_long ofs) +{ + tcg_gen_op_tti(INDEX_op_st16, type, dst, base, ofs); +} + void tcg_gen_sub(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { tcg_gen_op_ttt(INDEX_op_sub, type, dst, src1, src2); @@ -1415,11 +1414,6 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) } } =20 -void tcg_gen_st16_i32(TCGv_i32 arg1, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i32(INDEX_op_st16, arg1, arg2, offset); -} - /* 64-bit ops */ =20 void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) @@ -1432,11 +1426,6 @@ void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, = tcg_target_long offset) tcg_gen_ldst_op_i64(INDEX_op_ld32s, ret, arg2, offset); } =20 -void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset) -{ - tcg_gen_ldst_op_i64(INDEX_op_st16, arg1, arg2, offset); -} - void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset) { tcg_gen_ldst_op_i64(INDEX_op_st32, arg1, arg2, offset); --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500452; cv=none; d=zohomail.com; s=zohoarc; b=Lpe5dDRTE9mtnWwUNhYQ0HBepLHZdpO0hj2Vd+YxjC39fnzytCNyj1AkMCBhI7gkScxT7EN7mSLM0lKMQy1JrkOyGvYND5z88EQTJql04bcyJMQP1nYpBHN0GrQxsiwGpEa41dO4Ax80UW0olIW33mOTc1uuqNbGZ925qlDcDHU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500452; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3Xlg19gLajgUhYwe4YmuEahkgDDR3SjKfWeD/LdU7cQ=; b=B+G2T9tbpHJY55EDKDXfRGtuPZs5UlXObMAp5U6pbjh4u4NSqEZLuTCkVzkuxoR5unSpZW92moKVODpq3uPcdFGbNUJCpKUEe/utR+lXZqCv/xCzVSBFB1gyQ1hepB7WGmHb7pQc2tE6UZ8/En+fMj1q/5aTSCc1PuDUHcZTOrc= 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 1790500452647411.7653108716096; Sun, 27 Sep 2026 02:14:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksM-0007RD-10; Sun, 27 Sep 2026 05:08: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 1xAkrb-0002Vz-4Q for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:03 -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 1xAkrZ-0008IK-Bg for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:02 -0400 Received: by mail-pj2-x10.google.com with SMTP id 98e67ed59e1d1-398cb5615deso1779484a91.3 for ; Sun, 27 Sep 2026 02:08:00 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.07.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:07:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500080; x=1791104880; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=3Xlg19gLajgUhYwe4YmuEahkgDDR3SjKfWeD/LdU7cQ=; b=XFd7y9kqsu4vR/sRXwV5hkmuKSxEc7THfZz04NoncFl10A8mPsd9B4pZ/Cq5ant4Ya 1wkhzj+1nmpuCFj+EKMX3k23wzs4YivtD2H5wlkxwjT9co5F5rR0rVd0dGchVIx8TvRW klbVv6bqbYjSQ9qbJzgSHKQuDG//DKW2RCGftHqj8tYbdVIk2veZE36vuMKkCXw4tyn0 wW59mdYahgEnx6pnRHAmnUBoDcNXpzUMqjVm9fYPxdd+yF2CwTdJyHuA639D0eMqeFYQ 3WN3wCNwiWdfY5xW9ZzC4tzY0aVAjOnDnZ7jDvhTREyCPH/yO2iI69kxz3QH+ACwmz5m gJmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500080; x=1791104880; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=3Xlg19gLajgUhYwe4YmuEahkgDDR3SjKfWeD/LdU7cQ=; b=s8OOvKiO1zKhEdB41Z2XI1ztDcojITEcVySp3UuW+I5BFt1NPs2Zra/zUevmVWdRsR sXIRKlxb7nI5cfNB3NydBu/xu8UEKKXn0IP3NgLwOKkGSo9uqHvkA2avd0pkQMNaMFYY 0QSw0R4RkHsCZg2TwcjHudJ65p0l1WusEE6htr5KE2w/Un/5DKkSA9h6NQiKa/sD2+65 U4EcjJtvIV6ve4WTXATosS4XUUePpZ/+Bpw8/khn7/YLy5Cngaq+R8wcqO4BuE4yeZgc rM9xJAiNbRea7tMxQX1f0uL8g0OLTi7yh6HtuO0FPUOymoP/jauZiuPj+TwkvcrXEY0h prtA== X-Gm-Message-State: AFq9FYIhLmbCxwW/9bD9AL0Xkyx1uQjRl18fHOOZTUSow5xZZmNbAvNz UQPu5zza+H/p66FJjHIHRVdyC+VBtlm3IVShvGsSb/z2eIW+VNOCBYnqhdQMYmjKAcYj2jrqZ7V 7lZX6 X-Gm-Gg: AYBFou3VrHvqGh5oRjhuXM2nOU6z9fzx0tx58FzPMPLwWwIbFYOQwwWJqAhMviy3KHV AZrfCZoMswfMkXXn8z/IqUsm+ncaWzBV8Q8E8oZb2/KDcRzpzCiFTWM3cUAzYkZCoM/pw78wsFJ WjN9BhmVfcGarGpMyR/aOdf5DXu5XpPNsMecyYc/Jwc/SJtRw951NXDr9jLlm840tCWMBKwzY9B yACuzkipt3qDheR2k4ZAO6bULCrR05n8XeovJzLF3111oYseH62tZINaUOaSLvPCZlh1/R7Ni0V CjR2OwQT2A0DrBh+zQ8gssvTGyQuejIQ8wwSRiW7okWvcLkNVoPVIWWSBvPxwwvPrqmHKuPouir 9gTAgPO1j8q4FWNCGfM05M5YxCgVMnw2L672IhItk6Ssd/FRrm9G8ME87OBbZaNf3xqox284YkC LOkZ5uJ17bjoHmqtPZECvkUV/kl1ud6y5pC6Y4Zv25l3CXde5gm/bxKsWruBnB9ad9v9FzjcEkU RXZWOvOgIuTdNEXy8oGdzF40tkhNw== X-Received: by 2002:a17:90b:440d:b0:395:7fff:a08f with SMTP id 98e67ed59e1d1-3a09860fe05mr8348736a91.0.1790500079903; Sun, 27 Sep 2026 02:07:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 096/101] tcg: Generic expansion of tcg_gen_dup_* Date: Sun, 27 Sep 2026 02:00:06 -0700 Message-ID: <20260927090011.10724-97-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500454531158500 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-gvec.c | 41 ------------------------------------ tcg/tcg-op.c | 16 ++++++++++++++ 4 files changed, 17 insertions(+), 47 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 65b9d828e38..583f6ebb2f5 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -137,9 +137,6 @@ 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); =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); - /* 64 bit ops */ =20 void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); @@ -153,9 +150,6 @@ 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); =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); - void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); =20 void tcg_gen_ld32u_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 f9dab50a911..556f7470cd6 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -23,6 +23,7 @@ DEF4(deposit_z, TCGV, TCGV, unsigned, unsigned) DEF1(discard, TCGV) DEF3(div, TCGV, TCGV, TCGV) DEF3(divu, TCGV, TCGV, TCGV) +DEF3(dup, unsigned, TCGV, TCGV) DEF3(ext, TCGV, TCGV, MemOp) DEF2(ext8s, TCGV, TCGV) DEF2(ext8u, TCGV, TCGV) diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 0d649cc13b2..72abb0a08ec 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -434,47 +434,6 @@ uint64_t (dup_const)(unsigned vece, uint64_t c) } } =20 -/* Duplicate IN into OUT as per VECE. */ -void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_i32 in) -{ - switch (vece) { - case MO_8: - tcg_gen_ext8u_i32(out, in); - tcg_gen_muli_i32(out, out, 0x01010101); - break; - case MO_16: - tcg_gen_deposit_i32(out, in, in, 16, 16); - break; - case MO_32: - tcg_gen_mov_i32(out, in); - break; - default: - g_assert_not_reached(); - } -} - -void tcg_gen_dup_i64(unsigned vece, TCGv_i64 out, TCGv_i64 in) -{ - switch (vece) { - case MO_8: - tcg_gen_ext8u_i64(out, in); - tcg_gen_muli_i64(out, out, 0x0101010101010101ull); - break; - case MO_16: - tcg_gen_ext16u_i64(out, in); - tcg_gen_muli_i64(out, out, 0x0001000100010001ull); - break; - case MO_32: - tcg_gen_deposit_i64(out, in, in, 32, 32); - break; - case MO_64: - tcg_gen_mov_i64(out, in); - break; - default: - g_assert_not_reached(); - } -} - /* Select a supported vector type for implementing an operation on SIZE * bytes. If OP is 0, assume that the real operation to be performed is * required by all backends. Otherwise, make sure than OP can be performed diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 2e8087c938c..924b94414b7 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -661,6 +661,22 @@ void tcg_gen_divu(TCGType type, TCGTemp *dst, TCGTemp = *src1, TCGTemp *src2) } } =20 +void tcg_gen_dup(TCGType type, unsigned vece, TCGTemp *dst, TCGTemp *src) +{ + unsigned t_width =3D tcg_type_size(type) * 8; + unsigned e_width =3D memop_size(vece) * 8; + + tcg_debug_assert(e_width <=3D t_width); + if (t_width =3D=3D e_width) { + tcg_gen_mov(type, dst, src); + } else if (t_width =3D=3D e_width * 2) { + tcg_gen_deposit(type, dst, src, src, e_width, e_width); + } else { + tcg_gen_extract(type, dst, src, 0, e_width); + tcg_gen_muli(type, dst, dst, ~0ull / MAKE_64BIT_MASK(0, e_width)); + } +} + void tcg_gen_eqv(TCGType type, TCGTemp *dst, TCGTemp *src1, TCGTemp *src2) { if (tcg_op_supported(INDEX_op_eqv, type, 0)) { --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500480; cv=none; d=zohomail.com; s=zohoarc; b=PfKF/oPV+X0PIBhy5GyPG+143i/njSiVQNgsN7eS2SV2+g/v17MkT3ki87ONJNm4xaZN14L1rywL80U2Lqd6XFX+YuQw+ZiG5VCfSCtkcxhR9pIhD4xTPg7jl34Q9MpCMG4jHYm5vX+Pc4VOWGE4rlCtMkzZEq7I0+3JI60VrG0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500480; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=S/GG6PKiHKPpRp51zLZR3cqK4p7vpAEeQdEkscB0mkw=; b=OfI27b6d73Vl78cXCoMhuPOP5lTw/MXo/yRcGPG+RBlQ8sZjYUHXjnSCoD7yqRDGqYvI6PUEYwZq7vUgiM+nG4g1KlsWpZV/JaEqA0a9EhCeku2f5oV/Du5pXRKnbre/m0QtuOBrytMyKrFA/8hrX+6lTjfrsde/bCsVRWempL4= 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 1790500480365175.09353001704426; Sun, 27 Sep 2026 02: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 1xAkss-0002Bi-U8; Sun, 27 Sep 2026 05:09: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 1xAkrd-0002gz-BQ for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:05 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkra-0008Id-QS for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:05 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0bd71827eso1103871a91.0 for ; Sun, 27 Sep 2026 02:08:02 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.08.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:08:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500081; x=1791104881; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=S/GG6PKiHKPpRp51zLZR3cqK4p7vpAEeQdEkscB0mkw=; b=RnvpTZYF4zR2+X5OGT0kBjhta3+usH8DAOf/fH/hcu5Xttq3x6L0nIK2gsFJKWBaFP 3FCJXge9fOWnssA0NCI38tj+jHnMZ+oDN6k9Q6uVcoTePum8hZpmDwpI9AbEFhYbCVlr Jy+fL4ytfBp2tTCMxoY0FmDnxHP9oPd4GchRByf2rH2TBtwCgbaMEL6cbYI/dnBi+8b4 h0jCNC2SvrcDjjVFjSxq1dz57bXiDA3PoQ7UzbNtMEH35dno3NT/DmbnLnVudUMdfwsZ AH5SWnSas8NgaNVgWIPviuqBa+vcFjgJ1zV3/k3TYaPC2K+4GxZFx2UXihHanKv5LKvz /a7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500081; x=1791104881; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=S/GG6PKiHKPpRp51zLZR3cqK4p7vpAEeQdEkscB0mkw=; b=g8BbTeAbrMfr3h26FNpENEZ5w7ugtOKBJ9AKzIoXg+H93dn8VN3V/X17oEpm4AeUGx pjPgWpZ6Cet6P1k9wPvRz93ic4rtHMfpKvBvEicSeLAWUouAuAEyuV+7uFiCQElNjMxn l8uAIz/f8G9Wc4FE7a/HTpNOjXSHqECh3kfsxKffNykRHan/ZLMpcIk44iNidf61BU5a RbThTQHOyOI5Fw8aAZEz+q7MyG2KUZ+HVse46RGcDvAQwim5eEKZKZBheh53K9R3g833 g5CPIlYh4CdoF4mfED4pOBWuvBtxeqAxPrmRaLvu/FdPdGhFzFl29+a6ciC5dbBHzn/V l+8Q== X-Gm-Message-State: AFq9FYKMv+2crxTUecQyYjV4TArKyfs+xtaZsaHm1iKkfo4JZzyZ0UFf xjl8HYOc4p1GuFrds+IdkGcw4ZvYG2hBit1MtgA6nKhSjcjvk1JBsF2aYCdVSv9d8OdjKHetuir ohjrR X-Gm-Gg: AYBFou1Z6UW9M9QlmXj+EuORfaH8iYWEYWJDchTm+OJKsw7qTMtJzo+QQIpldARSs9+ iwv4MFbBEyA8Wom3wN3j1VoFVnfMEjeK4XGn0P5uDdZgQ5d7lm4H/Jzk716B2gQ0ROioTJqroKt 8G05B2Ml6zXkAdxWS9IcQAl8Kjp8S5HTnAdLhaLrqybQgKFibgVQcoMsKwOGKTYEmIHM/VVrkv9 GBRu+2jp26gaIguZmk2YxzGh0wnrFrfn7Obfmi0/y4TlTbXukpIkcr9zCYRTflwL/n/N8OVWWoQ gPqF3adgwZOvE0huDKTUgwkcghgSKQrIguX1GNIoCsZuUxI1JJr6pdtvnCphZ8x80w6jG9WevlL g9u1nm/UofSCBGljs4S+BjsnXCP3lhONoCqUIsbMT82IPNPfYsAZfcGraMuNkYB8fYFJ0U7W+Ee MB3ClWuNXguQCOb92y5ImboaE+cfgENFpvm/JmdQCt2eHwTnJ2DbsUBjYwVobpi3SAd1Osxjeto OqvazjeieDtIHut46drzwWFkEH8FQ== X-Received: by 2002:a17:90a:1149:b0:3a0:9c9d:eb0b with SMTP id 98e67ed59e1d1-3a09c9df050mr5898654a91.58.1790500081321; Sun, 27 Sep 2026 02:08:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 097/101] tcg: Generic expansion of tcg_gen_qemu_ld_chk Date: Sun, 27 Sep 2026 02:00:07 -0700 Message-ID: <20260927090011.10724-98-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500482589158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 4 +- include/tcg/tcg-op-mem.h | 6 +- include/tcg/tcg.h | 2 + include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op-ldst.c | 164 ++++++++++++++--------------------- tcg/tcg-op.c | 4 + 6 files changed, 75 insertions(+), 106 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 583f6ebb2f5..fcbaae3def5 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -177,11 +177,9 @@ void tcg_gen_st_i128(TCGv_i128 val, TCGv_ptr base, tcg= _target_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_ld_chk_i128(TCGv_i128, 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= ); =20 /* Atomic ops */ diff --git a/include/tcg/tcg-op-mem.h b/include/tcg/tcg-op-mem.h index 29e7c02f256..76955d27c1f 100644 --- a/include/tcg/tcg-op-mem.h +++ b/include/tcg/tcg-op-mem.h @@ -31,7 +31,7 @@ typedef TCGv_i64 TCGv_va; 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); + tcg_gen_qemu_ld_chk_i32(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 QEMU_ARG_NONNULL static inline void @@ -43,7 +43,7 @@ tcg_gen_qemu_st_i32(TCGv_i32 v, TCGv_va a, TCGArg i, MemO= p m) 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); + tcg_gen_qemu_ld_chk_i64(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 QEMU_ARG_NONNULL static inline void @@ -55,7 +55,7 @@ tcg_gen_qemu_st_i64(TCGv_i64 v, TCGv_va a, TCGArg i, MemO= p m) 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); + tcg_gen_qemu_ld_chk_i128(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 QEMU_ARG_NONNULL static inline void diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 077a1b37021..fd719f9a36a 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -293,6 +293,8 @@ typedef struct TCGTemp { void *state_ptr; } TCGTemp; =20 +typedef TCGTemp *TCGTempPtr; + typedef struct TCGContext TCGContext; =20 typedef struct TCGTempSet { diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 556f7470cd6..e2da3ddef66 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -53,6 +53,7 @@ DEF2(not, TCGV, TCGV) DEF3(or, TCGV, TCGV, TCGV) DEF3(ori, TCGV, TCGV, TINT) DEF3(orc, TCGV, TCGV, TCGV) +DEF5(qemu_ld_chk, TCGV, TCGTempPtr, unsigned, MemOp, TCGType) DEF3(rem, TCGV, TCGV, TCGV) DEF3(remu, TCGV, TCGV, TCGV) DEF2(revbit8, TCGV, TCGV) diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index 031c5ce926b..c48b8c0e3d1 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -191,33 +191,37 @@ plugin_gen_mem_callbacks(TCGv_i64 copy_addr, TCGTemp = *orig_addr, MemOpIdx oi, #endif =20 static void -plugin_gen_mem_callbacks_i32(TCGv_i32 val, +plugin_gen_mem_callbacks_tmp(TCGType type, TCGTemp *val, TCGv_i64 copy_addr, TCGTemp *orig_addr, MemOpIdx oi, enum qemu_plugin_mem_rw rw) { #ifdef CONFIG_PLUGIN if (tcg_ctx->plugin_insn !=3D NULL) { - tcg_gen_st_i32(val, tcg_env, - offsetof(CPUState, neg.plugin_mem_value_low) - - sizeof(CPUState) + (HOST_BIG_ENDIAN * 4)); + tcg_gen_st(type, val, tcgv_ptr_temp(tcg_env), + offsetof(CPUState, neg.plugin_mem_value_low) + - sizeof(CPUState) + + (HOST_BIG_ENDIAN && type =3D=3D TCG_TYPE_I32 ? 4 : 0)= ); plugin_gen_mem_callbacks(copy_addr, orig_addr, oi, rw); } #endif } =20 +static void +plugin_gen_mem_callbacks_i32(TCGv_i32 val, + TCGv_i64 copy_addr, TCGTemp *orig_addr, + MemOpIdx oi, enum qemu_plugin_mem_rw rw) +{ + plugin_gen_mem_callbacks_tmp(TCG_TYPE_I32, tcgv_i32_temp(val), copy_ad= dr, + orig_addr, oi, rw); +} + static void plugin_gen_mem_callbacks_i64(TCGv_i64 val, TCGv_i64 copy_addr, TCGTemp *orig_addr, MemOpIdx oi, enum qemu_plugin_mem_rw rw) { -#ifdef CONFIG_PLUGIN - if (tcg_ctx->plugin_insn !=3D NULL) { - tcg_gen_st_i64(val, tcg_env, - offsetof(CPUState, neg.plugin_mem_value_low) - - sizeof(CPUState)); - plugin_gen_mem_callbacks(copy_addr, orig_addr, oi, rw); - } -#endif + plugin_gen_mem_callbacks_tmp(TCG_TYPE_I64, tcgv_i64_temp(val), copy_ad= dr, + orig_addr, oi, rw); } =20 static void @@ -238,8 +242,31 @@ plugin_gen_mem_callbacks_i128(TCGv_i128 val, #endif } =20 -static void tcg_gen_qemu_ld_i32_int(TCGv_i32 val, TCGTemp *addr, - TCGArg idx, MemOp memop) +static void tcg_gen_bswap(TCGType type, TCGTemp *dst, + TCGTemp *src, unsigned flags, MemOp memop) +{ + switch (memop & MO_SIZE) { + case MO_16: + tcg_gen_bswap16(type, src, dst, flags); + break; + case MO_32: + if (type =3D=3D TCG_TYPE_I32) { + tcg_gen_bswap32_i32(temp_tcgv_i32(dst), temp_tcgv_i32(src)); + } else { + tcg_gen_bswap32_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src), fl= ags); + } + break; + case MO_64: + tcg_debug_assert(type =3D=3D TCG_TYPE_I64); + tcg_gen_bswap64_i64(temp_tcgv_i64(dst), temp_tcgv_i64(src)); + break; + default: + g_assert_not_reached(); + } +} + +static void tcg_gen_qemu_ld_int(TCGType type, TCGTemp *val, + TCGTemp *addr, TCGArg idx, MemOp memop) { MemOp orig_memop; MemOpIdx orig_oi, oi; @@ -247,48 +274,40 @@ static void tcg_gen_qemu_ld_i32_int(TCGv_i32 val, TCG= Temp *addr, TCGTemp *addr_new; =20 tcg_gen_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); - orig_memop =3D memop =3D tcg_canonicalize_memop(memop, 0, 0); + memop =3D tcg_canonicalize_memop(memop, type !=3D TCG_TYPE_I32, 0); + orig_memop =3D memop; orig_oi =3D oi =3D make_memop_idx(memop, idx); =20 if ((memop & MO_BSWAP) && !tcg_target_has_memory_bswap(memop)) { - memop &=3D ~MO_BSWAP; /* The bswap primitive benefits from zero-extended input. */ - if ((memop & MO_SSIZE) =3D=3D MO_SW) { - memop &=3D ~MO_SIGN; - } + memop &=3D ~(MO_BSWAP | MO_SIGN); oi =3D make_memop_idx(memop, idx); } =20 addr_new =3D tci_extend_addr(addr); copy_addr =3D plugin_maybe_preserve_addr(addr); - gen_ldst1(INDEX_op_qemu_ld, TCG_TYPE_I32, tcgv_i32_temp(val), addr_new= , oi); + tcg_gen_op_tti(INDEX_op_qemu_ld, type, val, addr_new, oi); =20 if ((orig_memop ^ memop) & MO_BSWAP) { - switch (orig_memop & MO_SIZE) { - case MO_16: - tcg_gen_bswap16_i32(val, val, (orig_memop & MO_SIGN - ? TCG_BSWAP_IZ | TCG_BSWAP_OS - : TCG_BSWAP_IZ | TCG_BSWAP_OZ)); - break; - case MO_32: - tcg_gen_bswap32_i32(val, val); - break; - default: - g_assert_not_reached(); - } + int flags =3D (orig_memop & MO_SIGN + ? TCG_BSWAP_IZ | TCG_BSWAP_OS + : TCG_BSWAP_IZ | TCG_BSWAP_OZ); + tcg_gen_bswap(type, val, val, flags, orig_memop); } =20 - plugin_gen_mem_callbacks_i32(val, copy_addr, addr, orig_oi, - QEMU_PLUGIN_MEM_R); + plugin_gen_mem_callbacks_tmp(type, val, copy_addr, addr, + orig_oi, QEMU_PLUGIN_MEM_R); maybe_free_addr(addr, addr_new); } =20 -void tcg_gen_qemu_ld_i32_chk(TCGv_i32 val, TCGTemp *addr, TCGArg idx, - MemOp memop, TCGType addr_type) +void tcg_gen_qemu_ld_chk(TCGType val_type, TCGTemp *val, TCGTemp *addr, + unsigned idx, MemOp memop, TCGType addr_type) { tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); - tcg_debug_assert((memop & MO_SIZE) <=3D MO_32); - tcg_gen_qemu_ld_i32_int(val, addr, idx, memop); + tcg_debug_assert(memop_size(memop) <=3D tcg_type_size(val_type)); + tcg_debug_assert(idx < NB_MMU_MODES); + + tcg_gen_qemu_ld_int(val_type, val, addr, idx, memop); } =20 static void tcg_gen_qemu_st_i32_int(TCGv_i32 orig_val, TCGTemp *addr, @@ -337,63 +356,6 @@ void tcg_gen_qemu_st_i32_chk(TCGv_i32 val, TCGTemp *ad= dr, TCGArg idx, tcg_gen_qemu_st_i32_int(val, addr, idx, memop); } =20 -static void tcg_gen_qemu_ld_i64_int(TCGv_i64 val, TCGTemp *addr, - TCGArg idx, MemOp memop) -{ - MemOp orig_memop; - MemOpIdx orig_oi, oi; - TCGv_i64 copy_addr; - TCGTemp *addr_new; - - tcg_gen_req_mo(TCG_MO_LD_LD | TCG_MO_ST_LD); - orig_memop =3D memop =3D tcg_canonicalize_memop(memop, 1, 0); - orig_oi =3D oi =3D make_memop_idx(memop, idx); - - if ((memop & MO_BSWAP) && !tcg_target_has_memory_bswap(memop)) { - memop &=3D ~MO_BSWAP; - /* The bswap primitive benefits from zero-extended input. */ - if ((memop & MO_SIGN) && (memop & MO_SIZE) < MO_64) { - memop &=3D ~MO_SIGN; - } - oi =3D make_memop_idx(memop, idx); - } - - addr_new =3D tci_extend_addr(addr); - copy_addr =3D plugin_maybe_preserve_addr(addr); - gen_ld_i64(val, addr_new, oi); - - if ((orig_memop ^ memop) & MO_BSWAP) { - int flags =3D (orig_memop & MO_SIGN - ? TCG_BSWAP_IZ | TCG_BSWAP_OS - : TCG_BSWAP_IZ | TCG_BSWAP_OZ); - switch (orig_memop & MO_SIZE) { - case MO_16: - tcg_gen_bswap16_i64(val, val, flags); - break; - case MO_32: - tcg_gen_bswap32_i64(val, val, flags); - break; - case MO_64: - tcg_gen_bswap64_i64(val, val); - break; - default: - g_assert_not_reached(); - } - } - - plugin_gen_mem_callbacks_i64(val, copy_addr, addr, orig_oi, - QEMU_PLUGIN_MEM_R); - maybe_free_addr(addr, addr_new); -} - -void tcg_gen_qemu_ld_i64_chk(TCGv_i64 val, TCGTemp *addr, TCGArg idx, - MemOp memop, TCGType addr_type) -{ - tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); - tcg_debug_assert((memop & MO_SIZE) <=3D MO_64); - tcg_gen_qemu_ld_i64_int(val, addr, idx, memop); -} - static void tcg_gen_qemu_st_i64_int(TCGv_i64 orig_val, TCGTemp *addr, TCGArg idx, MemOp memop) { @@ -638,7 +600,7 @@ static void tcg_gen_qemu_ld_i128_int(TCGv_i128 val, TCG= Temp *addr, QEMU_PLUGIN_MEM_R); } =20 -void tcg_gen_qemu_ld_i128_chk(TCGv_i128 val, TCGTemp *addr, TCGArg idx, +void tcg_gen_qemu_ld_chk_i128(TCGv_i128 val, TCGTemp *addr, TCGArg idx, MemOp memop, TCGType addr_type) { tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); @@ -800,7 +762,8 @@ static void tcg_gen_nonatomic_cmpxchg_i32_int(TCGv_i32 = retv, TCGTemp *addr, =20 tcg_gen_ext_i32(t2, cmpv, memop & MO_SIZE); =20 - tcg_gen_qemu_ld_i32_int(t1, addr, idx, memop & ~MO_SIGN); + tcg_gen_qemu_ld_int(TCG_TYPE_I32, tcgv_i32_temp(t1), + addr, idx, memop & ~MO_SIGN); tcg_gen_movcond_i32(TCG_COND_EQ, t2, t1, t2, newv, t1); tcg_gen_qemu_st_i32_int(t2, addr, idx, memop); tcg_temp_free_i32(t2); @@ -871,7 +834,8 @@ static void tcg_gen_nonatomic_cmpxchg_i64_int(TCGv_i64 = retv, TCGTemp *addr, =20 tcg_gen_ext_i64(t2, cmpv, memop & MO_SIZE); =20 - tcg_gen_qemu_ld_i64_int(t1, addr, idx, memop & ~MO_SIGN); + tcg_gen_qemu_ld_int(TCG_TYPE_I64, tcgv_i64_temp(t1), + addr, idx, memop & ~MO_SIGN); tcg_gen_movcond_i64(TCG_COND_EQ, t2, t1, t2, newv, t1); tcg_gen_qemu_st_i64_int(t2, addr, idx, memop); tcg_temp_free_i64(t2); @@ -1047,7 +1011,7 @@ static void do_nonatomic_op_i32(TCGv_i32 ret, TCGTemp= *addr, TCGv_i32 val, =20 memop =3D tcg_canonicalize_memop(memop, 0, 0); =20 - tcg_gen_qemu_ld_i32_int(t1, addr, idx, memop); + tcg_gen_qemu_ld_int(TCG_TYPE_I32, tcgv_i32_temp(t1), addr, idx, memop); tcg_gen_ext_i32(t2, val, memop); gen(t2, t1, t2); tcg_gen_qemu_st_i32_int(t2, addr, idx, memop); @@ -1088,7 +1052,7 @@ static void do_nonatomic_op_i64(TCGv_i64 ret, TCGTemp= *addr, TCGv_i64 val, =20 memop =3D tcg_canonicalize_memop(memop, 1, 0); =20 - tcg_gen_qemu_ld_i64_int(t1, addr, idx, memop); + tcg_gen_qemu_ld_int(TCG_TYPE_I64, tcgv_i64_temp(t1), addr, idx, memop); tcg_gen_ext_i64(t2, val, memop); gen(t2, t1, t2); tcg_gen_qemu_st_i64_int(t2, addr, idx, memop); diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 924b94414b7..c68e9e10501 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -239,6 +239,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #define C_MemOp #define C_TCGCond #define C_TCGLabelPtr +#define C_TCGTempPtr +#define C_TCGType #define C_tcg_target_long #define C_unsigned =20 @@ -272,6 +274,8 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef C_MemOp #undef C_TCGCond #undef C_TCGLabelPtr +#undef C_TCGTempPtr +#undef C_TCGType #undef C_tcg_target_long #undef C_unsigned =20 --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500188; cv=none; d=zohomail.com; s=zohoarc; b=oI11IN2cO/sA3R6NlcA0NdVZh7Ckvl90jZDaS5apRTXAdmpgUpj0JqS5tFAKT4LyebCZKZbxUH7SeIZJSydOyloa5mXo4xV8UHrLPaDRRPS+JFY4u9UCgnc4EqHERofsvofUbt+c0OOBHxjDS4pGl0T6rUSbdjDGyl9ngiC0NG0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500188; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dBIjDYY79CgoKWUaAAEhezmCwtYmRAV3YKyHd1W8VXA=; b=L2hYHmYJsrXT0VuC8n3BKZ++4/zqbu6N9b9MvCkoJCW7FvyDR9+XT3icelcyAbDCNjm5l4Q9iZopOlCBFjFIP5O0j+QqThDX6iftZqGyOhCNdNgUEd3rCFtf+pLZycZf+TZtF2R08OA3IBYgbTP3FjDaSOuEybi0/h2zBvsm/Yg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790500188028487.6460476439661; Sun, 27 Sep 2026 02:09:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkse-0000dJ-6F; Sun, 27 Sep 2026 05:09: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 1xAkre-0002tc-TS for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:07 -0400 Received: from mail-pj2-x0c.google.com ([2607:f8b0:4864:39::c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrc-0008J5-GR for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:06 -0400 Received: by mail-pj2-x0c.google.com with SMTP id 98e67ed59e1d1-3a0df0bb2d6so608615a91.3 for ; Sun, 27 Sep 2026 02:08:04 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.08.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:08:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500083; x=1791104883; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=dBIjDYY79CgoKWUaAAEhezmCwtYmRAV3YKyHd1W8VXA=; b=lLQ7ik/8/4icuz7k4LMePbJ2U/e1AZzClFS2pUbiD046XVFkkZkpPn7taQex2zrEAd uGhdFjTtkDStvE+85JL7ZIjyQVdyUgYW+6wG3mNiN1hu5I3oG1NsradRwZlSwQcInNFL 4vrIliHeZBf+OYc/x4VgvVtO3t19MAZC204sdSIlWpse2BcjdYaf0tq9O3/7q/oIpyiB 0isvG52mdFo3aPjiJiuwKhsVSEP5AydduBPWqFxAn0UpkeWNrqR0nYgSVHdeibHsAxIJ rs5TcvDoBvNJIcXXsx/8ob11p8gaa2WkjnPvSvMozImtbN3r6teIMFhPwSK6/VgIJ4vZ y9DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500083; x=1791104883; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=dBIjDYY79CgoKWUaAAEhezmCwtYmRAV3YKyHd1W8VXA=; b=qJSxY+smIiwJEwnLb5RzIIN3CP8k8TP6ij3msneh3tMpnscBsEkj10NBgeCC2gibAU xA8QwvXOJmWjjR9o6OJ8sYHAoLViUSHr7nTlahz7glwWa0fWBOmIOFYD48FFnhSdhecM KK44hcP+f0svYc0JZlcc4pnqEnr/L79fqoEawjVTJxJHMZ/4UmelM7htfoJjK7e+xjeU kDBFByxLl94jo95EimVJmhzo718Ppy5SgjoD1MS6mYzDqjlZYwN6cHvtDOgzcWJKPqAP 9oMu3847mz7FGFQ+cmBkREa8elDe8xVMfV97EsMLgRb1eAgeVo4fcBFrEohJ728GZEUE IE+A== X-Gm-Message-State: AFq9FYLArur0ZIz1LLz6CNG769wu2ns9dSt5NC92P640MLBCf+oKell+ Lsbn7MxY+vuyXN0+sOmCNty2U8H0m+ZWQVR0rjYWmqJSsepJdf2gUB/ur4/Lckxp2tUgZR3XHh5 hFskx X-Gm-Gg: AYBFou3+HT0p41B7ZEyuHS65AQp51ZqDNDfK730OMUzNTsz2Pdk0lRRTBz+VqcvvgnD RFJHFBjuFsjTy+DlX+94huIJfuGlpAMpTawiaBTPZk/01xQTDudVrI5Iwh1EGGi9cFiS4bFx7FY qOl37J/sq5oUIcvynBfrPXnTgkRgbBg8t/PIqG/HalLHTarrF+UhxgUFuXe/thsCiy8HiyKoap8 xuMgsu+duw5kNE1Lts7i+Ts9hj9B6DSpV7cSSJj5f2YTOsvXAnza+mCWE9ohZ4dcPCyyyzziYIQ xIeYqmkG0RQZr6as53H0QZ5MJr0+Yn8dt+cClOGpmSlsggoD2U6WAlkXHJFOUv8wyq2Lx7x1+sB ZSdL6ci+oXgDdnSl4QE9YtwFUw1js0y0NZFOskr/8mob8YcV6dn+GH5h8PPzFduHSIrlgk20ugv 8/NTjKSWGeXWGizcL+7j8RMWXfLb1BGTJgrFZNtBzseIDHHN6cYX6VaKNH2QgXxcmTAhIhFRO7N 0mGl1fv1ZNfXfyWdqXsp0NE41FxDPc= X-Received: by 2002:a17:90b:2e8c:b0:3a2:b09e:784d with SMTP id 98e67ed59e1d1-3a2b09e7a74mr417000a91.45.1790500082660; Sun, 27 Sep 2026 02:08:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 098/101] tcg: Generic expansion of tcg_gen_qemu_st_chk Date: Sun, 27 Sep 2026 02:00:08 -0700 Message-ID: <20260927090011.10724-99-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::c; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500189494158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 6 +- include/tcg/tcg-op-mem.h | 6 +- include/tcg/tcg-op-def.h.inc | 1 + tcg/tcg-op-ldst.c | 114 ++++++----------------------------- 4 files changed, 25 insertions(+), 102 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index fcbaae3def5..4fec1500d56 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -175,12 +175,8 @@ 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); =20 -/* Local load/store bit ops */ - void tcg_gen_qemu_ld_chk_i128(TCGv_i128, TCGTemp *, TCGArg, MemOp, TCGType= ); -void tcg_gen_qemu_st_i32_chk(TCGv_i32, TCGTemp *, TCGArg, MemOp, TCGType); -void tcg_gen_qemu_st_i64_chk(TCGv_i64, TCGTemp *, TCGArg, MemOp, TCGType); -void tcg_gen_qemu_st_i128_chk(TCGv_i128, TCGTemp *, TCGArg, MemOp, TCGType= ); +void tcg_gen_qemu_st_chk_i128(TCGv_i128, TCGTemp *, TCGArg, MemOp, TCGType= ); =20 /* Atomic ops */ =20 diff --git a/include/tcg/tcg-op-mem.h b/include/tcg/tcg-op-mem.h index 76955d27c1f..e8425e10598 100644 --- a/include/tcg/tcg-op-mem.h +++ b/include/tcg/tcg-op-mem.h @@ -37,7 +37,7 @@ tcg_gen_qemu_ld_i32(TCGv_i32 v, TCGv_va a, TCGArg i, MemO= p m) 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); + tcg_gen_qemu_st_chk_i32(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 QEMU_ARG_NONNULL static inline void @@ -49,7 +49,7 @@ tcg_gen_qemu_ld_i64(TCGv_i64 v, TCGv_va a, TCGArg i, MemO= p m) 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); + tcg_gen_qemu_st_chk_i64(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 QEMU_ARG_NONNULL static inline void @@ -61,7 +61,7 @@ tcg_gen_qemu_ld_i128(TCGv_i128 v, TCGv_va a, TCGArg i, Me= mOp m) 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); + tcg_gen_qemu_st_chk_i128(v, tcgv_va_temp(a), i, m, TCG_TYPE_VA); } =20 #define DEF_ATOMIC2(N, S) \ diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index e2da3ddef66..552f62b7f4f 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -54,6 +54,7 @@ DEF3(or, TCGV, TCGV, TCGV) DEF3(ori, TCGV, TCGV, TINT) DEF3(orc, TCGV, TCGV, TCGV) DEF5(qemu_ld_chk, TCGV, TCGTempPtr, unsigned, MemOp, TCGType) +DEF5(qemu_st_chk, TCGV, TCGTempPtr, unsigned, MemOp, TCGType) DEF3(rem, TCGV, TCGV, TCGV) DEF3(remu, TCGV, TCGV, TCGV) DEF2(revbit8, TCGV, TCGV) diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index c48b8c0e3d1..7345bdfcc2b 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -206,24 +206,6 @@ plugin_gen_mem_callbacks_tmp(TCGType type, TCGTemp *va= l, #endif } =20 -static void -plugin_gen_mem_callbacks_i32(TCGv_i32 val, - TCGv_i64 copy_addr, TCGTemp *orig_addr, - MemOpIdx oi, enum qemu_plugin_mem_rw rw) -{ - plugin_gen_mem_callbacks_tmp(TCG_TYPE_I32, tcgv_i32_temp(val), copy_ad= dr, - orig_addr, oi, rw); -} - -static void -plugin_gen_mem_callbacks_i64(TCGv_i64 val, - TCGv_i64 copy_addr, TCGTemp *orig_addr, - MemOpIdx oi, enum qemu_plugin_mem_rw rw) -{ - plugin_gen_mem_callbacks_tmp(TCG_TYPE_I64, tcgv_i64_temp(val), copy_ad= dr, - orig_addr, oi, rw); -} - static void plugin_gen_mem_callbacks_i128(TCGv_i128 val, TCGv_i64 copy_addr, TCGTemp *orig_addr, @@ -310,99 +292,43 @@ void tcg_gen_qemu_ld_chk(TCGType val_type, TCGTemp *v= al, TCGTemp *addr, tcg_gen_qemu_ld_int(val_type, val, addr, idx, memop); } =20 -static void tcg_gen_qemu_st_i32_int(TCGv_i32 orig_val, TCGTemp *addr, - TCGArg idx, MemOp memop) +static void tcg_gen_qemu_st_int(TCGType type, TCGTemp *orig_val, + TCGTemp *addr, unsigned idx, MemOp memop) { - TCGv_i32 val =3D orig_val; + TCGTemp *val =3D orig_val; MemOpIdx orig_oi, oi; TCGTemp *addr_new; =20 tcg_gen_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); - memop =3D tcg_canonicalize_memop(memop, 0, 1); + memop =3D tcg_canonicalize_memop(memop, type !=3D TCG_TYPE_I32, 1); orig_oi =3D oi =3D make_memop_idx(memop, idx); =20 if ((memop & MO_BSWAP) && !tcg_target_has_memory_bswap(memop)) { - val =3D tcg_temp_ebb_new_i32(); - switch (memop & MO_SIZE) { - case MO_16: - tcg_gen_bswap16_i32(val, orig_val, 0); - break; - case MO_32: - tcg_gen_bswap32_i32(val, orig_val); - break; - default: - g_assert_not_reached(); - } + val =3D tcg_temp_new_ebb(type); + tcg_gen_bswap(type, val, orig_val, 0, memop); memop &=3D ~MO_BSWAP; oi =3D make_memop_idx(memop, idx); } =20 addr_new =3D tci_extend_addr(addr); - gen_ldst1(INDEX_op_qemu_st, TCG_TYPE_I32, tcgv_i32_temp(val), addr_new= , oi); - plugin_gen_mem_callbacks_i32(orig_val, NULL, addr, orig_oi, - QEMU_PLUGIN_MEM_W); + tcg_gen_op_tti(INDEX_op_qemu_st, type, val, addr_new, oi); + plugin_gen_mem_callbacks_tmp(type, orig_val, NULL, addr, + orig_oi, QEMU_PLUGIN_MEM_W); maybe_free_addr(addr, addr_new); =20 if (val !=3D orig_val) { - tcg_temp_free_i32(val); + tcg_temp_free_internal(val); } } =20 -void tcg_gen_qemu_st_i32_chk(TCGv_i32 val, TCGTemp *addr, TCGArg idx, - MemOp memop, TCGType addr_type) +void tcg_gen_qemu_st_chk(TCGType val_type, TCGTemp *val, TCGTemp *addr, + unsigned idx, MemOp memop, TCGType addr_type) { tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); - tcg_debug_assert((memop & MO_SIZE) <=3D MO_32); - tcg_gen_qemu_st_i32_int(val, addr, idx, memop); -} + tcg_debug_assert(memop_size(memop) <=3D tcg_type_size(val_type)); + tcg_debug_assert(idx < NB_MMU_MODES); =20 -static void tcg_gen_qemu_st_i64_int(TCGv_i64 orig_val, TCGTemp *addr, - TCGArg idx, MemOp memop) -{ - TCGv_i64 val =3D orig_val; - MemOpIdx orig_oi, oi; - TCGTemp *addr_new; - - tcg_gen_req_mo(TCG_MO_LD_ST | TCG_MO_ST_ST); - memop =3D tcg_canonicalize_memop(memop, 1, 1); - orig_oi =3D oi =3D make_memop_idx(memop, idx); - - if ((memop & MO_BSWAP) && !tcg_target_has_memory_bswap(memop)) { - val =3D tcg_temp_ebb_new_i64(); - switch (memop & MO_SIZE) { - case MO_16: - tcg_gen_bswap16_i64(val, orig_val, 0); - break; - case MO_32: - tcg_gen_bswap32_i64(val, orig_val, 0); - break; - case MO_64: - tcg_gen_bswap64_i64(val, orig_val); - break; - default: - g_assert_not_reached(); - } - memop &=3D ~MO_BSWAP; - oi =3D make_memop_idx(memop, idx); - } - - addr_new =3D tci_extend_addr(addr); - gen_st_i64(val, addr_new, oi); - plugin_gen_mem_callbacks_i64(orig_val, NULL, addr, orig_oi, - QEMU_PLUGIN_MEM_W); - maybe_free_addr(addr, addr_new); - - if (val !=3D orig_val) { - tcg_temp_free_i64(val); - } -} - -void tcg_gen_qemu_st_i64_chk(TCGv_i64 val, TCGTemp *addr, TCGArg idx, - MemOp memop, TCGType addr_type) -{ - tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); - tcg_debug_assert((memop & MO_SIZE) <=3D MO_64); - tcg_gen_qemu_st_i64_int(val, addr, idx, memop); + tcg_gen_qemu_st_int(val_type, val, addr, idx, memop); } =20 /* @@ -713,7 +639,7 @@ static void tcg_gen_qemu_st_i128_int(TCGv_i128 val, TCG= Temp *addr, QEMU_PLUGIN_MEM_W); } =20 -void tcg_gen_qemu_st_i128_chk(TCGv_i128 val, TCGTemp *addr, TCGArg idx, +void tcg_gen_qemu_st_chk_i128(TCGv_i128 val, TCGTemp *addr, TCGArg idx, MemOp memop, TCGType addr_type) { tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); @@ -765,7 +691,7 @@ static void tcg_gen_nonatomic_cmpxchg_i32_int(TCGv_i32 = retv, TCGTemp *addr, tcg_gen_qemu_ld_int(TCG_TYPE_I32, tcgv_i32_temp(t1), addr, idx, memop & ~MO_SIGN); tcg_gen_movcond_i32(TCG_COND_EQ, t2, t1, t2, newv, t1); - tcg_gen_qemu_st_i32_int(t2, addr, idx, memop); + tcg_gen_qemu_st_int(TCG_TYPE_I32, tcgv_i32_temp(t2), addr, idx, memop); tcg_temp_free_i32(t2); =20 if (memop & MO_SIGN) { @@ -837,7 +763,7 @@ static void tcg_gen_nonatomic_cmpxchg_i64_int(TCGv_i64 = retv, TCGTemp *addr, tcg_gen_qemu_ld_int(TCG_TYPE_I64, tcgv_i64_temp(t1), addr, idx, memop & ~MO_SIGN); tcg_gen_movcond_i64(TCG_COND_EQ, t2, t1, t2, newv, t1); - tcg_gen_qemu_st_i64_int(t2, addr, idx, memop); + tcg_gen_qemu_st_int(TCG_TYPE_I64, tcgv_i64_temp(t2), addr, idx, memop); tcg_temp_free_i64(t2); =20 if (memop & MO_SIGN) { @@ -1014,7 +940,7 @@ static void do_nonatomic_op_i32(TCGv_i32 ret, TCGTemp = *addr, TCGv_i32 val, tcg_gen_qemu_ld_int(TCG_TYPE_I32, tcgv_i32_temp(t1), addr, idx, memop); tcg_gen_ext_i32(t2, val, memop); gen(t2, t1, t2); - tcg_gen_qemu_st_i32_int(t2, addr, idx, memop); + tcg_gen_qemu_st_int(TCG_TYPE_I32, tcgv_i32_temp(t2), addr, idx, memop); =20 tcg_gen_ext_i32(ret, (new_val ? t2 : t1), memop); tcg_temp_free_i32(t1); @@ -1055,7 +981,7 @@ static void do_nonatomic_op_i64(TCGv_i64 ret, TCGTemp = *addr, TCGv_i64 val, tcg_gen_qemu_ld_int(TCG_TYPE_I64, tcgv_i64_temp(t1), addr, idx, memop); tcg_gen_ext_i64(t2, val, memop); gen(t2, t1, t2); - tcg_gen_qemu_st_i64_int(t2, addr, idx, memop); + tcg_gen_qemu_st_int(TCG_TYPE_I64, tcgv_i64_temp(t2), addr, idx, memop); =20 tcg_gen_ext_i64(ret, (new_val ? t2 : t1), memop); tcg_temp_free_i64(t1); --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500215; cv=none; d=zohomail.com; s=zohoarc; b=ftGrau9QM7zlH7NLiRFgDC7iZk0GhxxJOqnkUA6CIimvK9IH7NlfJEOwLNgSx2ZAWT0US40GgcLwDjdLDsKN0HbmxwukFjavPHX21tgOj2vsZWTG8hoB7lDS714PiWRnhBWD7D8bmlmXLCt9Ox1lg97pFVoRjm+dqKlEebIUpY0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500215; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Qs28EUYot0a0Xuz5/7XpraB5uCTYFj6q2KdLQyr40vY=; b=M6lO8CUlxWDshxSNsxM0979dKSD79cx7oz7X0lor25N7RIse+FdMWQmnAYdhhsGxYQkZpVClAN2t5LbafBIl4/v3ZGIS7k37Q+lN9afukZa16AqjVgePZHJzr/soiqX5EO8xmqnjoes8NU1WoMvWuxBbiuRF5bQzfn20cPn6moY= 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 1790500215132223.12958377594884; Sun, 27 Sep 2026 02:10:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAksL-0007K8-DC; Sun, 27 Sep 2026 05: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 1xAkrh-000365-Ea for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:09 -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 1xAkre-0008JS-4e for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:09 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-398a147688bso1554129a91.1 for ; Sun, 27 Sep 2026 02:08:05 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.08.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:08:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500085; x=1791104885; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Qs28EUYot0a0Xuz5/7XpraB5uCTYFj6q2KdLQyr40vY=; b=l8ORPqeJ3GS4XYf5p7NE/+E4QtFzTvTc0ST9naUnu1m63Lrf86UookQRkEviYFvFYS LA1+SlLKDpZtaB0mq3OvdBL6BNuaye14KnUvsAv7hdhu2mCmxmScgX5nUfxXvFXuPDRs K5or+jb5lHNH9PIRhuFmOHVjjFKasWZYIIn0VX/4uhZsV4p7eNwHS8QtRPsQSuhvOAG3 8fXtWBh7rMDmzVgHa/vOZN0OItYF/vjwxnCV4U1mgvJLtEI5mu9HYQ5//sFRJyY+jhjB 8Xi4eNGxkau5ilLHylT/5d1bPOaJvy1S+i/MhDCdRH5kmw7aX+rcCT0nY4LZhxclusX+ rDTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500085; x=1791104885; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Qs28EUYot0a0Xuz5/7XpraB5uCTYFj6q2KdLQyr40vY=; b=hCuhWxXe7m4HDUEG99lTSditeXmwgL6WtAOMCPLDtbKPotCMU0tJNOoi4gHMQUT0fQ MToWsH2otCgajfkpCMRdTKLMhuZufChM1ihSTck1pfvMon9DIZZHbsusHXTMxSBiRa7c 8luX9tUyf9CvthieO1fcFnnErB0ADWqEdR5t8KDQIR/NxPhMneuwTAXyQnEHgWDxQe+t igwkoK9+iacBB/A6mMliB3ywHjP4Shu37pEGtwFCbz7ZRCV4DQLN/iBAo1f3Khh924// IpULQfCHXmrqSXrMMwgnVy/iH3Kf50Rk5wP3xalMW/r2do5LMPlnlvq2IMn1qETpJwSC lUTw== X-Gm-Message-State: AFq9FYKJsgb5UQYf6RiFcg757d7PUq7qHZ6PK5FxjmsRH1RHneU3Ghxj B9+oOVlwtb+K88jArt9IWYEg8dir0aKDmxP8DO7dsKcpdTypd1rwEpiGzuGdgy5w2QLh5fn40yt cxeEo X-Gm-Gg: AYBFou0wiOky7GPfcmGgdXK5oeFoeK7sIh0k+69X1P2B1wX4YVQhqhpDwD67pETjqt0 LN8Ko9+y+bT796xRoh74FCQYHrXUyZhQs9cxZHGuKHXktCFObujvbf+FjEdN1Amnr5+AOT3BQAz soSDrRIeO2i8JePoy800ZiHrjt3g4o3gIzjw2KT5VBdQL2Kliw98wr8dX7Hn4c6RCkUeW7w5bFX VXgLgCBvS+ESFwcvANapZcOGgUzntbXGSDXrPze94GB3AvvavJctnG/7WF5PmzUl9F8C0DqKSiH 7jawJWcKCNZlPPAL1YTzLDlnezl+M48taQUE5BJf6Yrqm2Ax61HCdcdl8I2JPRiukbDmPA5vtNv pKNhsVsni/KO1E2KmcPkSVpcW1S1n4sE1VXhsawdElGIr1tHUknmcHjLCRTHkVlBzo/+6Ep7LZm 5yszGnCsKGBJ5hqnQGEb3dLN2AOBg3tG/m5cOE7E5XyBAanYg2Zpltyswm0rSbbGBJmai15Vfb7 xyg2UoL1PKIOZH9r9c9r9g07/dMMA== X-Received: by 2002:a17:90b:3d8d:b0:3a0:ddef:3d69 with SMTP id 98e67ed59e1d1-3a0ddef3f5amr3177960a91.58.1790500084532; Sun, 27 Sep 2026 02:08:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 099/101] tcg: Generic expansion of tcg_gen_{non}atomic_qemu_cmpxchg_chk Date: Sun, 27 Sep 2026 02:00:09 -0700 Message-ID: <20260927090011.10724-100-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500215741158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 16 +-- include/tcg/tcg-op-mem.h | 2 +- tcg/tcg-internal.h | 3 + include/tcg/tcg-op-def.h.inc | 3 + tcg/tcg-op-ldst.c | 237 ++++++++++++++--------------------- tcg/tcg-op.c | 8 ++ 6 files changed, 113 insertions(+), 156 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 4fec1500d56..9864674f1c2 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -104,6 +104,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, 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); +#define DEF7(NAME, T1, T2, T3, T4, T5, T6, T7) \ + QEMU_ARG_NONNULL void glue(glue(tcg_gen_,NAME),TExt)(T1, T2, T3, T4, T= 5, T6, T7); =20 #define TCGV glue(TCGv,TExt) #define TExt _i32 @@ -129,6 +131,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo); #undef DEF4 #undef DEF5 #undef DEF6 +#undef DEF7 =20 /* 32 bit ops */ =20 @@ -180,18 +183,9 @@ void tcg_gen_qemu_st_chk_i128(TCGv_i128, TCGTemp *, TC= GArg, MemOp, TCGType); =20 /* Atomic ops */ =20 -void tcg_gen_atomic_cmpxchg_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGv_i3= 2, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_cmpxchg_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGv_i6= 4, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_cmpxchg_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, +void tcg_gen_atomic_cmpxchg_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGv_i128, TCGArg, MemOp, TCGType); - -void tcg_gen_nonatomic_cmpxchg_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, TCGv= _i32, - TCGArg, MemOp, TCGType); -void tcg_gen_nonatomic_cmpxchg_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, TCGv= _i64, - TCGArg, MemOp, TCGType); -void tcg_gen_nonatomic_cmpxchg_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, +void tcg_gen_nonatomic_cmpxchg_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGv_i128, TCGArg, MemOp, TCGType); =20 void tcg_gen_atomic_xchg_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, diff --git a/include/tcg/tcg-op-mem.h b/include/tcg/tcg-op-mem.h index e8425e10598..935860f1442 100644 --- a/include/tcg/tcg-op-mem.h +++ b/include/tcg/tcg-op-mem.h @@ -72,7 +72,7 @@ tcg_gen_qemu_st_i128(TCGv_i128 v, TCGv_va a, TCGArg i, Me= mOp m) #define DEF_ATOMIC3(N, S) \ 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); } + { N##_chk_##S(r, tcgv_va_temp(a), o, n, i, m, TCG_TYPE_VA); } =20 DEF_ATOMIC3(tcg_gen_atomic_cmpxchg, i32) DEF_ATOMIC3(tcg_gen_atomic_cmpxchg, i64) diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h index bfd34905ee7..da1b9c9bab3 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -190,6 +190,8 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4, T5); #define DEF6(NAME, T1, T2, T3, T4, T5, T6) \ QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4, T5,= T6); +#define DEF7(NAME, T1, T2, T3, T4, T5, T6, T7) \ + QEMU_ARG_NONNULL void glue(tcg_gen_,NAME)(TCGType, T1, T2, T3, T4, T5,= T6, T7); =20 #define TCGV TCGTemp * #define TINT int64_t @@ -207,6 +209,7 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type, tcg_t= arget_ulong imm); #undef DEF4 #undef DEF5 #undef DEF6 +#undef DEF7 =20 static inline void tcg_gen_extrh(TCGTemp *dst, TCGTemp *src) { diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index 552f62b7f4f..e0ffd0da678 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -85,3 +85,6 @@ DEF3(umin, TCGV, TCGV, TCGV) DEF3(ussub, TCGV, TCGV, TCGV) DEF3(xor, TCGV, TCGV, TCGV) DEF3(xori, TCGV, TCGV, TINT) + +DEF7(atomic_cmpxchg_chk, TCGV, TCGTempPtr, TCGV, TCGV, unsigned, MemOp, TC= GType) +DEF7(nonatomic_cmpxchg_chk, TCGV, TCGTempPtr, TCGV, TCGV, unsigned, MemOp,= TCGType) diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index 7345bdfcc2b..b3143f6311b 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -667,181 +667,125 @@ typedef void (*gen_atomic_op_i128)(TCGv_i128, TCGv_= env, TCGv_i64, # define WITH_ATOMIC128(X) #endif =20 -static void * const table_cmpxchg[(MO_SIZE | MO_BSWAP) + 1] =3D { - [MO_8] =3D gen_helper_atomic_cmpxchgb, - [MO_16 | MO_LE] =3D gen_helper_atomic_cmpxchgw_le, - [MO_16 | MO_BE] =3D gen_helper_atomic_cmpxchgw_be, - [MO_32 | MO_LE] =3D gen_helper_atomic_cmpxchgl_le, - [MO_32 | MO_BE] =3D gen_helper_atomic_cmpxchgl_be, - [MO_64 | MO_LE] =3D gen_helper_atomic_cmpxchgq_le, - [MO_64 | MO_BE] =3D gen_helper_atomic_cmpxchgq_be, - WITH_ATOMIC128([MO_128 | MO_LE] =3D gen_helper_atomic_cmpxchgo_le) - WITH_ATOMIC128([MO_128 | MO_BE] =3D gen_helper_atomic_cmpxchgo_be) -}; - -static void tcg_gen_nonatomic_cmpxchg_i32_int(TCGv_i32 retv, TCGTemp *addr, - TCGv_i32 cmpv, TCGv_i32 newv, - TCGArg idx, MemOp memop) +static void tcg_gen_nonatomic_cmpxchg_int(TCGType type, TCGTemp *retv, + TCGTemp *addr, TCGTemp *cmpv, + TCGTemp *newv, unsigned idx, + MemOp memop) { - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t2 =3D tcg_temp_ebb_new_i32(); + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + g_autoptr(TCGTemp) t2 =3D tcg_temp_new_ebb(type); =20 - tcg_gen_ext_i32(t2, cmpv, memop & MO_SIZE); + tcg_gen_ext(type, t2, cmpv, memop & MO_SIZE); =20 - tcg_gen_qemu_ld_int(TCG_TYPE_I32, tcgv_i32_temp(t1), - addr, idx, memop & ~MO_SIGN); - tcg_gen_movcond_i32(TCG_COND_EQ, t2, t1, t2, newv, t1); - tcg_gen_qemu_st_int(TCG_TYPE_I32, tcgv_i32_temp(t2), addr, idx, memop); - tcg_temp_free_i32(t2); + tcg_gen_qemu_ld_int(type, t1, addr, idx, memop & ~MO_SIGN); + tcg_gen_movcond(type, TCG_COND_EQ, t2, t1, t2, newv, t1); + tcg_gen_qemu_st_int(type, t2, addr, idx, memop); =20 if (memop & MO_SIGN) { - tcg_gen_ext_i32(retv, t1, memop); + tcg_gen_ext(type, retv, t1, memop); } else { - tcg_gen_mov_i32(retv, t1); + tcg_gen_mov(type, retv, t1); } - tcg_temp_free_i32(t1); } =20 -void tcg_gen_nonatomic_cmpxchg_i32_chk(TCGv_i32 retv, TCGTemp *addr, - TCGv_i32 cmpv, TCGv_i32 newv, - TCGArg idx, MemOp memop, - TCGType addr_type) +void tcg_gen_nonatomic_cmpxchg_chk(TCGType val_type, TCGTemp *retv, + TCGTemp *addr, TCGTemp *cmpv, TCGTemp *= newv, + unsigned idx, MemOp memop, TCGType addr= _type) { tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); - tcg_debug_assert((memop & MO_SIZE) <=3D MO_32); - tcg_gen_nonatomic_cmpxchg_i32_int(retv, addr, cmpv, newv, idx, memop); + tcg_debug_assert(memop_size(memop) <=3D tcg_type_size(val_type)); + tcg_debug_assert(idx < NB_MMU_MODES); + + tcg_gen_nonatomic_cmpxchg_int(val_type, retv, addr, cmpv, newv, idx, m= emop); } =20 -static void tcg_gen_atomic_cmpxchg_i32_int(TCGv_i32 retv, TCGTemp *addr, - TCGv_i32 cmpv, TCGv_i32 newv, - TCGArg idx, MemOp memop) +static void tcg_gen_atomic_cmpxchg_int(TCGType type, TCGTemp *retv, + TCGTemp *addr, TCGTemp *cmpv, + TCGTemp *newv, unsigned idx, + MemOp memop) { - gen_atomic_cx_i32 gen; TCGv_i64 a64; MemOpIdx oi; =20 if (!(tcg_ctx->gen_tb->cflags & CF_PARALLEL)) { - tcg_gen_nonatomic_cmpxchg_i32_int(retv, addr, cmpv, newv, idx, mem= op); + tcg_gen_nonatomic_cmpxchg_int(type, retv, addr, cmpv, + newv, idx, memop); return; } =20 - memop =3D tcg_canonicalize_memop(memop, 0, 0); - gen =3D table_cmpxchg[memop & (MO_SIZE | MO_BSWAP)]; - tcg_debug_assert(gen !=3D NULL); - - oi =3D make_memop_idx(memop & ~MO_SIGN, idx); a64 =3D maybe_extend_addr64(addr); - gen(retv, tcg_env, a64, cmpv, newv, tcg_constant_i32(oi)); - maybe_free_addr64(a64); - - if (memop & MO_SIGN) { - tcg_gen_ext_i32(retv, retv, memop); - } -} - -void tcg_gen_atomic_cmpxchg_i32_chk(TCGv_i32 retv, TCGTemp *addr, - TCGv_i32 cmpv, TCGv_i32 newv, - TCGArg idx, MemOp memop, - TCGType addr_type) -{ - tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); - tcg_debug_assert((memop & MO_SIZE) <=3D MO_32); - tcg_gen_atomic_cmpxchg_i32_int(retv, addr, cmpv, newv, idx, memop); -} - -static void tcg_gen_nonatomic_cmpxchg_i64_int(TCGv_i64 retv, TCGTemp *addr, - TCGv_i64 cmpv, TCGv_i64 newv, - TCGArg idx, MemOp memop) -{ - TCGv_i64 t1, t2; - - t1 =3D tcg_temp_ebb_new_i64(); - t2 =3D tcg_temp_ebb_new_i64(); - - tcg_gen_ext_i64(t2, cmpv, memop & MO_SIZE); - - tcg_gen_qemu_ld_int(TCG_TYPE_I64, tcgv_i64_temp(t1), - addr, idx, memop & ~MO_SIGN); - tcg_gen_movcond_i64(TCG_COND_EQ, t2, t1, t2, newv, t1); - tcg_gen_qemu_st_int(TCG_TYPE_I64, tcgv_i64_temp(t2), addr, idx, memop); - tcg_temp_free_i64(t2); - - if (memop & MO_SIGN) { - tcg_gen_ext_i64(retv, t1, memop); - } else { - tcg_gen_mov_i64(retv, t1); - } - tcg_temp_free_i64(t1); -} - -void tcg_gen_nonatomic_cmpxchg_i64_chk(TCGv_i64 retv, TCGTemp *addr, - TCGv_i64 cmpv, TCGv_i64 newv, - TCGArg idx, MemOp memop, - TCGType addr_type) -{ - tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); - tcg_debug_assert((memop & MO_SIZE) <=3D MO_64); - tcg_gen_nonatomic_cmpxchg_i64_int(retv, addr, cmpv, newv, idx, memop); -} - -static void tcg_gen_atomic_cmpxchg_i64_int(TCGv_i64 retv, TCGTemp *addr, - TCGv_i64 cmpv, TCGv_i64 newv, - TCGArg idx, MemOp memop) -{ - if (!(tcg_ctx->gen_tb->cflags & CF_PARALLEL)) { - tcg_gen_nonatomic_cmpxchg_i64_int(retv, addr, cmpv, newv, idx, mem= op); - return; - } =20 if ((memop & MO_SIZE) =3D=3D MO_64) { - gen_atomic_cx_i64 gen; + gen_atomic_cx_i64 gen =3D ((memop & MO_BSWAP) =3D=3D MO_LE + ? gen_helper_atomic_cmpxchgq_le + : gen_helper_atomic_cmpxchgq_be); + + tcg_debug_assert(type =3D=3D TCG_TYPE_I64); =20 memop =3D tcg_canonicalize_memop(memop, 1, 0); - gen =3D table_cmpxchg[memop & (MO_SIZE | MO_BSWAP)]; - if (gen) { - MemOpIdx oi =3D make_memop_idx(memop, idx); - TCGv_i64 a64 =3D maybe_extend_addr64(addr); - gen(retv, tcg_env, a64, cmpv, newv, tcg_constant_i32(oi)); - maybe_free_addr64(a64); - return; + oi =3D make_memop_idx(memop & ~MO_SIGN, idx); + + gen(temp_tcgv_i64(retv), tcg_env, a64, temp_tcgv_i64(cmpv), + temp_tcgv_i64(newv), tcg_constant_i32(oi)); + } else { + static gen_atomic_cx_i32 const table_cmpxchg[(MO_SIZE | MO_BSWAP) = + 1] =3D { + [MO_8] =3D gen_helper_atomic_cmpxchgb, + [MO_16 | MO_LE] =3D gen_helper_atomic_cmpxchgw_le, + [MO_16 | MO_BE] =3D gen_helper_atomic_cmpxchgw_be, + [MO_32 | MO_LE] =3D gen_helper_atomic_cmpxchgl_le, + [MO_32 | MO_BE] =3D gen_helper_atomic_cmpxchgl_be, + }; + + g_autoptr(TCGTemp) c32 =3D NULL; + g_autoptr(TCGTemp) n32 =3D NULL; + g_autoptr(TCGTemp) r32 =3D NULL; + TCGTemp *retv_orig =3D retv; + + gen_atomic_cx_i32 gen =3D table_cmpxchg[memop & (MO_SIZE | MO_BSWA= P)]; + tcg_debug_assert(gen !=3D NULL); + + if (type =3D=3D TCG_TYPE_I64) { + c32 =3D tcg_temp_new_ebb(TCG_TYPE_I32); + n32 =3D tcg_temp_new_ebb(TCG_TYPE_I32); + r32 =3D tcg_temp_new_ebb(TCG_TYPE_I32); + + tcg_gen_extrl(c32, cmpv); + tcg_gen_extrl(n32, newv); + + cmpv =3D c32; + newv =3D n32; + retv =3D r32; } =20 - gen_helper_exit_atomic(tcg_env); + memop =3D tcg_canonicalize_memop(memop, 0, 0); + oi =3D make_memop_idx(memop & ~MO_SIGN, idx); =20 - /* - * Produce a result for a well-formed opcode stream. This satisfi= es - * liveness for set before used, which happens before this dead co= de - * is removed. - */ - tcg_gen_movi_i64(retv, 0); - } else { - TCGv_i32 c32 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 n32 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 r32 =3D tcg_temp_ebb_new_i32(); - - tcg_gen_extrl_i64_i32(c32, cmpv); - tcg_gen_extrl_i64_i32(n32, newv); - tcg_gen_atomic_cmpxchg_i32_int(r32, addr, c32, n32, - idx, memop & ~MO_SIGN); - tcg_temp_free_i32(c32); - tcg_temp_free_i32(n32); - - tcg_gen_extu_i32_i64(retv, r32); - tcg_temp_free_i32(r32); + gen(temp_tcgv_i32(retv), tcg_env, a64, temp_tcgv_i32(cmpv), + temp_tcgv_i32(newv), tcg_constant_i32(oi)); =20 if (memop & MO_SIGN) { - tcg_gen_ext_i64(retv, retv, memop); + tcg_gen_ext(TCG_TYPE_I32, retv, retv, memop); + } + if (retv !=3D retv_orig) { + if (memop & MO_SIGN) { + tcg_gen_exts(retv_orig, retv); + } else { + tcg_gen_extu(retv_orig, retv); + } } } + maybe_free_addr64(a64); } =20 -void tcg_gen_atomic_cmpxchg_i64_chk(TCGv_i64 retv, TCGTemp *addr, - TCGv_i64 cmpv, TCGv_i64 newv, - TCGArg idx, MemOp memop, TCGType addr_= type) +void tcg_gen_atomic_cmpxchg_chk(TCGType val_type, TCGTemp *retv, TCGTemp *= addr, + TCGTemp *cmpv, TCGTemp *newv, + unsigned idx, MemOp memop, TCGType addr_ty= pe) { tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); - tcg_debug_assert((memop & MO_SIZE) <=3D MO_64); - tcg_gen_atomic_cmpxchg_i64_int(retv, addr, cmpv, newv, idx, memop); + tcg_debug_assert(memop_size(memop) <=3D tcg_type_size(val_type)); + tcg_debug_assert(idx < NB_MMU_MODES); + + tcg_gen_atomic_cmpxchg_int(val_type, retv, addr, cmpv, newv, idx, memo= p); } =20 static void tcg_gen_nonatomic_cmpxchg_i128_int(TCGv_i128 retv, TCGTemp *ad= dr, @@ -877,7 +821,7 @@ static void tcg_gen_nonatomic_cmpxchg_i128_int(TCGv_i12= 8 retv, TCGTemp *addr, tcg_temp_free_i128(oldv); } =20 -void tcg_gen_nonatomic_cmpxchg_i128_chk(TCGv_i128 retv, TCGTemp *addr, +void tcg_gen_nonatomic_cmpxchg_chk_i128(TCGv_i128 retv, TCGTemp *addr, TCGv_i128 cmpv, TCGv_i128 newv, TCGArg idx, MemOp memop, TCGType addr_type) @@ -887,18 +831,23 @@ void tcg_gen_nonatomic_cmpxchg_i128_chk(TCGv_i128 ret= v, TCGTemp *addr, tcg_gen_nonatomic_cmpxchg_i128_int(retv, addr, cmpv, newv, idx, memop); } =20 -static void tcg_gen_atomic_cmpxchg_i128_int(TCGv_i128 retv, TCGTemp *addr, +static void tcg_gen_atomic_cmpxchg_int_i128(TCGv_i128 retv, TCGTemp *addr, TCGv_i128 cmpv, TCGv_i128 newv, TCGArg idx, MemOp memop) { - gen_atomic_cx_i128 gen; + gen_atomic_cx_i128 gen =3D NULL; =20 if (!(tcg_ctx->gen_tb->cflags & CF_PARALLEL)) { tcg_gen_nonatomic_cmpxchg_i128_int(retv, addr, cmpv, newv, idx, me= mop); return; } =20 - gen =3D table_cmpxchg[memop & (MO_SIZE | MO_BSWAP)]; +#if HAVE_CMPXCHG128 + gen =3D ((memop & MO_BSWAP) =3D=3D MO_LE + ? gen_helper_atomic_cmpxchgo_le + : gen_helper_atomic_cmpxchgo_be); +#endif + if (gen) { MemOpIdx oi =3D make_memop_idx(memop, idx); TCGv_i64 a64 =3D maybe_extend_addr64(addr); @@ -918,14 +867,14 @@ static void tcg_gen_atomic_cmpxchg_i128_int(TCGv_i128= retv, TCGTemp *addr, tcg_gen_movi_i64(TCGV128_HIGH(retv), 0); } =20 -void tcg_gen_atomic_cmpxchg_i128_chk(TCGv_i128 retv, TCGTemp *addr, +void tcg_gen_atomic_cmpxchg_chk_i128(TCGv_i128 retv, TCGTemp *addr, TCGv_i128 cmpv, TCGv_i128 newv, TCGArg idx, MemOp memop, TCGType addr_type) { tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); tcg_debug_assert((memop & (MO_SIZE | MO_SIGN)) =3D=3D MO_128); - tcg_gen_atomic_cmpxchg_i128_int(retv, addr, cmpv, newv, idx, memop); + tcg_gen_atomic_cmpxchg_int_i128(retv, addr, cmpv, newv, idx, memop); } =20 static void do_nonatomic_op_i32(TCGv_i32 ret, TCGTemp *addr, TCGv_i32 val, diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index c68e9e10501..c8c79356d55 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -231,6 +231,13 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned mem= info) { tcg_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)); } =20 +#define DEF7(NAME, T1, T2, T3, T4, T5, T6, T7) \ + void glue(glue(tcg_gen_,NAME),TExt)(T1 a, T2 b, T3 c, T4 d, T5 e, \ + T6 f, T7 g) \ + { tcg_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), glue(C_,T7)(g)); } + #define C_TCGv_i32 tcgv_i32_temp #define C_TCGv_i64 tcgv_i64_temp #define C_TCGv_ptr tcgv_ptr_temp @@ -285,6 +292,7 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned memi= nfo) #undef DEF4 #undef DEF5 #undef DEF6 +#undef DEF7 =20 /* * Internal helper for bit and byte reversal. --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500292; cv=none; d=zohomail.com; s=zohoarc; b=SzHmFUrCYIWvbkiLE2XTe24Du4k4nSAOShqoCwW3SaQYuK8h5sAszJTVgYZx/t/7CCZ/kz/ZlmJXlB55dnKwmBbnUpU61AzMmfihKhUHm5x/vmzJq0fZ23lQ6V8o7jQQA249nRsAvOiQWaJEDrogEX4UbLtUlhlK+IpO2SizkCk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500292; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=r98gZb0hDnNs2UdoqnKuKBYiAeWz5ktmUNLl7KBNqZY=; b=gvBDkNaposYaNye6gBHzOsdShQCzzwTe08LelOBEARMBsXdypvVfRcT+vYWsWvc3YD4xgvLCTkIoqNwyjE6Vw3auR7fUqeyDvI0snEsCmPe2tkCR7OYDzi7UlW9mFr9fvydN821x1bs4LoueS3MEs0Glk9ErNnh6wxeQ6ssNqXo= 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 1790500292625874.323264732134; Sun, 27 Sep 2026 02: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 1xAksf-0000oC-AQ; Sun, 27 Sep 2026 05:09: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 1xAkri-0003Cx-CB for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:10 -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 1xAkrf-0008Ja-7S for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:10 -0400 Received: by mail-pj2-x11.google.com with SMTP id 98e67ed59e1d1-396ccb1a98fso1604250a91.1 for ; Sun, 27 Sep 2026 02:08:06 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.08.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:08:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500086; x=1791104886; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=r98gZb0hDnNs2UdoqnKuKBYiAeWz5ktmUNLl7KBNqZY=; b=LWENkQnNvTQihMYBCpMjf+/6cLFMqb3WPgTDjXLAaAIHHyVdcJxEFCycfXdoZXrd8e R3TXFOPWSRU6XZTKxx+JtcqlktU1Z1eCI1YxHZ08QxLOYKwCmgf7oIcDuApY2m8pgOIx n/wkIuh2irRMb3g48jPynF4Qiaje494eiLXomGQNkYkYWC5cnSWCjzmGihmvXAicnTxh M6+iIq1Ocj0xDoEr1DQgNWO/kuBUGoXTwFW8mp2AFxGMWmGShASBSdweEvmz33zF9t/2 f76ymhgWU3Ud0vMGj8gg2fqUKc9bdyShj4bnlpVuuuBVNaHl0y5/SuSYmLPIzjeN66r/ 1/Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500086; x=1791104886; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=r98gZb0hDnNs2UdoqnKuKBYiAeWz5ktmUNLl7KBNqZY=; b=pVSscJEIyA6Ot4Kupwx61GyYxYRKO5fzLqBy834EhcNTKzDqdYLijBk7lhVugcVNNi t5fTeLhbtcRQzJ/ZAArBhivyUDubrLeorWyokgfz5yZYKonnXBUwaYaW/KVchVs8/R4L ccoq12vDePKhQvMYsqarvO0u5gwqaDmHFdD4dJAeOJugHnqPInkmBVXnvDFWpYRb1VMz asYaYfaIyUa6lkK6GzL3c22t7BlTMS4mzTaawy4NA388DWvA2B49P5wwOzYSU6bha/YU /CAdJm6gLfvtAzavJYxYVXxLhr5wekpMHbxrTtG+p3Xijug/0tyiB02UamHSEQLbKW5M oCOA== X-Gm-Message-State: AFq9FYLlTsAi9Wn0gpTVi73jqANrnqoSlCe51w7v3CBT9ZbT7bVjC5FV 0xsJNZ1lxcKSsDAYQwXoypQ/nuGaxt01u8+k+Nykaco0IOaq3w3AaL+vMlQTEuD9UuFDYFCn1YY 5OTb+ X-Gm-Gg: AYBFou29gpNvRf8OaBvlj5fktp4UusQWDG7Yons5q9vc2E3a14bD55NFoAuD13d5/pm CRKfh1gR7FX/wDTXf4tn1MAKdZfJ2R9YFtxdzwAb3NuKotXVRmGuIjLEcd83WYGmLkd7ouOR+qs zkQVe0uGwnb6UesBI598QuTAtIIKX41HS+7AMZJJJ1L5MpITEikmybyYFKlQEqEEmEpzOXSMOUL zZzPHZEFA7J0UOKfwkN60kt4f1yFTXlvm96PwmLhIEzypezk3D2PIH61lmBbKD1vd49UYSfMUny 3ej4uQN3761ndX1DYdZIv0DpYUjmDGV8uJEbJLvOENZYI2Am8e76bPhjsWzi0AqOql/qsRKlpI5 JB82DCEjLKKPexWAkwemoWNiiXtImntVuKMm6DRUWX52RyK4g9+l/zF5urAGsD9BF9+DzoRok5f i54aBY2tmtfjGEZ5d7seVUnaHbORiS0r9a1+PseE3kKYiFTSkOAdwL7QPjieaF4QnkobpSMEaHe 5/A+HkxKxr4YCNp1u2zqXywEyBFpQ== X-Received: by 2002:a17:90a:a81:b0:3a0:d82b:2390 with SMTP id 98e67ed59e1d1-3a0d82b27b0mr2261793a91.46.1790500085644; Sun, 27 Sep 2026 02:08:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 100/101] tcg: Generic expansion of remaining atomic operations Date: Sun, 27 Sep 2026 02:00:10 -0700 Message-ID: <20260927090011.10724-101-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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: 1790500293932158500 Content-Type: text/plain; charset="utf-8" These are done in bulk because of existing macro magic. Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 80 +------------- include/tcg/tcg-op-mem.h | 2 +- include/tcg/tcg-op-def.h.inc | 20 ++++ tcg/tcg-op-ldst.c | 206 +++++++++++++---------------------- 4 files changed, 102 insertions(+), 206 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 9864674f1c2..bc96c02aaea 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -181,89 +181,15 @@ void tcg_gen_st_i128(TCGv_i128 val, TCGv_ptr base, tc= g_target_long offset); void tcg_gen_qemu_ld_chk_i128(TCGv_i128, TCGTemp *, TCGArg, MemOp, TCGType= ); void tcg_gen_qemu_st_chk_i128(TCGv_i128, TCGTemp *, TCGArg, MemOp, TCGType= ); =20 -/* Atomic ops */ - void tcg_gen_atomic_cmpxchg_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGv_i128, TCGArg, MemOp, TCGType); void tcg_gen_nonatomic_cmpxchg_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGv_i128, TCGArg, MemOp, TCGType); - -void tcg_gen_atomic_xchg_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_xchg_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_xchg_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, +void tcg_gen_atomic_xchg_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGArg, MemOp, TCGType); - -void tcg_gen_atomic_fetch_add_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_add_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_and_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_and_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_or_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_or_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_xor_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_xor_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_smin_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, +void tcg_gen_atomic_fetch_and_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_smin_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_umin_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_umin_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_smax_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_smax_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_umax_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_umax_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); - -void tcg_gen_atomic_add_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_add_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_and_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_and_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_or_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_or_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_xor_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_xor_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_smin_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_smin_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_umin_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_umin_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_smax_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_smax_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_umax_fetch_i32_chk(TCGv_i32, TCGTemp *, TCGv_i32, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_umax_fetch_i64_chk(TCGv_i64, TCGTemp *, TCGv_i64, - TCGArg, MemOp, TCGType); - -void tcg_gen_atomic_fetch_and_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, - TCGArg, MemOp, TCGType); -void tcg_gen_atomic_fetch_or_i128_chk(TCGv_i128, TCGTemp *, TCGv_i128, +void tcg_gen_atomic_fetch_or_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGArg, MemOp, TCGType); =20 /* Vector ops */ diff --git a/include/tcg/tcg-op-mem.h b/include/tcg/tcg-op-mem.h index 935860f1442..6533704082e 100644 --- a/include/tcg/tcg-op-mem.h +++ b/include/tcg/tcg-op-mem.h @@ -67,7 +67,7 @@ tcg_gen_qemu_st_i128(TCGv_i128 v, TCGv_va a, TCGArg i, Me= mOp m) #define DEF_ATOMIC2(N, S) \ 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); } + { N##_chk_##S(r, tcgv_va_temp(a), v, i, m, TCG_TYPE_VA); } =20 #define DEF_ATOMIC3(N, S) \ QEMU_ARG_NONNULL static inline void \ diff --git a/include/tcg/tcg-op-def.h.inc b/include/tcg/tcg-op-def.h.inc index e0ffd0da678..e694f0e38c4 100644 --- a/include/tcg/tcg-op-def.h.inc +++ b/include/tcg/tcg-op-def.h.inc @@ -88,3 +88,23 @@ DEF3(xori, TCGV, TCGV, TINT) =20 DEF7(atomic_cmpxchg_chk, TCGV, TCGTempPtr, TCGV, TCGV, unsigned, MemOp, TC= GType) DEF7(nonatomic_cmpxchg_chk, TCGV, TCGTempPtr, TCGV, TCGV, unsigned, MemOp,= TCGType) + +DEF6(atomic_xchg_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGType) + +DEF6(atomic_fetch_add_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTyp= e) +DEF6(atomic_fetch_and_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTyp= e) +DEF6(atomic_fetch_or_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGType) +DEF6(atomic_fetch_smax_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTy= pe) +DEF6(atomic_fetch_smin_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTy= pe) +DEF6(atomic_fetch_umax_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTy= pe) +DEF6(atomic_fetch_umin_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTy= pe) +DEF6(atomic_fetch_xor_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTyp= e) + +DEF6(atomic_add_fetch_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTyp= e) +DEF6(atomic_and_fetch_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTyp= e) +DEF6(atomic_or_fetch_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGType) +DEF6(atomic_smax_fetch_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTy= pe) +DEF6(atomic_smin_fetch_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTy= pe) +DEF6(atomic_umax_fetch_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTy= pe) +DEF6(atomic_umin_fetch_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTy= pe) +DEF6(atomic_xor_fetch_chk, TCGV, TCGTempPtr, TCGV, unsigned, MemOp, TCGTyp= e) diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index b3143f6311b..77679634cbf 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -877,113 +877,92 @@ void tcg_gen_atomic_cmpxchg_chk_i128(TCGv_i128 retv,= TCGTemp *addr, tcg_gen_atomic_cmpxchg_int_i128(retv, addr, cmpv, newv, idx, memop); } =20 -static void do_nonatomic_op_i32(TCGv_i32 ret, TCGTemp *addr, TCGv_i32 val, - TCGArg idx, MemOp memop, bool new_val, - void (*gen)(TCGv_i32, TCGv_i32, TCGv_i32)) +static void do_nonatomic_op(TCGType type, TCGTemp *ret, TCGTemp *addr, + TCGTemp *val, unsigned idx, MemOp memop, + bool new_val, + void (*gen)(TCGType, TCGTemp *, + TCGTemp *, TCGTemp *)) { - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t2 =3D tcg_temp_ebb_new_i32(); + g_autoptr(TCGTemp) t1 =3D tcg_temp_new_ebb(type); + g_autoptr(TCGTemp) t2 =3D tcg_temp_new_ebb(type); =20 - memop =3D tcg_canonicalize_memop(memop, 0, 0); + memop =3D tcg_canonicalize_memop(memop, type !=3D TCG_TYPE_I32, 0); =20 - tcg_gen_qemu_ld_int(TCG_TYPE_I32, tcgv_i32_temp(t1), addr, idx, memop); - tcg_gen_ext_i32(t2, val, memop); - gen(t2, t1, t2); - tcg_gen_qemu_st_int(TCG_TYPE_I32, tcgv_i32_temp(t2), addr, idx, memop); + tcg_gen_qemu_ld_int(type, t1, addr, idx, memop); + tcg_gen_ext(type, t2, val, memop); + gen(type, t2, t1, t2); + tcg_gen_qemu_st_int(type, t2, addr, idx, memop); =20 - tcg_gen_ext_i32(ret, (new_val ? t2 : t1), memop); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t2); + tcg_gen_ext(type, ret, (new_val ? t2 : t1), memop); } =20 -static void do_atomic_op_i32(TCGv_i32 ret, TCGTemp *addr, TCGv_i32 val, - TCGArg idx, MemOp memop, void * const table[]) +static void do_atomic_op(TCGType type, TCGTemp *ret, TCGTemp *addr, + TCGTemp *val, unsigned idx, MemOp memop, + void * const table[]) { - gen_atomic_op_i32 gen; - TCGv_i64 a64; + TCGv_i64 a64 =3D maybe_extend_addr64(addr); MemOpIdx oi; =20 - memop =3D tcg_canonicalize_memop(memop, 0, 0); - - gen =3D table[memop & (MO_SIZE | MO_BSWAP)]; - tcg_debug_assert(gen !=3D NULL); - - oi =3D make_memop_idx(memop & ~MO_SIGN, idx); - a64 =3D maybe_extend_addr64(addr); - gen(ret, tcg_env, a64, val, tcg_constant_i32(oi)); - maybe_free_addr64(a64); - - if (memop & MO_SIGN) { - tcg_gen_ext_i32(ret, ret, memop); - } -} - -static void do_nonatomic_op_i64(TCGv_i64 ret, TCGTemp *addr, TCGv_i64 val, - TCGArg idx, MemOp memop, bool new_val, - void (*gen)(TCGv_i64, TCGv_i64, TCGv_i64)) -{ - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t2 =3D tcg_temp_ebb_new_i64(); - - memop =3D tcg_canonicalize_memop(memop, 1, 0); - - tcg_gen_qemu_ld_int(TCG_TYPE_I64, tcgv_i64_temp(t1), addr, idx, memop); - tcg_gen_ext_i64(t2, val, memop); - gen(t2, t1, t2); - tcg_gen_qemu_st_int(TCG_TYPE_I64, tcgv_i64_temp(t2), addr, idx, memop); - - tcg_gen_ext_i64(ret, (new_val ? t2 : t1), memop); - tcg_temp_free_i64(t1); - tcg_temp_free_i64(t2); -} - -static void do_atomic_op_i64(TCGv_i64 ret, TCGTemp *addr, TCGv_i64 val, - TCGArg idx, MemOp memop, void * const table[]) -{ - memop =3D tcg_canonicalize_memop(memop, 1, 0); - if ((memop & MO_SIZE) =3D=3D MO_64) { gen_atomic_op_i64 gen =3D table[memop & (MO_SIZE | MO_BSWAP)]; + tcg_debug_assert(gen !=3D NULL); + tcg_debug_assert(type =3D=3D TCG_TYPE_I64); =20 - if (gen) { - MemOpIdx oi =3D make_memop_idx(memop & ~MO_SIGN, idx); - TCGv_i64 a64 =3D maybe_extend_addr64(addr); - gen(ret, tcg_env, a64, val, tcg_constant_i32(oi)); - maybe_free_addr64(a64); - return; + memop =3D tcg_canonicalize_memop(memop, 1, 0); + oi =3D make_memop_idx(memop & ~MO_SIGN, idx); + + gen(temp_tcgv_i64(ret), tcg_env, a64, + temp_tcgv_i64(val), tcg_constant_i32(oi)); + } else { + g_autoptr(TCGTemp) v32 =3D NULL; + g_autoptr(TCGTemp) r32 =3D NULL; + TCGTemp *ret_orig =3D ret; + + gen_atomic_op_i32 gen =3D table[memop & (MO_SIZE | MO_BSWAP)]; + tcg_debug_assert(gen !=3D NULL); + + if (type =3D=3D TCG_TYPE_I64) { + v32 =3D tcg_temp_new_ebb(TCG_TYPE_I32); + r32 =3D tcg_temp_new_ebb(TCG_TYPE_I32); + + tcg_gen_extrl(v32, val); + val =3D v32; + ret =3D r32; } =20 - gen_helper_exit_atomic(tcg_env); - /* Produce a result, so that we have a well-formed opcode stream - with respect to uses of the result in the (dead) code following= . */ - tcg_gen_movi_i64(ret, 0); - } else { - TCGv_i32 v32 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 r32 =3D tcg_temp_ebb_new_i32(); + memop =3D tcg_canonicalize_memop(memop, 0, 0); + oi =3D make_memop_idx(memop & ~MO_SIGN, idx); =20 - tcg_gen_extrl_i64_i32(v32, val); - do_atomic_op_i32(r32, addr, v32, idx, memop & ~MO_SIGN, table); - tcg_temp_free_i32(v32); - - tcg_gen_extu_i32_i64(ret, r32); - tcg_temp_free_i32(r32); + gen(temp_tcgv_i32(ret), tcg_env, a64, + temp_tcgv_i32(val), tcg_constant_i32(oi)); =20 if (memop & MO_SIGN) { - tcg_gen_ext_i64(ret, ret, memop); + tcg_gen_ext(TCG_TYPE_I32, ret, ret, memop); + } + if (ret !=3D ret_orig) { + if (memop & MO_SIGN) { + tcg_gen_exts(ret_orig, ret); + } else { + tcg_gen_extu(ret_orig, ret); + } } } + maybe_free_addr64(a64); } =20 static void do_nonatomic_op_i128(TCGv_i128 ret, TCGTemp *addr, TCGv_i128 v= al, TCGArg idx, MemOp memop, bool new_val, - void (*gen)(TCGv_i64, TCGv_i64, TCGv_i64)) + void (*gen)(TCGType, TCGTemp *, + TCGTemp *, TCGTemp *)) { TCGv_i128 t =3D tcg_temp_ebb_new_i128(); TCGv_i128 r =3D tcg_temp_ebb_new_i128(); =20 tcg_gen_qemu_ld_i128_int(r, addr, idx, memop); - gen(TCGV128_LOW(t), TCGV128_LOW(r), TCGV128_LOW(val)); - gen(TCGV128_HIGH(t), TCGV128_HIGH(r), TCGV128_HIGH(val)); + gen(TCG_TYPE_I64, tcgv_i64_temp(TCGV128_LOW(t)), + tcgv_i64_temp(TCGV128_LOW(r)), tcgv_i64_temp(TCGV128_LOW(val))); + gen(TCG_TYPE_I64, tcgv_i64_temp(TCGV128_HIGH(t)), + tcgv_i64_temp(TCGV128_HIGH(r)), tcgv_i64_temp(TCGV128_HIGH(val))); tcg_gen_qemu_st_i128_int(t, addr, idx, memop); =20 tcg_gen_mov_i128(ret, r); @@ -1022,33 +1001,21 @@ static void * const table_##NAME[(MO_SIZE | MO_BSWA= P) + 1] =3D { \ WITH_ATOMIC128([MO_128 | MO_LE] =3D gen_helper_atomic_##NAME##o_le) \ WITH_ATOMIC128([MO_128 | MO_BE] =3D gen_helper_atomic_##NAME##o_be) \ }; \ -void tcg_gen_atomic_##NAME##_i32_chk(TCGv_i32 ret, TCGTemp *addr, \ - TCGv_i32 val, TCGArg idx, \ - MemOp memop, TCGType addr_type) \ +void tcg_gen_atomic_##NAME##_chk(TCGType val_type, TCGTemp *ret, \ + TCGTemp *addr, TCGTemp *val, unsigned idx= , \ + MemOp memop, TCGType addr_type) \ { \ tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); = \ - tcg_debug_assert((memop & MO_SIZE) <=3D MO_32); \ + tcg_debug_assert(memop_size(memop) <=3D tcg_type_size(val_type)); \ + tcg_debug_assert(idx < NB_MMU_MODES); \ if (tcg_ctx->gen_tb->cflags & CF_PARALLEL) { \ - do_atomic_op_i32(ret, addr, val, idx, memop, table_##NAME); \ + do_atomic_op(val_type, ret, addr, val, idx, memop, table_##NAME); \ } else { \ - do_nonatomic_op_i32(ret, addr, val, idx, memop, NEW, \ - tcg_gen_##OP##_i32); \ + do_nonatomic_op(val_type, ret, addr, val, idx, memop, NEW, \ + tcg_gen_##OP); \ } \ } \ -void tcg_gen_atomic_##NAME##_i64_chk(TCGv_i64 ret, TCGTemp *addr, \ - TCGv_i64 val, TCGArg idx, \ - MemOp memop, TCGType addr_type) \ -{ \ - tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); = \ - tcg_debug_assert((memop & MO_SIZE) <=3D MO_64); \ - if (tcg_ctx->gen_tb->cflags & CF_PARALLEL) { \ - do_atomic_op_i64(ret, addr, val, idx, memop, table_##NAME); \ - } else { \ - do_nonatomic_op_i64(ret, addr, val, idx, memop, NEW, \ - tcg_gen_##OP##_i64); \ - } \ -} \ -void tcg_gen_atomic_##NAME##_i128_chk(TCGv_i128 ret, TCGTemp *addr, \ +void tcg_gen_atomic_##NAME##_chk_i128(TCGv_i128 ret, TCGTemp *addr, \ TCGv_i128 val, TCGArg idx, \ MemOp memop, TCGType addr_type) \ { \ @@ -1058,7 +1025,7 @@ void tcg_gen_atomic_##NAME##_i128_chk(TCGv_i128 ret, = TCGTemp *addr, \ do_atomic_op_i128(ret, addr, val, idx, memop, table_##NAME); \ } else { \ do_nonatomic_op_i128(ret, addr, val, idx, memop, NEW, \ - tcg_gen_##OP##_i64); \ + tcg_gen_##OP); \ } \ } =20 @@ -1072,30 +1039,18 @@ static void * const table_##NAME[(MO_SIZE | MO_BSWA= P) + 1] =3D { \ [MO_64 | MO_LE] =3D gen_helper_atomic_##NAME##q_le, \ [MO_64 | MO_BE] =3D gen_helper_atomic_##NAME##q_be, \ }; \ -void tcg_gen_atomic_##NAME##_i32_chk(TCGv_i32 ret, TCGTemp *addr, \ - TCGv_i32 val, TCGArg idx, \ - MemOp memop, TCGType addr_type) \ +void tcg_gen_atomic_##NAME##_chk(TCGType val_type, TCGTemp *ret, \ + TCGTemp *addr, TCGTemp *val, unsigned idx= , \ + MemOp memop, TCGType addr_type) \ { \ tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); = \ - tcg_debug_assert((memop & MO_SIZE) <=3D MO_32); \ + tcg_debug_assert(memop_size(memop) <=3D tcg_type_size(val_type)); \ + tcg_debug_assert(idx < NB_MMU_MODES); \ if (tcg_ctx->gen_tb->cflags & CF_PARALLEL) { \ - do_atomic_op_i32(ret, addr, val, idx, memop, table_##NAME); \ + do_atomic_op(val_type, ret, addr, val, idx, memop, table_##NAME); \ } else { \ - do_nonatomic_op_i32(ret, addr, val, idx, memop, NEW, \ - tcg_gen_##OP##_i32); \ - } \ -} \ -void tcg_gen_atomic_##NAME##_i64_chk(TCGv_i64 ret, TCGTemp *addr, \ - TCGv_i64 val, TCGArg idx, \ - MemOp memop, TCGType addr_type) \ -{ \ - tcg_debug_assert(addr_type =3D=3D tcg_ctx->addr_type); = \ - tcg_debug_assert((memop & MO_SIZE) <=3D MO_64); \ - if (tcg_ctx->gen_tb->cflags & CF_PARALLEL) { \ - do_atomic_op_i64(ret, addr, val, idx, memop, table_##NAME); \ - } else { \ - do_nonatomic_op_i64(ret, addr, val, idx, memop, NEW, \ - tcg_gen_##OP##_i64); \ + do_nonatomic_op(val_type, ret, addr, val, idx, memop, NEW, \ + tcg_gen_##OP); \ } \ } =20 @@ -1117,14 +1072,9 @@ GEN_ATOMIC_HELPER(umin_fetch, umin, 1) GEN_ATOMIC_HELPER(smax_fetch, smax, 1) GEN_ATOMIC_HELPER(umax_fetch, umax, 1) =20 -static void tcg_gen_mov2_i32(TCGv_i32 r, TCGv_i32 a, TCGv_i32 b) +static void tcg_gen_mov2(TCGType type, TCGTemp *r, TCGTemp *a, TCGTemp *b) { - tcg_gen_mov_i32(r, b); -} - -static void tcg_gen_mov2_i64(TCGv_i64 r, TCGv_i64 a, TCGv_i64 b) -{ - tcg_gen_mov_i64(r, b); + tcg_gen_mov(type, r, b); } =20 GEN_ATOMIC_HELPER128(xchg, mov2, 0) --=20 2.53.0 From nobody Sun Oct 25 09:31: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=1790500171; cv=none; d=zohomail.com; s=zohoarc; b=kGRRJSt8DDE1s6pu4lnGsCQ/vermf5fo3BzMXfUnBmOLpyrBqoB/2Do81zclgvnLQGdbcTjkx93bJTIlf64dWqbuivcG4ksieJw9wGS2F/Vji6XcXt6dK/jlq4/WcKGg9RfZJFPD6K5n5GpT28apMMrq+WqVCh3mzw6Dsd4xvNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790500171; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=p2GTV+O9/n8SvpmsgHiFDR5+m1ogdREIlJhufmWgbrk=; b=fViRWY95PipHy88dOPMqMD+Vw77K0p+ZeSBfyKvB2uXSd9G/SRVOd6nbM8sEFVohvHQNX0n91wOqNK9bnPAqGPh59nkM0MEysEMyFmVOYjuJ3BpOS62PHTlplHYKkexL3MIzL9xEnqjTa5eAFgKCj9E8k9ObkOEml7n1kXB+SIE= 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 1790500171729775.0160421285312; Sun, 27 Sep 2026 02:09:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAkso-0001cB-FO; Sun, 27 Sep 2026 05:09: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 1xAkri-0003Gr-Vm for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:11 -0400 Received: from mail-pj2-x0d.google.com ([2607:f8b0:4864:39::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAkrg-0008Jv-7r for qemu-devel@nongnu.org; Sun, 27 Sep 2026 05:08:10 -0400 Received: by mail-pj2-x0d.google.com with SMTP id 98e67ed59e1d1-3a0abca97c0so1115244a91.1 for ; Sun, 27 Sep 2026 02:08:07 -0700 (PDT) Received: from stoup (174-21-68-150.tukw.qwest.net. [174.21.68.150]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3a0e7036e3bsm7144984a91.13.2026.09.27.02.08.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Sep 2026 02:08:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1790500087; x=1791104887; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=p2GTV+O9/n8SvpmsgHiFDR5+m1ogdREIlJhufmWgbrk=; b=hKKUQhLCmkJlbDdIm3vfzImqjSfXYfxzN7hNZLoCrC5glyekr9QV+aOgO+j/43q/PN nFetgbwciPdh3QSq3oXx3VUP5tSrNlrEoTb1NiOaanp3l61lT/ZUDHOddg4Izo/fWVMy 36ODVlTXzaV1rSJFNDbla/L0HQISSR9s9JubSJAXS9dYD8gbkuPaTPxpxa0uAZVeQgXc +bwCmeAZcQkUaHX2M1oku8Y9l+0KUjEbpmhELDTeAptyr1z4MHUCWUYeL++RiPwFlrhg YLvEXyfMoya7aE1HU1QXO6EhmW9aUGdI2ptGn6OAH2770pln0tmSI/eYDXsfM5hDi0P1 PrCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790500087; x=1791104887; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=p2GTV+O9/n8SvpmsgHiFDR5+m1ogdREIlJhufmWgbrk=; b=D7giCIxAMBu93L7k4rKnSLd7w2l91aijo3nUFJ0j7lFGbs7q0M3pDV4sJliuJHogd4 Vvz0TL3lgw6PqyG6cyuxSBUdkPNuPOWscRmDSOosR338MdjR4cDQ/AEUxIh5YlftTxvQ J1bun+psYgzkNDKkJRSMIVpqejfd/RjDx4zLnJUTEvv8I0O+Ad37pPQW6CdFjTJKRQMw CiK6BjZ3YmyZ1R6F1j1RCF266Ye7nU9ZKnfkLdbAP8s8yNPuVuP2j+WIoB5j3cIIx63J 0ztIqMeP8QdFjD2BQhx3e33HQtGUlsXFJlVRNASYvLkBdsFdz81+ovtCKJta/kq7SEOX TT/Q== X-Gm-Message-State: AFq9FYLG/uZLo6hkOkyu+OhfVwDA8uZKGol80kvPM3jsKnjGcRBWPyg3 VlX1FfmJ7E0XGGsuYbnuCxlcOxgSrYQS6emwUvGiCz7mvEHSvrsgSEz+nHgUREMPh3ZG4pljpn+ oyBrU X-Gm-Gg: AYBFou0WpHyxt3cHw2jWDQlWUj97oCKYeDUxEFdWRPKspavFiSYZ/i4FAAjaDipS6g3 gzl56VIw2xWmqdBDm7MRM8Djvzn5wJFfOMOI+csIcbYqR6LH2q4ZOZKRdcqacXrSRRH4ayfTsdM zm7W+1FL6NZlv1CjFwXmdHIkIoj7+GIxWEG84r6he/f4QepMznr40ejyipBnGHSOFUhtGXwC6K8 gg4JSzDjrZm1MLB2AScTjzKiIt0AMH1zY2HAwGhKE3iSIaWymfRDAG6tqCAZIBYWS3i09nP0SLC ygttorxE1bUGhxdMigEfa8iwTyUfK6LcpMeCHcYG2UNCWNGhXHqFa4Th+rT9dSo5UzLuOmH1Vjf CasKxMPkZH3mDFJQa9EudxHFSo9nV/IFBxuXacppF/EG9N/AJ6bU4jJ3lzyZAbQ+V9Ol83YdL6a CiyQ65yRyTHHY5141AdaoDyCszHIBA1XThzYhFHyy95+zXMjzElK2px8eYP5A6Kg3aQJArvt6R7 0tYmkjUBmqPE9Mw7J0AK7YLMsBgEpQLqohKFySH X-Received: by 2002:a17:90b:2b44:b0:3a0:c276:1ed1 with SMTP id 98e67ed59e1d1-3a0c27622bamr4576051a91.3.1790500086737; Sun, 27 Sep 2026 02:08:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: mattst88@gmail.com Subject: [PATCH v5 101/101] tcg: Annontate functions in tcg-op-common.h with QEMU_*_NONNULL Date: Sun, 27 Sep 2026 02:00:11 -0700 Message-ID: <20260927090011.10724-102-richard.henderson@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260927090011.10724-1-richard.henderson@linaro.org> References: <20260927090011.10724-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::d; envelope-from=richard.henderson@linaro.org; helo=mail-pj2-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: 1790500173455158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 188 +++++++++++++++++++----------------- 1 file changed, 99 insertions(+), 89 deletions(-) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index bc96c02aaea..ec0b7d37684 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. @@ -135,23 +135,23 @@ void tcg_gen_plugin_mem_cb(TCGv_i64 addr, unsigned me= minfo); =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 /* 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 void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset= ); =20 @@ -160,96 +160,106 @@ void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, = tcg_target_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 +QEMU_ARG_NONNULL void tcg_gen_qemu_ld_chk_i128(TCGv_i128, TCGTemp *, TCGArg, MemOp, TCGType= ); +QEMU_ARG_NONNULL void tcg_gen_qemu_st_chk_i128(TCGv_i128, TCGTemp *, TCGArg, MemOp, TCGType= ); =20 +QEMU_ARG_NONNULL void tcg_gen_atomic_cmpxchg_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGv_i128, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_nonatomic_cmpxchg_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGv_i128, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_xchg_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_and_chk_i128(TCGv_i128, TCGTemp *, TCGv_i128, TCGArg, MemOp, TCGType); +QEMU_ARG_NONNULL void tcg_gen_atomic_fetch_or_chk_i128(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