From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534479; cv=none; d=zohomail.com; s=zohoarc; b=dDw8OlBdZBenbg1EOj9bTBigW3J0jumLaVr99CIeL0JypAQQgIaUMMPjdis+kYXq4DBgoVwzYUBT383usN1ZlaBb59ODBeT5l1ct6x9i53Ldhi1HMg7SAE2EGh2YesHijnu303TOP9q2bQQK5/k2qoUL+SUerc1JPRboTbaOJas= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534479; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tUu8NW+N/lZtZUgHrpoRBaTBMcRkWiNokPBa1XqwUmI=; b=PmiTZmyCpwQFWAEyhkQ3aaVpG2JHuS/FY6FGW72CZ2das4Kr1CE/Drbw4tHgCW9QNgoKJfxWvPbmge3MQCb870/BKArAGHPq3jr0j8Wy7+9aL4GAh3dxQaiQ7pHks5ydlh2KgRvug6pBoRO8XqY5vDBWGG+L+EIj4FQh0tTe3Ic= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534479199227.26580858450268; Thu, 15 Jan 2026 19:34:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaaT-00053l-Kv; Thu, 15 Jan 2026 22:33:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaaS-00053b-Pz for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:24 -0500 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaaQ-0005AN-Ul for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:24 -0500 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-81e8b1bdf0cso941393b3a.3 for ; Thu, 15 Jan 2026 19:33:22 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534401; x=1769139201; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tUu8NW+N/lZtZUgHrpoRBaTBMcRkWiNokPBa1XqwUmI=; b=FLWIv9iK2Tw+dDQm4SncGxFyzTgRkKRa4ZLkEWsa1fsmuvAwxv6aVZXFlJ1iM0mYVw PWd27CfZRta55BnrUW1+iGOvp0jyM4k8kYzdM+f65il2XBfAr7M3p2KIXMMushJvvRCk vsN53Jd/HTX3UzmjtztSauv3FyxJ/FjPULPPupxYqHdBZH6y/AOZiK9xPpwVpjWel4Rt vmvkTBpyrDEuB4/v1Sa3ZKBivusoaH9pB0EJx0T8DuaqfYMveD4xz0r4dCce9/LRbnV+ AvmR7niB3a8okvOzOo/xm9OisklILcuEDZ1bXXvZ0CBvmGKZ9aSuMtHnLSxba0FHwzDJ +itQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534401; x=1769139201; 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; bh=tUu8NW+N/lZtZUgHrpoRBaTBMcRkWiNokPBa1XqwUmI=; b=E8lHRXded19W7ReCT7T4Xah88OkaQEVSlLPKEk9PHmlaeLJmW1wAjpMXqaWqMl37gI DEelsugCLDoCUqi9zwC3pXNICr26kruuWkYE4OS2pWD9w+1qS+rm+67AItxyWFBfBGg0 suew/YZBtTbJEZZjdZ3PSpujPdkGudaMyzQ/8QLUXte73mBedhjgub4H/fZsC6P/sbJF Eble0//WelOA8WYXKNtZt1U0zFTJjNzzW54Kt7MePhEXLA9OSS0w0FfgvB6V0+3Cfbrc n4FBCtVw4EluPhZxYeYxbvehQUd8S9w8SrJFYJeqYQyrrwgEvV99xkgOF3GpluQHyQLk SGbQ== X-Gm-Message-State: AOJu0YzftdncSgA1Hq1ebqeh2Jq3VNxYx0F8XrZE6kImUWSIr+EDkmHn CwFq3YBJn4t6xANN7f7Mvx62RChr4kXB9q+F2X59Y6zXW8vpbCKukBh1umjX58i2jwxiCoYcSEu 5X/mXuP7fqw== X-Gm-Gg: AY/fxX4uShcq56xS9i6BTT2Ztv9PRySFy/SWBaXKfp1xLsGwfDN9yxmbtcdU/H/JdVI s2geIV42hqF/8Gda1flaB2EJsUIs8FePsZixjlvVP0vyRbIZcEXAOqSE6YnZdBK5Rw6s5PWpicJ AgG3joq3+U7jR+InQ1jXknocvix26HMDtZ+DLKfrsx0IQn2Nh63xzeBHTBmDxwBgpt3d1DEn+T6 qXRixM9zCfvRUtPOClpFpLTgeW2rDXZRqj6eYAP+eNCCU/ywzdWAWSeM2QLxs8kDg6Br8vpAmek uVKl/LI41LCMlurfR2OLpy4fhvyR5xXtMn//ENruS2e8GaN030W7zFJX0xa30FfNvmNFG4SM6Vo 7G3GYF9liMH4ZNzcK9OtOOr3vTO/s1q1uTfX6XJysFH1can0oyxdX8cRdtef2bbG55KSDgalT7K nvGIpOJBs8THMyaYivzQ== X-Received: by 2002:a05:6a21:4cc7:b0:342:9cb7:649d with SMTP id adf61e73a8af0-38dfe60cd83mr1660828637.26.1768534401418; Thu, 15 Jan 2026 19:33:21 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 01/58] meson: Add wasm64 support to the --cpu flag Date: Fri, 16 Jan 2026 14:32:07 +1100 Message-ID: <20260116033305.51162-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534481388158500 From: Kohei Tokunaga wasm64 target enables 64bit pointers using Emscripten's -sMEMORY64=3D1 flag[1]. This enables QEMU to run 64bit guests. Although the configure script uses "uname -m" as the fallback value when "cpu" is empty, this can't be used for Emscripten which targets to Wasm. So, in wasm build, this commit fixes configure to require --cpu flag to be explicitly specified by the user. [1] https://emscripten.org/docs/tools_reference/settings_reference.html#mem= ory64 Signed-off-by: Kohei Tokunaga Reviewed-by: Pierrick Bouvier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Message-ID: <91f16f0e9ae6b36fbf0c2caac510dcf855120400.1768308374.git.ktokun= aga.mail@gmail.com> --- configure | 6 +++++- meson.build | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 55e0bd3425..92bfc5f976 100755 --- a/configure +++ b/configure @@ -365,7 +365,6 @@ elif check_define __APPLE__; then host_os=3Ddarwin elif check_define EMSCRIPTEN ; then host_os=3Demscripten - cpu=3Dwasm32 cross_compile=3D"yes" else # This is a fatal error, but don't report it yet, because we @@ -419,6 +418,8 @@ elif check_define __aarch64__ ; then cpu=3D"aarch64" elif check_define __loongarch64 ; then cpu=3D"loongarch64" +elif check_define EMSCRIPTEN ; then + error_exit "wasm32 or wasm64 must be specified to the cpu flag" else # Using uname is really broken, but it is just a fallback for architectu= res # that are going to use TCI anyway @@ -519,6 +520,9 @@ case "$cpu" in wasm32) CPU_CFLAGS=3D"-m32" ;; + wasm64) + CPU_CFLAGS=3D"-m64 -sMEMORY64=3D1" + ;; esac =20 if test -n "$host_arch" && { diff --git a/meson.build b/meson.build index c58007291a..600c50007d 100644 --- a/meson.build +++ b/meson.build @@ -51,7 +51,7 @@ qapi_trace_events =3D [] bsd_oses =3D ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly',= 'darwin'] supported_oses =3D ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', '= sunos', 'linux', 'emscripten'] supported_cpus =3D ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', = 'x86_64', - 'arm', 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm32'] + 'arm', 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm32', 'wasm64'] =20 cpu =3D host_machine.cpu_family() =20 @@ -923,7 +923,7 @@ if have_tcg if not get_option('tcg_interpreter') error('Unsupported CPU @0@, try --enable-tcg-interpreter'.format(cpu= )) endif - elif host_arch =3D=3D 'wasm32' + elif host_arch =3D=3D 'wasm32' or host_arch =3D=3D 'wasm64' if not get_option('tcg_interpreter') error('WebAssembly host requires --enable-tcg-interpreter') endif --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534517; cv=none; d=zohomail.com; s=zohoarc; b=JOGrG0urV3gSRDnVc81To5aLyATNSUz2uzjzVXbSyTHzZ9BHHTrfJ2Sxh8437qfqaGTbENOrFZ888othGjrJbebT1Aw4dsMBnUYbmgb0nvYiqjrnF/ZrvNYlGS1McYZTHZrJkuApp1o6c1AJ8YDB29I8SOYE7r//XRyhLmTbV/s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534517; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=k5K8Gno/91nHdx8Gqv7HA5rsj9100ib32U380sespwo=; b=Fwwo8MIGeIWV/MapYgwNRVwSvAUpWltcRggjEhp2rZMOd6hW0z9OmtKvrbVXrNZgxusgDta8HMDTgcKWiu9Iw7R4VT36qebNx31XQ6iWaJhtNApiWQBjhxMV61o+6iFpV8Fgy9ICHlBxZ0ikp5TIaqxCxcA1GkDbLyi3q66505w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534516998784.1613167371897; Thu, 15 Jan 2026 19:35:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaaY-00054G-8B; Thu, 15 Jan 2026 22:33:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaaW-000542-Ev for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:28 -0500 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaaU-0005Bz-Ow for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:28 -0500 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-81345800791so1007150b3a.0 for ; Thu, 15 Jan 2026 19:33:26 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534405; x=1769139205; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=k5K8Gno/91nHdx8Gqv7HA5rsj9100ib32U380sespwo=; b=X50EyF5Qrq15rI0D5/LuYuTj/kj9kr/xeSRVyTD0CnWjDFcPxcjzIGdllfrD8yG+U0 Y1YW3R7JP1DzdUFv9wFDsoNwaW3PmYRUkCtxBVWz73btDiZP/MZt7IYcloQ+zHYZXNR0 ZylOYAKT3s1QNlEBTOnzzEXyeNPZr73ieZMJ+4Wlkoka81f/PM8lS7RN7QGGJXRNjCWF +sBgi7O4nc13XJsMvle1/QvJXcdR/nOBY7XD4e5EcLLyf3i3sBE39lfhgtvauQeRFle9 yLaoOe8jcjJeALVrHtx6QKd25ymYs7hCIhG5EvSHAaVZaM6/igPmy42C2ASiPm30gfNp VBJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534405; x=1769139205; 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; bh=k5K8Gno/91nHdx8Gqv7HA5rsj9100ib32U380sespwo=; b=Gqucd5SNN9h16blKiEiJ77zZMywFPzMFfzjBD6Yco7zMykxZRdbo87CsMeP9VBX+T6 15sssyYy4XZRqPMYruJfEZbaIG1cs5qeRCaCGB1BMcUpvD41q8XN1nkf8YSwitpCLoHB pHQNskakjkCFpOEPJXm5fX/CUH00dCWYj6oJSnuqlEBM6ttAvFWDbBhIEHn4SkE6rXCS oyfuG0p/70chmkC1IoKFtkCx5LikonDlVDzU+ttLpLXRM52h9Ete2UQl+ASRo41QUVW0 7GM6CFusEkK1uLTowjNYuF3vhXIKR/skpUej37QhorG7I69kiYYcx8O8q8SvQP79rSdG akag== X-Gm-Message-State: AOJu0Yz427cuJ2jf1BR4zaIVcEJJyxyjT/a/CM8pTFncs8el3E+qtxfB D8TQje7X+SDRDnTBo6BzLjMHCluP3ZVC+htL+PjntgmJAJ9BMK3zvP9kJFnGhM6p49Y938Lp0Es 3ePn2W6ipnw== X-Gm-Gg: AY/fxX7aokVpEnccoCKCaA46gME+XBSzjFpa3auUFJZYW5SZUpkOSW3BHbJBhySpoZG F/YyOa4S0+7E3pk5FaNfDyd24VrZqvV2SlWMjNaNPkxafqAnbEgbluYIjF5yfi6zevP+fiunasF mgQS/C4zaSu2Gwa5So5VrwAzJ1ej7rioxaGm2buaIsoMvHlh6pPTz4O2p+7sIeAP35MOimf1cWr lgg/y9YZsRGpKUB4hu7mvEwbugRNDImWeSLPLupFH9mJUAXWzJnLlGFEjJDk+Zj5YoUMJeKo2Eo +wO4VELWnlauqB8PF0r4TDfFoXtrYkVdMI+IZ/ccouxtbSCRQufggMjdBgzIDzR3ISdtkPrQ2Qj R9kLu8uKi4mkVJNwyTQraE+E7yVd6GgefLjGPRoqYg5lJiTzFltu3nc+K9RbvPIng8WkTkfNXE6 lG/lNdL0U2KU72ew2bkw== X-Received: by 2002:a05:6a00:94c7:b0:81f:4a36:1c7c with SMTP id d2e1a72fcca58-81fa179f582mr1210055b3a.23.1768534405337; Thu, 15 Jan 2026 19:33:25 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 02/58] configure: Enable to propagate -sMEMORY64 flag to Emscripten Date: Fri, 16 Jan 2026 14:32:08 +1100 Message-ID: <20260116033305.51162-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534517415158500 From: Kohei Tokunaga Currently there are some engines that don't support wasm64 (e.g. unsupported on Safari[1]). To mitigate this issue, the configure script allows the user to use Emscripten's compatibility feature, "-sMEMORY64=3D2" flag[2]. Emscripten's "-sMEMORY64=3D2" flag still enables 64bit pointers in C code. = But this flag lowers the output binary into wasm32, with limiting the maximum memory size to 4GB. So QEMU can run on wasm32 engines. [1] https://webassembly.org/features/ [2] https://emscripten.org/docs/tools_reference/settings_reference.html#mem= ory64 Signed-off-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-ID: --- configure | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 92bfc5f976..326d27dab1 100755 --- a/configure +++ b/configure @@ -182,6 +182,10 @@ EXTRA_CXXFLAGS=3D"" EXTRA_OBJCFLAGS=3D"" EXTRA_LDFLAGS=3D"" =20 +# The value is propagated to Emscripten's "-sMEMORY64" flag. +# https://emscripten.org/docs/tools_reference/settings_reference.html#memo= ry64 +wasm64_memory64=3D1 + # Default value for a variable defining feature "foo". # * foo=3D"no" feature will only be used if --enable-foo arg is given # * foo=3D"" feature will be searched for, and if found, will be used @@ -239,6 +243,8 @@ for opt do ;; --without-default-features) default_feature=3D"no" ;; + --wasm64-32bit-address-limit) wasm64_memory64=3D"2" + ;; esac done =20 @@ -521,7 +527,7 @@ case "$cpu" in CPU_CFLAGS=3D"-m32" ;; wasm64) - CPU_CFLAGS=3D"-m64 -sMEMORY64=3D1" + CPU_CFLAGS=3D"-m64 -sMEMORY64=3D$wasm64_memory64" ;; esac =20 @@ -779,6 +785,8 @@ for opt do ;; --disable-rust) rust=3Ddisabled ;; + --wasm64-32bit-address-limit) + ;; # everything else has the same name in configure and meson --*) meson_option_parse "$opt" "$optarg" ;; @@ -904,6 +912,8 @@ Advanced options (experts only): --disable-containers don't use containers for cross-building --container-engine=3DTYPE which container engine to use [$container_eng= ine] --gdb=3DGDB-path gdb to use for gdbstub tests [$gdb_bin] + --wasm64-32bit-address-limit Restrict wasm64 address space to 32-bit (de= fault + is to use the whole 64-bit range). EOF meson_options_help cat << EOF --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534640; cv=none; d=zohomail.com; s=zohoarc; b=G5W1EWSA3rujcr4po2VhouLf3bDVd8cJkVYr0hqQ+uwZBFsUrf5z+xxcdT1A7arsjIF+rN8SOIMlHQ0HRLz1mTj9ugzPIrkKvbzuHKvAy0M5fpBnV8Q3/aJlbpwjEHOZsLkrGmuL4hV3v16d4ugklxI2pDIY1NNN1pA9uWYBfgo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534640; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yguf5MQWeecW8uYtbHFfNKk14zdSjyRF1HRDoDaJ2G0=; b=c/7cHCvw/w+NSa6LX+9R4tFkbGIp0XNUQBDOdkQijVned4XkJAXQOI+rCKedEY824a6l6o+Knt40pcuhItYiDODJV8J8uiSiNJpxxTHHUJUCKmJy6zNcuKfBtjtrKPBC4+IrEuHsslLABWvJ4bkd3cG8RO8O3DTJsg8xZBo8dUg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534635009372.3261660211218; Thu, 15 Jan 2026 19:37:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaaa-00054n-Sj; Thu, 15 Jan 2026 22:33:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaaa-00054d-6v for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:32 -0500 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaaY-0005DD-Ex for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:31 -0500 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-81e8a9d521dso969044b3a.2 for ; Thu, 15 Jan 2026 19:33:30 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534409; x=1769139209; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yguf5MQWeecW8uYtbHFfNKk14zdSjyRF1HRDoDaJ2G0=; b=vsMdzBlPMbZKasNre2RnjtsPTlb/4HTHQZfLoPI25nnIs3bKzafN+ljQltmLELrJ9L Q4ZNtdrCZErk4BIaDigFPJM3YifzC56b6RU7FyPIlCYdu69ld10oepu3uXCzkvJdbLRF /QS2U9kBWw2oQ9Rg4wq+sd9SR64FPg2hu+DIqH0F5jw/cSymzKzOSkXWEff2R2CMEGuq qMpEkrS9T5kgmNfEvcHcCcsizzvpQsKR2FHuyspeUpPlMM10a8R/Ego41eJ/mne05/0m DIutue7bzxRE1fNX7K48CDcvlniIhPcclvyklkHlqIG7SR9hTq74BT9QajIY+vl5ohWC 9X6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534409; x=1769139209; 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; bh=yguf5MQWeecW8uYtbHFfNKk14zdSjyRF1HRDoDaJ2G0=; b=W1IoGjuwEr8fgdEjJyppritA/93aduvvH82tUJdDvv+LXX+wQxLXZ95MjVPdRb8jLH 5Fe7N2Jzu5UYYbmDE6ZxNgPIg2yEgzErMBzxGIZntgbvVVCUrK0z9jYKZvOitB0PSaXr GFUNpsQRNF8M+7MuQoTtjXSHofDADpc9J9DBe194+rOs0dGcNm3kLLOyF7KqCrGd1t9z hX9EC/Bo+GXv69Tjwuw5UGlJMC9y9Xsxd2fdHIphOBrx5vK/oUi3stnEGmEWzM7iTTJ6 dRoShWgaBjycsgY5XgziqjzYBfGuIJOJylx11KVJPI8aV0StPFgfdJw38MIes/WgvTzB wWDw== X-Gm-Message-State: AOJu0YybLxXsnxCoIjzx8wS2cjE864gIygN86xxJZxWhxw9cgJbvigrv 3w5pnVubjNu+36GMJMd1vhqkN9jojFqZDV2lC2kYkLnAD5v8MPT+URa2Nqf5yu1sRYom0lfN4HR p0ExPvJof2g== X-Gm-Gg: AY/fxX7/xJbYDSDVHEAf4T0WTqYeQdDs9FA8VoxhTZR4VHjC3PCKBmQrgfUk1FqoYGr M5VDZMGgR+RenoKCybmbz3qOpblVQ5dBnThkJwfUnFT+cCjk0THfwdmanu5Syha+W2AaWnEHEPB fdrqnZimG5Dqaeg44z4Hy9KBfdP9w/Vee8iqqsxHw9zEfithkPwASzJMzysnip1C4lz/WellE6L XxJKMZy1asUyAe/JiIcijbJdSn0SfSSRvbqgTcQEwXqAzeeBMC4kVz4mSWmCmWH/mx/V9Q5BFuu BOoBO2xBm72ssN9pT7W3xtYWrIE8P5ZkALyyqetGou4KqtOqgIJt+Mk7w+QClBl21OU/K3ZvSeA DD5uXpiIizgDKjbbA7QWAk3J/CysnLX6YSxuT+995d4jTEq9yMZKjSmITTEIW40cg05n7Hb/WjZ BnW7Y91TgyObtWUsF6uw== X-Received: by 2002:a05:6a00:1884:b0:81f:3fa0:8c39 with SMTP id d2e1a72fcca58-81fa189743dmr1072891b3a.67.1768534409058; Thu, 15 Jan 2026 19:33:29 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 03/58] dockerfiles: Add support for wasm64 to the wasm Dockerfile Date: Fri, 16 Jan 2026 14:32:09 +1100 Message-ID: <20260116033305.51162-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534641938158500 Content-Type: text/plain; charset="utf-8" From: Kohei Tokunaga This commit fixes Dockerfile of the wasm build to support both of wasm32 and wasm64 build. Dockerfile takes the following build argument and use it for building dependencies. - TARGET_CPU: target wasm arch (wasm32 or wasm64) Signed-off-by: Kohei Tokunaga Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-ID: <3f21342f50e0412a32143fe21ecc0d8db95b3f37.1768308374.git.ktokun= aga.mail@gmail.com> --- MAINTAINERS | 2 +- ...2-cross.docker =3D> emsdk-wasm-cross.docker} | 26 ++++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) rename tests/docker/dockerfiles/{emsdk-wasm32-cross.docker =3D> emsdk-wasm= -cross.docker} (89%) diff --git a/MAINTAINERS b/MAINTAINERS index 4ddbfba9f0..de8246c3ff 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -683,7 +683,7 @@ F: include/system/os-wasm.h F: os-wasm.c F: util/coroutine-wasm.c F: configs/meson/emscripten.txt -F: tests/docker/dockerfiles/emsdk-wasm32-cross.docker +F: tests/docker/dockerfiles/emsdk-wasm-cross.docker =20 Alpha Machines -------------- diff --git a/tests/docker/dockerfiles/emsdk-wasm32-cross.docker b/tests/doc= ker/dockerfiles/emsdk-wasm-cross.docker similarity index 89% rename from tests/docker/dockerfiles/emsdk-wasm32-cross.docker rename to tests/docker/dockerfiles/emsdk-wasm-cross.docker index 1f08eb0b85..ecd5a02903 100644 --- a/tests/docker/dockerfiles/emsdk-wasm32-cross.docker +++ b/tests/docker/dockerfiles/emsdk-wasm-cross.docker @@ -1,14 +1,15 @@ # syntax =3D docker/dockerfile:1.5 =20 -ARG EMSDK_VERSION_QEMU=3D3.1.50 +ARG EMSDK_VERSION_QEMU=3D4.0.10 ARG ZLIB_VERSION=3D1.3.1 ARG GLIB_MINOR_VERSION=3D2.84 ARG GLIB_VERSION=3D${GLIB_MINOR_VERSION}.0 ARG PIXMAN_VERSION=3D0.44.2 -ARG FFI_VERSION=3Dv3.4.7 +ARG FFI_VERSION=3Dv3.5.2 ARG MESON_VERSION=3D1.5.0 +ARG TARGET_CPU=3Dwasm32 =20 -FROM docker.io/emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base +FROM docker.io/emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base-common ARG MESON_VERSION ENV TARGET=3D/builddeps/target ENV CPATH=3D"$TARGET/include" @@ -29,12 +30,22 @@ RUN pip3 install meson=3D=3D${MESON_VERSION} tomli RUN mkdir /build WORKDIR /build RUN mkdir -p $TARGET + +FROM build-base-common AS build-base-wasm32 + +FROM build-base-common AS build-base-wasm64 +ENV CFLAGS=3D"$CFLAGS -sMEMORY64=3D1" +ENV CXXFLAGS=3D"$CXXFLAGS -sMEMORY64=3D1" +ENV LDFLAGS=3D"$LDFLAGS -sMEMORY64=3D1" + +FROM build-base-${TARGET_CPU} AS build-base +ARG TARGET_CPU RUN < /cross.meson [host_machine] system =3D 'emscripten' -cpu_family =3D 'wasm32' -cpu =3D 'wasm32' +cpu_family =3D '${TARGET_CPU}' +cpu =3D '${TARGET_CPU}' endian =3D 'little' =20 [binaries] @@ -56,13 +67,14 @@ RUN emconfigure ./configure --prefix=3D$TARGET --static RUN emmake make install -j$(nproc) =20 FROM build-base AS libffi-dev +ARG TARGET_CPU ARG FFI_VERSION RUN mkdir -p /libffi RUN git clone https://github.com/libffi/libffi /libffi WORKDIR /libffi RUN git checkout $FFI_VERSION RUN autoreconf -fiv -RUN emconfigure ./configure --host=3Dwasm32-unknown-linux \ +RUN emconfigure ./configure --host=3D${TARGET_CPU}-unknown-linux \ --prefix=3D$TARGET --enable-static \ --disable-shared --disable-dependency-tracking \ --disable-builddir --disable-multi-os-directory \ @@ -140,6 +152,6 @@ RUN sed -i -E "/#define HAVE_POSIX_SPAWN 1/d" ./_build/= config.h RUN sed -i -E "/#define HAVE_PTHREAD_GETNAME_NP 1/d" ./_build/config.h RUN meson install -C _build =20 -FROM build-base +FROM build-base-common COPY --from=3Dglib-dev /builddeps/ /builddeps/ COPY --from=3Dpixman-dev /builddeps/ /builddeps/ --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534443; cv=none; d=zohomail.com; s=zohoarc; b=UKfBiFhW5+m43FbMVKgCaTYpKecmfpo+sNJqUWLeP6V8G8bZXVmiyyJdahfIxEToXOMwJ6xoSTNt6gV9Ua4d5SmpJVN4ZJq48dv25Q+pZTiURTSv0gMIy56LqsUn6tHHoIeBSkRH056p9SszSZ+IfyoZE78gwcJboetjayd2VM4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534443; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WiKhVe9h1C0nVxITBJA39wKqU/L0CHS8GFQCoHFP+dc=; b=QfUhSIrg45wNEODf2p9NMBXDEETRV/TDSwO9K6N6Q3rBFlh8TfQV/XjerQoVDSinieGjl5atwGjIafuGl8ED5BDkhqaNAsQ0HFZ6bEpWmgb4cZVC6IAA3tejq58/jFiK04kH4mlbxJA5tBR/g53pWB2SlHrzVIqN1at+7zAZBG0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534443724900.2982478390525; Thu, 15 Jan 2026 19:34:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaaf-00055M-9l; Thu, 15 Jan 2026 22:33:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaae-00055D-1C for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:36 -0500 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaac-0005Ez-CJ for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:35 -0500 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-81e8b1bdf0cso941492b3a.3 for ; Thu, 15 Jan 2026 19:33:34 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534413; x=1769139213; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WiKhVe9h1C0nVxITBJA39wKqU/L0CHS8GFQCoHFP+dc=; b=lwK0UPnDpm9Y4A6UgUBrI0o1T1pSID4fKlC8p3oZYTgYQfpK6UHCS+/WmVb3ssnn8/ U00PmOSC1LhNT6JxazSoCz8kIc0qFOAQlvA4MJ6cqJ+UX21PjC0sw42F5FwXn9FkJBo/ OcCYXw1n9gKjG/DMZXCKw1gqMy6LKA4wunhN958kCzEvBVqub6QbXUhwKDykpAYn7h7i /xK+GFXT8yGLembqWD9n4A0inp5WUmqxEELeYUiEXM8N0Emgqihdhz4RSqvkWLhFkqJG VpPS6K5F9s/vsCJIvbPAA7RdZsBPSzuGDCa0+TUBLW1QWBjOSoQDl5JP4VQ1a7/MSqIx RFyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534413; x=1769139213; 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; bh=WiKhVe9h1C0nVxITBJA39wKqU/L0CHS8GFQCoHFP+dc=; b=SfGwYfE4Qlp38IjLAcC1t64Z9OnDJvgvqRDf1fUcI+j+HxnkhKEvJFcLmKuu8C6Vac SUrI8qC1z2TGPy8YGU6MF1kyf60ZYWbTl/sBiMyaX+FuERQMI0R+2h3AUCN181sTYqT+ rFdKHJ/MxB3ygMGgwGvucI0cmm7lcIahzO3sj35GTiJxqVM831WhhmNu+gi1tmxxx8MZ SkaMkCUa2Ee0bHtXYIhaApIps/D2ZB13nzHRfcViH+7oB2HV+e2OdSIptnqLOVeblDMW e9BorrpX/RNRGO1+EXGJGmXOmisDx6hsxteOwFXNBP//ak7LDK2X7nGsA+70wmulCD80 ecrw== X-Gm-Message-State: AOJu0YwTHTeO4f+jCdjQKchwqQoP/LXjLr+rxaR7iXsYkByNh2UMbIfX i/NNCOlPvrgRJ+HCXkPqGL2+AEgYe4CIbG8KGTCqGhYVILpVNLRUO9Z/V8oZJPhpM4P4t7mrRSG dlfYBXMZ0JA== X-Gm-Gg: AY/fxX4+h6foeg/+qgwwthmZ7qVUwKrJddoG7JQ/Hbt8Y9YdmnaaOHNIRglI1Nr02G8 NcoHVnFHFkt30wXUGQBdXDdoB8qngdFYphys2AXCgwJLtzP/sf7wA4ODCQ3tgqQuqz3oJH1a/Bz V3Pc/JacHO4dfzMSWGXpq1ojn6AHTvaIaBGpYsvfpRFd0SdH8RDb1gjXeZvwztmZkZD1OF2xOGi ZZLEWr0SH2oBuBNRHhJ4qCH7fRdtqkfq9JMSt1jbKZZmY5Bcr3CWCc7irQgGCbPGKZwUs1eMxkD SrSntGw4HegHuY1ng3hR/jRl06F32Kk45e1JD9+T+WEpnML8gJjDGeCI2wKBXo+hOJ2xp+sTTTx yGC4vY5FEYdELpw1MYV1a3123pGgnGKXm6r5XlzZiQIFdhSaHbtThXgbo61PlAQx6vVObb0+vrS p5cRfk6pLYCE7S0r2Pdg== X-Received: by 2002:a05:6a00:c86:b0:81f:4566:ccde with SMTP id d2e1a72fcca58-81f9f6ab85dmr1628745b3a.20.1768534413039; Thu, 15 Jan 2026 19:33:33 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 04/58] gitlab-ci: Add build tests for wasm64 Date: Fri, 16 Jan 2026 14:32:10 +1100 Message-ID: <20260116033305.51162-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534445290158500 Content-Type: text/plain; charset="utf-8" From: Kohei Tokunaga The wasm builds are tested for 3 targets: wasm32, wasm64(-sMEMORY64=3D1) and wasm64(-sMEMORY64=3D2). The CI builds the containers using the same Dockerf= ile (emsdk-wasm-cross.docker) with different build args. Signed-off-by: Kohei Tokunaga Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Message-ID: --- .gitlab-ci.d/buildtest.yml | 24 +++++++++++++++++++++--- .gitlab-ci.d/container-cross.yml | 11 ++++++++++- .gitlab-ci.d/container-template.yml | 4 +++- .gitlab-ci.d/containers.yml | 3 ++- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index dfe954fe3c..ea0f5bb057 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -785,11 +785,29 @@ coverity: # Always manual on forks even if $QEMU_CI =3D=3D "2" - when: manual =20 -build-wasm: +build-wasm32-32bit: extends: .wasm_build_job_template timeout: 2h needs: - - job: wasm-emsdk-cross-container + - job: wasm32-emsdk-cross-container variables: IMAGE: emsdk-wasm32-cross - CONFIGURE_ARGS: --static --disable-tools --enable-debug --enable-tcg-i= nterpreter + CONFIGURE_ARGS: --static --cpu=3Dwasm32 --disable-tools --enable-debug= --enable-tcg-interpreter + +build-wasm64-64bit: + extends: .wasm_build_job_template + timeout: 2h + needs: + - job: wasm64-emsdk-cross-container + variables: + IMAGE: emsdk-wasm64-cross + CONFIGURE_ARGS: --static --cpu=3Dwasm64 --disable-tools --enable-debug= --enable-tcg-interpreter + +build-wasm64-32bit: + extends: .wasm_build_job_template + timeout: 2h + needs: + - job: wasm64-emsdk-cross-container + variables: + IMAGE: emsdk-wasm64-cross + CONFIGURE_ARGS: --static --cpu=3Dwasm64 --wasm64-32bit-address-limit -= -disable-tools --enable-debug --enable-tcg-interpreter diff --git a/.gitlab-ci.d/container-cross.yml b/.gitlab-ci.d/container-cros= s.yml index 0fd7341afa..7022015e95 100644 --- a/.gitlab-ci.d/container-cross.yml +++ b/.gitlab-ci.d/container-cross.yml @@ -86,7 +86,16 @@ win64-fedora-cross-container: variables: NAME: fedora-win64-cross =20 -wasm-emsdk-cross-container: +wasm32-emsdk-cross-container: extends: .container_job_template variables: NAME: emsdk-wasm32-cross + BUILD_ARGS: --build-arg TARGET_CPU=3Dwasm32 + DOCKERFILE: emsdk-wasm-cross + +wasm64-emsdk-cross-container: + extends: .container_job_template + variables: + NAME: emsdk-wasm64-cross + BUILD_ARGS: --build-arg TARGET_CPU=3Dwasm64 + DOCKERFILE: emsdk-wasm-cross diff --git a/.gitlab-ci.d/container-template.yml b/.gitlab-ci.d/container-t= emplate.yml index 82c1b69e8d..b92e96b0fc 100644 --- a/.gitlab-ci.d/container-template.yml +++ b/.gitlab-ci.d/container-template.yml @@ -10,12 +10,14 @@ - export COMMON_TAG=3D"$CI_REGISTRY/qemu-project/qemu/qemu/$NAME:lates= t" - docker login $CI_REGISTRY -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PA= SSWORD" - until docker info; do sleep 1; done + - export DOCKERFILE_NAME=3D${DOCKERFILE:-$NAME} script: - echo "TAG:$TAG" - echo "COMMON_TAG:$COMMON_TAG" - docker build --tag "$TAG" --cache-from "$TAG" --cache-from "$COMMON_= TAG" --build-arg BUILDKIT_INLINE_CACHE=3D1 - -f "tests/docker/dockerfiles/$NAME.docker" "." + $BUILD_ARGS + -f "tests/docker/dockerfiles/$DOCKERFILE_NAME.docker" "." - docker push "$TAG" after_script: - docker logout diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml index f7d3e7205d..dde9a3f840 100644 --- a/.gitlab-ci.d/containers.yml +++ b/.gitlab-ci.d/containers.yml @@ -58,7 +58,8 @@ weekly-container-builds: - tricore-debian-cross-container - xtensa-debian-cross-container - win64-fedora-cross-container - - wasm-emsdk-cross-container + - wasm32-emsdk-cross-container + - wasm64-emsdk-cross-container # containers - amd64-alpine-container - amd64-debian-container --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534443; cv=none; d=zohomail.com; s=zohoarc; b=DgKyI6OncBnf00xEeUzFOXJpk/iZ7CK2+u9Jqo1K8+855tbE8Byvr94f7U5piXj6Skyihgo0mt2885OPL7BIIdStczfjWwhG709G6xqbYbZCJuWpCGvpdUDN/HAodwWXgdHnA5eyV7xnVePCq16aLQ7vm4Fcq1X29y90/vF9MtI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534443; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xCUzcYbtSzERFupJae9HyrfFCPO0z4l1+p7E2IR7BMk=; b=fxcCrCBrwOdlBLl4wkv0YWzssF4/JOuH7Fl2AM3XYhqBzAxuL6+TPTQA43pWxDc4NWCfiFlAjHUnbmv36lr6KtcmvvT4jk68AhQ+CjYZ4nPKMolSPa2npqHzbd5bnG7Yd/OdZu6pdr+Vehdaly7ioGy2C1V4YKvsN0TsEF7F1xw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534443687568.4989052750428; Thu, 15 Jan 2026 19:34:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaaj-000569-NV; Thu, 15 Jan 2026 22:33:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaah-00055l-Kg for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:39 -0500 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaag-0005GW-2i for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:39 -0500 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-81c72659e6bso1386890b3a.0 for ; Thu, 15 Jan 2026 19:33:37 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534416; x=1769139216; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xCUzcYbtSzERFupJae9HyrfFCPO0z4l1+p7E2IR7BMk=; b=k4yDY99JsEyvyJdg/6P9HrMCaVTSVaGQXdWb8HzYpXpwobysEX6yB5ZkqaZ55TDdu+ UVOs6PtlHbG5fTYAezR6rIRbn92IZi1dOompW3sL8WLs+2EE1/x7VIvQIVaQHUfp4qBM khJdIOPxYsk78ow86twn8JOdcJVLLj8u8mOkcHl8rgeRqvzQdMmda+OwAVIwv9YGxVS5 OWdBSxUMUqwnROtU62MLqnLVYqwH6j9TtcSFu4gJrGxanLHWqbgmJQRYmGKnbPWoGQIt HWd88qv//VYkGxB7hBDrbibWjL0Bx6O3Dm1nL4ohmyCPET6Me74cA87RMcOWh1S3bASd K4eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534416; x=1769139216; 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; bh=xCUzcYbtSzERFupJae9HyrfFCPO0z4l1+p7E2IR7BMk=; b=BxK/6Y4wYXmm8ZyDkKkGjWqI3YG5HQxRHxxL3ViQZzV58MNeCcEFopLEl6ehSSQLpJ fIAEp50k0BpeWXI6DtETSTbH/LGnkFv8GW4zv/Jv+yskoTJV+NX+9m+LIjPEnFRw9Tvb uwhWs07aX7cE5eRffEBC+LQlvN40FuuGjCsxeMnos7bI9wBSZcfLt/AQ7Gaiiq+YOAf3 Sgmb2B8do0Oxb2Nmw/Q2zp511lHVFU29teLjBwZQHRfax6suGpAISiI43LQgAeoJjjwU eqpE9blb6Ab3fq8laHKfWGe3Khf04v6DPGsn6pXdwUyI8sARsKniI1Is6MnT3f6yrhMo WmEQ== X-Gm-Message-State: AOJu0YzOv9UVdu4hg0hl9xx3LWjCm0APw9xoAQkj4G8yyu1MxocnbIWk Ny6lqOpcbWlHTJukxjCH0n15AHTAtJ2Snn8vsVpEySu1c/7yPq9gSSSLG8pbwxnD23jRQThEfgA FRL24kWbudw== X-Gm-Gg: AY/fxX5Xb/J54ZLeX2KGu9Mga7yu3/qAVdON1V3oflY9LWPA/CafdfFry5UqNpaBuql /bDhhXP5ocwaiCmQ4xhi99xrwZPKxsX09g8zPFlb3jE7srJiFUEpn6PdCIT4IcTpK9BhVANcSW3 cL6ltN2vO6LzVJJv1vxetnrxkNpNHj0EUGr9PZoJ542sVlAcXLjoFz6sNq1vX0orJvf77ynDKDo mIOa/IJIlPvUfxlog1Q1dkMi41GylPzF0aTPRpU0EsynLHqGHeEhHIrzhQJOuQqSuvyLTqtruJb C09aXELcmyRNjU7OZVj1SbcmSzZC8mGXOhi5MxOLoD2/MSNtPl8YaxeUNo3RwBoDyLXYGikEJKP LkSLusEQcioURtyoXwqN5cPJqyahsVj9viptDNdolbHQKZJepPqSqqQbYiIoyG8eZsCrghEYJxg /rpNRYNMJxD+0h+izaJA== X-Received: by 2002:a05:6a00:2e9b:b0:81e:4ec2:da9d with SMTP id d2e1a72fcca58-81fa039fe3dmr1539038b3a.46.1768534416503; Thu, 15 Jan 2026 19:33:36 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 05/58] gitlab-ci: Drop build-wasm32-32bit Date: Fri, 16 Jan 2026 14:32:11 +1100 Message-ID: <20260116033305.51162-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534445331158500 Content-Type: text/plain; charset="utf-8" Drop the wasm32 build and container jobs. Signed-off-by: Richard Henderson Reviewed-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- .gitlab-ci.d/buildtest.yml | 9 --------- .gitlab-ci.d/container-cross.yml | 7 ------- .gitlab-ci.d/containers.yml | 1 - 3 files changed, 17 deletions(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index ea0f5bb057..e9b5b05e6e 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -785,15 +785,6 @@ coverity: # Always manual on forks even if $QEMU_CI =3D=3D "2" - when: manual =20 -build-wasm32-32bit: - extends: .wasm_build_job_template - timeout: 2h - needs: - - job: wasm32-emsdk-cross-container - variables: - IMAGE: emsdk-wasm32-cross - CONFIGURE_ARGS: --static --cpu=3Dwasm32 --disable-tools --enable-debug= --enable-tcg-interpreter - build-wasm64-64bit: extends: .wasm_build_job_template timeout: 2h diff --git a/.gitlab-ci.d/container-cross.yml b/.gitlab-ci.d/container-cros= s.yml index 7022015e95..6bdd482b80 100644 --- a/.gitlab-ci.d/container-cross.yml +++ b/.gitlab-ci.d/container-cross.yml @@ -86,13 +86,6 @@ win64-fedora-cross-container: variables: NAME: fedora-win64-cross =20 -wasm32-emsdk-cross-container: - extends: .container_job_template - variables: - NAME: emsdk-wasm32-cross - BUILD_ARGS: --build-arg TARGET_CPU=3Dwasm32 - DOCKERFILE: emsdk-wasm-cross - wasm64-emsdk-cross-container: extends: .container_job_template variables: diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml index dde9a3f840..9b6d33ac13 100644 --- a/.gitlab-ci.d/containers.yml +++ b/.gitlab-ci.d/containers.yml @@ -58,7 +58,6 @@ weekly-container-builds: - tricore-debian-cross-container - xtensa-debian-cross-container - win64-fedora-cross-container - - wasm32-emsdk-cross-container - wasm64-emsdk-cross-container # containers - amd64-alpine-container --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534610; cv=none; d=zohomail.com; s=zohoarc; b=Q7v0FUiU3fbj9sXnYJYkPLFZ1ZvXROMkNy0eS/gp3yjZJU4gDUTUQFCtKgtMAKenKmUVtKtGTL1JbeaiT1HTEf11xle9hkbTefkICTQ0dw4cJpHb8cSZ0Ka3Sa8OkxH6AA3o/B2ZwV3TXTCfe6pzNoZPC6GWNAN9lEhl///hgVA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534610; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=N59fScNT/GU69c4/pB+lZMvNhLijF5cb/1PlNGXkv0Y=; b=Nrtf8v9hYvX2UXUrXvlQeIZI5WQMr210WqKwVUYwHCajDWKNcEkjgbUwLmycd/H+8Ylt6gDpVndyE0q5e+JszeXJGTDr9AfoCxAsNUlhXpebNzgWlU77wC0GYGUrUC7I7DP5SJt8RQ/WIWaxxsRK9KUfGMnMGy/ICSZUiXNWBcM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534610328555.7237570684022; Thu, 15 Jan 2026 19:36:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaan-00056h-KJ; Thu, 15 Jan 2026 22:33:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaal-00056D-AK for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:43 -0500 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaaj-0005IE-GW for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:43 -0500 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-81dbc0a99d2so814344b3a.1 for ; Thu, 15 Jan 2026 19:33:41 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534420; x=1769139220; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=N59fScNT/GU69c4/pB+lZMvNhLijF5cb/1PlNGXkv0Y=; b=riSHIojxF1ErDeDe+8Jh+2N05Q7YymEEFYkVKmdeCdjrnve0qPFbs5fR/Svebh7CLL TEwTbFjqOAvfp/fYpcEhVnlWCF44UNCFAGVDM4aPB6nyZJl8PzTE77Sypd/jFtOCc6im ZM9bzBkLJsoyJOkhh+iH1i2JyQAPhKL9o9bGzo/PzTflVvRKZbWydPacQQQW7dQ4XeX6 JIskJnI4vdOHwnPBqmhdqZTJcQjZ8zxb5cIFiyu5RRvaq4KWlltdbTFWRLnBTzDoGth5 1HzSst00hIKL0owZmwPNWYictTrqHQMX3//kb+Y2P4yPs6GRwkAwjq97uo9sd7FWm5hm uoiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534420; x=1769139220; 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; bh=N59fScNT/GU69c4/pB+lZMvNhLijF5cb/1PlNGXkv0Y=; b=XAfW5xnB5dmY3x6yOpu/qZFVioHehpQAdnlLr3OzH8PoJwbapViloUDaq0bjoCjEnL U/iMcleT1xGrA9EamwJkMfwvoRHWBYUtBKWZ3qy3d4JxWSWcmlW83+sOb1aH6+K88n0/ JmE6n6ullrMdQNHHeU24UhWe8/YDFLNDkgzj2P0JfZBBa1F7tjytOY6jqxOMQkrRSWDs E5kUPagL96OOzFvO+zx8ysTH/qtEDOz8Sa9xPuSIQ/WhE5YCsrir0DfzZ7VYVYeRC/OF oV+cHrXavEOP1W0G4LLzXAl5HCXqBVsIhNiJhNxNLyTNvWiYEza2zwoiq2DZDVaRbGHF 5qIA== X-Gm-Message-State: AOJu0Yy9U/SvcqPiDQjcRBp38+or34+ysIdiX08ifIid3efT6QulXIvq Kg13YIj5olkAvEZYobzuX1hLYcixsAiTRiqPZI6AoBWGyYXUgmg+9XAevHrjx4B+JkTRv/lxJCV RXwWbuqdRAQ== X-Gm-Gg: AY/fxX6nsOUTaJLBwULVX8oZaVsHJqsCOPae/U9GWaDxYwewbQuWhnjiVozV2erpGPr d4PqXf18ZKXrMc6eDqicZk3L3r461VY02AIfssvNpLNqze+5ZTRVP0THmZJ+9CUON905t5RgUdM x4mcT7KBGhvPLalH7zllMH/0hlzGssmiUtCVufGIP+X11ZLpwiinXfzSPt6J1s1KWeH5ZmAcPmN EnXras66mZmalma1q9jooaGlqt8jEg/lC496Pg6MBDLDiSG/EUYmjp9FcjMX86lzCZgzliTDLbz xkhe5OOStERsrDr4HtfCzJQvuckmSSqXS2egY9BIBIpnKlb3FhwOmucthtnkVR7FwfPF3reXCcE z7QW3yYo5+T4fL+jQoWc55XKcdek6U/5lmpKg7xZP8IambVfZFqX+Ggm+Pb2Jdvsy13/SQmBcHN bKvh1dfEOzjSlIXrc4cg== X-Received: by 2002:a05:6a00:1788:b0:81f:3d13:e07b with SMTP id d2e1a72fcca58-81fa035461emr1580849b3a.43.1768534420095; Thu, 15 Jan 2026 19:33:40 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 06/58] tests/docker/dockerfiles: Drop wasm32 from emsdk-wasm-cross.docker Date: Fri, 16 Jan 2026 14:32:12 +1100 Message-ID: <20260116033305.51162-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534611850158500 Content-Type: text/plain; charset="utf-8" We will no longer build wasm32, so drop the docker config. Streamline the dockerfile to hardcode TARGET_CPU as wasm64. Signed-off-by: Richard Henderson Reviewed-by: Kohei Tokunaga --- .gitlab-ci.d/container-cross.yml | 1 - tests/docker/dockerfiles/emsdk-wasm-cross.docker | 15 ++++----------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/.gitlab-ci.d/container-cross.yml b/.gitlab-ci.d/container-cros= s.yml index 6bdd482b80..b376c837dc 100644 --- a/.gitlab-ci.d/container-cross.yml +++ b/.gitlab-ci.d/container-cross.yml @@ -90,5 +90,4 @@ wasm64-emsdk-cross-container: extends: .container_job_template variables: NAME: emsdk-wasm64-cross - BUILD_ARGS: --build-arg TARGET_CPU=3Dwasm64 DOCKERFILE: emsdk-wasm-cross diff --git a/tests/docker/dockerfiles/emsdk-wasm-cross.docker b/tests/docke= r/dockerfiles/emsdk-wasm-cross.docker index ecd5a02903..8a924816f9 100644 --- a/tests/docker/dockerfiles/emsdk-wasm-cross.docker +++ b/tests/docker/dockerfiles/emsdk-wasm-cross.docker @@ -7,7 +7,6 @@ ARG GLIB_VERSION=3D${GLIB_MINOR_VERSION}.0 ARG PIXMAN_VERSION=3D0.44.2 ARG FFI_VERSION=3Dv3.5.2 ARG MESON_VERSION=3D1.5.0 -ARG TARGET_CPU=3Dwasm32 =20 FROM docker.io/emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base-common ARG MESON_VERSION @@ -31,21 +30,16 @@ RUN mkdir /build WORKDIR /build RUN mkdir -p $TARGET =20 -FROM build-base-common AS build-base-wasm32 - -FROM build-base-common AS build-base-wasm64 +FROM build-base-common AS build-base ENV CFLAGS=3D"$CFLAGS -sMEMORY64=3D1" ENV CXXFLAGS=3D"$CXXFLAGS -sMEMORY64=3D1" ENV LDFLAGS=3D"$LDFLAGS -sMEMORY64=3D1" - -FROM build-base-${TARGET_CPU} AS build-base -ARG TARGET_CPU RUN < /cross.meson [host_machine] system =3D 'emscripten' -cpu_family =3D '${TARGET_CPU}' -cpu =3D '${TARGET_CPU}' +cpu_family =3D 'wasm64' +cpu =3D 'wasm64' endian =3D 'little' =20 [binaries] @@ -67,14 +61,13 @@ RUN emconfigure ./configure --prefix=3D$TARGET --static RUN emmake make install -j$(nproc) =20 FROM build-base AS libffi-dev -ARG TARGET_CPU ARG FFI_VERSION RUN mkdir -p /libffi RUN git clone https://github.com/libffi/libffi /libffi WORKDIR /libffi RUN git checkout $FFI_VERSION RUN autoreconf -fiv -RUN emconfigure ./configure --host=3D${TARGET_CPU}-unknown-linux \ +RUN emconfigure ./configure --host=3Dwasm64-unknown-linux \ --prefix=3D$TARGET --enable-static \ --disable-shared --disable-dependency-tracking \ --disable-builddir --disable-multi-os-directory \ --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534578; cv=none; d=zohomail.com; s=zohoarc; b=Bw1RMBJx0WbsNlyqGUiS8m1gdb9wnljJjytwkig/LptriSSiPEKqqEIJoT6i73pGV257QQlVgE8IL6B0RPM3QHVrWdfrJwUU1K1x25IXxDNdku9A+PtU1LjBO6uvG2n3kdy4KLozgXdJyjyIGpUvXjd6MzpGyhp1YQMLX1XGBJc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534578; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zzDXHHrlzlOvFG8u9bvgWF8ocDA0BIRZVJaj0j3UHCk=; b=kWYfxtE78Q/RKaLBqiFRjSwco0XlEJc9dh2gHCDwmPAJhpznkJvT/G29ag5pDN8ZUsnp2lWCe9B/E+A+vly03hbHdqUiIMefWQHOiBgUdex4OPVQrH3SFu++e9XqN+XaywfBpd0Gnuj+U5jmbmVvPc88RCq1N4lK1yDWDfuuqTo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534578847886.697559705536; Thu, 15 Jan 2026 19:36:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaaq-00059h-Oe; Thu, 15 Jan 2026 22:33:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaap-000597-1T for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:47 -0500 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaan-0005Jt-CI for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:46 -0500 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-81f3fba4a11so1499662b3a.1 for ; Thu, 15 Jan 2026 19:33:45 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534424; x=1769139224; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zzDXHHrlzlOvFG8u9bvgWF8ocDA0BIRZVJaj0j3UHCk=; b=m5OwzCJkLxa9eneWZ5koaL0oXhuHHOWGpsMQ8qOkneILXD91NHidUh/Ot3u/lQKva7 6hBh4NuxoBSXxdVnq0ydoxcUnBWz7gBvuO0xOA5gSnSXuRVoZd8/VG/D6UOBay+3Ukz2 iJq0bv9w2sYJXsLL7sM+y8HfaDWXE4P2N5C875g3vgDdHzrjxEpYm3a1jTo5GTBxlly8 Qvu7cvrwbSEgHy5+y2izuFl5Q3HS/1fO/7iVtOtAM9IAOlhydRdk2fMjpnD2oD+gl0yF om4v4WOCPeWX/TW/nR9IDlc3nvxK4dxjANFJQh0VdtpGgny0oPkbz+FMDHHeOHASWi6A /prA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534424; x=1769139224; 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; bh=zzDXHHrlzlOvFG8u9bvgWF8ocDA0BIRZVJaj0j3UHCk=; b=AYMlVkwVK8Bsn+OOgpLk3MbBOV8SQkQdUpowgFIAJVttVxCuW/IR2H79urdpfptmZ0 0Gcu2agmg1F1vfEDaagougbrqS9M3rnESoGbEL/bGFQQmH1ymxV7K0fpzuk2odQLExq0 fsgQOJ7kP6rzx8dyk2Pc+bPSvQpec2EPUUoZ2hUCRog0lkhxubAeaz5bXOrEhnJC8sis CcHTHjiEBdq4v7l/E4tUkbyyKXcl1SRT9z9nHSWRzfI9Bc1+qDfLyrn7w4Y+HFrZ3WuU eX5fag4gmEen1FShhibT72uywlFRE+2A3NPP42Dk/QZu0fD8N888WsmmXnVVbKeHVvRg xs3w== X-Gm-Message-State: AOJu0YySVtBGo5MQoO6OjmDy89nD0C6sQRIH87xL7hNsTeMfB+WELSWw XjLwXhnZejE7/zIAJf+EiFPmXgf4vkY1CrbPlH+B/B9Y98e3hduBTSrM9q/ssVsjaaHDij+/Sy0 QNxSoUdIJqg== X-Gm-Gg: AY/fxX427CdF3abJ4cbJoak1uzhY4CpBIpJTUITH+fklPKjXEB6fWRM4T5TJOQu/y/l PxcTDHeFXjxtU2aRe7ey7xwiVpiGLZctvR8kAumuIcDLyHcbr2oL5mIlL3Ro3QZumryidtTVnfV /QmJoSSgm6s36egfVDrGrij3S1kFHqOU3Z4ZqzAHbvI6PK+o+MK2ZNvDWx8DphjPxz5bYRjoEBR cqsLJAvJBr0QeyYk0CIxIiwzxa+NqLDcoFwsvM9Q+obZmvePl7tY2NDH9fTJi6s3RuPXdfeZQcM iu6BG6zb3gD4QFvJUWiICe+9IdIohdzAHPpAV4Ez02Og6B2G7kOFmiUzuXQuktszQiI9SNbhYVj eu9P1rmZ/VvETJeLyUDxyRy9DYvoOBS9qEAJyZVaT4uPB53/yYwT6S01HmxF1q8MxBCRhX5Q2CM XMLfOx4+Es4bvosefPJjUyHgbwOzrx X-Received: by 2002:a05:6a00:1891:b0:7f7:5783:fc6d with SMTP id d2e1a72fcca58-81fa01d9d58mr1350898b3a.41.1768534423881; Thu, 15 Jan 2026 19:33:43 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 07/58] gitlab: Remove 32-bit host testing Date: Fri, 16 Jan 2026 14:32:13 +1100 Message-ID: <20260116033305.51162-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534579655158500 Content-Type: text/plain; charset="utf-8" These deprecated builds will be disabled. Remove testing of armhf and i686. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- .gitlab-ci.d/container-cross.yml | 12 --------- .gitlab-ci.d/containers.yml | 2 -- .gitlab-ci.d/crossbuilds.yml | 45 -------------------------------- 3 files changed, 59 deletions(-) diff --git a/.gitlab-ci.d/container-cross.yml b/.gitlab-ci.d/container-cros= s.yml index b376c837dc..d7ae57fb1f 100644 --- a/.gitlab-ci.d/container-cross.yml +++ b/.gitlab-ci.d/container-cross.yml @@ -22,12 +22,6 @@ arm64-debian-cross-container: variables: NAME: debian-arm64-cross =20 -armhf-debian-cross-container: - extends: .container_job_template - stage: containers - variables: - NAME: debian-armhf-cross - hexagon-cross-container: extends: .container_job_template stage: containers @@ -40,12 +34,6 @@ loongarch-debian-cross-container: variables: NAME: debian-loongarch-cross =20 -i686-debian-cross-container: - extends: .container_job_template - stage: containers - variables: - NAME: debian-i686-cross - mips64el-debian-cross-container: extends: .container_job_template stage: containers diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml index 9b6d33ac13..6aeccf8be0 100644 --- a/.gitlab-ci.d/containers.yml +++ b/.gitlab-ci.d/containers.yml @@ -47,10 +47,8 @@ weekly-container-builds: - amd64-debian-user-cross-container - amd64-debian-legacy-cross-container - arm64-debian-cross-container - - armhf-debian-cross-container - hexagon-cross-container - loongarch-debian-cross-container - - i686-debian-cross-container - mips64el-debian-cross-container - ppc64el-debian-cross-container - riscv64-debian-cross-container diff --git a/.gitlab-ci.d/crossbuilds.yml b/.gitlab-ci.d/crossbuilds.yml index 99dfa7eea6..59ff8b1d87 100644 --- a/.gitlab-ci.d/crossbuilds.yml +++ b/.gitlab-ci.d/crossbuilds.yml @@ -1,13 +1,6 @@ include: - local: '/.gitlab-ci.d/crossbuild-template.yml' =20 -cross-armhf-user: - extends: .cross_user_build_job - needs: - - job: armhf-debian-cross-container - variables: - IMAGE: debian-armhf-cross - cross-arm64-system: extends: .cross_system_build_job needs: @@ -30,44 +23,6 @@ cross-arm64-kvm-only: IMAGE: debian-arm64-cross EXTRA_CONFIGURE_OPTS: --disable-tcg --without-default-features =20 -cross-i686-system: - extends: - - .cross_system_build_job - - .cross_test_artifacts - needs: - - job: i686-debian-cross-container - variables: - IMAGE: debian-i686-cross - EXTRA_CONFIGURE_OPTS: --disable-kvm - MAKE_CHECK_ARGS: check-qtest - -cross-i686-user: - extends: - - .cross_user_build_job - - .cross_test_artifacts - needs: - - job: i686-debian-cross-container - variables: - IMAGE: debian-i686-cross - MAKE_CHECK_ARGS: check - -cross-i686-tci: - extends: - - .cross_accel_build_job - - .cross_test_artifacts - timeout: 60m - needs: - - job: i686-debian-cross-container - variables: - IMAGE: debian-i686-cross - ACCEL: tcg-interpreter - EXTRA_CONFIGURE_OPTS: --target-list=3Di386-softmmu,i386-linux-user,arm= -softmmu,arm-linux-user,ppc-softmmu,ppc-linux-user --disable-plugins --disa= ble-kvm - # Force tests to run with reduced parallelism, to see whether this - # reduces the flakiness of this CI job. The CI - # environment by default shows us 8 CPUs and so we - # would otherwise be using a parallelism of 9. - MAKE_CHECK_ARGS: check check-tcg -j2 - cross-mips64el-system: extends: .cross_system_build_job needs: --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534532; cv=none; d=zohomail.com; s=zohoarc; b=ZjPOWLf2BQtJdgwG1rO5R8zXO//BCjK9ThFsWxqGGJFNAJ+9RGsPd2qirgtmJbyN98tm93vGMIvpMhZspCpg57Cvoc7BHRMxkKLldzm9iQ6T/Yb/cPqaUE/8cMT+wFC6ZwaDBhzflFJ0yC/Qg64mhJ/YKKv74Uz7EcHBCsXHwzg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534532; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=I83QPWtH9U5iWC7LMp+ajrhWMXwe0PAlGrhYN4kn3j8=; b=Svm/bk9mpNB1YxpVHb+uaep2H6WZjfAwAVtk7WLHan4wDppW47tzY/GctNJwcFQXtLxhMWqvTXmHqzPpAcKN1bcdAoN4a9ROBjgU9LQUpRcfl8clYIW13hMvFpyS0hIa3MFcGCn9TtfcCNDwIgJjfbbgh9SJpO46IyqZGgRTbc0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534532421838.9394500371592; Thu, 15 Jan 2026 19:35:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaau-0005Aa-If; Thu, 15 Jan 2026 22:33:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaas-0005AB-P3 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:50 -0500 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaar-0005LJ-23 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:50 -0500 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-bc09b3d3afeso639442a12.0 for ; Thu, 15 Jan 2026 19:33:48 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534428; x=1769139228; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=I83QPWtH9U5iWC7LMp+ajrhWMXwe0PAlGrhYN4kn3j8=; b=Kwnm6L324etuBadmEaRMbWAYL8Dv9EoipDCj/tlSE8MG9g2gQRbdsnng8TAG+6XXXB 4YKhcvlir3wild1mCSyszhHERZKS1+izAgbUwX9PQ96cWEOFytHcHvWq7cjASjHSlhHB 5jCesxDYD8YooMHnXqsDnwsmi0MB+dGkO1a/fXPJ5iwm4l2YzYTT4yYnlmMFy+K/aRoN aiAOJSg/fuX+XnjwX5iU2gMpT3Is/y1H3LFzH9KxmMdXzJQr6vo5azk7chga4lL5GsuI piPCpsKo2O2PdnsZ8tYSbXkEZBfY7cedhr2bERGgUc1gmcd7NfKOOVFHinFbutjrBQz2 +XBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534428; x=1769139228; 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; bh=I83QPWtH9U5iWC7LMp+ajrhWMXwe0PAlGrhYN4kn3j8=; b=Z5lpI2LZ5HZZVi/pyTdg0DAZ9mVVKmcif/ZQSgUKxTfRvEROPqGnUwUGLMDsrmPtwV W2jl8IYF05TX7OuaJScYoU6joGaW4wWDqcnB1Rmpy3qAN22sbVYukZIjCC+9fmSfWxGL nsbxB8gA5rusOCetfl5+1ktQlSLdUmm6u0zlfQSUeYmukRYxtPH0OQacKHRNEtRwzRGL 4TYMGR85pMmGBMSvGAGh8iojO/mJdnDVCVFYr3KvqF74AfVbuc4EU49amFQ+qQGgiidq INLyfMidqPh6Tz4i3PMxbJ1eblCd3E0twoJ3hNE422N6uU4TiqvC+rU0QH92zKS36ZH0 6OdQ== X-Gm-Message-State: AOJu0YwCuQ+iqjrWMYQbPoVKltYvxqCgAgRmUktiau5DQpK2u8gkuj9s HSLfSMV7j7rIFsjaAd2eIFpMB2hDCxJlg19aMa8RRYR2/4JthCxlsAtkd4Ol3E+tWCTrf13FFIg QlVHR2mOHWQ== X-Gm-Gg: AY/fxX79Q5Ohp7iv1lEvqyK4saTN9ECwfXj3UOSTpPL5H4OCpDaBeZwSIjHSTIO8l6V 6xyodE2aOlBdH5Gc/g7n4ecMMb3/e2RGUjRTg5RIcGKPlK8wdz5bWLeRHTcJ+hCsEdPX6s0aoF4 R37Cz4BN/qnICsiIKyqft3HoTZixJdJAw1JbdrDiYOXQXwvOSy9MHfJK5tHowXlL42nm53DnhUk GD+ZNSYVk2h28knsKp1zVR37s81y9WUQGT8vISU446pNOxKoRD1BpokHzxWfbbnLay58X9A/RGf uhUv5UEZzRkKzMpKpUyb/SOO+AdJ3Vr4fTchi30IDiR5ICZz2Ze/f1iN3EMVA4eaEOAiopoMbog fiBmOfNyYRSVQUtqNC+n5qCosakgosH2Sora0vTOlNhklq40IkeRt0MhWqgkkbkfAFEPO1fowuy t2fmWfNwsOPCWCWZjlug== X-Received: by 2002:a17:90b:3dcc:b0:34e:5516:6653 with SMTP id 98e67ed59e1d1-3527315b15dmr1136231a91.8.1768534427532; Thu, 15 Jan 2026 19:33:47 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 08/58] meson: Reject 32-bit hosts Date: Fri, 16 Jan 2026 14:32:14 +1100 Message-ID: <20260116033305.51162-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534533659158500 Content-Type: text/plain; charset="utf-8" 32-bit hosts have been deprecated since 10.0. As the first step, disable any such at configuration time. Further patches will remove the dead code. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- docs/about/deprecated.rst | 29 ----------------------------- docs/about/removed-features.rst | 6 ++++++ meson.build | 17 ++++------------- 3 files changed, 10 insertions(+), 42 deletions(-) diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 7abb3dab59..88efa3aa80 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -186,28 +186,6 @@ maintain our cross-compilation CI tests of the archite= cture. As we no longer have CI coverage support may bitrot away before the deprecation process completes. =20 -System emulation on 32-bit x86 hosts (since 8.0) -'''''''''''''''''''''''''''''''''''''''''''''''' - -Support for 32-bit x86 host deployments is increasingly uncommon in mainst= ream -OS distributions given the widespread availability of 64-bit x86 hardware. -The QEMU project no longer considers 32-bit x86 support for system emulati= on to -be an effective use of its limited resources, and thus intends to disconti= nue -it. Since all recent x86 hardware from the past >10 years is capable of the -64-bit x86 extensions, a corresponding 64-bit OS should be used instead. - -TCG Plugin support not enabled by default on 32-bit hosts (since 9.2) -''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' - -While it is still possible to enable TCG plugin support for 32-bit -hosts there are a number of potential pitfalls when instrumenting -64-bit guests. The plugin APIs typically pass most addresses as -uint64_t but practices like encoding that address in a host pointer -for passing as user-data will lose data. As most software analysis -benefits from having plenty of host memory it seems reasonable to -encourage users to use 64 bit builds of QEMU for analysis work -whatever targets they are instrumenting. - TCG Plugin support not enabled by default with TCI (since 9.2) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' =20 @@ -216,13 +194,6 @@ is going to be so much slower it wouldn't make sense f= or any serious instrumentation. Due to implementation differences there will also be anomalies in things like memory instrumentation. =20 -32-bit host operating systems (since 10.0) -'''''''''''''''''''''''''''''''''''''''''' - -Keeping 32-bit host support alive is a substantial burden for the -QEMU project. Thus QEMU will in future drop the support for all -32-bit host systems. - System emulator CPUs -------------------- =20 diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.= rst index e81d79da47..b0d7fa8813 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -572,6 +572,12 @@ like the ``akita`` or ``terrier``; it has been depreca= ted in the kernel since 2001. None of the board types QEMU supports need ``param_struct`` support, so this option has been removed. =20 +32-bit host operating systems (removed in 11.0) +''''''''''''''''''''''''''''''''''''''''''''''' + +Keeping 32-bit host support alive was a substantial burden for the +QEMU project. Thus QEMU dropped all support for all 32-bit host systems. + =20 User-mode emulator command line arguments ----------------------------------------- diff --git a/meson.build b/meson.build index 600c50007d..28f61be675 100644 --- a/meson.build +++ b/meson.build @@ -332,6 +332,10 @@ endif # Compiler flags # ################## =20 +if cc.sizeof('void *') < 8 + error('QEMU requires a 64-bit CPU host architecture') +endif + foreach lang : all_languages compiler =3D meson.get_compiler(lang) if compiler.get_id() =3D=3D 'gcc' and compiler.version().version_compare= ('>=3D7.4') @@ -3247,9 +3251,6 @@ if host_os =3D=3D 'windows' endif endif =20 -# Detect host pointer size for the target configuration loop. -host_long_bits =3D cc.sizeof('void *') * 8 - # Detect if ConvertStringToBSTR has been defined in _com_util namespace if host_os =3D=3D 'windows' has_convert_string_to_bstr =3D cxx.links(''' @@ -3360,10 +3361,6 @@ foreach target : target_dirs =20 target_kconfig =3D [] foreach sym: accelerators - # Disallow 64-bit on 32-bit emulation and virtualization - if host_long_bits < config_target['TARGET_LONG_BITS'].to_int() - continue - endif if sym =3D=3D 'CONFIG_TCG' or target in accelerator_targets.get(sym, [= ]) config_target +=3D { sym: 'y' } config_all_accel +=3D { sym: 'y' } @@ -5036,12 +5033,6 @@ if host_arch =3D=3D 'unknown' message('configure has succeeded and you can continue to build, but') message('QEMU will use a slow interpreter to emulate the target CPU.') endif -elif host_long_bits < 64 - message() - warning('DEPRECATED HOST CPU') - message() - message('Support for 32-bit CPU host architecture ' + cpu + ' is going') - message('to be dropped in a future QEMU release.') elif host_arch =3D=3D 'mips' message() warning('DEPRECATED HOST CPU') --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534564; cv=none; d=zohomail.com; s=zohoarc; b=KnAkVrVaxv3MJZ/+IrKWNaJy7EPM4Nx73XJTqNkJimJGTwxOUvGcVrEFyKP5v7bPme7vHtnTfimz8lr7bvD2nqYWrY3dRfitsb6cXfedc/rLIlFiAHE1yW8Am5ItacBNzV6fz+aYbQshTCgSGrx0eraw7UTMvj9+LEprLEBCFxY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534564; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SQmdwfgDw/OFvrU337kdzrrsEE2LGo0JQHmsETZmOYM=; b=knhA/xFWkB/dTYNp54YMWEoOy1oDhhZiMZNzYMh37CYQz4EWiSs4DhtZtYcB7xHPnFsurPLcwSSWo3fWhtTVUe2GIPxYGug2/rylpWCBrCMY/oSiSmtBesBjTEnFtVUmSdQntSSZ6eRZ1M3AxbDG1zFYH5GxDNYzHKG651IAHCc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534564178447.6805088589824; Thu, 15 Jan 2026 19:36:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaay-0005Bc-AZ; Thu, 15 Jan 2026 22:33:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaaw-0005BN-K7 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:54 -0500 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaau-0005Mg-Na for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:33:54 -0500 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-81c72659e6bso1387059b3a.0 for ; Thu, 15 Jan 2026 19:33:52 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534431; x=1769139231; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SQmdwfgDw/OFvrU337kdzrrsEE2LGo0JQHmsETZmOYM=; b=JBljx8D5lEn4/rKeLlA+1cQJqCP4xDYrePWIIGyXm6QfnDUro9mQ01FshsgsQOoa/3 vOosBcJX9oelPgShJLHGTNBSVK9WyCs8z58ar+nSp2MiKxt51IO1tJo7Y6eJVfwt/KJQ W4/SNGGaUp41V0ZBb2XrCMbludNx7UbD9JTQ5KBMruK5t/rlfJNdYU4DFPkKHN9fgglQ R2h95whjsiql0xASJrqa3Qn7tG43DCRG2H8FReB5or1EQ3bm4UTDSkKuhDj4D1GPuHlg gTABrFJmFb2hbDuHYh8AOFuilDxbTgL+d0mVQiFCWmXQ5hCdfdQJdtyz1TOzCVIXBF07 KicA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534431; x=1769139231; 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; bh=SQmdwfgDw/OFvrU337kdzrrsEE2LGo0JQHmsETZmOYM=; b=Yj8zzLqXCymzJleinCslAklzr2EaKknqHUlfecQRJ0/+peTlu8io2yKanKVeFathrh wNh43dhkqqLRz9N1vOHSbkZ/D3dDZAgMS7AbY8MQGwu6D0XIQ56hjZqdRtgM+KgcRMlV 3PPU7KsqaGTpPcpnSXbDJlcJot2y23E1HaAZGrbKGtDq1cWIsRe4Mzrm8JaM7c2GFbu2 +OpNFG3HWkI4nIdMAInVjl2LALayNDSHdA/NnJaa05oR1oXPCWd5c96wXpcmCtwk1h0l FO6O8rpTkSgYdSD3w6ig3MG+0Rny6bquBa7MKclo+mfKKlKkOC4XP/BJojZor66oiAJH Pj3g== X-Gm-Message-State: AOJu0YzNHTquRjXT0KdolMS/Lcd7A5uEJ5EJ6xsBgJBl+BVl2rUplgTK cj6WMIBvtdjigr1cKASmZXQv7h1s/l4kRFuj8bkC8SNTh1Dlkd75QLnlVDNndwtfp+w7hOxniRR tKW7n/53aPg== X-Gm-Gg: AY/fxX5x0zu57EYGV57u8B9MutC83mLKezV80av4iiAVirLVSShoTt9W5opiI5Nekkb lTCUwebNMWPwqn+8gZ7eMpP11sSgvhoJllbdAmmav5YMIU/JbYSLHgznc2dxQUddQXh3JFC8Q+c CfX9ifygrJYfz78i9T276wFla4qSv3znVzCcv0jc6reRrhf6oT98E/hxI2/RpOFLYX/3wY/yE1Q q80O1t1bE81K4W42sJgSwSLsqvBKULV7Ib2RtJsZtSVKjgRwbJgzRlK04Kx7KW+SB81JU9PT8rP HdcbLAINcKb/gk1qG4WVGL+oeFBeAUi9w4urj8Lx8Q0ihbTPxScv5xPHVLCJwWDjsBOlGVcuNPd K21bVYP9oThE6WrlZc8z/ktlw530A0V5t7Y+mn6xjh85aH/tSajq9TVHElR8TLkeomnzXFk+Aol SnBcnPoHNz0GT0Z4RS2A== X-Received: by 2002:a05:6a00:3020:b0:81f:4319:6a0c with SMTP id d2e1a72fcca58-81fa03a1fbfmr1450989b3a.51.1768534431304; Thu, 15 Jan 2026 19:33:51 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 09/58] meson: Drop cpu == wasm32 tests Date: Fri, 16 Jan 2026 14:32:15 +1100 Message-ID: <20260116033305.51162-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534565594158500 Content-Type: text/plain; charset="utf-8" The 32-bit wasm32 host is no longer supported. Signed-off-by: Richard Henderson Reviewed-by: Kohei Tokunaga --- configure | 5 +---- meson.build | 6 +++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/configure b/configure index 326d27dab1..ba1b207b56 100755 --- a/configure +++ b/configure @@ -425,7 +425,7 @@ elif check_define __aarch64__ ; then elif check_define __loongarch64 ; then cpu=3D"loongarch64" elif check_define EMSCRIPTEN ; then - error_exit "wasm32 or wasm64 must be specified to the cpu flag" + error_exit "wasm64 must be specified to the cpu flag" else # Using uname is really broken, but it is just a fallback for architectu= res # that are going to use TCI anyway @@ -523,9 +523,6 @@ case "$cpu" in linux_arch=3Dx86 CPU_CFLAGS=3D"-m64" ;; - wasm32) - CPU_CFLAGS=3D"-m32" - ;; wasm64) CPU_CFLAGS=3D"-m64 -sMEMORY64=3D$wasm64_memory64" ;; diff --git a/meson.build b/meson.build index 28f61be675..082c7a86ca 100644 --- a/meson.build +++ b/meson.build @@ -51,7 +51,7 @@ qapi_trace_events =3D [] bsd_oses =3D ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly',= 'darwin'] supported_oses =3D ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', '= sunos', 'linux', 'emscripten'] supported_cpus =3D ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', = 'x86_64', - 'arm', 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm32', 'wasm64'] + 'arm', 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm64'] =20 cpu =3D host_machine.cpu_family() =20 @@ -927,7 +927,7 @@ if have_tcg if not get_option('tcg_interpreter') error('Unsupported CPU @0@, try --enable-tcg-interpreter'.format(cpu= )) endif - elif host_arch =3D=3D 'wasm32' or host_arch =3D=3D 'wasm64' + elif host_arch =3D=3D 'wasm64' if not get_option('tcg_interpreter') error('WebAssembly host requires --enable-tcg-interpreter') endif @@ -4248,7 +4248,7 @@ if have_rust bindgen_args_common +=3D ['--merge-extern-blocks'] endif bindgen_c_args =3D [] - if host_arch =3D=3D 'wasm32' + if host_arch =3D=3D 'wasm64' bindgen_c_args +=3D ['-fvisibility=3Ddefault'] endif subdir('rust') --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534631; cv=none; d=zohomail.com; s=zohoarc; b=YMlc9ZuiabL1bMmznVJ74douE6zlu6eKJpkJEMw9zun7Z2+dQGHs8L8WERwb4lJAXz1CN6upckpT1IZjWzvNQg5Ax2pQvLhlHGxe2g61JahuQeXt/Fv3Mvmyw6pKqAmdFG4qsbTSQKuXxm0hfgpMMgSRuSCfLNi//mtgsN5ZOow= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534631; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+W1ppk1NAX7/KovuBga7WaAI8bl5a0fhcvvYKVr3esM=; b=XdLVdjbtR8PrKkOtXvc6+GT6YIlyag/dARlE/8RigRfKKLsLnN91igjf+7UKjCHz6ITzec6jAqiRaEBdNEhBEqLlXwZWdhbPpbnqAncUBgKVGWs8kOSDYy+yZBD13C01Hpkp3ij+7y/Y28GMrveJ8paPyRHcWSVFUukDw7lZISk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534631836253.35579502251437; Thu, 15 Jan 2026 19:37:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgab7-0005I2-NB; Thu, 15 Jan 2026 22:34:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgab5-0005Fk-Gr for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:03 -0500 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgab0-0005RU-F6 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:03 -0500 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-81f4c0e2b42so882138b3a.1 for ; Thu, 15 Jan 2026 19:33:58 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534437; x=1769139237; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+W1ppk1NAX7/KovuBga7WaAI8bl5a0fhcvvYKVr3esM=; b=xhk56jhOpwU9FrR3DYfzIU7SOFMdw5KCG4UeDTaYtaoaehF8DyNW5fx2KLq+OUoUqD UpUDKb8SplePBHSrEpoYZgkTXzhnNn1PGYw1czpLxQ0lvIjRzHlR3QFlq0llR1jHlLYH pyBC8i40ER7aSnW93p8BnB0HSCk4LHUmdVTC9gD0Z0QUSoMPiqlbYf298OYSyx3Yk7Ki Cda3NW+pN2QXtWtp1GSSjefOqRkKchShXBu0EOp4JpVu63Iew1uAvPdBe1h9YcahXOkA yqMnm1k1cc2hu+13O5fnUG+A7/mRqbD54BO3MU/LQVjzcBVLbilOoVCUOgxWCWu7CBXA gGBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534437; x=1769139237; 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; bh=+W1ppk1NAX7/KovuBga7WaAI8bl5a0fhcvvYKVr3esM=; b=JbBnBwCaSsacrnANIP+SDWmZgKNWbIH17DABym5V0gr3TwuEgz+aHsl+YFb8iENdTx M1pKGnY7CO0mEjVhgpn/uACizg4KAX44Y7Pth4Ld7P+z72YaWK9GHg4zz8w9CxkFwEk8 xDMJhHZJRmDPEZF5PqgLII3eTmtx9B5Dq9GrXrtUX6ObxxkuFeVtgIzIhsE0IS//b4/K 5ml8R4p2JDNGhD1oqXSH/uCadNPFg+YpEICTwD/xM37mfVLHFN890DGWdW7ykBvuFYhP pCA7Y5PYrnH5vhIe2xNpcoE6/jGnCWqkmpkgXc2E9vGEeccbJDUWG2W3KKhstYqBe6zQ VPig== X-Gm-Message-State: AOJu0Yw1STaZT1Qf6j81+JvpVOOnEQikmTl8pdh/Q6ZQ1x9Q28wrAUjs YbYMZaF/0HmMe8fSXSnDALu4yZoYlM+ZoGGLBHvhf0SDvRVXbHHGSv4yxmrt+zYZOOQ6/1zvYdu NZcsHcCaO/w== X-Gm-Gg: AY/fxX5RxPlP1enpsgOjNciWTMM4uZ2X1sOnqp8lDAdlGXbaBzLbNuCtG5WXKwExh36 8p8bVq+dbZV0iMWBqcJLFssb3C3TXTFUyIvVgZ91eFCySzq86ORxcpjG6DgbSME9oubhX6i3iFr NNYXKz6gS7zWoDg/jyBhdnV71JvY0KjiFy7YtWCuIa2DtTBjLwwhDYSlXcVbRVRAAzqDBwkS6np JnCRu3Zknv6rSqodhswwKOuH8MYtZVRYwH1w78qBDVv8DLFGHhUPkvXN8+ySjgNikaNPzu3xZ6m ZoRHz+Yd+R2OjV24vbff/dwW0SMFHQ19YMIiAHE7EQG+1jIQ/Dv0vVVgI362uASUPKP0aA+pJe0 svrZ8n0XIKA8H1lKhsMTlm/I/0PjU8U5M0+CC4xZSweIHrkUf6Zo0G+95i8a6zK08Hd6kNmqoLY 1VaxmzE5A9sDfTyez5sOoXKQr2lJNd X-Received: by 2002:a05:6a00:1910:b0:81c:92ec:ccf3 with SMTP id d2e1a72fcca58-81f9f6aae13mr1604085b3a.19.1768534435870; Thu, 15 Jan 2026 19:33:55 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 10/58] *: Remove arm host support Date: Fri, 16 Jan 2026 14:32:16 +1100 Message-ID: <20260116033305.51162-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534634041158500 Content-Type: text/plain; charset="utf-8" Remove tcg/arm. Remove instances of __arm__, except from tests and imported headers. Remove arm from supported_cpus. Remove linux-user/include/host/arm. Remove common-user/host/arm. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/qemu/osdep.h | 2 +- linux-user/include/host/arm/host-signal.h | 43 - tcg/arm/tcg-target-con-set.h | 47 - tcg/arm/tcg-target-con-str.h | 26 - tcg/arm/tcg-target-has.h | 73 - tcg/arm/tcg-target-mo.h | 13 - tcg/arm/tcg-target-reg-bits.h | 12 - tcg/arm/tcg-target.h | 73 - disas/disas-host.c | 3 - hw/virtio/virtio-mem.c | 2 +- linux-user/mmap.c | 2 +- MAINTAINERS | 6 - common-user/host/arm/safe-syscall.inc.S | 108 - configure | 7 - meson.build | 7 +- tcg/arm/tcg-target-opc.h.inc | 16 - tcg/arm/tcg-target.c.inc | 3489 --------------------- 17 files changed, 5 insertions(+), 3924 deletions(-) delete mode 100644 linux-user/include/host/arm/host-signal.h delete mode 100644 tcg/arm/tcg-target-con-set.h delete mode 100644 tcg/arm/tcg-target-con-str.h delete mode 100644 tcg/arm/tcg-target-has.h delete mode 100644 tcg/arm/tcg-target-mo.h delete mode 100644 tcg/arm/tcg-target-reg-bits.h delete mode 100644 tcg/arm/tcg-target.h delete mode 100644 common-user/host/arm/safe-syscall.inc.S delete mode 100644 tcg/arm/tcg-target-opc.h.inc delete mode 100644 tcg/arm/tcg-target.c.inc diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 3cb45a1467..4cdeda0b9c 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -566,7 +566,7 @@ int madvise(char *, size_t, int); #endif =20 #if defined(__linux__) && \ - (defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) \ + (defined(__x86_64__) || defined(__aarch64__) \ || defined(__powerpc64__) || defined(__riscv)) /* Use 2 MiB alignment so transparent hugepages can be used by KVM. Valgrind does not support alignments larger than 1 MiB, diff --git a/linux-user/include/host/arm/host-signal.h b/linux-user/include= /host/arm/host-signal.h deleted file mode 100644 index faba496d24..0000000000 --- a/linux-user/include/host/arm/host-signal.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * host-signal.h: signal info dependent on the host architecture - * - * Copyright (c) 2003-2005 Fabrice Bellard - * Copyright (c) 2021 Linaro Limited - * - * This work is licensed under the terms of the GNU LGPL, version 2.1 or l= ater. - * See the COPYING file in the top-level directory. - */ - -#ifndef ARM_HOST_SIGNAL_H -#define ARM_HOST_SIGNAL_H - -/* The third argument to a SA_SIGINFO handler is ucontext_t. */ -typedef ucontext_t host_sigcontext; - -static inline uintptr_t host_signal_pc(host_sigcontext *uc) -{ - return uc->uc_mcontext.arm_pc; -} - -static inline void host_signal_set_pc(host_sigcontext *uc, uintptr_t pc) -{ - uc->uc_mcontext.arm_pc =3D pc; -} - -static inline void *host_signal_mask(host_sigcontext *uc) -{ - return &uc->uc_sigmask; -} - -static inline bool host_signal_write(siginfo_t *info, host_sigcontext *uc) -{ - /* - * In the FSR, bit 11 is WnR, assuming a v6 or - * later processor. On v5 we will always report - * this as a read, which will fail later. - */ - uint32_t fsr =3D uc->uc_mcontext.error_code; - return extract32(fsr, 11, 1); -} - -#endif diff --git a/tcg/arm/tcg-target-con-set.h b/tcg/arm/tcg-target-con-set.h deleted file mode 100644 index 16b1193228..0000000000 --- a/tcg/arm/tcg-target-con-set.h +++ /dev/null @@ -1,47 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define Arm target-specific constraint sets. - * Copyright (c) 2021 Linaro - */ - -/* - * C_On_Im(...) defines a constraint set with outputs and inputs. - * Each operand should be a sequence of constraint letters as defined by - * tcg-target-con-str.h; the constraint combination is inclusive or. - */ -C_O0_I1(r) -C_O0_I2(r, r) -C_O0_I2(r, rIN) -C_O0_I2(q, q) -C_O0_I2(w, r) -C_O0_I3(q, q, q) -C_O0_I3(Q, p, q) -C_O0_I4(r, r, rI, rI) -C_O0_I4(Q, p, q, q) -C_O1_I1(r, q) -C_O1_I1(r, r) -C_O1_I1(w, r) -C_O1_I1(w, w) -C_O1_I1(w, wr) -C_O1_I2(r, 0, rZ) -C_O1_I2(r, q, q) -C_O1_I2(r, r, r) -C_O1_I2(r, r, rI) -C_O1_I2(r, r, rIK) -C_O1_I2(r, r, rIN) -C_O1_I2(r, r, ri) -C_O1_I2(r, rI, r) -C_O1_I2(r, rI, rIK) -C_O1_I2(r, rI, rIN) -C_O1_I2(r, rZ, rZ) -C_O1_I2(w, 0, w) -C_O1_I2(w, w, w) -C_O1_I2(w, w, wO) -C_O1_I2(w, w, wV) -C_O1_I2(w, w, wZ) -C_O1_I3(w, w, w, w) -C_O1_I4(r, r, r, rI, rI) -C_O1_I4(r, r, rIN, rIK, 0) -C_O2_I1(e, p, q) -C_O2_I2(e, p, q, q) -C_O2_I2(r, r, r, r) diff --git a/tcg/arm/tcg-target-con-str.h b/tcg/arm/tcg-target-con-str.h deleted file mode 100644 index f83f1d3919..0000000000 --- a/tcg/arm/tcg-target-con-str.h +++ /dev/null @@ -1,26 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define Arm target-specific operand constraints. - * Copyright (c) 2021 Linaro - */ - -/* - * Define constraint letters for register sets: - * REGS(letter, register_mask) - */ -REGS('e', ALL_GENERAL_REGS & 0x5555) /* even regs */ -REGS('r', ALL_GENERAL_REGS) -REGS('q', ALL_QLDST_REGS) -REGS('Q', ALL_QLDST_REGS & 0x5555) /* even qldst */ -REGS('w', ALL_VECTOR_REGS) - -/* - * Define constraint letters for constants: - * CONST(letter, TCG_CT_CONST_* bit set) - */ -CONST('I', TCG_CT_CONST_ARM) -CONST('K', TCG_CT_CONST_INV) -CONST('N', TCG_CT_CONST_NEG) -CONST('O', TCG_CT_CONST_ORRI) -CONST('V', TCG_CT_CONST_ANDI) -CONST('Z', TCG_CT_CONST_ZERO) diff --git a/tcg/arm/tcg-target-has.h b/tcg/arm/tcg-target-has.h deleted file mode 100644 index 3bbbde5d59..0000000000 --- a/tcg/arm/tcg-target-has.h +++ /dev/null @@ -1,73 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific opcode support - * Copyright (c) 2008 Fabrice Bellard - * Copyright (c) 2008 Andrzej Zaborowski - */ - -#ifndef TCG_TARGET_HAS_H -#define TCG_TARGET_HAS_H - -extern int arm_arch; - -#define use_armv7_instructions (__ARM_ARCH >=3D 7 || arm_arch >=3D 7) - -#ifdef __ARM_ARCH_EXT_IDIV__ -#define use_idiv_instructions 1 -#else -extern bool use_idiv_instructions; -#endif -#ifdef __ARM_NEON__ -#define use_neon_instructions 1 -#else -extern bool use_neon_instructions; -#endif - -/* optional instructions */ -#define TCG_TARGET_HAS_qemu_ldst_i128 0 -#define TCG_TARGET_HAS_tst 1 - -#define TCG_TARGET_HAS_v64 use_neon_instructions -#define TCG_TARGET_HAS_v128 use_neon_instructions -#define TCG_TARGET_HAS_v256 0 - -#define TCG_TARGET_HAS_andc_vec 1 -#define TCG_TARGET_HAS_orc_vec 1 -#define TCG_TARGET_HAS_nand_vec 0 -#define TCG_TARGET_HAS_nor_vec 0 -#define TCG_TARGET_HAS_eqv_vec 0 -#define TCG_TARGET_HAS_not_vec 1 -#define TCG_TARGET_HAS_neg_vec 1 -#define TCG_TARGET_HAS_abs_vec 1 -#define TCG_TARGET_HAS_roti_vec 0 -#define TCG_TARGET_HAS_rots_vec 0 -#define TCG_TARGET_HAS_rotv_vec 0 -#define TCG_TARGET_HAS_shi_vec 1 -#define TCG_TARGET_HAS_shs_vec 0 -#define TCG_TARGET_HAS_shv_vec 0 -#define TCG_TARGET_HAS_mul_vec 1 -#define TCG_TARGET_HAS_sat_vec 1 -#define TCG_TARGET_HAS_minmax_vec 1 -#define TCG_TARGET_HAS_bitsel_vec 1 -#define TCG_TARGET_HAS_cmpsel_vec 0 -#define TCG_TARGET_HAS_tst_vec 1 - -static inline bool -tcg_target_extract_valid(TCGType type, unsigned ofs, unsigned len) -{ - if (use_armv7_instructions) { - return true; /* SBFX or UBFX */ - } - switch (len) { - case 8: /* SXTB or UXTB */ - case 16: /* SXTH or UXTH */ - return (ofs % 8) =3D=3D 0; - } - return false; -} - -#define TCG_TARGET_extract_valid tcg_target_extract_valid -#define TCG_TARGET_sextract_valid tcg_target_extract_valid -#define TCG_TARGET_deposit_valid(type, ofs, len) use_armv7_instructions - -#endif diff --git a/tcg/arm/tcg-target-mo.h b/tcg/arm/tcg-target-mo.h deleted file mode 100644 index 12542dfd1c..0000000000 --- a/tcg/arm/tcg-target-mo.h +++ /dev/null @@ -1,13 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific memory model - * Copyright (c) 2008 Fabrice Bellard - * Copyright (c) 2008 Andrzej Zaborowski - */ - -#ifndef TCG_TARGET_MO_H -#define TCG_TARGET_MO_H - -#define TCG_TARGET_DEFAULT_MO 0 - -#endif diff --git a/tcg/arm/tcg-target-reg-bits.h b/tcg/arm/tcg-target-reg-bits.h deleted file mode 100644 index 23b7730a8d..0000000000 --- a/tcg/arm/tcg-target-reg-bits.h +++ /dev/null @@ -1,12 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific register size - * Copyright (c) 2023 Linaro - */ - -#ifndef TCG_TARGET_REG_BITS_H -#define TCG_TARGET_REG_BITS_H - -#define TCG_TARGET_REG_BITS 32 - -#endif diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h deleted file mode 100644 index 4f9f877121..0000000000 --- a/tcg/arm/tcg-target.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Tiny Code Generator for QEMU - * - * Copyright (c) 2008 Fabrice Bellard - * Copyright (c) 2008 Andrzej Zaborowski - * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. - */ - -#ifndef ARM_TCG_TARGET_H -#define ARM_TCG_TARGET_H - -#define TCG_TARGET_INSN_UNIT_SIZE 4 -#define MAX_CODE_GEN_BUFFER_SIZE UINT32_MAX - -typedef enum { - TCG_REG_R0 =3D 0, - TCG_REG_R1, - TCG_REG_R2, - TCG_REG_R3, - TCG_REG_R4, - TCG_REG_R5, - TCG_REG_R6, - TCG_REG_R7, - TCG_REG_R8, - TCG_REG_R9, - TCG_REG_R10, - TCG_REG_R11, - TCG_REG_R12, - TCG_REG_R13, - TCG_REG_R14, - TCG_REG_PC, - - TCG_REG_Q0, - TCG_REG_Q1, - TCG_REG_Q2, - TCG_REG_Q3, - TCG_REG_Q4, - TCG_REG_Q5, - TCG_REG_Q6, - TCG_REG_Q7, - TCG_REG_Q8, - TCG_REG_Q9, - TCG_REG_Q10, - TCG_REG_Q11, - TCG_REG_Q12, - TCG_REG_Q13, - TCG_REG_Q14, - TCG_REG_Q15, - - TCG_AREG0 =3D TCG_REG_R6, - TCG_REG_CALL_STACK =3D TCG_REG_R13, -} TCGReg; - -#define TCG_TARGET_NB_REGS 32 - -#endif diff --git a/disas/disas-host.c b/disas/disas-host.c index 4b06f41fa6..88e7d8800c 100644 --- a/disas/disas-host.c +++ b/disas/disas-host.c @@ -74,9 +74,6 @@ static void initialize_debug_host(CPUDebug *s) #elif defined(__sparc__) s->info.print_insn =3D print_insn_sparc; s->info.mach =3D bfd_mach_sparc_v9b; -#elif defined(__arm__) - /* TCG only generates code for arm mode. */ - s->info.cap_arch =3D CS_ARCH_ARM; #elif defined(__MIPSEB__) s->info.print_insn =3D print_insn_big_mips; #elif defined(__MIPSEL__) diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c index 41de2ef5a0..c1e2defb68 100644 --- a/hw/virtio/virtio-mem.c +++ b/hw/virtio/virtio-mem.c @@ -60,7 +60,7 @@ static uint32_t virtio_mem_default_thp_size(void) { uint32_t default_thp_size =3D VIRTIO_MEM_MIN_BLOCK_SIZE; =20 -#if defined(__x86_64__) || defined(__arm__) || defined(__powerpc64__) +#if defined(__x86_64__) || defined(__powerpc64__) default_thp_size =3D 2 * MiB; #elif defined(__aarch64__) if (qemu_real_host_page_size() =3D=3D 4 * KiB) { diff --git a/linux-user/mmap.c b/linux-user/mmap.c index 4bcfaf7894..07175e11d5 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -1296,7 +1296,7 @@ static inline abi_ulong target_shmlba(CPUArchState *c= pu_env) } #endif =20 -#if defined(__arm__) || defined(__mips__) || defined(__sparc__) +#if defined(__mips__) || defined(__sparc__) #define HOST_FORCE_SHMLBA 1 #else #define HOST_FORCE_SHMLBA 0 diff --git a/MAINTAINERS b/MAINTAINERS index de8246c3ff..1a6e5bbafe 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4057,12 +4057,6 @@ S: Maintained L: qemu-arm@nongnu.org F: tcg/aarch64/ =20 -ARM TCG target -M: Richard Henderson -S: Maintained -L: qemu-arm@nongnu.org -F: tcg/arm/ - i386 TCG target M: Richard Henderson S: Maintained diff --git a/common-user/host/arm/safe-syscall.inc.S b/common-user/host/arm= /safe-syscall.inc.S deleted file mode 100644 index bbfb89634e..0000000000 --- a/common-user/host/arm/safe-syscall.inc.S +++ /dev/null @@ -1,108 +0,0 @@ -/* - * safe-syscall.inc.S : host-specific assembly fragment - * to handle signals occurring at the same time as system calls. - * This is intended to be included by common-user/safe-syscall.S - * - * Written by Richard Henderson - * Copyright (C) 2016 Red Hat, Inc. - * - * This work is licensed under the terms of the GNU GPL, version 2 or late= r. - * See the COPYING file in the top-level directory. - */ - - .global safe_syscall_base - .global safe_syscall_start - .global safe_syscall_end - .type safe_syscall_base, %function - - .cfi_sections .debug_frame - - .text - .syntax unified - .arm - .align 2 - - /* This is the entry point for making a system call. The calling - * convention here is that of a C varargs function with the - * first argument an 'int *' to the signal_pending flag, the - * second one the system call number (as a 'long'), and all further - * arguments being syscall arguments (also 'long'). - */ -safe_syscall_base: - .fnstart - .cfi_startproc - mov r12, sp /* save entry stack */ - push { r4, r5, r6, r7, r8, lr } - .save { r4, r5, r6, r7, r8, lr } - .cfi_adjust_cfa_offset 24 - .cfi_rel_offset r4, 0 - .cfi_rel_offset r5, 4 - .cfi_rel_offset r6, 8 - .cfi_rel_offset r7, 12 - .cfi_rel_offset r8, 16 - .cfi_rel_offset lr, 20 - - /* The syscall calling convention isn't the same as the C one: - * we enter with r0 =3D=3D &signal_pending - * r1 =3D=3D syscall number - * r2, r3, [sp+0] ... [sp+12] =3D=3D syscall argumen= ts - * and return the result in r0 - * and the syscall instruction needs - * r7 =3D=3D syscall number - * r0 ... r6 =3D=3D syscall arguments - * and returns the result in r0 - * Shuffle everything around appropriately. - * Note the 16 bytes that we pushed to save registers. - */ - mov r8, r0 /* copy signal_pending */ - mov r7, r1 /* syscall number */ - mov r0, r2 /* syscall args */ - mov r1, r3 - ldm r12, { r2, r3, r4, r5, r6 } - - /* This next sequence of code works in conjunction with the - * rewind_if_safe_syscall_function(). If a signal is taken - * and the interrupted PC is anywhere between 'safe_syscall_start' - * and 'safe_syscall_end' then we rewind it to 'safe_syscall_start= '. - * The code sequence must therefore be able to cope with this, and - * the syscall instruction must be the final one in the sequence. - */ -safe_syscall_start: - /* if signal_pending is non-zero, don't do the call */ - ldr r12, [r8] /* signal_pending */ - tst r12, r12 - bne 2f - swi 0 -safe_syscall_end: - - /* code path for having successfully executed the syscall */ -#if defined(__linux__) - /* Linux kernel returns (small) negative errno. */ - cmp r0, #-4096 - neghi r0, r0 - bhi 1f -#elif defined(__FreeBSD__) - /* FreeBSD kernel returns positive errno and C bit set. */ - bcs 1f -#else -#error "unsupported os" -#endif - pop { r4, r5, r6, r7, r8, pc } - - /* code path when we didn't execute the syscall */ -2: mov r0, #QEMU_ERESTARTSYS - - /* code path setting errno */ -1: pop { r4, r5, r6, r7, r8, lr } - .cfi_adjust_cfa_offset -24 - .cfi_restore r4 - .cfi_restore r5 - .cfi_restore r6 - .cfi_restore r7 - .cfi_restore r8 - .cfi_restore lr - b safe_syscall_set_errno_tail - - .fnend - .cfi_endproc - .size safe_syscall_base, .-safe_syscall_base diff --git a/configure b/configure index ba1b207b56..0742f1212d 100755 --- a/configure +++ b/configure @@ -418,8 +418,6 @@ elif check_define __riscv ; then else cpu=3D"riscv32" fi -elif check_define __arm__ ; then - cpu=3D"arm" elif check_define __aarch64__ ; then cpu=3D"aarch64" elif check_define __loongarch64 ; then @@ -451,11 +449,6 @@ case "$cpu" in linux_arch=3Darm64 ;; =20 - armv*b|armv*l|arm) - cpu=3Darm - host_arch=3Darm - ;; - i386|i486|i586|i686) cpu=3D"i386" host_arch=3Di386 diff --git a/meson.build b/meson.build index 082c7a86ca..137b2dcdc7 100644 --- a/meson.build +++ b/meson.build @@ -51,7 +51,7 @@ qapi_trace_events =3D [] bsd_oses =3D ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly',= 'darwin'] supported_oses =3D ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', '= sunos', 'linux', 'emscripten'] supported_cpus =3D ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', = 'x86_64', - 'arm', 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm64'] + 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm64'] =20 cpu =3D host_machine.cpu_family() =20 @@ -304,9 +304,6 @@ if cpu =3D=3D 'x86' xen_targets =3D ['i386-softmmu'] elif cpu =3D=3D 'x86_64' xen_targets =3D ['i386-softmmu', 'x86_64-softmmu'] -elif cpu =3D=3D 'arm' - # i386 emulator provides xenpv machine type for multiple architectures - xen_targets =3D ['i386-softmmu'] elif cpu =3D=3D 'aarch64' # i386 emulator provides xenpv machine type for multiple architectures xen_targets =3D ['i386-softmmu', 'x86_64-softmmu', 'aarch64-softmmu'] @@ -3156,7 +3153,7 @@ endif config_host_data.set('CONFIG_AVX2_OPT', have_avx2) config_host_data.set('CONFIG_AVX512BW_OPT', have_avx512bw) =20 -# For both AArch64 and AArch32, detect if builtins are available. +# For AArch64, detect if builtins are available. config_host_data.set('CONFIG_ARM_AES_BUILTIN', cc.compiles(''' #include #ifndef __ARM_FEATURE_AES diff --git a/tcg/arm/tcg-target-opc.h.inc b/tcg/arm/tcg-target-opc.h.inc deleted file mode 100644 index 70394e0282..0000000000 --- a/tcg/arm/tcg-target-opc.h.inc +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2019 Linaro - * - * This work is licensed under the terms of the GNU GPL, version 2 or - * (at your option) any later version. - * - * See the COPYING file in the top-level directory for details. - * - * Target-specific opcodes for host vector expansion. These will be - * emitted by tcg_expand_vec_op. For those familiar with GCC internals, - * consider these to be UNSPEC with names. - */ - -DEF(arm_sli_vec, 1, 2, 1, TCG_OPF_VECTOR) -DEF(arm_sshl_vec, 1, 2, 0, TCG_OPF_VECTOR) -DEF(arm_ushl_vec, 1, 2, 0, TCG_OPF_VECTOR) diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc deleted file mode 100644 index 87ca66bb02..0000000000 --- a/tcg/arm/tcg-target.c.inc +++ /dev/null @@ -1,3489 +0,0 @@ -/* - * Tiny Code Generator for QEMU - * - * Copyright (c) 2008 Andrzej Zaborowski - * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. - */ - -#include "elf.h" - -int arm_arch =3D __ARM_ARCH; - -#ifndef use_idiv_instructions -bool use_idiv_instructions; -#endif -#ifndef use_neon_instructions -bool use_neon_instructions; -#endif - -/* Used for function call generation. */ -#define TCG_TARGET_STACK_ALIGN 8 -#define TCG_TARGET_CALL_STACK_OFFSET 0 -#define TCG_TARGET_CALL_ARG_I32 TCG_CALL_ARG_NORMAL -#define TCG_TARGET_CALL_ARG_I64 TCG_CALL_ARG_EVEN -#define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_EVEN -#define TCG_TARGET_CALL_RET_I128 TCG_CALL_RET_BY_REF - -#ifdef CONFIG_DEBUG_TCG -static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] =3D { - "%r0", "%r1", "%r2", "%r3", "%r4", "%r5", "%r6", "%r7", - "%r8", "%r9", "%r10", "%r11", "%r12", "%sp", "%r14", "%pc", - "%q0", "%q1", "%q2", "%q3", "%q4", "%q5", "%q6", "%q7", - "%q8", "%q9", "%q10", "%q11", "%q12", "%q13", "%q14", "%q15", -}; -#endif - -static const int tcg_target_reg_alloc_order[] =3D { - TCG_REG_R4, - TCG_REG_R5, - TCG_REG_R6, - TCG_REG_R7, - TCG_REG_R8, - TCG_REG_R9, - TCG_REG_R10, - TCG_REG_R11, - TCG_REG_R13, - TCG_REG_R0, - TCG_REG_R1, - TCG_REG_R2, - TCG_REG_R3, - TCG_REG_R12, - TCG_REG_R14, - - TCG_REG_Q0, - TCG_REG_Q1, - TCG_REG_Q2, - TCG_REG_Q3, - /* Q4 - Q7 are call-saved, and skipped. */ - TCG_REG_Q8, - TCG_REG_Q9, - TCG_REG_Q10, - TCG_REG_Q11, - TCG_REG_Q12, - TCG_REG_Q13, - TCG_REG_Q14, - TCG_REG_Q15, -}; - -static const int tcg_target_call_iarg_regs[4] =3D { - TCG_REG_R0, TCG_REG_R1, TCG_REG_R2, TCG_REG_R3 -}; - -static TCGReg tcg_target_call_oarg_reg(TCGCallReturnKind kind, int slot) -{ - tcg_debug_assert(kind =3D=3D TCG_CALL_RET_NORMAL); - tcg_debug_assert(slot >=3D 0 && slot <=3D 3); - return TCG_REG_R0 + slot; -} - -#define TCG_REG_TMP TCG_REG_R12 -#define TCG_VEC_TMP TCG_REG_Q15 -#define TCG_REG_GUEST_BASE TCG_REG_R11 - -typedef enum { - COND_EQ =3D 0x0, - COND_NE =3D 0x1, - COND_CS =3D 0x2, /* Unsigned greater or equal */ - COND_CC =3D 0x3, /* Unsigned less than */ - COND_MI =3D 0x4, /* Negative */ - COND_PL =3D 0x5, /* Zero or greater */ - COND_VS =3D 0x6, /* Overflow */ - COND_VC =3D 0x7, /* No overflow */ - COND_HI =3D 0x8, /* Unsigned greater than */ - COND_LS =3D 0x9, /* Unsigned less or equal */ - COND_GE =3D 0xa, - COND_LT =3D 0xb, - COND_GT =3D 0xc, - COND_LE =3D 0xd, - COND_AL =3D 0xe, -} ARMCond; - -#define TO_CPSR (1 << 20) - -#define SHIFT_IMM_LSL(im) (((im) << 7) | 0x00) -#define SHIFT_IMM_LSR(im) (((im) << 7) | 0x20) -#define SHIFT_IMM_ASR(im) (((im) << 7) | 0x40) -#define SHIFT_IMM_ROR(im) (((im) << 7) | 0x60) -#define SHIFT_REG_LSL(rs) (((rs) << 8) | 0x10) -#define SHIFT_REG_LSR(rs) (((rs) << 8) | 0x30) -#define SHIFT_REG_ASR(rs) (((rs) << 8) | 0x50) -#define SHIFT_REG_ROR(rs) (((rs) << 8) | 0x70) - -typedef enum { - ARITH_AND =3D 0x0 << 21, - ARITH_EOR =3D 0x1 << 21, - ARITH_SUB =3D 0x2 << 21, - ARITH_RSB =3D 0x3 << 21, - ARITH_ADD =3D 0x4 << 21, - ARITH_ADC =3D 0x5 << 21, - ARITH_SBC =3D 0x6 << 21, - ARITH_RSC =3D 0x7 << 21, - ARITH_TST =3D 0x8 << 21 | TO_CPSR, - ARITH_CMP =3D 0xa << 21 | TO_CPSR, - ARITH_CMN =3D 0xb << 21 | TO_CPSR, - ARITH_ORR =3D 0xc << 21, - ARITH_MOV =3D 0xd << 21, - ARITH_BIC =3D 0xe << 21, - ARITH_MVN =3D 0xf << 21, - - INSN_B =3D 0x0a000000, - - INSN_CLZ =3D 0x016f0f10, - INSN_RBIT =3D 0x06ff0f30, - - INSN_LDMIA =3D 0x08b00000, - INSN_STMDB =3D 0x09200000, - - INSN_LDR_IMM =3D 0x04100000, - INSN_LDR_REG =3D 0x06100000, - INSN_STR_IMM =3D 0x04000000, - INSN_STR_REG =3D 0x06000000, - - INSN_LDRH_IMM =3D 0x005000b0, - INSN_LDRH_REG =3D 0x001000b0, - INSN_LDRSH_IMM =3D 0x005000f0, - INSN_LDRSH_REG =3D 0x001000f0, - INSN_STRH_IMM =3D 0x004000b0, - INSN_STRH_REG =3D 0x000000b0, - - INSN_LDRB_IMM =3D 0x04500000, - INSN_LDRB_REG =3D 0x06500000, - INSN_LDRSB_IMM =3D 0x005000d0, - INSN_LDRSB_REG =3D 0x001000d0, - INSN_STRB_IMM =3D 0x04400000, - INSN_STRB_REG =3D 0x06400000, - - INSN_LDRD_IMM =3D 0x004000d0, - INSN_LDRD_REG =3D 0x000000d0, - INSN_STRD_IMM =3D 0x004000f0, - INSN_STRD_REG =3D 0x000000f0, - - INSN_DMB_ISH =3D 0xf57ff05b, - INSN_DMB_MCR =3D 0xee070fba, - - INSN_MSRI_CPSR =3D 0x0360f000, - - /* Architected nop introduced in v6k. */ - /* ??? This is an MSR (imm) 0,0,0 insn. Anyone know if this - also Just So Happened to do nothing on pre-v6k so that we - don't need to conditionalize it? */ - INSN_NOP_v6k =3D 0xe320f000, - /* Otherwise the assembler uses mov r0,r0 */ - INSN_NOP_v4 =3D (COND_AL << 28) | ARITH_MOV, - - INSN_VADD =3D 0xf2000800, - INSN_VAND =3D 0xf2000110, - INSN_VBIC =3D 0xf2100110, - INSN_VEOR =3D 0xf3000110, - INSN_VORN =3D 0xf2300110, - INSN_VORR =3D 0xf2200110, - INSN_VSUB =3D 0xf3000800, - INSN_VMUL =3D 0xf2000910, - INSN_VQADD =3D 0xf2000010, - INSN_VQADD_U =3D 0xf3000010, - INSN_VQSUB =3D 0xf2000210, - INSN_VQSUB_U =3D 0xf3000210, - INSN_VMAX =3D 0xf2000600, - INSN_VMAX_U =3D 0xf3000600, - INSN_VMIN =3D 0xf2000610, - INSN_VMIN_U =3D 0xf3000610, - - INSN_VABS =3D 0xf3b10300, - INSN_VMVN =3D 0xf3b00580, - INSN_VNEG =3D 0xf3b10380, - - INSN_VCEQ0 =3D 0xf3b10100, - INSN_VCGT0 =3D 0xf3b10000, - INSN_VCGE0 =3D 0xf3b10080, - INSN_VCLE0 =3D 0xf3b10180, - INSN_VCLT0 =3D 0xf3b10200, - - INSN_VCEQ =3D 0xf3000810, - INSN_VCGE =3D 0xf2000310, - INSN_VCGT =3D 0xf2000300, - INSN_VCGE_U =3D 0xf3000310, - INSN_VCGT_U =3D 0xf3000300, - - INSN_VSHLI =3D 0xf2800510, /* VSHL (immediate) */ - INSN_VSARI =3D 0xf2800010, /* VSHR.S */ - INSN_VSHRI =3D 0xf3800010, /* VSHR.U */ - INSN_VSLI =3D 0xf3800510, - INSN_VSHL_S =3D 0xf2000400, /* VSHL.S (register) */ - INSN_VSHL_U =3D 0xf3000400, /* VSHL.U (register) */ - - INSN_VBSL =3D 0xf3100110, - INSN_VBIT =3D 0xf3200110, - INSN_VBIF =3D 0xf3300110, - - INSN_VTST =3D 0xf2000810, - - INSN_VDUP_G =3D 0xee800b10, /* VDUP (ARM core register) */ - INSN_VDUP_S =3D 0xf3b00c00, /* VDUP (scalar) */ - INSN_VLDR_D =3D 0xed100b00, /* VLDR.64 */ - INSN_VLD1 =3D 0xf4200000, /* VLD1 (multiple single elements) */ - INSN_VLD1R =3D 0xf4a00c00, /* VLD1 (single element to all lanes) = */ - INSN_VST1 =3D 0xf4000000, /* VST1 (multiple single elements) */ - INSN_VMOVI =3D 0xf2800010, /* VMOV (immediate) */ -} ARMInsn; - -#define INSN_NOP (use_armv7_instructions ? INSN_NOP_v6k : INSN_NOP_v4) - -static const uint8_t tcg_cond_to_arm_cond[] =3D { - [TCG_COND_EQ] =3D COND_EQ, - [TCG_COND_NE] =3D COND_NE, - [TCG_COND_LT] =3D COND_LT, - [TCG_COND_GE] =3D COND_GE, - [TCG_COND_LE] =3D COND_LE, - [TCG_COND_GT] =3D COND_GT, - /* unsigned */ - [TCG_COND_LTU] =3D COND_CC, - [TCG_COND_GEU] =3D COND_CS, - [TCG_COND_LEU] =3D COND_LS, - [TCG_COND_GTU] =3D COND_HI, -}; - -static int encode_imm(uint32_t imm); - -/* TCG private relocation type: add with pc+imm8 */ -#define R_ARM_PC8 11 - -/* TCG private relocation type: vldr with imm8 << 2 */ -#define R_ARM_PC11 12 - -static bool reloc_pc24(tcg_insn_unit *src_rw, const tcg_insn_unit *target) -{ - const tcg_insn_unit *src_rx =3D tcg_splitwx_to_rx(src_rw); - ptrdiff_t offset =3D (tcg_ptr_byte_diff(target, src_rx) - 8) >> 2; - - if (offset =3D=3D sextract32(offset, 0, 24)) { - *src_rw =3D deposit32(*src_rw, 0, 24, offset); - return true; - } - return false; -} - -static bool reloc_pc13(tcg_insn_unit *src_rw, const tcg_insn_unit *target) -{ - const tcg_insn_unit *src_rx =3D tcg_splitwx_to_rx(src_rw); - ptrdiff_t offset =3D tcg_ptr_byte_diff(target, src_rx) - 8; - - if (offset >=3D -0xfff && offset <=3D 0xfff) { - tcg_insn_unit insn =3D *src_rw; - bool u =3D (offset >=3D 0); - if (!u) { - offset =3D -offset; - } - insn =3D deposit32(insn, 23, 1, u); - insn =3D deposit32(insn, 0, 12, offset); - *src_rw =3D insn; - return true; - } - return false; -} - -static bool reloc_pc11(tcg_insn_unit *src_rw, const tcg_insn_unit *target) -{ - const tcg_insn_unit *src_rx =3D tcg_splitwx_to_rx(src_rw); - ptrdiff_t offset =3D (tcg_ptr_byte_diff(target, src_rx) - 8) / 4; - - if (offset >=3D -0xff && offset <=3D 0xff) { - tcg_insn_unit insn =3D *src_rw; - bool u =3D (offset >=3D 0); - if (!u) { - offset =3D -offset; - } - insn =3D deposit32(insn, 23, 1, u); - insn =3D deposit32(insn, 0, 8, offset); - *src_rw =3D insn; - return true; - } - return false; -} - -static bool reloc_pc8(tcg_insn_unit *src_rw, const tcg_insn_unit *target) -{ - const tcg_insn_unit *src_rx =3D tcg_splitwx_to_rx(src_rw); - ptrdiff_t offset =3D tcg_ptr_byte_diff(target, src_rx) - 8; - int imm12 =3D encode_imm(offset); - - if (imm12 >=3D 0) { - *src_rw =3D deposit32(*src_rw, 0, 12, imm12); - return true; - } - return false; -} - -static bool patch_reloc(tcg_insn_unit *code_ptr, int type, - intptr_t value, intptr_t addend) -{ - tcg_debug_assert(addend =3D=3D 0); - switch (type) { - case R_ARM_PC24: - return reloc_pc24(code_ptr, (const tcg_insn_unit *)value); - case R_ARM_PC13: - return reloc_pc13(code_ptr, (const tcg_insn_unit *)value); - case R_ARM_PC11: - return reloc_pc11(code_ptr, (const tcg_insn_unit *)value); - case R_ARM_PC8: - return reloc_pc8(code_ptr, (const tcg_insn_unit *)value); - default: - g_assert_not_reached(); - } -} - -#define TCG_CT_CONST_ARM 0x100 -#define TCG_CT_CONST_INV 0x200 -#define TCG_CT_CONST_NEG 0x400 -#define TCG_CT_CONST_ZERO 0x800 -#define TCG_CT_CONST_ORRI 0x1000 -#define TCG_CT_CONST_ANDI 0x2000 - -#define ALL_GENERAL_REGS 0xffffu -#define ALL_VECTOR_REGS 0xffff0000u - -/* - * r0-r3 will be overwritten when reading the tlb entry (system-mode only); - * r14 will be overwritten by the BLNE branching to the slow path. - */ -#define ALL_QLDST_REGS \ - (ALL_GENERAL_REGS & ~((tcg_use_softmmu ? 0xf : 0) | (1 << TCG_REG_R14)= )) - -/* - * ARM immediates for ALU instructions are made of an unsigned 8-bit - * right-rotated by an even amount between 0 and 30. - * - * Return < 0 if @imm cannot be encoded, else the entire imm12 field. - */ -static int encode_imm(uint32_t imm) -{ - uint32_t rot, imm8; - - /* Simple case, no rotation required. */ - if ((imm & ~0xff) =3D=3D 0) { - return imm; - } - - /* Next, try a simple even shift. */ - rot =3D ctz32(imm) & ~1; - imm8 =3D imm >> rot; - rot =3D 32 - rot; - if ((imm8 & ~0xff) =3D=3D 0) { - goto found; - } - - /* - * Finally, try harder with rotations. - * The ctz test above will have taken care of rotates >=3D 8. - */ - for (rot =3D 2; rot < 8; rot +=3D 2) { - imm8 =3D rol32(imm, rot); - if ((imm8 & ~0xff) =3D=3D 0) { - goto found; - } - } - /* Fail: imm cannot be encoded. */ - return -1; - - found: - /* Note that rot is even, and we discard bit 0 by shifting by 7. */ - return rot << 7 | imm8; -} - -static int encode_imm_nofail(uint32_t imm) -{ - int ret =3D encode_imm(imm); - tcg_debug_assert(ret >=3D 0); - return ret; -} - -static bool check_fit_imm(uint32_t imm) -{ - return encode_imm(imm) >=3D 0; -} - -/* Return true if v16 is a valid 16-bit shifted immediate. */ -static bool is_shimm16(uint16_t v16, int *cmode, int *imm8) -{ - if (v16 =3D=3D (v16 & 0xff)) { - *cmode =3D 0x8; - *imm8 =3D v16 & 0xff; - return true; - } else if (v16 =3D=3D (v16 & 0xff00)) { - *cmode =3D 0xa; - *imm8 =3D v16 >> 8; - return true; - } - return false; -} - -/* Return true if v32 is a valid 32-bit shifted immediate. */ -static bool is_shimm32(uint32_t v32, int *cmode, int *imm8) -{ - if (v32 =3D=3D (v32 & 0xff)) { - *cmode =3D 0x0; - *imm8 =3D v32 & 0xff; - return true; - } else if (v32 =3D=3D (v32 & 0xff00)) { - *cmode =3D 0x2; - *imm8 =3D (v32 >> 8) & 0xff; - return true; - } else if (v32 =3D=3D (v32 & 0xff0000)) { - *cmode =3D 0x4; - *imm8 =3D (v32 >> 16) & 0xff; - return true; - } else if (v32 =3D=3D (v32 & 0xff000000)) { - *cmode =3D 0x6; - *imm8 =3D v32 >> 24; - return true; - } - return false; -} - -/* Return true if v32 is a valid 32-bit shifting ones immediate. */ -static bool is_soimm32(uint32_t v32, int *cmode, int *imm8) -{ - if ((v32 & 0xffff00ff) =3D=3D 0xff) { - *cmode =3D 0xc; - *imm8 =3D (v32 >> 8) & 0xff; - return true; - } else if ((v32 & 0xff00ffff) =3D=3D 0xffff) { - *cmode =3D 0xd; - *imm8 =3D (v32 >> 16) & 0xff; - return true; - } - return false; -} - -/* - * Return non-zero if v32 can be formed by MOVI+ORR. - * Place the parameters for MOVI in (cmode, imm8). - * Return the cmode for ORR; the imm8 can be had via extraction from v32. - */ -static int is_shimm32_pair(uint32_t v32, int *cmode, int *imm8) -{ - int i; - - for (i =3D 6; i > 0; i -=3D 2) { - /* Mask out one byte we can add with ORR. */ - uint32_t tmp =3D v32 & ~(0xffu << (i * 4)); - if (is_shimm32(tmp, cmode, imm8) || - is_soimm32(tmp, cmode, imm8)) { - break; - } - } - return i; -} - -/* Return true if V is a valid 16-bit or 32-bit shifted immediate. */ -static bool is_shimm1632(uint32_t v32, int *cmode, int *imm8) -{ - if (v32 =3D=3D deposit32(v32, 16, 16, v32)) { - return is_shimm16(v32, cmode, imm8); - } else { - return is_shimm32(v32, cmode, imm8); - } -} - -/* Test if a constant matches the constraint. - * TODO: define constraints for: - * - * ldr/str offset: between -0xfff and 0xfff - * ldrh/strh offset: between -0xff and 0xff - * mov operand2: values represented with x << (2 * y), x < 0x100 - * add, sub, eor...: ditto - */ -static bool tcg_target_const_match(int64_t val, int ct, - TCGType type, TCGCond cond, int vece) -{ - if (ct & TCG_CT_CONST) { - return 1; - } else if ((ct & TCG_CT_CONST_ARM) && check_fit_imm(val)) { - return 1; - } else if ((ct & TCG_CT_CONST_INV) && check_fit_imm(~val)) { - return 1; - } else if ((ct & TCG_CT_CONST_NEG) && check_fit_imm(-val)) { - return 1; - } else if ((ct & TCG_CT_CONST_ZERO) && val =3D=3D 0) { - return 1; - } - - switch (ct & (TCG_CT_CONST_ORRI | TCG_CT_CONST_ANDI)) { - case 0: - break; - case TCG_CT_CONST_ANDI: - val =3D ~val; - /* fallthru */ - case TCG_CT_CONST_ORRI: - if (val =3D=3D deposit64(val, 32, 32, val)) { - int cmode, imm8; - return is_shimm1632(val, &cmode, &imm8); - } - break; - default: - /* Both bits should not be set for the same insn. */ - g_assert_not_reached(); - } - - return 0; -} - -static void tcg_out_b_imm(TCGContext *s, ARMCond cond, int32_t offset) -{ - tcg_out32(s, (cond << 28) | INSN_B | - (((offset - 8) >> 2) & 0x00ffffff)); -} - -static void tcg_out_bl_imm(TCGContext *s, ARMCond cond, int32_t offset) -{ - tcg_out32(s, (cond << 28) | 0x0b000000 | - (((offset - 8) >> 2) & 0x00ffffff)); -} - -static void tcg_out_blx_reg(TCGContext *s, ARMCond cond, TCGReg rn) -{ - tcg_out32(s, (cond << 28) | 0x012fff30 | rn); -} - -static void tcg_out_blx_imm(TCGContext *s, int32_t offset) -{ - tcg_out32(s, 0xfa000000 | ((offset & 2) << 23) | - (((offset - 8) >> 2) & 0x00ffffff)); -} - -static void tcg_out_dat_reg(TCGContext *s, ARMCond cond, ARMInsn opc, - TCGReg rd, TCGReg rn, TCGReg rm, int shift) -{ - tcg_out32(s, (cond << 28) | (0 << 25) | opc | - (rn << 16) | (rd << 12) | shift | rm); -} - -static void tcg_out_mov_reg(TCGContext *s, ARMCond cond, TCGReg rd, TCGReg= rm) -{ - /* Simple reg-reg move, optimising out the 'do nothing' case */ - if (rd !=3D rm) { - tcg_out_dat_reg(s, cond, ARITH_MOV, rd, 0, rm, SHIFT_IMM_LSL(0)); - } -} - -static void tcg_out_bx_reg(TCGContext *s, ARMCond cond, TCGReg rn) -{ - tcg_out32(s, (cond << 28) | 0x012fff10 | rn); -} - -static void tcg_out_b_reg(TCGContext *s, ARMCond cond, TCGReg rn) -{ - /* - * Unless the C portion of QEMU is compiled as thumb, we don't need - * true BX semantics; merely a branch to an address held in a register. - */ - tcg_out_bx_reg(s, cond, rn); -} - -static void tcg_out_dat_imm(TCGContext *s, ARMCond cond, ARMInsn opc, - TCGReg rd, TCGReg rn, int im) -{ - tcg_out32(s, (cond << 28) | (1 << 25) | opc | - (rn << 16) | (rd << 12) | im); -} - -static void tcg_out_ldstm(TCGContext *s, ARMCond cond, ARMInsn opc, - TCGReg rn, uint16_t mask) -{ - tcg_out32(s, (cond << 28) | opc | (rn << 16) | mask); -} - -/* Note that this routine is used for both LDR and LDRH formats, so we do - not wish to include an immediate shift at this point. */ -static void tcg_out_memop_r(TCGContext *s, ARMCond cond, ARMInsn opc, TCGR= eg rt, - TCGReg rn, TCGReg rm, bool u, bool p, bool w) -{ - tcg_out32(s, (cond << 28) | opc | (u << 23) | (p << 24) - | (w << 21) | (rn << 16) | (rt << 12) | rm); -} - -static void tcg_out_memop_8(TCGContext *s, ARMCond cond, ARMInsn opc, TCGR= eg rt, - TCGReg rn, int imm8, bool p, bool w) -{ - bool u =3D 1; - if (imm8 < 0) { - imm8 =3D -imm8; - u =3D 0; - } - tcg_out32(s, (cond << 28) | opc | (u << 23) | (p << 24) | (w << 21) | - (rn << 16) | (rt << 12) | ((imm8 & 0xf0) << 4) | (imm8 & 0xf= )); -} - -static void tcg_out_memop_12(TCGContext *s, ARMCond cond, ARMInsn opc, - TCGReg rt, TCGReg rn, int imm12, bool p, bool= w) -{ - bool u =3D 1; - if (imm12 < 0) { - imm12 =3D -imm12; - u =3D 0; - } - tcg_out32(s, (cond << 28) | opc | (u << 23) | (p << 24) | (w << 21) | - (rn << 16) | (rt << 12) | imm12); -} - -static void tcg_out_ld32_12(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm12) -{ - tcg_out_memop_12(s, cond, INSN_LDR_IMM, rt, rn, imm12, 1, 0); -} - -static void tcg_out_st32_12(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm12) -{ - tcg_out_memop_12(s, cond, INSN_STR_IMM, rt, rn, imm12, 1, 0); -} - -static void tcg_out_ld32_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_LDR_REG, rt, rn, rm, 1, 1, 0); -} - -static void tcg_out_st32_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_STR_REG, rt, rn, rm, 1, 1, 0); -} - -static void tcg_out_ldrd_8(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm8) -{ - tcg_out_memop_8(s, cond, INSN_LDRD_IMM, rt, rn, imm8, 1, 0); -} - -static void tcg_out_ldrd_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_LDRD_REG, rt, rn, rm, 1, 1, 0); -} - -static void tcg_out_strd_8(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm8) -{ - tcg_out_memop_8(s, cond, INSN_STRD_IMM, rt, rn, imm8, 1, 0); -} - -static void tcg_out_strd_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_STRD_REG, rt, rn, rm, 1, 1, 0); -} - -/* Register pre-increment with base writeback. */ -static void tcg_out_ld32_rwb(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_LDR_REG, rt, rn, rm, 1, 1, 1); -} - -static void tcg_out_st32_rwb(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_STR_REG, rt, rn, rm, 1, 1, 1); -} - -static void tcg_out_ld16u_8(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm8) -{ - tcg_out_memop_8(s, cond, INSN_LDRH_IMM, rt, rn, imm8, 1, 0); -} - -static void tcg_out_st16_8(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm8) -{ - tcg_out_memop_8(s, cond, INSN_STRH_IMM, rt, rn, imm8, 1, 0); -} - -static void tcg_out_ld16u_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_LDRH_REG, rt, rn, rm, 1, 1, 0); -} - -static void tcg_out_st16_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_STRH_REG, rt, rn, rm, 1, 1, 0); -} - -static void tcg_out_ld16s_8(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm8) -{ - tcg_out_memop_8(s, cond, INSN_LDRSH_IMM, rt, rn, imm8, 1, 0); -} - -static void tcg_out_ld16s_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_LDRSH_REG, rt, rn, rm, 1, 1, 0); -} - -static void tcg_out_ld8_12(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm12) -{ - tcg_out_memop_12(s, cond, INSN_LDRB_IMM, rt, rn, imm12, 1, 0); -} - -static void tcg_out_st8_12(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm12) -{ - tcg_out_memop_12(s, cond, INSN_STRB_IMM, rt, rn, imm12, 1, 0); -} - -static void tcg_out_ld8_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_LDRB_REG, rt, rn, rm, 1, 1, 0); -} - -static void tcg_out_st8_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_STRB_REG, rt, rn, rm, 1, 1, 0); -} - -static void tcg_out_ld8s_8(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, int imm8) -{ - tcg_out_memop_8(s, cond, INSN_LDRSB_IMM, rt, rn, imm8, 1, 0); -} - -static void tcg_out_ld8s_r(TCGContext *s, ARMCond cond, TCGReg rt, - TCGReg rn, TCGReg rm) -{ - tcg_out_memop_r(s, cond, INSN_LDRSB_REG, rt, rn, rm, 1, 1, 0); -} - -static void tcg_out_movi_pool(TCGContext *s, ARMCond cond, - TCGReg rd, uint32_t arg) -{ - new_pool_label(s, arg, R_ARM_PC13, s->code_ptr, 0); - tcg_out_ld32_12(s, cond, rd, TCG_REG_PC, 0); -} - -static void tcg_out_movi32(TCGContext *s, ARMCond cond, - TCGReg rd, uint32_t arg) -{ - int imm12, diff, opc, sh1, sh2; - uint32_t tt0, tt1, tt2; - - /* Check a single MOV/MVN before anything else. */ - imm12 =3D encode_imm(arg); - if (imm12 >=3D 0) { - tcg_out_dat_imm(s, cond, ARITH_MOV, rd, 0, imm12); - return; - } - imm12 =3D encode_imm(~arg); - if (imm12 >=3D 0) { - tcg_out_dat_imm(s, cond, ARITH_MVN, rd, 0, imm12); - return; - } - - /* Check for a pc-relative address. This will usually be the TB, - or within the TB, which is immediately before the code block. */ - diff =3D tcg_pcrel_diff(s, (void *)arg) - 8; - if (diff >=3D 0) { - imm12 =3D encode_imm(diff); - if (imm12 >=3D 0) { - tcg_out_dat_imm(s, cond, ARITH_ADD, rd, TCG_REG_PC, imm12); - return; - } - } else { - imm12 =3D encode_imm(-diff); - if (imm12 >=3D 0) { - tcg_out_dat_imm(s, cond, ARITH_SUB, rd, TCG_REG_PC, imm12); - return; - } - } - - /* Use movw + movt. */ - if (use_armv7_instructions) { - /* movw */ - tcg_out32(s, (cond << 28) | 0x03000000 | (rd << 12) - | ((arg << 4) & 0x000f0000) | (arg & 0xfff)); - if (arg & 0xffff0000) { - /* movt */ - tcg_out32(s, (cond << 28) | 0x03400000 | (rd << 12) - | ((arg >> 12) & 0x000f0000) | ((arg >> 16) & 0xfff)= ); - } - return; - } - - /* Look for sequences of two insns. If we have lots of 1's, we can - shorten the sequence by beginning with mvn and then clearing - higher bits with eor. */ - tt0 =3D arg; - opc =3D ARITH_MOV; - if (ctpop32(arg) > 16) { - tt0 =3D ~arg; - opc =3D ARITH_MVN; - } - sh1 =3D ctz32(tt0) & ~1; - tt1 =3D tt0 & ~(0xff << sh1); - sh2 =3D ctz32(tt1) & ~1; - tt2 =3D tt1 & ~(0xff << sh2); - if (tt2 =3D=3D 0) { - int rot; - - rot =3D ((32 - sh1) << 7) & 0xf00; - tcg_out_dat_imm(s, cond, opc, rd, 0, ((tt0 >> sh1) & 0xff) | rot); - rot =3D ((32 - sh2) << 7) & 0xf00; - tcg_out_dat_imm(s, cond, ARITH_EOR, rd, rd, - ((tt0 >> sh2) & 0xff) | rot); - return; - } - - /* Otherwise, drop it into the constant pool. */ - tcg_out_movi_pool(s, cond, rd, arg); -} - -/* - * Emit either the reg,imm or reg,reg form of a data-processing insn. - * rhs must satisfy the "rI" constraint. - */ -static void tcg_out_dat_rI(TCGContext *s, ARMCond cond, ARMInsn opc, - TCGReg dst, TCGReg lhs, TCGArg rhs, int rhs_is_= const) -{ - if (rhs_is_const) { - tcg_out_dat_imm(s, cond, opc, dst, lhs, encode_imm_nofail(rhs)); - } else { - tcg_out_dat_reg(s, cond, opc, dst, lhs, rhs, SHIFT_IMM_LSL(0)); - } -} - -/* - * Emit either the reg,imm or reg,reg form of a data-processing insn. - * rhs must satisfy the "rIK" constraint. - */ -static void tcg_out_dat_IK(TCGContext *s, ARMCond cond, ARMInsn opc, - ARMInsn opinv, TCGReg dst, TCGReg lhs, TCGArg = rhs) -{ - int imm12 =3D encode_imm(rhs); - if (imm12 < 0) { - imm12 =3D encode_imm_nofail(~rhs); - opc =3D opinv; - } - tcg_out_dat_imm(s, cond, opc, dst, lhs, imm12); -} - -static void tcg_out_dat_rIK(TCGContext *s, ARMCond cond, ARMInsn opc, - ARMInsn opinv, TCGReg dst, TCGReg lhs, TCGArg = rhs, - bool rhs_is_const) -{ - if (rhs_is_const) { - tcg_out_dat_IK(s, cond, opc, opinv, dst, lhs, rhs); - } else { - tcg_out_dat_reg(s, cond, opc, dst, lhs, rhs, SHIFT_IMM_LSL(0)); - } -} - -static void tcg_out_dat_IN(TCGContext *s, ARMCond cond, ARMInsn opc, - ARMInsn opneg, TCGReg dst, TCGReg lhs, TCGArg r= hs) -{ - int imm12 =3D encode_imm(rhs); - if (imm12 < 0) { - imm12 =3D encode_imm_nofail(-rhs); - opc =3D opneg; - } - tcg_out_dat_imm(s, cond, opc, dst, lhs, imm12); -} - -static void tcg_out_dat_rIN(TCGContext *s, ARMCond cond, ARMInsn opc, - ARMInsn opneg, TCGReg dst, TCGReg lhs, TCGArg = rhs, - bool rhs_is_const) -{ - /* Emit either the reg,imm or reg,reg form of a data-processing insn. - * rhs must satisfy the "rIN" constraint. - */ - if (rhs_is_const) { - tcg_out_dat_IN(s, cond, opc, opneg, dst, lhs, rhs); - } else { - tcg_out_dat_reg(s, cond, opc, dst, lhs, rhs, SHIFT_IMM_LSL(0)); - } -} - -static void tcg_out_ext8s(TCGContext *s, TCGType t, TCGReg rd, TCGReg rn) -{ - /* sxtb */ - tcg_out32(s, 0x06af0070 | (COND_AL << 28) | (rd << 12) | rn); -} - -static void tcg_out_ext8u(TCGContext *s, TCGReg rd, TCGReg rn) -{ - tcg_out_dat_imm(s, COND_AL, ARITH_AND, rd, rn, 0xff); -} - -static void tcg_out_ext16s(TCGContext *s, TCGType t, TCGReg rd, TCGReg rn) -{ - /* sxth */ - tcg_out32(s, 0x06bf0070 | (COND_AL << 28) | (rd << 12) | rn); -} - -static void tcg_out_ext16u(TCGContext *s, TCGReg rd, TCGReg rn) -{ - /* uxth */ - tcg_out32(s, 0x06ff0070 | (COND_AL << 28) | (rd << 12) | rn); -} - -static void tcg_out_ext32s(TCGContext *s, TCGReg rd, TCGReg rn) -{ - g_assert_not_reached(); -} - -static void tcg_out_ext32u(TCGContext *s, TCGReg rd, TCGReg rn) -{ - g_assert_not_reached(); -} - -static void tcg_out_exts_i32_i64(TCGContext *s, TCGReg rd, TCGReg rn) -{ - g_assert_not_reached(); -} - -static void tcg_out_extu_i32_i64(TCGContext *s, TCGReg rd, TCGReg rn) -{ - g_assert_not_reached(); -} - -static void tcg_out_extrl_i64_i32(TCGContext *s, TCGReg rd, TCGReg rn) -{ - g_assert_not_reached(); -} - -static void tgen_deposit(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, - TCGReg a2, unsigned ofs, unsigned len) -{ - /* bfi/bfc */ - tcg_debug_assert(a0 =3D=3D a1); - tcg_out32(s, 0x07c00010 | (COND_AL << 28) | (a0 << 12) | a2 - | (ofs << 7) | ((ofs + len - 1) << 16)); -} - -static void tgen_depositi(TCGContext *s, TCGType type, TCGReg a0, TCGReg a= 1, - tcg_target_long a2, unsigned ofs, unsigned len) -{ - /* bfi becomes bfc with rn =3D=3D 15. */ - tgen_deposit(s, type, a0, a1, 15, ofs, len); -} - -static const TCGOutOpDeposit outop_deposit =3D { - .base.static_constraint =3D C_O1_I2(r, 0, rZ), - .out_rrr =3D tgen_deposit, - .out_rri =3D tgen_depositi, -}; - -static void tgen_extract(TCGContext *s, TCGType type, TCGReg rd, TCGReg rn, - unsigned ofs, unsigned len) -{ - /* According to gcc, AND can be faster. */ - if (ofs =3D=3D 0 && len <=3D 8) { - tcg_out_dat_imm(s, COND_AL, ARITH_AND, rd, rn, - encode_imm_nofail((1 << len) - 1)); - return; - } - - if (use_armv7_instructions) { - /* ubfx */ - tcg_out32(s, 0x07e00050 | (COND_AL << 28) | (rd << 12) | rn - | (ofs << 7) | ((len - 1) << 16)); - return; - } - - assert(ofs % 8 =3D=3D 0); - switch (len) { - case 8: - /* uxtb */ - tcg_out32(s, 0x06ef0070 | (COND_AL << 28) | - (rd << 12) | (ofs << 7) | rn); - break; - case 16: - /* uxth */ - tcg_out32(s, 0x06ff0070 | (COND_AL << 28) | - (rd << 12) | (ofs << 7) | rn); - break; - default: - g_assert_not_reached(); - } -} - -static const TCGOutOpExtract outop_extract =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out_rr =3D tgen_extract, -}; - -static void tgen_sextract(TCGContext *s, TCGType type, TCGReg rd, TCGReg r= n, - unsigned ofs, unsigned len) -{ - if (use_armv7_instructions) { - /* sbfx */ - tcg_out32(s, 0x07a00050 | (COND_AL << 28) | (rd << 12) | rn - | (ofs << 7) | ((len - 1) << 16)); - return; - } - - assert(ofs % 8 =3D=3D 0); - switch (len) { - case 8: - /* sxtb */ - tcg_out32(s, 0x06af0070 | (COND_AL << 28) | - (rd << 12) | (ofs << 7) | rn); - break; - case 16: - /* sxth */ - tcg_out32(s, 0x06bf0070 | (COND_AL << 28) | - (rd << 12) | (ofs << 7) | rn); - break; - default: - g_assert_not_reached(); - } -} - -static const TCGOutOpExtract outop_sextract =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out_rr =3D tgen_sextract, -}; - - -static void tcg_out_ld32u(TCGContext *s, ARMCond cond, - TCGReg rd, TCGReg rn, int32_t offset) -{ - if (offset > 0xfff || offset < -0xfff) { - tcg_out_movi32(s, cond, TCG_REG_TMP, offset); - tcg_out_ld32_r(s, cond, rd, rn, TCG_REG_TMP); - } else - tcg_out_ld32_12(s, cond, rd, rn, offset); -} - -static void tcg_out_st32(TCGContext *s, ARMCond cond, - TCGReg rd, TCGReg rn, int32_t offset) -{ - if (offset > 0xfff || offset < -0xfff) { - tcg_out_movi32(s, cond, TCG_REG_TMP, offset); - tcg_out_st32_r(s, cond, rd, rn, TCG_REG_TMP); - } else - tcg_out_st32_12(s, cond, rd, rn, offset); -} - -/* - * The _goto case is normally between TBs within the same code buffer, and - * with the code buffer limited to 16MB we wouldn't need the long case. - * But we also use it for the tail-call to the qemu_ld/st helpers, which d= oes. - */ -static void tcg_out_goto(TCGContext *s, ARMCond cond, const tcg_insn_unit = *addr) -{ - intptr_t addri =3D (intptr_t)addr; - ptrdiff_t disp =3D tcg_pcrel_diff(s, addr); - bool arm_mode =3D !(addri & 1); - - if (arm_mode && disp - 8 < 0x01fffffd && disp - 8 > -0x01fffffd) { - tcg_out_b_imm(s, cond, disp); - return; - } - - /* LDR is interworking from v5t. */ - tcg_out_movi_pool(s, cond, TCG_REG_PC, addri); -} - -/* - * The call case is mostly used for helpers - so it's not unreasonable - * for them to be beyond branch range. - */ -static void tcg_out_call_int(TCGContext *s, const tcg_insn_unit *addr) -{ - intptr_t addri =3D (intptr_t)addr; - ptrdiff_t disp =3D tcg_pcrel_diff(s, addr); - bool arm_mode =3D !(addri & 1); - - if (disp - 8 < 0x02000000 && disp - 8 >=3D -0x02000000) { - if (arm_mode) { - tcg_out_bl_imm(s, COND_AL, disp); - } else { - tcg_out_blx_imm(s, disp); - } - return; - } - - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, addri); - tcg_out_blx_reg(s, COND_AL, TCG_REG_TMP); -} - -static void tcg_out_call(TCGContext *s, const tcg_insn_unit *addr, - const TCGHelperInfo *info) -{ - tcg_out_call_int(s, addr); -} - -static void tcg_out_goto_label(TCGContext *s, ARMCond cond, TCGLabel *l) -{ - if (l->has_value) { - tcg_out_goto(s, cond, l->u.value_ptr); - } else { - tcg_out_reloc(s, s->code_ptr, R_ARM_PC24, l, 0); - tcg_out_b_imm(s, cond, 0); - } -} - -static void tcg_out_br(TCGContext *s, TCGLabel *l) -{ - tcg_out_goto_label(s, COND_AL, l); -} - -static void tcg_out_mb(TCGContext *s, unsigned a0) -{ - if (use_armv7_instructions) { - tcg_out32(s, INSN_DMB_ISH); - } else { - tcg_out32(s, INSN_DMB_MCR); - } -} - -static TCGCond tgen_cmp(TCGContext *s, TCGCond cond, TCGReg a, TCGReg b) -{ - if (is_tst_cond(cond)) { - tcg_out_dat_reg(s, COND_AL, ARITH_TST, 0, a, b, SHIFT_IMM_LSL(0)); - return tcg_tst_eqne_cond(cond); - } - tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0, a, b, SHIFT_IMM_LSL(0)); - return cond; -} - -static TCGCond tgen_cmpi(TCGContext *s, TCGCond cond, TCGReg a, TCGArg b) -{ - int imm12; - - if (!is_tst_cond(cond)) { - tcg_out_dat_IN(s, COND_AL, ARITH_CMP, ARITH_CMN, 0, a, b); - return cond; - } - - /* - * The compare constraints allow rIN, but TST does not support N. - * Be prepared to load the constant into a scratch register. - */ - imm12 =3D encode_imm(b); - if (imm12 >=3D 0) { - tcg_out_dat_imm(s, COND_AL, ARITH_TST, 0, a, imm12); - } else { - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, b); - tcg_out_dat_reg(s, COND_AL, ARITH_TST, 0, - a, TCG_REG_TMP, SHIFT_IMM_LSL(0)); - } - return tcg_tst_eqne_cond(cond); -} - -static TCGCond tcg_out_cmp(TCGContext *s, TCGCond cond, TCGReg a, - TCGArg b, int b_const) -{ - if (b_const) { - return tgen_cmpi(s, cond, a, b); - } else { - return tgen_cmp(s, cond, a, b); - } -} - -static TCGCond tcg_out_cmp2(TCGContext *s, TCGCond cond, TCGReg al, TCGReg= ah, - TCGArg bl, bool const_bl, TCGArg bh, bool cons= t_bh) -{ - switch (cond) { - case TCG_COND_EQ: - case TCG_COND_NE: - case TCG_COND_LTU: - case TCG_COND_LEU: - case TCG_COND_GTU: - case TCG_COND_GEU: - /* - * We perform a conditional comparison. If the high half is - * equal, then overwrite the flags with the comparison of the - * low half. The resulting flags cover the whole. - */ - tcg_out_dat_rI(s, COND_AL, ARITH_CMP, 0, ah, bh, const_bh); - tcg_out_dat_rI(s, COND_EQ, ARITH_CMP, 0, al, bl, const_bl); - return cond; - - case TCG_COND_TSTEQ: - case TCG_COND_TSTNE: - /* Similar, but with TST instead of CMP. */ - tcg_out_dat_rI(s, COND_AL, ARITH_TST, 0, ah, bh, const_bh); - tcg_out_dat_rI(s, COND_EQ, ARITH_TST, 0, al, bl, const_bl); - return tcg_tst_eqne_cond(cond); - - case TCG_COND_LT: - case TCG_COND_GE: - /* We perform a double-word subtraction and examine the result. - We do not actually need the result of the subtract, so the - low part "subtract" is a compare. For the high half we have - no choice but to compute into a temporary. */ - tcg_out_dat_rI(s, COND_AL, ARITH_CMP, 0, al, bl, const_bl); - tcg_out_dat_rI(s, COND_AL, ARITH_SBC | TO_CPSR, - TCG_REG_TMP, ah, bh, const_bh); - return cond; - - case TCG_COND_LE: - case TCG_COND_GT: - /* Similar, but with swapped arguments, via reversed subtract. */ - tcg_out_dat_rI(s, COND_AL, ARITH_RSB | TO_CPSR, - TCG_REG_TMP, al, bl, const_bl); - tcg_out_dat_rI(s, COND_AL, ARITH_RSC | TO_CPSR, - TCG_REG_TMP, ah, bh, const_bh); - return tcg_swap_cond(cond); - - default: - g_assert_not_reached(); - } -} - -/* - * Note that TCGReg references Q-registers. - * Q-regno =3D 2 * D-regno, so shift left by 1 while inserting. - */ -static uint32_t encode_vd(TCGReg rd) -{ - tcg_debug_assert(rd >=3D TCG_REG_Q0); - return (extract32(rd, 3, 1) << 22) | (extract32(rd, 0, 3) << 13); -} - -static uint32_t encode_vn(TCGReg rn) -{ - tcg_debug_assert(rn >=3D TCG_REG_Q0); - return (extract32(rn, 3, 1) << 7) | (extract32(rn, 0, 3) << 17); -} - -static uint32_t encode_vm(TCGReg rm) -{ - tcg_debug_assert(rm >=3D TCG_REG_Q0); - return (extract32(rm, 3, 1) << 5) | (extract32(rm, 0, 3) << 1); -} - -static void tcg_out_vreg2(TCGContext *s, ARMInsn insn, int q, int vece, - TCGReg d, TCGReg m) -{ - tcg_out32(s, insn | (vece << 18) | (q << 6) | - encode_vd(d) | encode_vm(m)); -} - -static void tcg_out_vreg3(TCGContext *s, ARMInsn insn, int q, int vece, - TCGReg d, TCGReg n, TCGReg m) -{ - tcg_out32(s, insn | (vece << 20) | (q << 6) | - encode_vd(d) | encode_vn(n) | encode_vm(m)); -} - -static void tcg_out_vmovi(TCGContext *s, TCGReg rd, - int q, int op, int cmode, uint8_t imm8) -{ - tcg_out32(s, INSN_VMOVI | encode_vd(rd) | (q << 6) | (op << 5) - | (cmode << 8) | extract32(imm8, 0, 4) - | (extract32(imm8, 4, 3) << 16) - | (extract32(imm8, 7, 1) << 24)); -} - -static void tcg_out_vshifti(TCGContext *s, ARMInsn insn, int q, - TCGReg rd, TCGReg rm, int l_imm6) -{ - tcg_out32(s, insn | (q << 6) | encode_vd(rd) | encode_vm(rm) | - (extract32(l_imm6, 6, 1) << 7) | - (extract32(l_imm6, 0, 6) << 16)); -} - -static void tcg_out_vldst(TCGContext *s, ARMInsn insn, - TCGReg rd, TCGReg rn, int offset) -{ - if (offset !=3D 0) { - if (check_fit_imm(offset) || check_fit_imm(-offset)) { - tcg_out_dat_rIN(s, COND_AL, ARITH_ADD, ARITH_SUB, - TCG_REG_TMP, rn, offset, true); - } else { - tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_TMP, offset); - tcg_out_dat_reg(s, COND_AL, ARITH_ADD, - TCG_REG_TMP, TCG_REG_TMP, rn, 0); - } - rn =3D TCG_REG_TMP; - } - tcg_out32(s, insn | (rn << 16) | encode_vd(rd) | 0xf); -} - -typedef struct { - ARMCond cond; - TCGReg base; - int index; - bool index_scratch; - TCGAtomAlign aa; -} HostAddress; - -bool tcg_target_has_memory_bswap(MemOp memop) -{ - return false; -} - -static TCGReg ldst_ra_gen(TCGContext *s, const TCGLabelQemuLdst *l, int ar= g) -{ - /* We arrive at the slow path via "BLNE", so R14 contains l->raddr. */ - return TCG_REG_R14; -} - -static const TCGLdstHelperParam ldst_helper_param =3D { - .ra_gen =3D ldst_ra_gen, - .ntmp =3D 1, - .tmp =3D { TCG_REG_TMP }, -}; - -static bool tcg_out_qemu_ld_slow_path(TCGContext *s, TCGLabelQemuLdst *lb) -{ - MemOp opc =3D get_memop(lb->oi); - - if (!reloc_pc24(lb->label_ptr[0], tcg_splitwx_to_rx(s->code_ptr))) { - return false; - } - - tcg_out_ld_helper_args(s, lb, &ldst_helper_param); - tcg_out_call_int(s, qemu_ld_helpers[opc & MO_SIZE]); - tcg_out_ld_helper_ret(s, lb, false, &ldst_helper_param); - - tcg_out_goto(s, COND_AL, lb->raddr); - return true; -} - -static bool tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *lb) -{ - MemOp opc =3D get_memop(lb->oi); - - if (!reloc_pc24(lb->label_ptr[0], tcg_splitwx_to_rx(s->code_ptr))) { - return false; - } - - tcg_out_st_helper_args(s, lb, &ldst_helper_param); - - /* Tail-call to the helper, which will return to the fast path. */ - tcg_out_goto(s, COND_AL, qemu_st_helpers[opc & MO_SIZE]); - return true; -} - -/* We expect to use an 9-bit sign-magnitude negative offset from ENV. */ -#define MIN_TLB_MASK_TABLE_OFS -256 - -static TCGLabelQemuLdst *prepare_host_addr(TCGContext *s, HostAddress *h, - TCGReg addr, MemOpIdx oi, bool = is_ld) -{ - TCGLabelQemuLdst *ldst =3D NULL; - MemOp opc =3D get_memop(oi); - unsigned a_mask; - - if (tcg_use_softmmu) { - *h =3D (HostAddress){ - .cond =3D COND_AL, - .base =3D addr, - .index =3D TCG_REG_R1, - .index_scratch =3D true, - }; - } else { - *h =3D (HostAddress){ - .cond =3D COND_AL, - .base =3D addr, - .index =3D guest_base ? TCG_REG_GUEST_BASE : -1, - .index_scratch =3D false, - }; - } - - h->aa =3D atom_and_align_for_opc(s, opc, MO_ATOM_IFALIGN, false); - a_mask =3D (1 << h->aa.align) - 1; - - if (tcg_use_softmmu) { - int mem_index =3D get_mmuidx(oi); - int cmp_off =3D is_ld ? offsetof(CPUTLBEntry, addr_read) - : offsetof(CPUTLBEntry, addr_write); - int fast_off =3D tlb_mask_table_ofs(s, mem_index); - unsigned s_mask =3D (1 << (opc & MO_SIZE)) - 1; - TCGReg t_addr; - - ldst =3D new_ldst_label(s); - ldst->is_ld =3D is_ld; - ldst->oi =3D oi; - ldst->addr_reg =3D addr; - - /* Load CPUTLBDescFast.{mask,table} into {r0,r1}. */ - QEMU_BUILD_BUG_ON(offsetof(CPUTLBDescFast, mask) !=3D 0); - QEMU_BUILD_BUG_ON(offsetof(CPUTLBDescFast, table) !=3D 4); - tcg_out_ldrd_8(s, COND_AL, TCG_REG_R0, TCG_AREG0, fast_off); - - /* Extract the tlb index from the address into R0. */ - tcg_out_dat_reg(s, COND_AL, ARITH_AND, TCG_REG_R0, TCG_REG_R0, add= r, - SHIFT_IMM_LSR(TARGET_PAGE_BITS - CPU_TLB_ENTRY_BIT= S)); - - /* - * Add the tlb_table pointer, creating the CPUTLBEntry address in = R1. - * Load the tlb comparator into R2 and the fast path addend into R= 1. - */ - if (cmp_off =3D=3D 0) { - tcg_out_ld32_rwb(s, COND_AL, TCG_REG_R2, TCG_REG_R1, TCG_REG_R= 0); - } else { - tcg_out_dat_reg(s, COND_AL, ARITH_ADD, - TCG_REG_R1, TCG_REG_R1, TCG_REG_R0, 0); - tcg_out_ld32_12(s, COND_AL, TCG_REG_R2, TCG_REG_R1, cmp_off); - } - - /* Load the tlb addend. */ - tcg_out_ld32_12(s, COND_AL, TCG_REG_R1, TCG_REG_R1, - offsetof(CPUTLBEntry, addend)); - - /* - * Check alignment, check comparators. - * Do this in 2-4 insns. Use MOVW for v7, if possible, - * to reduce the number of sequential conditional instructions. - * Almost all guests have at least 4k pages, which means that we n= eed - * to clear at least 9 bits even for an 8-byte memory, which means= it - * isn't worth checking for an immediate operand for BIC. - * - * For unaligned accesses, test the page of the last unit of align= ment. - * This leaves the least significant alignment bits unchanged, and= of - * course must be zero. - */ - t_addr =3D addr; - if (a_mask < s_mask) { - t_addr =3D TCG_REG_R0; - tcg_out_dat_imm(s, COND_AL, ARITH_ADD, t_addr, - addr, s_mask - a_mask); - } - if (use_armv7_instructions && TARGET_PAGE_BITS <=3D 16) { - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, ~(TARGET_PAGE_MASK | a= _mask)); - tcg_out_dat_reg(s, COND_AL, ARITH_BIC, TCG_REG_TMP, - t_addr, TCG_REG_TMP, 0); - tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0, - TCG_REG_R2, TCG_REG_TMP, 0); - } else { - if (a_mask) { - tcg_debug_assert(a_mask <=3D 0xff); - tcg_out_dat_imm(s, COND_AL, ARITH_TST, 0, addr, a_mask); - } - tcg_out_dat_reg(s, COND_AL, ARITH_MOV, TCG_REG_TMP, 0, t_addr, - SHIFT_IMM_LSR(TARGET_PAGE_BITS)); - tcg_out_dat_reg(s, (a_mask ? COND_EQ : COND_AL), ARITH_CMP, - 0, TCG_REG_R2, TCG_REG_TMP, - SHIFT_IMM_LSL(TARGET_PAGE_BITS)); - } - } else if (a_mask) { - ldst =3D new_ldst_label(s); - ldst->is_ld =3D is_ld; - ldst->oi =3D oi; - ldst->addr_reg =3D addr; - - /* We are expecting alignment to max out at 7 */ - tcg_debug_assert(a_mask <=3D 0xff); - /* tst addr, #mask */ - tcg_out_dat_imm(s, COND_AL, ARITH_TST, 0, addr, a_mask); - } - - return ldst; -} - -static void tcg_out_qemu_ld_direct(TCGContext *s, MemOp opc, TCGReg datalo, - TCGReg datahi, HostAddress h) -{ - TCGReg base; - - /* Byte swapping is left to middle-end expansion. */ - tcg_debug_assert((opc & MO_BSWAP) =3D=3D 0); - - switch (opc & MO_SSIZE) { - case MO_UB: - if (h.index < 0) { - tcg_out_ld8_12(s, h.cond, datalo, h.base, 0); - } else { - tcg_out_ld8_r(s, h.cond, datalo, h.base, h.index); - } - break; - case MO_SB: - if (h.index < 0) { - tcg_out_ld8s_8(s, h.cond, datalo, h.base, 0); - } else { - tcg_out_ld8s_r(s, h.cond, datalo, h.base, h.index); - } - break; - case MO_UW: - if (h.index < 0) { - tcg_out_ld16u_8(s, h.cond, datalo, h.base, 0); - } else { - tcg_out_ld16u_r(s, h.cond, datalo, h.base, h.index); - } - break; - case MO_SW: - if (h.index < 0) { - tcg_out_ld16s_8(s, h.cond, datalo, h.base, 0); - } else { - tcg_out_ld16s_r(s, h.cond, datalo, h.base, h.index); - } - break; - case MO_UL: - if (h.index < 0) { - tcg_out_ld32_12(s, h.cond, datalo, h.base, 0); - } else { - tcg_out_ld32_r(s, h.cond, datalo, h.base, h.index); - } - break; - case MO_UQ: - /* We used pair allocation for datalo, so already should be aligne= d. */ - tcg_debug_assert((datalo & 1) =3D=3D 0); - tcg_debug_assert(datahi =3D=3D datalo + 1); - /* LDRD requires alignment; double-check that. */ - if (memop_alignment_bits(opc) >=3D MO_64) { - if (h.index < 0) { - tcg_out_ldrd_8(s, h.cond, datalo, h.base, 0); - break; - } - /* - * Rm (the second address op) must not overlap Rt or Rt + 1. - * Since datalo is aligned, we can simplify the test via align= ment. - * Flip the two address arguments if that works. - */ - if ((h.index & ~1) !=3D datalo) { - tcg_out_ldrd_r(s, h.cond, datalo, h.base, h.index); - break; - } - if ((h.base & ~1) !=3D datalo) { - tcg_out_ldrd_r(s, h.cond, datalo, h.index, h.base); - break; - } - } - if (h.index < 0) { - base =3D h.base; - if (datalo =3D=3D h.base) { - tcg_out_mov_reg(s, h.cond, TCG_REG_TMP, base); - base =3D TCG_REG_TMP; - } - } else if (h.index_scratch) { - tcg_out_ld32_rwb(s, h.cond, datalo, h.index, h.base); - tcg_out_ld32_12(s, h.cond, datahi, h.index, 4); - break; - } else { - tcg_out_dat_reg(s, h.cond, ARITH_ADD, TCG_REG_TMP, - h.base, h.index, SHIFT_IMM_LSL(0)); - base =3D TCG_REG_TMP; - } - tcg_out_ld32_12(s, h.cond, datalo, base, 0); - tcg_out_ld32_12(s, h.cond, datahi, base, 4); - break; - default: - g_assert_not_reached(); - } -} - -static void tgen_qemu_ld(TCGContext *s, TCGType type, TCGReg data, - TCGReg addr, MemOpIdx oi) -{ - MemOp opc =3D get_memop(oi); - TCGLabelQemuLdst *ldst; - HostAddress h; - - ldst =3D prepare_host_addr(s, &h, addr, oi, true); - if (ldst) { - ldst->type =3D type; - ldst->datalo_reg =3D data; - ldst->datahi_reg =3D -1; - - /* - * This a conditional BL only to load a pointer within this - * opcode into LR for the slow path. We will not be using - * the value for a tail call. - */ - ldst->label_ptr[0] =3D s->code_ptr; - tcg_out_bl_imm(s, COND_NE, 0); - } - - tcg_out_qemu_ld_direct(s, opc, data, -1, h); - - if (ldst) { - ldst->raddr =3D tcg_splitwx_to_rx(s->code_ptr); - } -} - -static const TCGOutOpQemuLdSt outop_qemu_ld =3D { - .base.static_constraint =3D C_O1_I1(r, q), - .out =3D tgen_qemu_ld, -}; - -static void tgen_qemu_ld2(TCGContext *s, TCGType type, TCGReg datalo, - TCGReg datahi, TCGReg addr, MemOpIdx oi) -{ - MemOp opc =3D get_memop(oi); - TCGLabelQemuLdst *ldst; - HostAddress h; - - ldst =3D prepare_host_addr(s, &h, addr, oi, true); - if (ldst) { - ldst->type =3D type; - ldst->datalo_reg =3D datalo; - ldst->datahi_reg =3D datahi; - - /* - * This a conditional BL only to load a pointer within this - * opcode into LR for the slow path. We will not be using - * the value for a tail call. - */ - ldst->label_ptr[0] =3D s->code_ptr; - tcg_out_bl_imm(s, COND_NE, 0); - } - - tcg_out_qemu_ld_direct(s, opc, datalo, datahi, h); - - if (ldst) { - ldst->raddr =3D tcg_splitwx_to_rx(s->code_ptr); - } -} - -static const TCGOutOpQemuLdSt2 outop_qemu_ld2 =3D { - .base.static_constraint =3D C_O2_I1(e, p, q), - .out =3D tgen_qemu_ld2, -}; - -static void tcg_out_qemu_st_direct(TCGContext *s, MemOp opc, TCGReg datalo, - TCGReg datahi, HostAddress h) -{ - /* Byte swapping is left to middle-end expansion. */ - tcg_debug_assert((opc & MO_BSWAP) =3D=3D 0); - - switch (opc & MO_SIZE) { - case MO_8: - if (h.index < 0) { - tcg_out_st8_12(s, h.cond, datalo, h.base, 0); - } else { - tcg_out_st8_r(s, h.cond, datalo, h.base, h.index); - } - break; - case MO_16: - if (h.index < 0) { - tcg_out_st16_8(s, h.cond, datalo, h.base, 0); - } else { - tcg_out_st16_r(s, h.cond, datalo, h.base, h.index); - } - break; - case MO_32: - if (h.index < 0) { - tcg_out_st32_12(s, h.cond, datalo, h.base, 0); - } else { - tcg_out_st32_r(s, h.cond, datalo, h.base, h.index); - } - break; - case MO_64: - /* We used pair allocation for datalo, so already should be aligne= d. */ - tcg_debug_assert((datalo & 1) =3D=3D 0); - tcg_debug_assert(datahi =3D=3D datalo + 1); - /* STRD requires alignment; double-check that. */ - if (memop_alignment_bits(opc) >=3D MO_64) { - if (h.index < 0) { - tcg_out_strd_8(s, h.cond, datalo, h.base, 0); - } else { - tcg_out_strd_r(s, h.cond, datalo, h.base, h.index); - } - } else if (h.index < 0) { - tcg_out_st32_12(s, h.cond, datalo, h.base, 0); - tcg_out_st32_12(s, h.cond, datahi, h.base, 4); - } else if (h.index_scratch) { - tcg_out_st32_rwb(s, h.cond, datalo, h.index, h.base); - tcg_out_st32_12(s, h.cond, datahi, h.index, 4); - } else { - tcg_out_dat_reg(s, h.cond, ARITH_ADD, TCG_REG_TMP, - h.base, h.index, SHIFT_IMM_LSL(0)); - tcg_out_st32_12(s, h.cond, datalo, TCG_REG_TMP, 0); - tcg_out_st32_12(s, h.cond, datahi, TCG_REG_TMP, 4); - } - break; - default: - g_assert_not_reached(); - } -} - -static void tgen_qemu_st(TCGContext *s, TCGType type, TCGReg data, - TCGReg addr, MemOpIdx oi) -{ - MemOp opc =3D get_memop(oi); - TCGLabelQemuLdst *ldst; - HostAddress h; - - ldst =3D prepare_host_addr(s, &h, addr, oi, false); - if (ldst) { - ldst->type =3D type; - ldst->datalo_reg =3D data; - ldst->datahi_reg =3D -1; - - h.cond =3D COND_EQ; - tcg_out_qemu_st_direct(s, opc, data, -1, h); - - /* The conditional call is last, as we're going to return here. */ - ldst->label_ptr[0] =3D s->code_ptr; - tcg_out_bl_imm(s, COND_NE, 0); - ldst->raddr =3D tcg_splitwx_to_rx(s->code_ptr); - } else { - tcg_out_qemu_st_direct(s, opc, data, -1, h); - } -} - -static const TCGOutOpQemuLdSt outop_qemu_st =3D { - .base.static_constraint =3D C_O0_I2(q, q), - .out =3D tgen_qemu_st, -}; - -static void tgen_qemu_st2(TCGContext *s, TCGType type, TCGReg datalo, - TCGReg datahi, TCGReg addr, MemOpIdx oi) -{ - MemOp opc =3D get_memop(oi); - TCGLabelQemuLdst *ldst; - HostAddress h; - - ldst =3D prepare_host_addr(s, &h, addr, oi, false); - if (ldst) { - ldst->type =3D type; - ldst->datalo_reg =3D datalo; - ldst->datahi_reg =3D datahi; - - h.cond =3D COND_EQ; - tcg_out_qemu_st_direct(s, opc, datalo, datahi, h); - - /* The conditional call is last, as we're going to return here. */ - ldst->label_ptr[0] =3D s->code_ptr; - tcg_out_bl_imm(s, COND_NE, 0); - ldst->raddr =3D tcg_splitwx_to_rx(s->code_ptr); - } else { - tcg_out_qemu_st_direct(s, opc, datalo, datahi, h); - } -} - -static const TCGOutOpQemuLdSt2 outop_qemu_st2 =3D { - .base.static_constraint =3D C_O0_I3(Q, p, q), - .out =3D tgen_qemu_st2, -}; - -static void tcg_out_epilogue(TCGContext *s); - -static void tcg_out_exit_tb(TCGContext *s, uintptr_t arg) -{ - tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R0, arg); - tcg_out_epilogue(s); -} - -static void tcg_out_goto_tb(TCGContext *s, int which) -{ - uintptr_t i_addr; - intptr_t i_disp; - - /* Direct branch will be patched by tb_target_set_jmp_target. */ - set_jmp_insn_offset(s, which); - tcg_out32(s, INSN_NOP); - - /* When branch is out of range, fall through to indirect. */ - i_addr =3D get_jmp_target_addr(s, which); - i_disp =3D tcg_pcrel_diff(s, (void *)i_addr) - 8; - tcg_debug_assert(i_disp < 0); - if (i_disp >=3D -0xfff) { - tcg_out_ld32_12(s, COND_AL, TCG_REG_PC, TCG_REG_PC, i_disp); - } else { - /* - * The TB is close, but outside the 12 bits addressable by - * the load. We can extend this to 20 bits with a sub of a - * shifted immediate from pc. - */ - int h =3D -i_disp; - int l =3D -(h & 0xfff); - - h =3D encode_imm_nofail(h + l); - tcg_out_dat_imm(s, COND_AL, ARITH_SUB, TCG_REG_R0, TCG_REG_PC, h); - tcg_out_ld32_12(s, COND_AL, TCG_REG_PC, TCG_REG_R0, l); - } - set_jmp_reset_offset(s, which); -} - -static void tcg_out_goto_ptr(TCGContext *s, TCGReg a0) -{ - tcg_out_b_reg(s, COND_AL, a0); -} - -void tb_target_set_jmp_target(const TranslationBlock *tb, int n, - uintptr_t jmp_rx, uintptr_t jmp_rw) -{ - uintptr_t addr =3D tb->jmp_target_addr[n]; - ptrdiff_t offset =3D addr - (jmp_rx + 8); - tcg_insn_unit insn; - - /* Either directly branch, or fall through to indirect branch. */ - if (offset =3D=3D sextract64(offset, 0, 26)) { - /* B */ - insn =3D deposit32((COND_AL << 28) | INSN_B, 0, 24, offset >> 2); - } else { - insn =3D INSN_NOP; - } - - qatomic_set((uint32_t *)jmp_rw, insn); - flush_idcache_range(jmp_rx, jmp_rw, 4); -} - - -static void tgen_add(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_ADD, a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_addi(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_IN(s, COND_AL, ARITH_ADD, ARITH_SUB, a0, a1, a2); -} - -static const TCGOutOpBinary outop_add =3D { - .base.static_constraint =3D C_O1_I2(r, r, rIN), - .out_rrr =3D tgen_add, - .out_rri =3D tgen_addi, -}; - -static void tgen_addco(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_ADD | TO_CPSR, - a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_addco_imm(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_IN(s, COND_AL, ARITH_ADD | TO_CPSR, ARITH_SUB | TO_CPSR, - a0, a1, a2); -} - -static const TCGOutOpBinary outop_addco =3D { - .base.static_constraint =3D C_O1_I2(r, r, rIN), - .out_rrr =3D tgen_addco, - .out_rri =3D tgen_addco_imm, -}; - -static void tgen_addci(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_ADC, a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_addci_imm(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_IK(s, COND_AL, ARITH_ADC, ARITH_SBC, a0, a1, a2); -} - -static const TCGOutOpAddSubCarry outop_addci =3D { - .base.static_constraint =3D C_O1_I2(r, r, rIK), - .out_rrr =3D tgen_addci, - .out_rri =3D tgen_addci_imm, -}; - -static void tgen_addcio(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_ADC | TO_CPSR, - a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_addcio_imm(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_IK(s, COND_AL, ARITH_ADC | TO_CPSR, ARITH_SBC | TO_CPSR, - a0, a1, a2); -} - -static const TCGOutOpBinary outop_addcio =3D { - .base.static_constraint =3D C_O1_I2(r, r, rIK), - .out_rrr =3D tgen_addcio, - .out_rri =3D tgen_addcio_imm, -}; - -/* Set C to @c; NZVQ all set to 0. */ -static void tcg_out_movi_apsr_c(TCGContext *s, bool c) -{ - int imm12 =3D encode_imm_nofail(c << 29); - tcg_out32(s, (COND_AL << 28) | INSN_MSRI_CPSR | 0x80000 | imm12); -} - -static void tcg_out_set_carry(TCGContext *s) -{ - tcg_out_movi_apsr_c(s, 1); -} - -static void tgen_and(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_AND, a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_andi(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_IK(s, COND_AL, ARITH_AND, ARITH_BIC, a0, a1, a2); -} - -static const TCGOutOpBinary outop_and =3D { - .base.static_constraint =3D C_O1_I2(r, r, rIK), - .out_rrr =3D tgen_and, - .out_rri =3D tgen_andi, -}; - -static void tgen_andc(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_BIC, a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static const TCGOutOpBinary outop_andc =3D { - .base.static_constraint =3D C_O1_I2(r, r, r), - .out_rrr =3D tgen_andc, -}; - -static void tgen_clz(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_imm(s, COND_AL, ARITH_CMP, 0, a1, 0); - tcg_out_dat_reg(s, COND_NE, INSN_CLZ, a0, 0, a1, 0); - tcg_out_mov_reg(s, COND_EQ, a0, a2); -} - -static void tgen_clzi(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - if (a2 =3D=3D 32) { - tcg_out_dat_reg(s, COND_AL, INSN_CLZ, a0, 0, a1, 0); - } else { - tcg_out_dat_imm(s, COND_AL, ARITH_CMP, 0, a1, 0); - tcg_out_dat_reg(s, COND_NE, INSN_CLZ, a0, 0, a1, 0); - tcg_out_movi32(s, COND_EQ, a0, a2); - } -} - -static const TCGOutOpBinary outop_clz =3D { - .base.static_constraint =3D C_O1_I2(r, r, rIK), - .out_rrr =3D tgen_clz, - .out_rri =3D tgen_clzi, -}; - -static const TCGOutOpUnary outop_ctpop =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static void tgen_ctz(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, INSN_RBIT, TCG_REG_TMP, 0, a1, 0); - tgen_clz(s, TCG_TYPE_I32, a0, TCG_REG_TMP, a2); -} - -static void tgen_ctzi(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_reg(s, COND_AL, INSN_RBIT, TCG_REG_TMP, 0, a1, 0); - tgen_clzi(s, TCG_TYPE_I32, a0, TCG_REG_TMP, a2); -} - -static TCGConstraintSetIndex cset_ctz(TCGType type, unsigned flags) -{ - return use_armv7_instructions ? C_O1_I2(r, r, rIK) : C_NotImplemented; -} - -static const TCGOutOpBinary outop_ctz =3D { - .base.static_constraint =3D C_Dynamic, - .base.dynamic_constraint =3D cset_ctz, - .out_rrr =3D tgen_ctz, - .out_rri =3D tgen_ctzi, -}; - -static TCGConstraintSetIndex cset_idiv(TCGType type, unsigned flags) -{ - return use_idiv_instructions ? C_O1_I2(r, r, r) : C_NotImplemented; -} - -static void tgen_divs(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - /* sdiv */ - tcg_out32(s, 0x0710f010 | (COND_AL << 28) | (a0 << 16) | a1 | (a2 << 8= )); -} - -static const TCGOutOpBinary outop_divs =3D { - .base.static_constraint =3D C_Dynamic, - .base.dynamic_constraint =3D cset_idiv, - .out_rrr =3D tgen_divs, -}; - -static const TCGOutOpDivRem outop_divs2 =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static void tgen_divu(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - /* udiv */ - tcg_out32(s, 0x0730f010 | (COND_AL << 28) | (a0 << 16) | a1 | (a2 << 8= )); -} - -static const TCGOutOpBinary outop_divu =3D { - .base.static_constraint =3D C_Dynamic, - .base.dynamic_constraint =3D cset_idiv, - .out_rrr =3D tgen_divu, -}; - -static const TCGOutOpDivRem outop_divu2 =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static const TCGOutOpBinary outop_eqv =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static void tgen_mul(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - /* mul */ - tcg_out32(s, (COND_AL << 28) | 0x90 | (a0 << 16) | (a1 << 8) | a2); -} - -static const TCGOutOpBinary outop_mul =3D { - .base.static_constraint =3D C_O1_I2(r, r, r), - .out_rrr =3D tgen_mul, -}; - -static void tgen_muls2(TCGContext *s, TCGType type, - TCGReg rd0, TCGReg rd1, TCGReg rn, TCGReg rm) -{ - /* smull */ - tcg_out32(s, (COND_AL << 28) | 0x00c00090 | - (rd1 << 16) | (rd0 << 12) | (rm << 8) | rn); -} - -static const TCGOutOpMul2 outop_muls2 =3D { - .base.static_constraint =3D C_O2_I2(r, r, r, r), - .out_rrrr =3D tgen_muls2, -}; - -static const TCGOutOpBinary outop_mulsh =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static void tgen_mulu2(TCGContext *s, TCGType type, - TCGReg rd0, TCGReg rd1, TCGReg rn, TCGReg rm) -{ - /* umull */ - tcg_out32(s, (COND_AL << 28) | 0x00800090 | - (rd1 << 16) | (rd0 << 12) | (rm << 8) | rn); -} - -static const TCGOutOpMul2 outop_mulu2 =3D { - .base.static_constraint =3D C_O2_I2(r, r, r, r), - .out_rrrr =3D tgen_mulu2, -}; - -static const TCGOutOpBinary outop_muluh =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static const TCGOutOpBinary outop_nand =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static const TCGOutOpBinary outop_nor =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static void tgen_or(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_ORR, a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_ori(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_imm(s, COND_AL, ARITH_ORR, a0, a1, encode_imm_nofail(a2)); -} - -static const TCGOutOpBinary outop_or =3D { - .base.static_constraint =3D C_O1_I2(r, r, rI), - .out_rrr =3D tgen_or, - .out_rri =3D tgen_ori, -}; - -static const TCGOutOpBinary outop_orc =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static const TCGOutOpBinary outop_rems =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static const TCGOutOpBinary outop_remu =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static const TCGOutOpBinary outop_rotl =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static void tgen_rotr(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_MOV, a0, 0, a1, SHIFT_REG_ROR(a2)); -} - -static void tgen_rotri(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_MOV, a0, 0, a1, SHIFT_IMM_ROR(a2 & 0= x1f)); -} - -static const TCGOutOpBinary outop_rotr =3D { - .base.static_constraint =3D C_O1_I2(r, r, ri), - .out_rrr =3D tgen_rotr, - .out_rri =3D tgen_rotri, -}; - -static void tgen_sar(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_MOV, a0, 0, a1, SHIFT_REG_ASR(a2)); -} - -static void tgen_sari(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_MOV, a0, 0, a1, - SHIFT_IMM_ASR(a2 & 0x1f)); -} - -static const TCGOutOpBinary outop_sar =3D { - .base.static_constraint =3D C_O1_I2(r, r, ri), - .out_rrr =3D tgen_sar, - .out_rri =3D tgen_sari, -}; - -static void tgen_shl(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_MOV, a0, 0, a1, SHIFT_REG_LSL(a2)); -} - -static void tgen_shli(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_MOV, a0, 0, a1, - SHIFT_IMM_LSL(a2 & 0x1f)); -} - -static const TCGOutOpBinary outop_shl =3D { - .base.static_constraint =3D C_O1_I2(r, r, ri), - .out_rrr =3D tgen_shl, - .out_rri =3D tgen_shli, -}; - -static void tgen_shr(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_MOV, a0, 0, a1, SHIFT_REG_LSR(a2)); -} - -static void tgen_shri(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_MOV, a0, 0, a1, - SHIFT_IMM_LSR(a2 & 0x1f)); -} - -static const TCGOutOpBinary outop_shr =3D { - .base.static_constraint =3D C_O1_I2(r, r, ri), - .out_rrr =3D tgen_shr, - .out_rri =3D tgen_shri, -}; - -static void tgen_sub(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_SUB, a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_subfi(TCGContext *s, TCGType type, - TCGReg a0, tcg_target_long a1, TCGReg a2) -{ - tcg_out_dat_imm(s, COND_AL, ARITH_RSB, a0, a2, encode_imm_nofail(a1)); -} - -static const TCGOutOpSubtract outop_sub =3D { - .base.static_constraint =3D C_O1_I2(r, rI, r), - .out_rrr =3D tgen_sub, - .out_rir =3D tgen_subfi, -}; - -static void tgen_subbo_rrr(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_SUB | TO_CPSR, - a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_subbo_rri(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_IN(s, COND_AL, ARITH_SUB | TO_CPSR, ARITH_ADD | TO_CPSR, - a0, a1, a2); -} - -static void tgen_subbo_rir(TCGContext *s, TCGType type, - TCGReg a0, tcg_target_long a1, TCGReg a2) -{ - tcg_out_dat_imm(s, COND_AL, ARITH_RSB | TO_CPSR, - a0, a2, encode_imm_nofail(a1)); -} - -static void tgen_subbo_rii(TCGContext *s, TCGType type, - TCGReg a0, tcg_target_long a1, tcg_target_long = a2) -{ - tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_TMP, a2); - tgen_subbo_rir(s, TCG_TYPE_I32, a0, a1, TCG_REG_TMP); -} - -static const TCGOutOpAddSubCarry outop_subbo =3D { - .base.static_constraint =3D C_O1_I2(r, rI, rIN), - .out_rrr =3D tgen_subbo_rrr, - .out_rri =3D tgen_subbo_rri, - .out_rir =3D tgen_subbo_rir, - .out_rii =3D tgen_subbo_rii, -}; - -static void tgen_subbi_rrr(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_SBC, - a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_subbi_rri(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_IK(s, COND_AL, ARITH_SBC, ARITH_ADC, a0, a1, a2); -} - -static void tgen_subbi_rir(TCGContext *s, TCGType type, - TCGReg a0, tcg_target_long a1, TCGReg a2) -{ - tcg_out_dat_imm(s, COND_AL, ARITH_RSC, a0, a2, encode_imm_nofail(a1)); -} - -static void tgen_subbi_rii(TCGContext *s, TCGType type, - TCGReg a0, tcg_target_long a1, tcg_target_long = a2) -{ - tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_TMP, a2); - tgen_subbi_rir(s, TCG_TYPE_I32, a0, a1, TCG_REG_TMP); -} - -static const TCGOutOpAddSubCarry outop_subbi =3D { - .base.static_constraint =3D C_O1_I2(r, rI, rIK), - .out_rrr =3D tgen_subbi_rrr, - .out_rri =3D tgen_subbi_rri, - .out_rir =3D tgen_subbi_rir, - .out_rii =3D tgen_subbi_rii, -}; - -static void tgen_subbio_rrr(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_SBC | TO_CPSR, - a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_subbio_rri(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_IK(s, COND_AL, ARITH_SBC | TO_CPSR, ARITH_ADC | TO_CPSR, - a0, a1, a2); -} - -static void tgen_subbio_rir(TCGContext *s, TCGType type, - TCGReg a0, tcg_target_long a1, TCGReg a2) -{ - tcg_out_dat_imm(s, COND_AL, ARITH_RSC | TO_CPSR, - a0, a2, encode_imm_nofail(a1)); -} - -static void tgen_subbio_rii(TCGContext *s, TCGType type, - TCGReg a0, tcg_target_long a1, tcg_target_long= a2) -{ - tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_TMP, a2); - tgen_subbio_rir(s, TCG_TYPE_I32, a0, a1, TCG_REG_TMP); -} - -static const TCGOutOpAddSubCarry outop_subbio =3D { - .base.static_constraint =3D C_O1_I2(r, rI, rIK), - .out_rrr =3D tgen_subbio_rrr, - .out_rri =3D tgen_subbio_rri, - .out_rir =3D tgen_subbio_rir, - .out_rii =3D tgen_subbio_rii, -}; - -static void tcg_out_set_borrow(TCGContext *s) -{ - tcg_out_movi_apsr_c(s, 0); /* borrow =3D !carry */ -} - -static void tgen_xor(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_EOR, a0, a1, a2, SHIFT_IMM_LSL(0)); -} - -static void tgen_xori(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - tcg_out_dat_imm(s, COND_AL, ARITH_EOR, a0, a1, encode_imm_nofail(a2)); -} - -static const TCGOutOpBinary outop_xor =3D { - .base.static_constraint =3D C_O1_I2(r, r, rI), - .out_rrr =3D tgen_xor, - .out_rri =3D tgen_xori, -}; - -static void tgen_bswap16(TCGContext *s, TCGType type, - TCGReg rd, TCGReg rn, unsigned flags) -{ - if (flags & TCG_BSWAP_OS) { - /* revsh */ - tcg_out32(s, 0x06ff0fb0 | (COND_AL << 28) | (rd << 12) | rn); - return; - } - - /* rev16 */ - tcg_out32(s, 0x06bf0fb0 | (COND_AL << 28) | (rd << 12) | rn); - if ((flags & (TCG_BSWAP_IZ | TCG_BSWAP_OZ)) =3D=3D TCG_BSWAP_OZ) { - tcg_out_ext16u(s, rd, rd); - } -} - -static const TCGOutOpBswap outop_bswap16 =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out_rr =3D tgen_bswap16, -}; - -static void tgen_bswap32(TCGContext *s, TCGType type, - TCGReg rd, TCGReg rn, unsigned flags) -{ - /* rev */ - tcg_out32(s, 0x06bf0f30 | (COND_AL << 28) | (rd << 12) | rn); -} - -static const TCGOutOpBswap outop_bswap32 =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out_rr =3D tgen_bswap32, -}; - -static const TCGOutOpUnary outop_bswap64 =3D { - .base.static_constraint =3D C_NotImplemented, -}; - -static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) -{ - tgen_subfi(s, type, a0, 0, a1); -} - -static const TCGOutOpUnary outop_neg =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out_rr =3D tgen_neg, -}; - -static void tgen_not(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) -{ - tcg_out_dat_reg(s, COND_AL, ARITH_MVN, a0, 0, a1, SHIFT_IMM_LSL(0)); -} - -static const TCGOutOpUnary outop_not =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out_rr =3D tgen_not, -}; - -static void tgen_brcond(TCGContext *s, TCGType type, TCGCond cond, - TCGReg a0, TCGReg a1, TCGLabel *l) -{ - cond =3D tgen_cmp(s, cond, a0, a1); - tcg_out_goto_label(s, tcg_cond_to_arm_cond[cond], l); -} - -static void tgen_brcondi(TCGContext *s, TCGType type, TCGCond cond, - TCGReg a0, tcg_target_long a1, TCGLabel *l) -{ - cond =3D tgen_cmpi(s, cond, a0, a1); - tcg_out_goto_label(s, tcg_cond_to_arm_cond[cond], l); -} - -static const TCGOutOpBrcond outop_brcond =3D { - .base.static_constraint =3D C_O0_I2(r, rIN), - .out_rr =3D tgen_brcond, - .out_ri =3D tgen_brcondi, -}; - -static void finish_setcond(TCGContext *s, TCGCond cond, TCGReg ret, bool n= eg) -{ - tcg_out_movi32(s, tcg_cond_to_arm_cond[tcg_invert_cond(cond)], ret, 0); - tcg_out_movi32(s, tcg_cond_to_arm_cond[cond], ret, neg ? -1 : 1); -} - -static void tgen_setcond(TCGContext *s, TCGType type, TCGCond cond, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - cond =3D tgen_cmp(s, cond, a1, a2); - finish_setcond(s, cond, a0, false); -} - -static void tgen_setcondi(TCGContext *s, TCGType type, TCGCond cond, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - cond =3D tgen_cmpi(s, cond, a1, a2); - finish_setcond(s, cond, a0, false); -} - -static const TCGOutOpSetcond outop_setcond =3D { - .base.static_constraint =3D C_O1_I2(r, r, rIN), - .out_rrr =3D tgen_setcond, - .out_rri =3D tgen_setcondi, -}; - -static void tgen_negsetcond(TCGContext *s, TCGType type, TCGCond cond, - TCGReg a0, TCGReg a1, TCGReg a2) -{ - cond =3D tgen_cmp(s, cond, a1, a2); - finish_setcond(s, cond, a0, true); -} - -static void tgen_negsetcondi(TCGContext *s, TCGType type, TCGCond cond, - TCGReg a0, TCGReg a1, tcg_target_long a2) -{ - cond =3D tgen_cmpi(s, cond, a1, a2); - finish_setcond(s, cond, a0, true); -} - -static const TCGOutOpSetcond outop_negsetcond =3D { - .base.static_constraint =3D C_O1_I2(r, r, rIN), - .out_rrr =3D tgen_negsetcond, - .out_rri =3D tgen_negsetcondi, -}; - -static void tgen_movcond(TCGContext *s, TCGType type, TCGCond cond, - TCGReg ret, TCGReg c1, TCGArg c2, bool const_c2, - TCGArg vt, bool const_vt, TCGArg vf, bool consf_v= f) -{ - cond =3D tcg_out_cmp(s, cond, c1, c2, const_c2); - tcg_out_dat_rIK(s, tcg_cond_to_arm_cond[cond], ARITH_MOV, ARITH_MVN, - ret, 0, vt, const_vt); -} - -static const TCGOutOpMovcond outop_movcond =3D { - .base.static_constraint =3D C_O1_I4(r, r, rIN, rIK, 0), - .out =3D tgen_movcond, -}; - -static void tgen_brcond2(TCGContext *s, TCGCond cond, TCGReg al, TCGReg ah, - TCGArg bl, bool const_bl, TCGArg bh, bool const_b= h, - TCGLabel *l) -{ - cond =3D tcg_out_cmp2(s, cond, al, ah, bl, const_bl, bh, const_bh); - tcg_out_goto_label(s, tcg_cond_to_arm_cond[cond], l); -} - -static const TCGOutOpBrcond2 outop_brcond2 =3D { - .base.static_constraint =3D C_O0_I4(r, r, rI, rI), - .out =3D tgen_brcond2, -}; - -static void tgen_setcond2(TCGContext *s, TCGCond cond, TCGReg ret, - TCGReg al, TCGReg ah, - TCGArg bl, bool const_bl, - TCGArg bh, bool const_bh) -{ - cond =3D tcg_out_cmp2(s, cond, al, ah, bl, const_bl, bh, const_bh); - finish_setcond(s, cond, ret, false); -} - -static const TCGOutOpSetcond2 outop_setcond2 =3D { - .base.static_constraint =3D C_O1_I4(r, r, r, rI, rI), - .out =3D tgen_setcond2, -}; - -static void tgen_extract2(TCGContext *s, TCGType type, TCGReg a0, - TCGReg a1, TCGReg a2, unsigned shr) -{ - /* We can do extract2 in 2 insns, vs the 3 required otherwise. */ - tgen_shli(s, TCG_TYPE_I32, TCG_REG_TMP, a2, 32 - shr); - tcg_out_dat_reg(s, COND_AL, ARITH_ORR, a0, TCG_REG_TMP, - a1, SHIFT_IMM_LSR(shr)); -} - -static const TCGOutOpExtract2 outop_extract2 =3D { - .base.static_constraint =3D C_O1_I2(r, r, r), - .out_rrr =3D tgen_extract2, -}; - -static void tgen_ld8u(TCGContext *s, TCGType type, TCGReg rd, - TCGReg rn, ptrdiff_t offset) -{ - if (offset > 0xfff || offset < -0xfff) { - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, offset); - tcg_out_ld8_r(s, COND_AL, rd, rn, TCG_REG_TMP); - } else { - tcg_out_ld8_12(s, COND_AL, rd, rn, offset); - } -} - -static const TCGOutOpLoad outop_ld8u =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out =3D tgen_ld8u, -}; - -static void tgen_ld8s(TCGContext *s, TCGType type, TCGReg rd, - TCGReg rn, ptrdiff_t offset) -{ - if (offset > 0xff || offset < -0xff) { - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, offset); - tcg_out_ld8s_r(s, COND_AL, rd, rn, TCG_REG_TMP); - } else { - tcg_out_ld8s_8(s, COND_AL, rd, rn, offset); - } -} - -static const TCGOutOpLoad outop_ld8s =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out =3D tgen_ld8s, -}; - -static void tgen_ld16u(TCGContext *s, TCGType type, TCGReg rd, - TCGReg rn, ptrdiff_t offset) -{ - if (offset > 0xff || offset < -0xff) { - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, offset); - tcg_out_ld16u_r(s, COND_AL, rd, rn, TCG_REG_TMP); - } else { - tcg_out_ld16u_8(s, COND_AL, rd, rn, offset); - } -} - -static const TCGOutOpLoad outop_ld16u =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out =3D tgen_ld16u, -}; - -static void tgen_ld16s(TCGContext *s, TCGType type, TCGReg rd, - TCGReg rn, ptrdiff_t offset) -{ - if (offset > 0xff || offset < -0xff) { - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, offset); - tcg_out_ld16s_r(s, COND_AL, rd, rn, TCG_REG_TMP); - } else { - tcg_out_ld16s_8(s, COND_AL, rd, rn, offset); - } -} - -static const TCGOutOpLoad outop_ld16s =3D { - .base.static_constraint =3D C_O1_I1(r, r), - .out =3D tgen_ld16s, -}; - -static void tgen_st8(TCGContext *s, TCGType type, TCGReg rd, - TCGReg rn, ptrdiff_t offset) -{ - if (offset > 0xfff || offset < -0xfff) { - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, offset); - tcg_out_st8_r(s, COND_AL, rd, rn, TCG_REG_TMP); - } else { - tcg_out_st8_12(s, COND_AL, rd, rn, offset); - } -} - -static const TCGOutOpStore outop_st8 =3D { - .base.static_constraint =3D C_O0_I2(r, r), - .out_r =3D tgen_st8, -}; - -static void tgen_st16(TCGContext *s, TCGType type, TCGReg rd, - TCGReg rn, ptrdiff_t offset) -{ - if (offset > 0xff || offset < -0xff) { - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, offset); - tcg_out_st16_r(s, COND_AL, rd, rn, TCG_REG_TMP); - } else { - tcg_out_st16_8(s, COND_AL, rd, rn, offset); - } -} - -static const TCGOutOpStore outop_st16 =3D { - .base.static_constraint =3D C_O0_I2(r, r), - .out_r =3D tgen_st16, -}; - -static const TCGOutOpStore outop_st =3D { - .base.static_constraint =3D C_O0_I2(r, r), - .out_r =3D tcg_out_st, -}; - -static TCGConstraintSetIndex -tcg_target_op_def(TCGOpcode op, TCGType type, unsigned flags) -{ - switch (op) { - case INDEX_op_st_vec: - return C_O0_I2(w, r); - case INDEX_op_ld_vec: - case INDEX_op_dupm_vec: - return C_O1_I1(w, r); - case INDEX_op_dup_vec: - return C_O1_I1(w, wr); - case INDEX_op_abs_vec: - case INDEX_op_neg_vec: - case INDEX_op_not_vec: - case INDEX_op_shli_vec: - case INDEX_op_shri_vec: - case INDEX_op_sari_vec: - return C_O1_I1(w, w); - case INDEX_op_dup2_vec: - case INDEX_op_add_vec: - case INDEX_op_mul_vec: - case INDEX_op_smax_vec: - case INDEX_op_smin_vec: - case INDEX_op_ssadd_vec: - case INDEX_op_sssub_vec: - case INDEX_op_sub_vec: - case INDEX_op_umax_vec: - case INDEX_op_umin_vec: - case INDEX_op_usadd_vec: - case INDEX_op_ussub_vec: - case INDEX_op_xor_vec: - case INDEX_op_arm_sshl_vec: - case INDEX_op_arm_ushl_vec: - return C_O1_I2(w, w, w); - case INDEX_op_arm_sli_vec: - return C_O1_I2(w, 0, w); - case INDEX_op_or_vec: - case INDEX_op_andc_vec: - return C_O1_I2(w, w, wO); - case INDEX_op_and_vec: - case INDEX_op_orc_vec: - return C_O1_I2(w, w, wV); - case INDEX_op_cmp_vec: - return C_O1_I2(w, w, wZ); - case INDEX_op_bitsel_vec: - return C_O1_I3(w, w, w, w); - default: - return C_NotImplemented; - } -} - -static void tcg_target_init(TCGContext *s) -{ - /* - * Only probe for the platform and capabilities if we haven't already - * determined maximum values at compile time. - */ -#if !defined(use_idiv_instructions) || !defined(use_neon_instructions) - { - unsigned long hwcap =3D qemu_getauxval(AT_HWCAP); -#ifndef use_idiv_instructions - use_idiv_instructions =3D (hwcap & HWCAP_ARM_IDIVA) !=3D 0; -#endif -#ifndef use_neon_instructions - use_neon_instructions =3D (hwcap & HWCAP_ARM_NEON) !=3D 0; -#endif - } -#endif - - if (__ARM_ARCH < 7) { - const char *pl =3D (const char *)qemu_getauxval(AT_PLATFORM); - if (pl !=3D NULL && pl[0] =3D=3D 'v' && pl[1] >=3D '4' && pl[1] <= =3D '9') { - arm_arch =3D pl[1] - '0'; - } - - if (arm_arch < 6) { - error_report("TCG: ARMv%d is unsupported; exiting", arm_arch); - exit(EXIT_FAILURE); - } - } - - tcg_target_available_regs[TCG_TYPE_I32] =3D ALL_GENERAL_REGS; - - tcg_target_call_clobber_regs =3D 0; - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R0); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R1); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R2); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R3); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R12); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R14); - - if (use_neon_instructions) { - tcg_target_available_regs[TCG_TYPE_V64] =3D ALL_VECTOR_REGS; - tcg_target_available_regs[TCG_TYPE_V128] =3D ALL_VECTOR_REGS; - - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q0); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q1); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q2); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q3); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q8); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q9); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q10); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q11); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q12); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q13); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q14); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_Q15); - } - - s->reserved_regs =3D 0; - tcg_regset_set_reg(s->reserved_regs, TCG_REG_CALL_STACK); - tcg_regset_set_reg(s->reserved_regs, TCG_REG_TMP); - tcg_regset_set_reg(s->reserved_regs, TCG_REG_PC); - tcg_regset_set_reg(s->reserved_regs, TCG_VEC_TMP); -} - -static void tcg_out_ld(TCGContext *s, TCGType type, TCGReg arg, - TCGReg arg1, intptr_t arg2) -{ - switch (type) { - case TCG_TYPE_I32: - tcg_out_ld32u(s, COND_AL, arg, arg1, arg2); - return; - case TCG_TYPE_V64: - /* regs 1; size 8; align 8 */ - tcg_out_vldst(s, INSN_VLD1 | 0x7d0, arg, arg1, arg2); - return; - case TCG_TYPE_V128: - /* - * We have only 8-byte alignment for the stack per the ABI. - * Rather than dynamically re-align the stack, it's easier - * to simply not request alignment beyond that. So: - * regs 2; size 8; align 8 - */ - tcg_out_vldst(s, INSN_VLD1 | 0xad0, arg, arg1, arg2); - return; - default: - g_assert_not_reached(); - } -} - -static void tcg_out_st(TCGContext *s, TCGType type, TCGReg arg, - TCGReg arg1, intptr_t arg2) -{ - switch (type) { - case TCG_TYPE_I32: - tcg_out_st32(s, COND_AL, arg, arg1, arg2); - return; - case TCG_TYPE_V64: - /* regs 1; size 8; align 8 */ - tcg_out_vldst(s, INSN_VST1 | 0x7d0, arg, arg1, arg2); - return; - case TCG_TYPE_V128: - /* See tcg_out_ld re alignment: regs 2; size 8; align 8 */ - tcg_out_vldst(s, INSN_VST1 | 0xad0, arg, arg1, arg2); - return; - default: - g_assert_not_reached(); - } -} - -static bool tcg_out_sti(TCGContext *s, TCGType type, TCGArg val, - TCGReg base, intptr_t ofs) -{ - return false; -} - -static bool tcg_out_mov(TCGContext *s, TCGType type, TCGReg ret, TCGReg ar= g) -{ - if (ret =3D=3D arg) { - return true; - } - switch (type) { - case TCG_TYPE_I32: - if (ret < TCG_REG_Q0 && arg < TCG_REG_Q0) { - tcg_out_mov_reg(s, COND_AL, ret, arg); - return true; - } - return false; - - case TCG_TYPE_V64: - case TCG_TYPE_V128: - /* "VMOV D,N" is an alias for "VORR D,N,N". */ - tcg_out_vreg3(s, INSN_VORR, type - TCG_TYPE_V64, 0, ret, arg, arg); - return true; - - default: - g_assert_not_reached(); - } -} - -static void tcg_out_movi(TCGContext *s, TCGType type, - TCGReg ret, tcg_target_long arg) -{ - tcg_debug_assert(type =3D=3D TCG_TYPE_I32); - tcg_debug_assert(ret < TCG_REG_Q0); - tcg_out_movi32(s, COND_AL, ret, arg); -} - -static bool tcg_out_xchg(TCGContext *s, TCGType type, TCGReg r1, TCGReg r2) -{ - return false; -} - -static void tcg_out_addi_ptr(TCGContext *s, TCGReg rd, TCGReg rs, - tcg_target_long imm) -{ - int enc, opc =3D ARITH_ADD; - - /* All of the easiest immediates to encode are positive. */ - if (imm < 0) { - imm =3D -imm; - opc =3D ARITH_SUB; - } - enc =3D encode_imm(imm); - if (enc >=3D 0) { - tcg_out_dat_imm(s, COND_AL, opc, rd, rs, enc); - } else { - tcg_out_movi32(s, COND_AL, TCG_REG_TMP, imm); - tcg_out_dat_reg(s, COND_AL, opc, rd, rs, - TCG_REG_TMP, SHIFT_IMM_LSL(0)); - } -} - -/* Type is always V128, with I64 elements. */ -static void tcg_out_dup2_vec(TCGContext *s, TCGReg rd, TCGReg rl, TCGReg r= h) -{ - /* Move high element into place first. */ - /* VMOV Dd+1, Ds */ - tcg_out_vreg3(s, INSN_VORR | (1 << 12), 0, 0, rd, rh, rh); - /* Move low element into place; tcg_out_mov will check for nop. */ - tcg_out_mov(s, TCG_TYPE_V64, rd, rl); -} - -static bool tcg_out_dup_vec(TCGContext *s, TCGType type, unsigned vece, - TCGReg rd, TCGReg rs) -{ - int q =3D type - TCG_TYPE_V64; - - if (vece =3D=3D MO_64) { - if (type =3D=3D TCG_TYPE_V128) { - tcg_out_dup2_vec(s, rd, rs, rs); - } else { - tcg_out_mov(s, TCG_TYPE_V64, rd, rs); - } - } else if (rs < TCG_REG_Q0) { - int b =3D (vece =3D=3D MO_8); - int e =3D (vece =3D=3D MO_16); - tcg_out32(s, INSN_VDUP_G | (b << 22) | (q << 21) | (e << 5) | - encode_vn(rd) | (rs << 12)); - } else { - int imm4 =3D 1 << vece; - tcg_out32(s, INSN_VDUP_S | (imm4 << 16) | (q << 6) | - encode_vd(rd) | encode_vm(rs)); - } - return true; -} - -static bool tcg_out_dupm_vec(TCGContext *s, TCGType type, unsigned vece, - TCGReg rd, TCGReg base, intptr_t offset) -{ - if (vece =3D=3D MO_64) { - tcg_out_ld(s, TCG_TYPE_V64, rd, base, offset); - if (type =3D=3D TCG_TYPE_V128) { - tcg_out_dup2_vec(s, rd, rd, rd); - } - } else { - int q =3D type - TCG_TYPE_V64; - tcg_out_vldst(s, INSN_VLD1R | (vece << 6) | (q << 5), - rd, base, offset); - } - return true; -} - -static void tcg_out_dupi_vec(TCGContext *s, TCGType type, unsigned vece, - TCGReg rd, int64_t v64) -{ - int q =3D type - TCG_TYPE_V64; - int cmode, imm8, i; - - /* Test all bytes equal first. */ - if (vece =3D=3D MO_8) { - tcg_out_vmovi(s, rd, q, 0, 0xe, v64); - return; - } - - /* - * Test all bytes 0x00 or 0xff second. This can match cases that - * might otherwise take 2 or 3 insns for MO_16 or MO_32 below. - */ - for (i =3D imm8 =3D 0; i < 8; i++) { - uint8_t byte =3D v64 >> (i * 8); - if (byte =3D=3D 0xff) { - imm8 |=3D 1 << i; - } else if (byte !=3D 0) { - goto fail_bytes; - } - } - tcg_out_vmovi(s, rd, q, 1, 0xe, imm8); - return; - fail_bytes: - - /* - * Tests for various replications. For each element width, if we - * cannot find an expansion there's no point checking a larger - * width because we already know by replication it cannot match. - */ - if (vece =3D=3D MO_16) { - uint16_t v16 =3D v64; - - if (is_shimm16(v16, &cmode, &imm8)) { - tcg_out_vmovi(s, rd, q, 0, cmode, imm8); - return; - } - if (is_shimm16(~v16, &cmode, &imm8)) { - tcg_out_vmovi(s, rd, q, 1, cmode, imm8); - return; - } - - /* - * Otherwise, all remaining constants can be loaded in two insns: - * rd =3D v16 & 0xff, rd |=3D v16 & 0xff00. - */ - tcg_out_vmovi(s, rd, q, 0, 0x8, v16 & 0xff); - tcg_out_vmovi(s, rd, q, 0, 0xb, v16 >> 8); /* VORRI */ - return; - } - - if (vece =3D=3D MO_32) { - uint32_t v32 =3D v64; - - if (is_shimm32(v32, &cmode, &imm8) || - is_soimm32(v32, &cmode, &imm8)) { - tcg_out_vmovi(s, rd, q, 0, cmode, imm8); - return; - } - if (is_shimm32(~v32, &cmode, &imm8) || - is_soimm32(~v32, &cmode, &imm8)) { - tcg_out_vmovi(s, rd, q, 1, cmode, imm8); - return; - } - - /* - * Restrict the set of constants to those we can load with - * two instructions. Others we load from the pool. - */ - i =3D is_shimm32_pair(v32, &cmode, &imm8); - if (i) { - tcg_out_vmovi(s, rd, q, 0, cmode, imm8); - tcg_out_vmovi(s, rd, q, 0, i | 1, extract32(v32, i * 4, 8)); - return; - } - i =3D is_shimm32_pair(~v32, &cmode, &imm8); - if (i) { - tcg_out_vmovi(s, rd, q, 1, cmode, imm8); - tcg_out_vmovi(s, rd, q, 1, i | 1, extract32(~v32, i * 4, 8)); - return; - } - } - - /* - * As a last resort, load from the constant pool. - */ - if (!q || vece =3D=3D MO_64) { - new_pool_l2(s, R_ARM_PC11, s->code_ptr, 0, v64, v64 >> 32); - /* VLDR Dd, [pc + offset] */ - tcg_out32(s, INSN_VLDR_D | encode_vd(rd) | (0xf << 16)); - if (q) { - tcg_out_dup2_vec(s, rd, rd, rd); - } - } else { - new_pool_label(s, (uint32_t)v64, R_ARM_PC8, s->code_ptr, 0); - /* add tmp, pc, offset */ - tcg_out_dat_imm(s, COND_AL, ARITH_ADD, TCG_REG_TMP, TCG_REG_PC, 0); - tcg_out_dupm_vec(s, type, MO_32, rd, TCG_REG_TMP, 0); - } -} - -static const ARMInsn vec_cmp_insn[16] =3D { - [TCG_COND_EQ] =3D INSN_VCEQ, - [TCG_COND_GT] =3D INSN_VCGT, - [TCG_COND_GE] =3D INSN_VCGE, - [TCG_COND_GTU] =3D INSN_VCGT_U, - [TCG_COND_GEU] =3D INSN_VCGE_U, -}; - -static const ARMInsn vec_cmp0_insn[16] =3D { - [TCG_COND_EQ] =3D INSN_VCEQ0, - [TCG_COND_GT] =3D INSN_VCGT0, - [TCG_COND_GE] =3D INSN_VCGE0, - [TCG_COND_LT] =3D INSN_VCLT0, - [TCG_COND_LE] =3D INSN_VCLE0, -}; - -static void tcg_out_vec_op(TCGContext *s, TCGOpcode opc, - unsigned vecl, unsigned vece, - const TCGArg args[TCG_MAX_OP_ARGS], - const int const_args[TCG_MAX_OP_ARGS]) -{ - TCGType type =3D vecl + TCG_TYPE_V64; - unsigned q =3D vecl; - TCGArg a0, a1, a2, a3; - int cmode, imm8; - - a0 =3D args[0]; - a1 =3D args[1]; - a2 =3D args[2]; - - switch (opc) { - case INDEX_op_ld_vec: - tcg_out_ld(s, type, a0, a1, a2); - return; - case INDEX_op_st_vec: - tcg_out_st(s, type, a0, a1, a2); - return; - case INDEX_op_dupm_vec: - tcg_out_dupm_vec(s, type, vece, a0, a1, a2); - return; - case INDEX_op_dup2_vec: - tcg_out_dup2_vec(s, a0, a1, a2); - return; - case INDEX_op_abs_vec: - tcg_out_vreg2(s, INSN_VABS, q, vece, a0, a1); - return; - case INDEX_op_neg_vec: - tcg_out_vreg2(s, INSN_VNEG, q, vece, a0, a1); - return; - case INDEX_op_not_vec: - tcg_out_vreg2(s, INSN_VMVN, q, 0, a0, a1); - return; - case INDEX_op_add_vec: - tcg_out_vreg3(s, INSN_VADD, q, vece, a0, a1, a2); - return; - case INDEX_op_mul_vec: - tcg_out_vreg3(s, INSN_VMUL, q, vece, a0, a1, a2); - return; - case INDEX_op_smax_vec: - tcg_out_vreg3(s, INSN_VMAX, q, vece, a0, a1, a2); - return; - case INDEX_op_smin_vec: - tcg_out_vreg3(s, INSN_VMIN, q, vece, a0, a1, a2); - return; - case INDEX_op_sub_vec: - tcg_out_vreg3(s, INSN_VSUB, q, vece, a0, a1, a2); - return; - case INDEX_op_ssadd_vec: - tcg_out_vreg3(s, INSN_VQADD, q, vece, a0, a1, a2); - return; - case INDEX_op_sssub_vec: - tcg_out_vreg3(s, INSN_VQSUB, q, vece, a0, a1, a2); - return; - case INDEX_op_umax_vec: - tcg_out_vreg3(s, INSN_VMAX_U, q, vece, a0, a1, a2); - return; - case INDEX_op_umin_vec: - tcg_out_vreg3(s, INSN_VMIN_U, q, vece, a0, a1, a2); - return; - case INDEX_op_usadd_vec: - tcg_out_vreg3(s, INSN_VQADD_U, q, vece, a0, a1, a2); - return; - case INDEX_op_ussub_vec: - tcg_out_vreg3(s, INSN_VQSUB_U, q, vece, a0, a1, a2); - return; - case INDEX_op_xor_vec: - tcg_out_vreg3(s, INSN_VEOR, q, 0, a0, a1, a2); - return; - case INDEX_op_arm_sshl_vec: - /* - * Note that Vm is the data and Vn is the shift count, - * therefore the arguments appear reversed. - */ - tcg_out_vreg3(s, INSN_VSHL_S, q, vece, a0, a2, a1); - return; - case INDEX_op_arm_ushl_vec: - /* See above. */ - tcg_out_vreg3(s, INSN_VSHL_U, q, vece, a0, a2, a1); - return; - case INDEX_op_shli_vec: - tcg_out_vshifti(s, INSN_VSHLI, q, a0, a1, a2 + (8 << vece)); - return; - case INDEX_op_shri_vec: - tcg_out_vshifti(s, INSN_VSHRI, q, a0, a1, (16 << vece) - a2); - return; - case INDEX_op_sari_vec: - tcg_out_vshifti(s, INSN_VSARI, q, a0, a1, (16 << vece) - a2); - return; - case INDEX_op_arm_sli_vec: - tcg_out_vshifti(s, INSN_VSLI, q, a0, a2, args[3] + (8 << vece)); - return; - - case INDEX_op_andc_vec: - if (!const_args[2]) { - tcg_out_vreg3(s, INSN_VBIC, q, 0, a0, a1, a2); - return; - } - a2 =3D ~a2; - /* fall through */ - case INDEX_op_and_vec: - if (const_args[2]) { - is_shimm1632(~a2, &cmode, &imm8); - if (a0 =3D=3D a1) { - tcg_out_vmovi(s, a0, q, 1, cmode | 1, imm8); /* VBICI */ - return; - } - tcg_out_vmovi(s, a0, q, 1, cmode, imm8); /* VMVNI */ - a2 =3D a0; - } - tcg_out_vreg3(s, INSN_VAND, q, 0, a0, a1, a2); - return; - - case INDEX_op_orc_vec: - if (!const_args[2]) { - tcg_out_vreg3(s, INSN_VORN, q, 0, a0, a1, a2); - return; - } - a2 =3D ~a2; - /* fall through */ - case INDEX_op_or_vec: - if (const_args[2]) { - is_shimm1632(a2, &cmode, &imm8); - if (a0 =3D=3D a1) { - tcg_out_vmovi(s, a0, q, 0, cmode | 1, imm8); /* VORRI */ - return; - } - tcg_out_vmovi(s, a0, q, 0, cmode, imm8); /* VMOVI */ - a2 =3D a0; - } - tcg_out_vreg3(s, INSN_VORR, q, 0, a0, a1, a2); - return; - - case INDEX_op_cmp_vec: - { - TCGCond cond =3D args[3]; - ARMInsn insn; - - switch (cond) { - case TCG_COND_NE: - if (const_args[2]) { - tcg_out_vreg3(s, INSN_VTST, q, vece, a0, a1, a1); - } else { - tcg_out_vreg3(s, INSN_VCEQ, q, vece, a0, a1, a2); - tcg_out_vreg2(s, INSN_VMVN, q, 0, a0, a0); - } - break; - - case TCG_COND_TSTNE: - case TCG_COND_TSTEQ: - if (const_args[2]) { - /* (x & 0) =3D=3D 0 */ - tcg_out_dupi_vec(s, type, MO_8, a0, - -(cond =3D=3D TCG_COND_TSTEQ)); - break; - } - tcg_out_vreg3(s, INSN_VTST, q, vece, a0, a1, a2); - if (cond =3D=3D TCG_COND_TSTEQ) { - tcg_out_vreg2(s, INSN_VMVN, q, 0, a0, a0); - } - break; - - default: - if (const_args[2]) { - insn =3D vec_cmp0_insn[cond]; - if (insn) { - tcg_out_vreg2(s, insn, q, vece, a0, a1); - return; - } - tcg_out_dupi_vec(s, type, MO_8, TCG_VEC_TMP, 0); - a2 =3D TCG_VEC_TMP; - } - insn =3D vec_cmp_insn[cond]; - if (insn =3D=3D 0) { - TCGArg t; - t =3D a1, a1 =3D a2, a2 =3D t; - cond =3D tcg_swap_cond(cond); - insn =3D vec_cmp_insn[cond]; - tcg_debug_assert(insn !=3D 0); - } - tcg_out_vreg3(s, insn, q, vece, a0, a1, a2); - break; - } - } - return; - - case INDEX_op_bitsel_vec: - a3 =3D args[3]; - if (a0 =3D=3D a3) { - tcg_out_vreg3(s, INSN_VBIT, q, 0, a0, a2, a1); - } else if (a0 =3D=3D a2) { - tcg_out_vreg3(s, INSN_VBIF, q, 0, a0, a3, a1); - } else { - tcg_out_mov(s, type, a0, a1); - tcg_out_vreg3(s, INSN_VBSL, q, 0, a0, a2, a3); - } - return; - - case INDEX_op_mov_vec: /* Always emitted via tcg_out_mov. */ - case INDEX_op_dup_vec: /* Always emitted via tcg_out_dup_vec. */ - default: - g_assert_not_reached(); - } -} - -int tcg_can_emit_vec_op(TCGOpcode opc, TCGType type, unsigned vece) -{ - switch (opc) { - case INDEX_op_add_vec: - case INDEX_op_sub_vec: - case INDEX_op_and_vec: - case INDEX_op_andc_vec: - case INDEX_op_or_vec: - case INDEX_op_orc_vec: - case INDEX_op_xor_vec: - case INDEX_op_not_vec: - case INDEX_op_shli_vec: - case INDEX_op_shri_vec: - case INDEX_op_sari_vec: - case INDEX_op_ssadd_vec: - case INDEX_op_sssub_vec: - case INDEX_op_usadd_vec: - case INDEX_op_ussub_vec: - case INDEX_op_bitsel_vec: - return 1; - case INDEX_op_abs_vec: - case INDEX_op_cmp_vec: - case INDEX_op_mul_vec: - case INDEX_op_neg_vec: - case INDEX_op_smax_vec: - case INDEX_op_smin_vec: - case INDEX_op_umax_vec: - case INDEX_op_umin_vec: - return vece < MO_64; - case INDEX_op_shlv_vec: - case INDEX_op_shrv_vec: - case INDEX_op_sarv_vec: - case INDEX_op_rotli_vec: - case INDEX_op_rotlv_vec: - case INDEX_op_rotrv_vec: - return -1; - default: - return 0; - } -} - -void tcg_expand_vec_op(TCGOpcode opc, TCGType type, unsigned vece, - TCGArg a0, ...) -{ - va_list va; - TCGv_vec v0, v1, v2, t1, t2, c1; - TCGArg a2; - - va_start(va, a0); - v0 =3D temp_tcgv_vec(arg_temp(a0)); - v1 =3D temp_tcgv_vec(arg_temp(va_arg(va, TCGArg))); - a2 =3D va_arg(va, TCGArg); - va_end(va); - - switch (opc) { - case INDEX_op_shlv_vec: - /* - * Merely propagate shlv_vec to arm_ushl_vec. - * In this way we don't set TCG_TARGET_HAS_shv_vec - * because everything is done via expansion. - */ - v2 =3D temp_tcgv_vec(arg_temp(a2)); - vec_gen_3(INDEX_op_arm_ushl_vec, type, vece, tcgv_vec_arg(v0), - tcgv_vec_arg(v1), tcgv_vec_arg(v2)); - break; - - case INDEX_op_shrv_vec: - case INDEX_op_sarv_vec: - /* Right shifts are negative left shifts for NEON. */ - v2 =3D temp_tcgv_vec(arg_temp(a2)); - t1 =3D tcg_temp_new_vec(type); - tcg_gen_neg_vec(vece, t1, v2); - if (opc =3D=3D INDEX_op_shrv_vec) { - opc =3D INDEX_op_arm_ushl_vec; - } else { - opc =3D INDEX_op_arm_sshl_vec; - } - vec_gen_3(opc, type, vece, tcgv_vec_arg(v0), - tcgv_vec_arg(v1), tcgv_vec_arg(t1)); - tcg_temp_free_vec(t1); - break; - - case INDEX_op_rotli_vec: - t1 =3D tcg_temp_new_vec(type); - tcg_gen_shri_vec(vece, t1, v1, -a2 & ((8 << vece) - 1)); - vec_gen_4(INDEX_op_arm_sli_vec, type, vece, - tcgv_vec_arg(v0), tcgv_vec_arg(t1), tcgv_vec_arg(v1), a2= ); - tcg_temp_free_vec(t1); - break; - - case INDEX_op_rotlv_vec: - v2 =3D temp_tcgv_vec(arg_temp(a2)); - t1 =3D tcg_temp_new_vec(type); - c1 =3D tcg_constant_vec(type, vece, 8 << vece); - tcg_gen_sub_vec(vece, t1, v2, c1); - /* Right shifts are negative left shifts for NEON. */ - vec_gen_3(INDEX_op_arm_ushl_vec, type, vece, tcgv_vec_arg(t1), - tcgv_vec_arg(v1), tcgv_vec_arg(t1)); - vec_gen_3(INDEX_op_arm_ushl_vec, type, vece, tcgv_vec_arg(v0), - tcgv_vec_arg(v1), tcgv_vec_arg(v2)); - tcg_gen_or_vec(vece, v0, v0, t1); - tcg_temp_free_vec(t1); - break; - - case INDEX_op_rotrv_vec: - v2 =3D temp_tcgv_vec(arg_temp(a2)); - t1 =3D tcg_temp_new_vec(type); - t2 =3D tcg_temp_new_vec(type); - c1 =3D tcg_constant_vec(type, vece, 8 << vece); - tcg_gen_neg_vec(vece, t1, v2); - tcg_gen_sub_vec(vece, t2, c1, v2); - /* Right shifts are negative left shifts for NEON. */ - vec_gen_3(INDEX_op_arm_ushl_vec, type, vece, tcgv_vec_arg(t1), - tcgv_vec_arg(v1), tcgv_vec_arg(t1)); - vec_gen_3(INDEX_op_arm_ushl_vec, type, vece, tcgv_vec_arg(t2), - tcgv_vec_arg(v1), tcgv_vec_arg(t2)); - tcg_gen_or_vec(vece, v0, t1, t2); - tcg_temp_free_vec(t1); - tcg_temp_free_vec(t2); - break; - - default: - g_assert_not_reached(); - } -} - -static void tcg_out_nop_fill(tcg_insn_unit *p, int count) -{ - int i; - for (i =3D 0; i < count; ++i) { - p[i] =3D INSN_NOP; - } -} - -/* Compute frame size via macros, to share between tcg_target_qemu_prologue - and tcg_register_jit. */ - -#define PUSH_SIZE ((11 - 4 + 1 + 1) * sizeof(tcg_target_long)) - -#define FRAME_SIZE \ - ((PUSH_SIZE \ - + TCG_STATIC_CALL_ARGS_SIZE \ - + CPU_TEMP_BUF_NLONGS * sizeof(long) \ - + TCG_TARGET_STACK_ALIGN - 1) \ - & -TCG_TARGET_STACK_ALIGN) - -#define STACK_ADDEND (FRAME_SIZE - PUSH_SIZE) - -static void tcg_target_qemu_prologue(TCGContext *s) -{ - /* Calling convention requires us to save r4-r11 and lr. */ - /* stmdb sp!, { r4 - r11, lr } */ - tcg_out_ldstm(s, COND_AL, INSN_STMDB, TCG_REG_CALL_STACK, - (1 << TCG_REG_R4) | (1 << TCG_REG_R5) | (1 << TCG_REG_R6= ) | - (1 << TCG_REG_R7) | (1 << TCG_REG_R8) | (1 << TCG_REG_R9= ) | - (1 << TCG_REG_R10) | (1 << TCG_REG_R11) | (1 << TCG_REG_= R14)); - - /* Reserve callee argument and tcg temp space. */ - tcg_out_dat_rI(s, COND_AL, ARITH_SUB, TCG_REG_CALL_STACK, - TCG_REG_CALL_STACK, STACK_ADDEND, 1); - tcg_set_frame(s, TCG_REG_CALL_STACK, TCG_STATIC_CALL_ARGS_SIZE, - CPU_TEMP_BUF_NLONGS * sizeof(long)); - - tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[0]); - - if (!tcg_use_softmmu && guest_base) { - tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_GUEST_BASE, guest_base); - tcg_regset_set_reg(s->reserved_regs, TCG_REG_GUEST_BASE); - } - - tcg_out_b_reg(s, COND_AL, tcg_target_call_iarg_regs[1]); - - /* - * Return path for goto_ptr. Set return value to 0, a-la exit_tb, - * and fall through to the rest of the epilogue. - */ - tcg_code_gen_epilogue =3D tcg_splitwx_to_rx(s->code_ptr); - tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R0, 0); - tcg_out_epilogue(s); -} - -static void tcg_out_epilogue(TCGContext *s) -{ - /* Release local stack frame. */ - tcg_out_dat_rI(s, COND_AL, ARITH_ADD, TCG_REG_CALL_STACK, - TCG_REG_CALL_STACK, STACK_ADDEND, 1); - - /* ldmia sp!, { r4 - r11, pc } */ - tcg_out_ldstm(s, COND_AL, INSN_LDMIA, TCG_REG_CALL_STACK, - (1 << TCG_REG_R4) | (1 << TCG_REG_R5) | (1 << TCG_REG_R6= ) | - (1 << TCG_REG_R7) | (1 << TCG_REG_R8) | (1 << TCG_REG_R9= ) | - (1 << TCG_REG_R10) | (1 << TCG_REG_R11) | (1 << TCG_REG_= PC)); -} - -static void tcg_out_tb_start(TCGContext *s) -{ - /* nothing to do */ -} - -typedef struct { - DebugFrameHeader h; - uint8_t fde_def_cfa[4]; - uint8_t fde_reg_ofs[18]; -} DebugFrame; - -#define ELF_HOST_MACHINE EM_ARM - -/* We're expecting a 2 byte uleb128 encoded value. */ -QEMU_BUILD_BUG_ON(FRAME_SIZE >=3D (1 << 14)); - -static const DebugFrame debug_frame =3D { - .h.cie.len =3D sizeof(DebugFrameCIE)-4, /* length after .len member */ - .h.cie.id =3D -1, - .h.cie.version =3D 1, - .h.cie.code_align =3D 1, - .h.cie.data_align =3D 0x7c, /* sleb128 -4 */ - .h.cie.return_column =3D 14, - - /* Total FDE size does not include the "len" member. */ - .h.fde.len =3D sizeof(DebugFrame) - offsetof(DebugFrame, h.fde.cie_off= set), - - .fde_def_cfa =3D { - 12, 13, /* DW_CFA_def_cfa sp, ... */ - (FRAME_SIZE & 0x7f) | 0x80, /* ... uleb128 FRAME_SIZE */ - (FRAME_SIZE >> 7) - }, - .fde_reg_ofs =3D { - /* The following must match the stmdb in the prologue. */ - 0x8e, 1, /* DW_CFA_offset, lr, -4 */ - 0x8b, 2, /* DW_CFA_offset, r11, -8 */ - 0x8a, 3, /* DW_CFA_offset, r10, -12 */ - 0x89, 4, /* DW_CFA_offset, r9, -16 */ - 0x88, 5, /* DW_CFA_offset, r8, -20 */ - 0x87, 6, /* DW_CFA_offset, r7, -24 */ - 0x86, 7, /* DW_CFA_offset, r6, -28 */ - 0x85, 8, /* DW_CFA_offset, r5, -32 */ - 0x84, 9, /* DW_CFA_offset, r4, -36 */ - } -}; - -void tcg_register_jit(const void *buf, size_t buf_size) -{ - tcg_register_jit_int(buf, buf_size, &debug_frame, sizeof(debug_frame)); -} --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534661; cv=none; d=zohomail.com; s=zohoarc; b=AFGxP5DVGfNdejP+ey3tfHn07pwGYvW1kSQWU+gZ0VVcd5V0F7AlDFU94dKHLy5svpHZbYDUD3ayLrR7aQppMMlVuylhfoP3btC+5mnArr9f+H0ohKxes5GLdOz5l4uzRTbA//ZG4UxsHAXc4jedSCgi/sqZs888HYLFhtNolfM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534661; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uE+wYKHRCm4cAdpr8PeyQJ3cJpbVlmgmPplftBLMyLA=; b=fc9TkURfMhNgxQIOfydqlkFOZdIDyGACUcsx631EB83ey4iL7IHyv+Jb38/GNZADGw2yKcHnPcEEL8LRcjUzwtGYUQmqRhwCfqP04nOXR9QrBq/DyLJrYnXIYDwsCDC1oqtU2+q7Udb+iNpsXTC+08szMrv1cTMZCY6v1xAOH44= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534661456989.7789396023264; Thu, 15 Jan 2026 19:37:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgab7-0005Hu-76; Thu, 15 Jan 2026 22:34:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgab5-0005FA-Bs for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:03 -0500 Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgab3-0005V0-Ls for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:03 -0500 Received: by mail-pf1-x444.google.com with SMTP id d2e1a72fcca58-81dbc0a99d2so814441b3a.1 for ; Thu, 15 Jan 2026 19:34:01 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.33.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:33:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534440; x=1769139240; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uE+wYKHRCm4cAdpr8PeyQJ3cJpbVlmgmPplftBLMyLA=; b=m/V5/mxNsnMfNPq/uvBgYhe9czh+LTTSEXVwr1z0WJHOsFasMT68vOD9JObQTa/5JX LciV99uQ3hAAfRSKSi7gl9h28N04jpfWEw+FWdq/PTZ8sR/r9TBm9jCVUX0Bem60ZL4S mqBRJHj+zz6WBWNMLHymcUPllxxNWiDELzQ91K8oCD73kzPTZ4B9V4WvhdatxdawNJYZ NEIVlExGB6tkajqjWvfeTqlB+3oVcB/M9cnM+Z1dgO8PbrS0uSboUWb7ol6P9pI153Nl DlWRpXXS2JF36TVQ51+XoR4/oaV2xVC1febJt9JZdq7JJXzCQ/smcIH8XmY1/Mvijk13 vkKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534440; x=1769139240; 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; bh=uE+wYKHRCm4cAdpr8PeyQJ3cJpbVlmgmPplftBLMyLA=; b=vGCHb3Wdhr4C+8w+xaCvLVHW4Eziy/PB3hAqkWkigVy0d/Rjl3mVxeUcP01ZOfZ2Vj u0Bm/1sIQb1Dn/Ywm22zyGOIH9zlZctzUjJqAnJaDBxBfQ+0tmIlndYLMfwg9g7+nmZd Rfoug95sZ5Q0eDZbTKZ2pfDd6rtBXludWNVvsCfmgMAVeUUAo3rCQmg8IoRqScdS+X+4 DFWtMkAlxUOQI9RMHZJ5Qn+W6ZvqD5su2Og9ZbBujbLVOpuY1SDEudUwlzHd1Zoobsf+ iTh1yZ/VmXw6GVWbug15IDQGof6K21Ci+ZcmxJ9hjVkXUzUr14L8XtDucsVqijH1pK+c VuLw== X-Gm-Message-State: AOJu0Yy7HF789eG+Y4QNSXoBT/vLGhkTn7f9rzpBoyylBTlpfzdJMFUF tLc9Xt7dHCZRgVNsqQjKvpClqmr24zgLrbKKJHgI5aA6SdYwq1BQi/iGi4igsooPTKNo543he8b 9ezhusuZnsUlI X-Gm-Gg: AY/fxX6T74QMmrh2Jo/fq5P9buoOtFKP8C8CnN5kd0zmpbys/atLBKCFuYmdmFNBZV2 rBipNDdKxhVUlEESsp6ZJ5p4wkPXUWnDZYhJDZcqPAd8M2B+LQbZDtxh5YAhYYsosa5kSo6ERCp rKRvgkHTZ7+xGy2oscz64vIPkCqEpoNuSdd8zLybxmDx7o4dbg9bNc/skB6CLZc2n/LxbePj61X k0hcIi3Fp3lZ9IljOLqWnH+gOi8RQmJfqeO0DQxW9rXodisx6lBBPZk+XyEWd3ZJw1hasXIbcoS DFXgcHt+q8J0L8NfYm9KTPwMHh+Qa94G023C9fsgMQ/LJPIst5dtN5/TiT+H6JF9mJdVNSo2jmQ H4VuuP3RrabDwNWO5+81Z0Vg8ZKzkzOKiODbGdaTkSnGEx67TjKyG/Nz1x5rkiHfX4qa3d4dIQW dTZxDTIm6mcH2d/z3Fy1VTPaH0dnjq X-Received: by 2002:a05:6a00:340c:b0:81f:9913:5438 with SMTP id d2e1a72fcca58-81fa0385979mr1753349b3a.59.1768534440052; Thu, 15 Jan 2026 19:34:00 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org, Warner Losh , Kyle Evans Subject: [PATCH v2 11/58] bsd-user: Fix __i386__ test for TARGET_HAS_STAT_TIME_T_EXT Date: Fri, 16 Jan 2026 14:32:17 +1100 Message-ID: <20260116033305.51162-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::444; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x444.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534662081158500 The target test is TARGET_I386, not __i386__. Cc: Warner Losh Cc: Kyle Evans Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Reviewed-by: Warner Losh --- bsd-user/syscall_defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsd-user/syscall_defs.h b/bsd-user/syscall_defs.h index 52f84d5dd1..c49be32bdc 100644 --- a/bsd-user/syscall_defs.h +++ b/bsd-user/syscall_defs.h @@ -247,7 +247,7 @@ struct target_freebsd11_stat { unsigned int:(8 / 2) * (16 - (int)sizeof(struct target_freebsd_timespe= c)); } __packed; =20 -#if defined(__i386__) +#if defined(TARGET_I386) #define TARGET_HAS_STAT_TIME_T_EXT 1 #endif =20 --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534488; cv=none; d=zohomail.com; s=zohoarc; b=f4eYZqEANN77iHsPPufp5fflvmIXhnXENGxvWXuat9dPrCffPBXERrRZfVkfnGgetqYwus+ND+7iZqd+f/5GNXBq8tnEhXMwOOfR/v9QVQWLEs0+ZJ9/B8e3Uts/mxLMtRE41chbMJNWqmmJFI3dN8wKy2GsjgrYTV0d2oJWITc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534488; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UDkM7uIkvNm6fLdpIQ/hnja2LnP7PMDxeJXBu7Pf1iw=; b=lwBGefvAxo/m8gPMBQG5dj78VkKCXivGUX/Gg24g4cN0VdN2cazIcVAvpDU8PPlvuu8Gq0/Lxcx4BeeYeSQrKcYsSnqozAW2oYuoZ0+alqGWWAp7VmUdXKRFzBbKq8ekKTNjW7OsX8ey+pCLhn4WRUrf1cbFDUBa/4UFZUGsoss= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534488418454.2463216195199; Thu, 15 Jan 2026 19:34:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabA-0005JC-E3; Thu, 15 Jan 2026 22:34:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgab9-0005Il-7r for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:07 -0500 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgab7-0005Wy-CG for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:06 -0500 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-ba599137cf8so555641a12.0 for ; Thu, 15 Jan 2026 19:34:05 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534444; x=1769139244; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UDkM7uIkvNm6fLdpIQ/hnja2LnP7PMDxeJXBu7Pf1iw=; b=hDKpu1UaPTXKZwELIyb5s9KOq6vA9U5wDwwDIxx5IE/epu8ttLicTs0eMWBP8DqRki vHxFkxz0yR3WoO2aLa6/RLkZPBEQpsCVoHQBnZKL++ifst/Zf+prDBm0nkkMerjXSrl3 iyKQ8eevKGyS3Gf8Qip+6lsB9OlCDR+MZ2piq+PHVay/Pk4ZunVJ63SZyEUfOPNkNHhO vI7+PVTp3Df6VkL7XdkcnD+84u/eZgQEWnrkxLOu1FF4HxQhyfdfOgk5QucNpSSL/tCH vKzRcjr2U+u1y54uYNKEsoKOi69Nnen/k6hfeqmzPBXWp7j2N3i6ymRhSHKEv8n7wbmi n2tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534444; x=1769139244; 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; bh=UDkM7uIkvNm6fLdpIQ/hnja2LnP7PMDxeJXBu7Pf1iw=; b=QHw0fO4kUHObiZGTWSWR0aQAI/Az1E5cTUiRl7smTqo+wimALz6Z9P75yfl4rx6VKE krZxm9JAn/zr9zSt5OHLztZvP22/Z+e1an5QdZrqt2K72QyC6NmDXtGbdontdmbo9Do1 w6Ml+diKffIimcrMFaIn7/GfAy5V8t06lwEf3EqQnPRd5EhqoI00QWkwZ58Jz9rk21AF 3+83lBuMNJei72wI4zZ9+ZrpnisfpBQLE3FYjDcFAuB8qsJwaMvgvZGs0m0YDWU/x8LG jk2ZGkbquBkhHUul2OVAOEyXQQ9Ffbo6M8kFG6y1rLspJsUzx2G4lv+P7XvmxMqZxDoU MS0Q== X-Gm-Message-State: AOJu0Yx+/3rRO4AikrcB3UhldWr4hLChpqCR3jNZWaxlEKiQHZaOwZB5 VyFrhSgBJlh8GK+63LJk6u+4XO/PZc19Y7PKzxd401I3QYS+crFQdNuPvcbC/7ERtaxWSLaP/8n JCnp289mzsA== X-Gm-Gg: AY/fxX7++bW3nSWcxpCZEpA0j44TO2GPe/11Ze5ZEkNQq2K93ZnQlT0aQGbncmmv3GA +gmGrDDrQdGcQAgG7LbHpaI0/Q8xcwOqaGku4H1BOAPFefTJI9Ji1QgvsIxcRT2AdVlgbqVmFRg rbYhusdrGgXV8qs4PyWLj2SP7ouwowyQoRInM6956OV2BzgKlvMFPaSqF+61RDtWTeZ7KP5Nqz7 4zdzU20qqKpodAiNucF9nENS4UYPJbcJ1v4cbMtM3yNJ4n3T08fmtzxb6jPqV8TRwk7yDuhMC5r 78PTPXbOtyJJQymHVaIbk/5FmlMnAGqkx3ohtOR5EIdkOv2MIpjE3HD3AJk5oCMc+RKTeIVRFF9 7NofiorJsoNFH/3riUr7x95pmklKSR4gQwjdFDZbCrf2pghbYk4hTsb0s8bVsFeSxAm4BUvmmoX FzDr39O0RGZKbwOFrppA== X-Received: by 2002:a17:90b:4cc2:b0:32e:3592:581a with SMTP id 98e67ed59e1d1-35272ce863bmr1430473a91.17.1768534443919; Thu, 15 Jan 2026 19:34:03 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 12/58] *: Remove __i386__ tests Date: Fri, 16 Jan 2026 14:32:18 +1100 Message-ID: <20260116033305.51162-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534489473158500 Content-Type: text/plain; charset="utf-8" Remove instances of __i386__, except from tests and imported headers. Drop a block containing sanity check and fprintf error message for i386-on-i386 or x86_64-on-x86_64 emulation. If we really want something like this, we would do it via some form of compile-time check. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/qemu/atomic.h | 4 ++-- include/qemu/cacheflush.h | 2 +- include/qemu/osdep.h | 4 +--- include/qemu/processor.h | 2 +- include/qemu/timer.h | 9 --------- tcg/tci/tcg-target-mo.h | 2 +- accel/kvm/kvm-all.c | 2 +- disas/disas-host.c | 6 ------ hw/display/xenfb.c | 10 +--------- linux-user/syscall.c | 9 --------- target/i386/cpu.c | 10 ---------- util/cacheflush.c | 2 +- configure | 2 -- 13 files changed, 9 insertions(+), 55 deletions(-) diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h index f80cba24cf..c39dc99f2f 100644 --- a/include/qemu/atomic.h +++ b/include/qemu/atomic.h @@ -204,7 +204,7 @@ * the same semantics. */ #if !defined(QEMU_SANITIZE_THREAD) && \ - (defined(__i386__) || defined(__x86_64__) || defined(__s390x__)) + (defined(__x86_64__) || defined(__s390x__)) # define smp_mb__before_rmw() signal_barrier() # define smp_mb__after_rmw() signal_barrier() #else @@ -218,7 +218,7 @@ */ =20 #if !defined(QEMU_SANITIZE_THREAD) && \ - (defined(__i386__) || defined(__x86_64__) || defined(__s390x__)) + (defined(__x86_64__) || defined(__s390x__)) # define qatomic_set_mb(ptr, i) \ ({ (void)qatomic_xchg(ptr, i); smp_mb__after_rmw(); }) #else diff --git a/include/qemu/cacheflush.h b/include/qemu/cacheflush.h index 76eb55d818..8c64b87814 100644 --- a/include/qemu/cacheflush.h +++ b/include/qemu/cacheflush.h @@ -19,7 +19,7 @@ * mappings of the same physical page(s). */ =20 -#if defined(__i386__) || defined(__x86_64__) || defined(__s390__) +#if defined(__x86_64__) || defined(__s390__) =20 static inline void flush_idcache_range(uintptr_t rx, uintptr_t rw, size_t = len) { diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 4cdeda0b9c..b384b5b506 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -637,9 +637,7 @@ bool qemu_has_ofd_lock(void); =20 bool qemu_has_direct_io(void); =20 -#if defined(__HAIKU__) && defined(__i386__) -#define FMT_pid "%ld" -#elif defined(WIN64) +#ifdef WIN64 #define FMT_pid "%" PRId64 #else #define FMT_pid "%d" diff --git a/include/qemu/processor.h b/include/qemu/processor.h index 9f0dcdf28f..95b3262f8b 100644 --- a/include/qemu/processor.h +++ b/include/qemu/processor.h @@ -7,7 +7,7 @@ #ifndef QEMU_PROCESSOR_H #define QEMU_PROCESSOR_H =20 -#if defined(__i386__) || defined(__x86_64__) +#if defined(__x86_64__) # define cpu_relax() asm volatile("rep; nop" ::: "memory") =20 #elif defined(__aarch64__) diff --git a/include/qemu/timer.h b/include/qemu/timer.h index 8b561cd696..7c18da1652 100644 --- a/include/qemu/timer.h +++ b/include/qemu/timer.h @@ -866,15 +866,6 @@ static inline int64_t cpu_get_host_ticks(void) return retval; } =20 -#elif defined(__i386__) - -static inline int64_t cpu_get_host_ticks(void) -{ - int64_t val; - asm volatile ("rdtsc" : "=3DA" (val)); - return val; -} - #elif defined(__x86_64__) =20 static inline int64_t cpu_get_host_ticks(void) diff --git a/tcg/tci/tcg-target-mo.h b/tcg/tci/tcg-target-mo.h index 779872e39a..b5b389dafc 100644 --- a/tcg/tci/tcg-target-mo.h +++ b/tcg/tci/tcg-target-mo.h @@ -8,7 +8,7 @@ #define TCG_TARGET_MO_H =20 /* - * We could notice __i386__ or __s390x__ and reduce the barriers depending + * We could notice __x86_64__ or __s390x__ and reduce the barriers dependi= ng * on the host. But if you want performance, you use the normal backend. * We prefer consistency across hosts on this. */ diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index f85eb42d78..8301a512e7 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -61,7 +61,7 @@ #include #endif =20 -#if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) +#if defined(__x86_64__) || defined(__aarch64__) # define KVM_HAVE_MCE_INJECTION 1 #endif =20 diff --git a/disas/disas-host.c b/disas/disas-host.c index 88e7d8800c..7cf432938e 100644 --- a/disas/disas-host.c +++ b/disas/disas-host.c @@ -44,12 +44,6 @@ static void initialize_debug_host(CPUDebug *s) #endif #if defined(CONFIG_TCG_INTERPRETER) s->info.print_insn =3D print_insn_tci; -#elif defined(__i386__) - s->info.mach =3D bfd_mach_i386_i386; - s->info.cap_arch =3D CS_ARCH_X86; - s->info.cap_mode =3D CS_MODE_32; - s->info.cap_insn_unit =3D 1; - s->info.cap_insn_split =3D 8; #elif defined(__x86_64__) s->info.mach =3D bfd_mach_x86_64; s->info.cap_arch =3D CS_ARCH_X86; diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index 164fd0b248..ba886a940e 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -459,10 +459,7 @@ static int xenfb_map_fb(struct XenFB *xenfb) */ uint32_t *ptr32 =3D NULL; uint32_t *ptr64 =3D NULL; -#if defined(__i386__) - ptr32 =3D (void*)page->pd; - ptr64 =3D ((void*)page->pd) + 4; -#elif defined(__x86_64__) +#if defined(__x86_64__) ptr32 =3D ((void*)page->pd) - 4; ptr64 =3D (void*)page->pd; #endif @@ -480,11 +477,6 @@ static int xenfb_map_fb(struct XenFB *xenfb) /* 64bit dom0, 32bit domU */ mode =3D 32; pd =3D ((void*)page->pd) - 4; -#elif defined(__i386__) - } else if (strcmp(protocol, XEN_IO_PROTO_ABI_X86_64) =3D=3D 0) { - /* 32bit dom0, 64bit domU */ - mode =3D 64; - pd =3D ((void*)page->pd) + 4; #endif } =20 diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 67ad681098..3601715769 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7452,15 +7452,6 @@ void syscall_init(void) ~(TARGET_IOC_SIZEMASK << TARGET_IOC_SIZESHIF= T)) | (size << TARGET_IOC_SIZESHIFT); } - - /* automatic consistency check if same arch */ -#if (defined(__i386__) && defined(TARGET_I386) && defined(TARGET_ABI32)) |= | \ - (defined(__x86_64__) && defined(TARGET_X86_64)) - if (unlikely(ie->target_cmd !=3D ie->host_cmd)) { - fprintf(stderr, "ERROR: ioctl(%s): target=3D0x%x host=3D0x%x\n= ", - ie->name, ie->target_cmd, ie->host_cmd); - } -#endif ie++; } } diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 37803cd724..0b8cca7cec 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2251,16 +2251,6 @@ void host_cpuid(uint32_t function, uint32_t count, : "=3Da"(vec[0]), "=3Db"(vec[1]), "=3Dc"(vec[2]), "=3Dd"(vec[3]) : "0"(function), "c"(count) : "cc"); -#elif defined(__i386__) - asm volatile("pusha \n\t" - "cpuid \n\t" - "mov %%eax, 0(%2) \n\t" - "mov %%ebx, 4(%2) \n\t" - "mov %%ecx, 8(%2) \n\t" - "mov %%edx, 12(%2) \n\t" - "popa" - : : "a"(function), "c"(count), "S"(vec) - : "memory", "cc"); #else abort(); #endif diff --git a/util/cacheflush.c b/util/cacheflush.c index 69c9614e2c..99221a409f 100644 --- a/util/cacheflush.c +++ b/util/cacheflush.c @@ -225,7 +225,7 @@ static void __attribute__((constructor)) init_cache_inf= o(void) * Architecture (+ OS) specific cache flushing mechanisms. */ =20 -#if defined(__i386__) || defined(__x86_64__) || defined(__s390__) +#if defined(__x86_64__) || defined(__s390__) =20 /* Caches are coherent and do not require flushing; symbol inline. */ =20 diff --git a/configure b/configure index 0742f1212d..de0f3a8ebe 100755 --- a/configure +++ b/configure @@ -382,8 +382,6 @@ fi if test ! -z "$cpu" ; then # command line argument : -elif check_define __i386__ ; then - cpu=3D"i386" elif check_define __x86_64__ ; then if check_define __ILP32__ ; then cpu=3D"x32" --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534474; cv=none; d=zohomail.com; s=zohoarc; b=fleCmaLj+028L74Ns6I7fawFiR5YHTHNWHNApMLAgIkCE12/0ou+NVnbEhvYK1CDe8NBjtQNk/hpCKITLaPU2N1AjCbxOBLlS3F8XVj1h8IiPlRiaqxALQtouPYdai9Qf59PPU/7yBEosjbsD80Bysm5ctekUK5keBDBfdhijlk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534474; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6cFvqZnBPLfXXQooWLNQYtz6n4/uznQ97AbDCdjuZ2I=; b=LH2ja61LLLy41BS/l9Bgk5X9Aa/FBY2lYPR/u1fHcm2erUZzceR6ROu4ZMvQ1Twm0aPfEeDC7JMv+L+n7cwmCKJIRDbWv08EVdMlj1PO3jAAPVGKmMgpEI6D9mHMNjD/54sm2w6mJ5deUIsIA2hZR3OGpN8xi8cbc2GpKR2/zPQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534474147344.4910288243299; Thu, 15 Jan 2026 19:34:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabG-0005UX-VI; Thu, 15 Jan 2026 22:34:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabE-0005Jl-Kf for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:12 -0500 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabB-0005Yo-H9 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:12 -0500 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-c1e4a9033abso883361a12.3 for ; Thu, 15 Jan 2026 19:34:09 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534448; x=1769139248; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6cFvqZnBPLfXXQooWLNQYtz6n4/uznQ97AbDCdjuZ2I=; b=AGbDS6051OSH8qhvCCwAUbbTaDj9vPdf/8H47U7pO9qvoY/3Op1IPzT+X+XHPmNhFh dmn7X7cFs/rUXdDPnITVQzFWbNS+cgz/JPqr+mi86OqT64lFLbd1hPrYbfLPgfD70pyj EpyAsij66gtPTasOanuCffEaVzgT1qy+H2DGkHy0a8wkiiQbLkKBnkyydPDRm2Dy7fXS B6VEHMkZkqV6WP2oI6Ig34AYUI7Ag165YCdegtAXRWHgmRam8PJbtVbsQMoQ0QpV0nEs GA2vp39xnMS6M6REZcFVcDotqKQFvPAKCHqTxq/cmsGTLbT0hVRXqF5wp2XUZiSmu4L4 4CCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534448; x=1769139248; 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; bh=6cFvqZnBPLfXXQooWLNQYtz6n4/uznQ97AbDCdjuZ2I=; b=uOq7h6QgyVSv8659c6Ffew6RFvXPaijSGA2b7W5yvyWD8vqkm3bdxUM/ruCBfw7EN3 cNGVI5T4E4LGR3p45kCzxOdMUlBgQYhx7sxG0tSvf/kcCmAil7LC2ZnrocdlkY55mzJh qiESdMC8zpz07SAq+Z/zZPgACXqQPznYV8sAMQ3mBinFOu8RQXqV2lrG8Cr5uaH/RLtq Me6VeoSYzRWQ3aMRBWIBBdj644c1wYBKXzdXm7f1IDVhcohXIhPoFeup+gGn0ddFxI7b 7K0nh0bHbj3aPJatbmoZyfDqD+QlKZIySY4cdnOLNydovdL6xkmSGCAbCxeJ3MPKXyvd wppg== X-Gm-Message-State: AOJu0Yw8wF0WAaXOtxvTFxshYQuCk6zESOtTjfWnriogNBlnKG6KROAE /x9VnZlpXoZNZMFNdBNItVkA5sBTy5B67OqWNBcbhO/DgHCpptt4gOsBORoDaAANUv81mW5vIZK acn3SnwJHwg== X-Gm-Gg: AY/fxX78pSwbt2dYCCaZLO2yJLfnT3qDpUv4TVRXdJcc8JrMNOCyIIyttpa10pxnQaw oV3QWYyZuDlRrku8OPmnF7KQjxcawZv9Ouj44eLBmWSe98lbnxeyMXhEomgJ1pMu+wNf/STt+DV x4fkweLrA4GrY+xsgTdXx7EIenFu2CtfaU6OyMQUcqBFofHAXizdyG/y4g/2yjQRNVm4TaqMMd+ L+uxqwQcwCu7pEJ4rTR2fjnvKblsmM6HUNRFF8o58TlzGV+OKsSrzQOh55tFnY5g5fqnz8SEoJg KURQOM/3gbtebOMabchbnBg1atDpgK3X/NuIp/ZNaLCIlEJcx6bllOIq9qKLc+TWoGuIDUQaY38 1unQp3D7lJ6F9oTUFmlIZNEjh7yVqksJTMxzQFlyT0FyXR0Jm8fAvee+Z0kMLC2k75CvTK32z8n Q36776lh9o452rXd2mGP3GYBk0f6b4 X-Received: by 2002:a05:6a20:d8a:b0:371:7fee:7497 with SMTP id adf61e73a8af0-38dfe7c8fbfmr1782000637.68.1768534447795; Thu, 15 Jan 2026 19:34:07 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 13/58] *: Remove i386 host support Date: Fri, 16 Jan 2026 14:32:19 +1100 Message-ID: <20260116033305.51162-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534475447158500 Content-Type: text/plain; charset="utf-8" Move the files from host/include/i386 to host/include/x86_64, replacing the stub headers that redirected to i386. Remove linux-user/include/host/i386. Remove common-user/host/i386. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- host/include/i386/host/cpuinfo.h | 41 ------ host/include/i386/host/crypto/aes-round.h | 152 ------------------- host/include/i386/host/crypto/clmul.h | 29 ---- host/include/x86_64/host/cpuinfo.h | 42 +++++- host/include/x86_64/host/crypto/aes-round.h | 153 +++++++++++++++++++- host/include/x86_64/host/crypto/clmul.h | 30 +++- linux-user/include/host/i386/host-signal.h | 38 ----- common-user/host/i386/safe-syscall.inc.S | 127 ---------------- host/include/i386/host/bufferiszero.c.inc | 125 ---------------- host/include/x86_64/host/bufferiszero.c.inc | 126 +++++++++++++++- 10 files changed, 347 insertions(+), 516 deletions(-) delete mode 100644 host/include/i386/host/cpuinfo.h delete mode 100644 host/include/i386/host/crypto/aes-round.h delete mode 100644 host/include/i386/host/crypto/clmul.h delete mode 100644 linux-user/include/host/i386/host-signal.h delete mode 100644 common-user/host/i386/safe-syscall.inc.S delete mode 100644 host/include/i386/host/bufferiszero.c.inc diff --git a/host/include/i386/host/cpuinfo.h b/host/include/i386/host/cpui= nfo.h deleted file mode 100644 index 93d029d499..0000000000 --- a/host/include/i386/host/cpuinfo.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-License-Identifier: GPL-2.0-or-later - * Host specific cpu identification for x86. - */ - -#ifndef HOST_CPUINFO_H -#define HOST_CPUINFO_H - -/* Digested version of */ - -#define CPUINFO_ALWAYS (1u << 0) /* so cpuinfo is nonzero */ -#define CPUINFO_OSXSAVE (1u << 1) -#define CPUINFO_MOVBE (1u << 2) -#define CPUINFO_LZCNT (1u << 3) -#define CPUINFO_POPCNT (1u << 4) -#define CPUINFO_BMI1 (1u << 5) -#define CPUINFO_BMI2 (1u << 6) -#define CPUINFO_SSE2 (1u << 7) -#define CPUINFO_AVX1 (1u << 9) -#define CPUINFO_AVX2 (1u << 10) -#define CPUINFO_AVX512F (1u << 11) -#define CPUINFO_AVX512VL (1u << 12) -#define CPUINFO_AVX512BW (1u << 13) -#define CPUINFO_AVX512DQ (1u << 14) -#define CPUINFO_AVX512VBMI2 (1u << 15) -#define CPUINFO_ATOMIC_VMOVDQA (1u << 16) -#define CPUINFO_ATOMIC_VMOVDQU (1u << 17) -#define CPUINFO_AES (1u << 18) -#define CPUINFO_PCLMUL (1u << 19) -#define CPUINFO_GFNI (1u << 20) - -/* Initialized with a constructor. */ -extern unsigned cpuinfo; - -/* - * We cannot rely on constructor ordering, so other constructors must - * use the function interface rather than the variable above. - */ -unsigned cpuinfo_init(void); - -#endif /* HOST_CPUINFO_H */ diff --git a/host/include/i386/host/crypto/aes-round.h b/host/include/i386/= host/crypto/aes-round.h deleted file mode 100644 index 59a64130f7..0000000000 --- a/host/include/i386/host/crypto/aes-round.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * x86 specific aes acceleration. - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#ifndef X86_HOST_CRYPTO_AES_ROUND_H -#define X86_HOST_CRYPTO_AES_ROUND_H - -#include "host/cpuinfo.h" -#include - -#if defined(__AES__) && defined(__SSSE3__) -# define HAVE_AES_ACCEL true -# define ATTR_AES_ACCEL -#else -# define HAVE_AES_ACCEL likely(cpuinfo & CPUINFO_AES) -# define ATTR_AES_ACCEL __attribute__((target("aes,ssse3"))) -#endif - -static inline __m128i ATTR_AES_ACCEL -aes_accel_bswap(__m128i x) -{ - return _mm_shuffle_epi8(x, _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15)); -} - -static inline void ATTR_AES_ACCEL -aesenc_MC_accel(AESState *ret, const AESState *st, bool be) -{ - __m128i t =3D (__m128i)st->v; - __m128i z =3D _mm_setzero_si128(); - - if (be) { - t =3D aes_accel_bswap(t); - t =3D _mm_aesdeclast_si128(t, z); - t =3D _mm_aesenc_si128(t, z); - t =3D aes_accel_bswap(t); - } else { - t =3D _mm_aesdeclast_si128(t, z); - t =3D _mm_aesenc_si128(t, z); - } - ret->v =3D (AESStateVec)t; -} - -static inline void ATTR_AES_ACCEL -aesenc_SB_SR_AK_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - __m128i t =3D (__m128i)st->v; - __m128i k =3D (__m128i)rk->v; - - if (be) { - t =3D aes_accel_bswap(t); - k =3D aes_accel_bswap(k); - t =3D _mm_aesenclast_si128(t, k); - t =3D aes_accel_bswap(t); - } else { - t =3D _mm_aesenclast_si128(t, k); - } - ret->v =3D (AESStateVec)t; -} - -static inline void ATTR_AES_ACCEL -aesenc_SB_SR_MC_AK_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - __m128i t =3D (__m128i)st->v; - __m128i k =3D (__m128i)rk->v; - - if (be) { - t =3D aes_accel_bswap(t); - k =3D aes_accel_bswap(k); - t =3D _mm_aesenc_si128(t, k); - t =3D aes_accel_bswap(t); - } else { - t =3D _mm_aesenc_si128(t, k); - } - ret->v =3D (AESStateVec)t; -} - -static inline void ATTR_AES_ACCEL -aesdec_IMC_accel(AESState *ret, const AESState *st, bool be) -{ - __m128i t =3D (__m128i)st->v; - - if (be) { - t =3D aes_accel_bswap(t); - t =3D _mm_aesimc_si128(t); - t =3D aes_accel_bswap(t); - } else { - t =3D _mm_aesimc_si128(t); - } - ret->v =3D (AESStateVec)t; -} - -static inline void ATTR_AES_ACCEL -aesdec_ISB_ISR_AK_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - __m128i t =3D (__m128i)st->v; - __m128i k =3D (__m128i)rk->v; - - if (be) { - t =3D aes_accel_bswap(t); - k =3D aes_accel_bswap(k); - t =3D _mm_aesdeclast_si128(t, k); - t =3D aes_accel_bswap(t); - } else { - t =3D _mm_aesdeclast_si128(t, k); - } - ret->v =3D (AESStateVec)t; -} - -static inline void ATTR_AES_ACCEL -aesdec_ISB_ISR_AK_IMC_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - __m128i t =3D (__m128i)st->v; - __m128i k =3D (__m128i)rk->v; - - if (be) { - t =3D aes_accel_bswap(t); - k =3D aes_accel_bswap(k); - t =3D _mm_aesdeclast_si128(t, k); - t =3D _mm_aesimc_si128(t); - t =3D aes_accel_bswap(t); - } else { - t =3D _mm_aesdeclast_si128(t, k); - t =3D _mm_aesimc_si128(t); - } - ret->v =3D (AESStateVec)t; -} - -static inline void ATTR_AES_ACCEL -aesdec_ISB_ISR_IMC_AK_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - __m128i t =3D (__m128i)st->v; - __m128i k =3D (__m128i)rk->v; - - if (be) { - t =3D aes_accel_bswap(t); - k =3D aes_accel_bswap(k); - t =3D _mm_aesdec_si128(t, k); - t =3D aes_accel_bswap(t); - } else { - t =3D _mm_aesdec_si128(t, k); - } - ret->v =3D (AESStateVec)t; -} - -#endif /* X86_HOST_CRYPTO_AES_ROUND_H */ diff --git a/host/include/i386/host/crypto/clmul.h b/host/include/i386/host= /crypto/clmul.h deleted file mode 100644 index dc3c814797..0000000000 --- a/host/include/i386/host/crypto/clmul.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * x86 specific clmul acceleration. - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#ifndef X86_HOST_CRYPTO_CLMUL_H -#define X86_HOST_CRYPTO_CLMUL_H - -#include "host/cpuinfo.h" -#include - -#if defined(__PCLMUL__) -# define HAVE_CLMUL_ACCEL true -# define ATTR_CLMUL_ACCEL -#else -# define HAVE_CLMUL_ACCEL likely(cpuinfo & CPUINFO_PCLMUL) -# define ATTR_CLMUL_ACCEL __attribute__((target("pclmul"))) -#endif - -static inline Int128 ATTR_CLMUL_ACCEL -clmul_64_accel(uint64_t n, uint64_t m) -{ - union { __m128i v; Int128 s; } u; - - u.v =3D _mm_clmulepi64_si128(_mm_set_epi64x(0, n), _mm_set_epi64x(0, m= ), 0); - return u.s; -} - -#endif /* X86_HOST_CRYPTO_CLMUL_H */ diff --git a/host/include/x86_64/host/cpuinfo.h b/host/include/x86_64/host/= cpuinfo.h index 67debab9a0..93d029d499 100644 --- a/host/include/x86_64/host/cpuinfo.h +++ b/host/include/x86_64/host/cpuinfo.h @@ -1 +1,41 @@ -#include "host/include/i386/host/cpuinfo.h" +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * Host specific cpu identification for x86. + */ + +#ifndef HOST_CPUINFO_H +#define HOST_CPUINFO_H + +/* Digested version of */ + +#define CPUINFO_ALWAYS (1u << 0) /* so cpuinfo is nonzero */ +#define CPUINFO_OSXSAVE (1u << 1) +#define CPUINFO_MOVBE (1u << 2) +#define CPUINFO_LZCNT (1u << 3) +#define CPUINFO_POPCNT (1u << 4) +#define CPUINFO_BMI1 (1u << 5) +#define CPUINFO_BMI2 (1u << 6) +#define CPUINFO_SSE2 (1u << 7) +#define CPUINFO_AVX1 (1u << 9) +#define CPUINFO_AVX2 (1u << 10) +#define CPUINFO_AVX512F (1u << 11) +#define CPUINFO_AVX512VL (1u << 12) +#define CPUINFO_AVX512BW (1u << 13) +#define CPUINFO_AVX512DQ (1u << 14) +#define CPUINFO_AVX512VBMI2 (1u << 15) +#define CPUINFO_ATOMIC_VMOVDQA (1u << 16) +#define CPUINFO_ATOMIC_VMOVDQU (1u << 17) +#define CPUINFO_AES (1u << 18) +#define CPUINFO_PCLMUL (1u << 19) +#define CPUINFO_GFNI (1u << 20) + +/* Initialized with a constructor. */ +extern unsigned cpuinfo; + +/* + * We cannot rely on constructor ordering, so other constructors must + * use the function interface rather than the variable above. + */ +unsigned cpuinfo_init(void); + +#endif /* HOST_CPUINFO_H */ diff --git a/host/include/x86_64/host/crypto/aes-round.h b/host/include/x86= _64/host/crypto/aes-round.h index 2773cc9f10..59a64130f7 100644 --- a/host/include/x86_64/host/crypto/aes-round.h +++ b/host/include/x86_64/host/crypto/aes-round.h @@ -1 +1,152 @@ -#include "host/include/i386/host/crypto/aes-round.h" +/* + * x86 specific aes acceleration. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef X86_HOST_CRYPTO_AES_ROUND_H +#define X86_HOST_CRYPTO_AES_ROUND_H + +#include "host/cpuinfo.h" +#include + +#if defined(__AES__) && defined(__SSSE3__) +# define HAVE_AES_ACCEL true +# define ATTR_AES_ACCEL +#else +# define HAVE_AES_ACCEL likely(cpuinfo & CPUINFO_AES) +# define ATTR_AES_ACCEL __attribute__((target("aes,ssse3"))) +#endif + +static inline __m128i ATTR_AES_ACCEL +aes_accel_bswap(__m128i x) +{ + return _mm_shuffle_epi8(x, _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15)); +} + +static inline void ATTR_AES_ACCEL +aesenc_MC_accel(AESState *ret, const AESState *st, bool be) +{ + __m128i t =3D (__m128i)st->v; + __m128i z =3D _mm_setzero_si128(); + + if (be) { + t =3D aes_accel_bswap(t); + t =3D _mm_aesdeclast_si128(t, z); + t =3D _mm_aesenc_si128(t, z); + t =3D aes_accel_bswap(t); + } else { + t =3D _mm_aesdeclast_si128(t, z); + t =3D _mm_aesenc_si128(t, z); + } + ret->v =3D (AESStateVec)t; +} + +static inline void ATTR_AES_ACCEL +aesenc_SB_SR_AK_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + __m128i t =3D (__m128i)st->v; + __m128i k =3D (__m128i)rk->v; + + if (be) { + t =3D aes_accel_bswap(t); + k =3D aes_accel_bswap(k); + t =3D _mm_aesenclast_si128(t, k); + t =3D aes_accel_bswap(t); + } else { + t =3D _mm_aesenclast_si128(t, k); + } + ret->v =3D (AESStateVec)t; +} + +static inline void ATTR_AES_ACCEL +aesenc_SB_SR_MC_AK_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + __m128i t =3D (__m128i)st->v; + __m128i k =3D (__m128i)rk->v; + + if (be) { + t =3D aes_accel_bswap(t); + k =3D aes_accel_bswap(k); + t =3D _mm_aesenc_si128(t, k); + t =3D aes_accel_bswap(t); + } else { + t =3D _mm_aesenc_si128(t, k); + } + ret->v =3D (AESStateVec)t; +} + +static inline void ATTR_AES_ACCEL +aesdec_IMC_accel(AESState *ret, const AESState *st, bool be) +{ + __m128i t =3D (__m128i)st->v; + + if (be) { + t =3D aes_accel_bswap(t); + t =3D _mm_aesimc_si128(t); + t =3D aes_accel_bswap(t); + } else { + t =3D _mm_aesimc_si128(t); + } + ret->v =3D (AESStateVec)t; +} + +static inline void ATTR_AES_ACCEL +aesdec_ISB_ISR_AK_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + __m128i t =3D (__m128i)st->v; + __m128i k =3D (__m128i)rk->v; + + if (be) { + t =3D aes_accel_bswap(t); + k =3D aes_accel_bswap(k); + t =3D _mm_aesdeclast_si128(t, k); + t =3D aes_accel_bswap(t); + } else { + t =3D _mm_aesdeclast_si128(t, k); + } + ret->v =3D (AESStateVec)t; +} + +static inline void ATTR_AES_ACCEL +aesdec_ISB_ISR_AK_IMC_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + __m128i t =3D (__m128i)st->v; + __m128i k =3D (__m128i)rk->v; + + if (be) { + t =3D aes_accel_bswap(t); + k =3D aes_accel_bswap(k); + t =3D _mm_aesdeclast_si128(t, k); + t =3D _mm_aesimc_si128(t); + t =3D aes_accel_bswap(t); + } else { + t =3D _mm_aesdeclast_si128(t, k); + t =3D _mm_aesimc_si128(t); + } + ret->v =3D (AESStateVec)t; +} + +static inline void ATTR_AES_ACCEL +aesdec_ISB_ISR_IMC_AK_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + __m128i t =3D (__m128i)st->v; + __m128i k =3D (__m128i)rk->v; + + if (be) { + t =3D aes_accel_bswap(t); + k =3D aes_accel_bswap(k); + t =3D _mm_aesdec_si128(t, k); + t =3D aes_accel_bswap(t); + } else { + t =3D _mm_aesdec_si128(t, k); + } + ret->v =3D (AESStateVec)t; +} + +#endif /* X86_HOST_CRYPTO_AES_ROUND_H */ diff --git a/host/include/x86_64/host/crypto/clmul.h b/host/include/x86_64/= host/crypto/clmul.h index f25eced416..dc3c814797 100644 --- a/host/include/x86_64/host/crypto/clmul.h +++ b/host/include/x86_64/host/crypto/clmul.h @@ -1 +1,29 @@ -#include "host/include/i386/host/crypto/clmul.h" +/* + * x86 specific clmul acceleration. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef X86_HOST_CRYPTO_CLMUL_H +#define X86_HOST_CRYPTO_CLMUL_H + +#include "host/cpuinfo.h" +#include + +#if defined(__PCLMUL__) +# define HAVE_CLMUL_ACCEL true +# define ATTR_CLMUL_ACCEL +#else +# define HAVE_CLMUL_ACCEL likely(cpuinfo & CPUINFO_PCLMUL) +# define ATTR_CLMUL_ACCEL __attribute__((target("pclmul"))) +#endif + +static inline Int128 ATTR_CLMUL_ACCEL +clmul_64_accel(uint64_t n, uint64_t m) +{ + union { __m128i v; Int128 s; } u; + + u.v =3D _mm_clmulepi64_si128(_mm_set_epi64x(0, n), _mm_set_epi64x(0, m= ), 0); + return u.s; +} + +#endif /* X86_HOST_CRYPTO_CLMUL_H */ diff --git a/linux-user/include/host/i386/host-signal.h b/linux-user/includ= e/host/i386/host-signal.h deleted file mode 100644 index e2b64f077f..0000000000 --- a/linux-user/include/host/i386/host-signal.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * host-signal.h: signal info dependent on the host architecture - * - * Copyright (c) 2003-2005 Fabrice Bellard - * Copyright (c) 2021 Linaro Limited - * - * This work is licensed under the terms of the GNU LGPL, version 2.1 or l= ater. - * See the COPYING file in the top-level directory. - */ - -#ifndef I386_HOST_SIGNAL_H -#define I386_HOST_SIGNAL_H - -/* The third argument to a SA_SIGINFO handler is ucontext_t. */ -typedef ucontext_t host_sigcontext; - -static inline uintptr_t host_signal_pc(host_sigcontext *uc) -{ - return uc->uc_mcontext.gregs[REG_EIP]; -} - -static inline void host_signal_set_pc(host_sigcontext *uc, uintptr_t pc) -{ - uc->uc_mcontext.gregs[REG_EIP] =3D pc; -} - -static inline void *host_signal_mask(host_sigcontext *uc) -{ - return &uc->uc_sigmask; -} - -static inline bool host_signal_write(siginfo_t *info, host_sigcontext *uc) -{ - return uc->uc_mcontext.gregs[REG_TRAPNO] =3D=3D 0xe - && (uc->uc_mcontext.gregs[REG_ERR] & 0x2); -} - -#endif diff --git a/common-user/host/i386/safe-syscall.inc.S b/common-user/host/i3= 86/safe-syscall.inc.S deleted file mode 100644 index db2ed09839..0000000000 --- a/common-user/host/i386/safe-syscall.inc.S +++ /dev/null @@ -1,127 +0,0 @@ -/* - * safe-syscall.inc.S : host-specific assembly fragment - * to handle signals occurring at the same time as system calls. - * This is intended to be included by common-user/safe-syscall.S - * - * Written by Richard Henderson - * Copyright (C) 2016 Red Hat, Inc. - * - * This work is licensed under the terms of the GNU GPL, version 2 or late= r. - * See the COPYING file in the top-level directory. - */ - - .global safe_syscall_base - .global safe_syscall_start - .global safe_syscall_end - .type safe_syscall_base, @function - - /* This is the entry point for making a system call. The calling - * convention here is that of a C varargs function with the - * first argument an 'int *' to the signal_pending flag, the - * second one the system call number (as a 'long'), and all further - * arguments being syscall arguments (also 'long'). - */ -safe_syscall_base: - .cfi_startproc - push %ebp - .cfi_adjust_cfa_offset 4 - .cfi_rel_offset ebp, 0 - push %esi - .cfi_adjust_cfa_offset 4 - .cfi_rel_offset esi, 0 - push %edi - .cfi_adjust_cfa_offset 4 - .cfi_rel_offset edi, 0 - push %ebx - .cfi_adjust_cfa_offset 4 - .cfi_rel_offset ebx, 0 - - /* The syscall calling convention isn't the same as the C one: - * we enter with 0(%esp) =3D=3D return address - * 4(%esp) =3D=3D &signal_pending - * 8(%esp) =3D=3D syscall number - * 12(%esp) ... 32(%esp) =3D=3D syscall arguments - * and return the result in eax - * and the syscall instruction needs - * eax =3D=3D syscall number - * ebx, ecx, edx, esi, edi, ebp =3D=3D syscall argum= ents - * and returns the result in eax - * Shuffle everything around appropriately. - * Note the 16 bytes that we pushed to save registers. - */ - mov 12+16(%esp), %ebx /* the syscall arguments */ - mov 16+16(%esp), %ecx - mov 20+16(%esp), %edx - mov 24+16(%esp), %esi - mov 28+16(%esp), %edi - mov 32+16(%esp), %ebp - - /* This next sequence of code works in conjunction with the - * rewind_if_safe_syscall_function(). If a signal is taken - * and the interrupted PC is anywhere between 'safe_syscall_start' - * and 'safe_syscall_end' then we rewind it to 'safe_syscall_start= '. - * The code sequence must therefore be able to cope with this, and - * the syscall instruction must be the final one in the sequence. - */ -safe_syscall_start: - /* if signal_pending is non-zero, don't do the call */ - mov 4+16(%esp), %eax /* signal_pending */ - cmpl $0, (%eax) - jnz 2f - mov 8+16(%esp), %eax /* syscall number */ - int $0x80 -safe_syscall_end: - - /* code path for having successfully executed the syscall */ -#if defined(__linux__) - /* Linux kernel returns (small) negative errno. */ - cmp $-4095, %eax - jae 0f -#elif defined(__FreeBSD__) - /* FreeBSD kernel returns positive errno and C bit set. */ - jc 1f -#else -#error "unsupported os" -#endif - pop %ebx - .cfi_remember_state - .cfi_adjust_cfa_offset -4 - .cfi_restore ebx - pop %edi - .cfi_adjust_cfa_offset -4 - .cfi_restore edi - pop %esi - .cfi_adjust_cfa_offset -4 - .cfi_restore esi - pop %ebp - .cfi_adjust_cfa_offset -4 - .cfi_restore ebp - ret - .cfi_restore_state - -#if defined(__linux__) -0: neg %eax - jmp 1f -#endif - - /* code path when we didn't execute the syscall */ -2: mov $QEMU_ERESTARTSYS, %eax - - /* code path setting errno */ -1: pop %ebx - .cfi_adjust_cfa_offset -4 - .cfi_restore ebx - pop %edi - .cfi_adjust_cfa_offset -4 - .cfi_restore edi - pop %esi - .cfi_adjust_cfa_offset -4 - .cfi_restore esi - pop %ebp - .cfi_adjust_cfa_offset -4 - .cfi_restore ebp - mov %eax, 4(%esp) - jmp safe_syscall_set_errno_tail - - .cfi_endproc - .size safe_syscall_base, .-safe_syscall_base diff --git a/host/include/i386/host/bufferiszero.c.inc b/host/include/i386/= host/bufferiszero.c.inc deleted file mode 100644 index 74ae98580f..0000000000 --- a/host/include/i386/host/bufferiszero.c.inc +++ /dev/null @@ -1,125 +0,0 @@ -/* - * SPDX-License-Identifier: GPL-2.0-or-later - * buffer_is_zero acceleration, x86 version. - */ - -#if defined(CONFIG_AVX2_OPT) || defined(__SSE2__) -#include - -/* Helper for preventing the compiler from reassociating - chains of binary vector operations. */ -#define SSE_REASSOC_BARRIER(vec0, vec1) asm("" : "+x"(vec0), "+x"(vec1)) - -/* Note that these vectorized functions may assume len >=3D 256. */ - -static bool __attribute__((target("sse2"))) -buffer_zero_sse2(const void *buf, size_t len) -{ - /* Unaligned loads at head/tail. */ - __m128i v =3D *(__m128i_u *)(buf); - __m128i w =3D *(__m128i_u *)(buf + len - 16); - /* Align head/tail to 16-byte boundaries. */ - const __m128i *p =3D QEMU_ALIGN_PTR_DOWN(buf + 16, 16); - const __m128i *e =3D QEMU_ALIGN_PTR_DOWN(buf + len - 1, 16); - __m128i zero =3D { 0 }; - - /* Collect a partial block at tail end. */ - v |=3D e[-1]; w |=3D e[-2]; - SSE_REASSOC_BARRIER(v, w); - v |=3D e[-3]; w |=3D e[-4]; - SSE_REASSOC_BARRIER(v, w); - v |=3D e[-5]; w |=3D e[-6]; - SSE_REASSOC_BARRIER(v, w); - v |=3D e[-7]; v |=3D w; - - /* - * Loop over complete 128-byte blocks. - * With the head and tail removed, e - p >=3D 14, so the loop - * must iterate at least once. - */ - do { - v =3D _mm_cmpeq_epi8(v, zero); - if (unlikely(_mm_movemask_epi8(v) !=3D 0xFFFF)) { - return false; - } - v =3D p[0]; w =3D p[1]; - SSE_REASSOC_BARRIER(v, w); - v |=3D p[2]; w |=3D p[3]; - SSE_REASSOC_BARRIER(v, w); - v |=3D p[4]; w |=3D p[5]; - SSE_REASSOC_BARRIER(v, w); - v |=3D p[6]; w |=3D p[7]; - SSE_REASSOC_BARRIER(v, w); - v |=3D w; - p +=3D 8; - } while (p < e - 7); - - return _mm_movemask_epi8(_mm_cmpeq_epi8(v, zero)) =3D=3D 0xFFFF; -} - -#ifdef CONFIG_AVX2_OPT -static bool __attribute__((target("avx2"))) -buffer_zero_avx2(const void *buf, size_t len) -{ - /* Unaligned loads at head/tail. */ - __m256i v =3D *(__m256i_u *)(buf); - __m256i w =3D *(__m256i_u *)(buf + len - 32); - /* Align head/tail to 32-byte boundaries. */ - const __m256i *p =3D QEMU_ALIGN_PTR_DOWN(buf + 32, 32); - const __m256i *e =3D QEMU_ALIGN_PTR_DOWN(buf + len - 1, 32); - __m256i zero =3D { 0 }; - - /* Collect a partial block at tail end. */ - v |=3D e[-1]; w |=3D e[-2]; - SSE_REASSOC_BARRIER(v, w); - v |=3D e[-3]; w |=3D e[-4]; - SSE_REASSOC_BARRIER(v, w); - v |=3D e[-5]; w |=3D e[-6]; - SSE_REASSOC_BARRIER(v, w); - v |=3D e[-7]; v |=3D w; - - /* Loop over complete 256-byte blocks. */ - for (; p < e - 7; p +=3D 8) { - /* PTEST is not profitable here. */ - v =3D _mm256_cmpeq_epi8(v, zero); - if (unlikely(_mm256_movemask_epi8(v) !=3D 0xFFFFFFFF)) { - return false; - } - v =3D p[0]; w =3D p[1]; - SSE_REASSOC_BARRIER(v, w); - v |=3D p[2]; w |=3D p[3]; - SSE_REASSOC_BARRIER(v, w); - v |=3D p[4]; w |=3D p[5]; - SSE_REASSOC_BARRIER(v, w); - v |=3D p[6]; w |=3D p[7]; - SSE_REASSOC_BARRIER(v, w); - v |=3D w; - } - - return _mm256_movemask_epi8(_mm256_cmpeq_epi8(v, zero)) =3D=3D 0xFFFFF= FFF; -} -#endif /* CONFIG_AVX2_OPT */ - -static biz_accel_fn const accel_table[] =3D { - buffer_is_zero_int_ge256, - buffer_zero_sse2, -#ifdef CONFIG_AVX2_OPT - buffer_zero_avx2, -#endif -}; - -static unsigned best_accel(void) -{ - unsigned info =3D cpuinfo_init(); - -#ifdef CONFIG_AVX2_OPT - if (info & CPUINFO_AVX2) { - return 2; - } -#endif - return info & CPUINFO_SSE2 ? 1 : 0; -} - -#else -# include "host/include/generic/host/bufferiszero.c.inc" -#endif diff --git a/host/include/x86_64/host/bufferiszero.c.inc b/host/include/x86= _64/host/bufferiszero.c.inc index 1d3f1fd6f5..74ae98580f 100644 --- a/host/include/x86_64/host/bufferiszero.c.inc +++ b/host/include/x86_64/host/bufferiszero.c.inc @@ -1 +1,125 @@ -#include "host/include/i386/host/bufferiszero.c.inc" +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * buffer_is_zero acceleration, x86 version. + */ + +#if defined(CONFIG_AVX2_OPT) || defined(__SSE2__) +#include + +/* Helper for preventing the compiler from reassociating + chains of binary vector operations. */ +#define SSE_REASSOC_BARRIER(vec0, vec1) asm("" : "+x"(vec0), "+x"(vec1)) + +/* Note that these vectorized functions may assume len >=3D 256. */ + +static bool __attribute__((target("sse2"))) +buffer_zero_sse2(const void *buf, size_t len) +{ + /* Unaligned loads at head/tail. */ + __m128i v =3D *(__m128i_u *)(buf); + __m128i w =3D *(__m128i_u *)(buf + len - 16); + /* Align head/tail to 16-byte boundaries. */ + const __m128i *p =3D QEMU_ALIGN_PTR_DOWN(buf + 16, 16); + const __m128i *e =3D QEMU_ALIGN_PTR_DOWN(buf + len - 1, 16); + __m128i zero =3D { 0 }; + + /* Collect a partial block at tail end. */ + v |=3D e[-1]; w |=3D e[-2]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-3]; w |=3D e[-4]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-5]; w |=3D e[-6]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-7]; v |=3D w; + + /* + * Loop over complete 128-byte blocks. + * With the head and tail removed, e - p >=3D 14, so the loop + * must iterate at least once. + */ + do { + v =3D _mm_cmpeq_epi8(v, zero); + if (unlikely(_mm_movemask_epi8(v) !=3D 0xFFFF)) { + return false; + } + v =3D p[0]; w =3D p[1]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[2]; w |=3D p[3]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[4]; w |=3D p[5]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[6]; w |=3D p[7]; + SSE_REASSOC_BARRIER(v, w); + v |=3D w; + p +=3D 8; + } while (p < e - 7); + + return _mm_movemask_epi8(_mm_cmpeq_epi8(v, zero)) =3D=3D 0xFFFF; +} + +#ifdef CONFIG_AVX2_OPT +static bool __attribute__((target("avx2"))) +buffer_zero_avx2(const void *buf, size_t len) +{ + /* Unaligned loads at head/tail. */ + __m256i v =3D *(__m256i_u *)(buf); + __m256i w =3D *(__m256i_u *)(buf + len - 32); + /* Align head/tail to 32-byte boundaries. */ + const __m256i *p =3D QEMU_ALIGN_PTR_DOWN(buf + 32, 32); + const __m256i *e =3D QEMU_ALIGN_PTR_DOWN(buf + len - 1, 32); + __m256i zero =3D { 0 }; + + /* Collect a partial block at tail end. */ + v |=3D e[-1]; w |=3D e[-2]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-3]; w |=3D e[-4]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-5]; w |=3D e[-6]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-7]; v |=3D w; + + /* Loop over complete 256-byte blocks. */ + for (; p < e - 7; p +=3D 8) { + /* PTEST is not profitable here. */ + v =3D _mm256_cmpeq_epi8(v, zero); + if (unlikely(_mm256_movemask_epi8(v) !=3D 0xFFFFFFFF)) { + return false; + } + v =3D p[0]; w =3D p[1]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[2]; w |=3D p[3]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[4]; w |=3D p[5]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[6]; w |=3D p[7]; + SSE_REASSOC_BARRIER(v, w); + v |=3D w; + } + + return _mm256_movemask_epi8(_mm256_cmpeq_epi8(v, zero)) =3D=3D 0xFFFFF= FFF; +} +#endif /* CONFIG_AVX2_OPT */ + +static biz_accel_fn const accel_table[] =3D { + buffer_is_zero_int_ge256, + buffer_zero_sse2, +#ifdef CONFIG_AVX2_OPT + buffer_zero_avx2, +#endif +}; + +static unsigned best_accel(void) +{ + unsigned info =3D cpuinfo_init(); + +#ifdef CONFIG_AVX2_OPT + if (info & CPUINFO_AVX2) { + return 2; + } +#endif + return info & CPUINFO_SSE2 ? 1 : 0; +} + +#else +# include "host/include/generic/host/bufferiszero.c.inc" +#endif --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534555; cv=none; d=zohomail.com; s=zohoarc; b=FV1a8EbeSM/WlnMD27hV1H6lmQ6Dt5c26zwy1j9daWnSyAMb8G2vz3SeDIq94ASUIXiTKBb5uONZYjU6G6JVPUrrG0Z1Rnosafv+31CpBzmaOzYHgsq+SqTgDg1OvCICU3hT5sZt6LdhfUFCeVmyCEwddkhqPcgwk2MiMwjaENk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534555; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cwGPpfxzsG4LOsiRJ3NVV7jG3uJ4HK6BFewRFRnb1bM=; b=njNjTkIad0T4rDfbp3c2QRxzoz0u3qT/qM3K1cuHdgVlX3R0ULRkdytZMpsTTW2S9yGMDalxPkdlTe2HHKdVHrJG86CI7AzowXuIqnv4HNleJ+Q+8MuLbuOnqx6GeWGDI9j4c4w7Mc3t3H+Dw8cNFRJCMbala4v//Rczlvi0P00= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534555760754.937782240666; Thu, 15 Jan 2026 19:35:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabI-0005ip-W5; Thu, 15 Jan 2026 22:34:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabG-0005Ud-U9 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:14 -0500 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabF-0005ad-9X for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:14 -0500 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-81dab89f286so747495b3a.2 for ; Thu, 15 Jan 2026 19:34:12 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534452; x=1769139252; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cwGPpfxzsG4LOsiRJ3NVV7jG3uJ4HK6BFewRFRnb1bM=; b=uNhZti0bPn1C1sUL1V4U+VOLzz5kBltTaA3FoJXE0kshtVcs3RdS24vfM8CGeyUiQW BSCwyO1q4xvrvoDmIceaXXTrGuYZ+TnoG2/J5Rz0t0jNoRyxi0MdF8vqFpHaw0fvH7zy jP2BBOcZQrLJ8O4TUgtS3MHJ71NNF+jIpyuR7+Ad06ito8wPB0fatOylDWceGpijF/PF 2vrpsJVTCnnXie8u1lHtHTw03AZxFmFb5IoeBNsBtoVHBI/sN3HXEWZNXTn+W+w8lupZ laEqMPCQIEIgG1GeGRNLkSYfVLrJU1eZQrHsu4ZXuBQJ0xhFGYtV0vX7/YkCF3v0K0NH Mzxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534452; x=1769139252; 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; bh=cwGPpfxzsG4LOsiRJ3NVV7jG3uJ4HK6BFewRFRnb1bM=; b=QWduNu7Kp8BTfB9ov/zND4wA0NHz1b/hugKJ2czOaWwIPo4GN1uS8RRMzvIk900zoC mlZgPpjQ/wiCdaW1CO+7S4f6CoTZ+0W/VsRyQYtlbzjaxV7pkvMOkYrzApAKlkuNNJ30 VOb7Mjk+GZhDsutGjF4fKI7dNLRHSbeV13TnihkicO22eESqsJQa6KU23RAmjGqXHy9t +fHRwnnlY2X3MUUSvcxyN3zUVNudPCAt3vXlg2BJb3vjx89OJUZh7GHNbwMmrpsAMat9 C83V2MyBCrAkqb72uKinJntEYHbq9zfXbOocYxKWWCIzBQyi+1Hs9FcYo4W5e0WXrPTk 7/7Q== X-Gm-Message-State: AOJu0YyUppwJExpcaP3U4/4DZpUuVRGw21FnlKaTvVjcUUum5pfsmIDL sa4bzrS6wI6KmuWWoV1zr88AQ0ZjaQqLGNUwiEjdEDX228OYzNd1+LWdlEWZROEDNnEKo1g62mr QL8q+D8Lhlg== X-Gm-Gg: AY/fxX5oQR5cb1lJNpxeQMzQIkm3tJ2Hb6NEsOal9d4F2AiK5/0ddke9BxUxS+qHcei xRuH5UdbVljH13eTtx7kjxSKHRwPoVNDJATCa60jH9fZlquoo/6Xp1PlVPPFOnHDDNNjRc8sfF2 SIsxA56xnIUdGGfAnxBn+0bXDRt0gSR4+yD4n2zsMa6wSRiTw6TkWlPmVXVG/h+6UKp0IytPy8E YdGy5mwx+vxD+hEccfOm6s6xNkqgdaFy3OhhfLeL5xl+8K8UBSFi8ULejMHA/8bM1re4xv0kHBf h0cPog8pF1bq5fbnpeYVJEvA0/cDX4KN5FvuQKYW//04fPzqzbnGoC+Nfa02N5EERq63bhgwF/k Ds7kS9lBik0ZTordZDAqUhH1X2UW7hw0ssvjDAwY9CE9aOqN+9Z5GOXiwngyziatV4SH+38BaOi Xy6FhT7e7iOYwal5ZNxg== X-Received: by 2002:a05:6a00:1910:b0:81c:92ec:ccf3 with SMTP id d2e1a72fcca58-81f9f6aae13mr1604600b3a.19.1768534451895; Thu, 15 Jan 2026 19:34:11 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 14/58] host/include/x86_64/bufferiszero: Remove no SSE2 fallback Date: Fri, 16 Jan 2026 14:32:20 +1100 Message-ID: <20260116033305.51162-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534557594158500 Content-Type: text/plain; charset="utf-8" Since x86_64 always has SSE2, we can remove the fallback that was present for i686. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- host/include/x86_64/host/bufferiszero.c.inc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/host/include/x86_64/host/bufferiszero.c.inc b/host/include/x86= _64/host/bufferiszero.c.inc index 74ae98580f..7e9d896a8d 100644 --- a/host/include/x86_64/host/bufferiszero.c.inc +++ b/host/include/x86_64/host/bufferiszero.c.inc @@ -3,7 +3,6 @@ * buffer_is_zero acceleration, x86 version. */ =20 -#if defined(CONFIG_AVX2_OPT) || defined(__SSE2__) #include =20 /* Helper for preventing the compiler from reassociating @@ -119,7 +118,3 @@ static unsigned best_accel(void) #endif return info & CPUINFO_SSE2 ? 1 : 0; } - -#else -# include "host/include/generic/host/bufferiszero.c.inc" -#endif --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534474; cv=none; d=zohomail.com; s=zohoarc; b=TXpDYF3PjJmYmXbs3zyWcNBQNMwYIO2yE3JMc6ZPQx5bw9ep0+jSWmdASaRMgdIVvQP3+USfqMOGMLwNDINXOrImd5C0m5FHESwXDyYHJZEujAROJsYwaGWD4uXw9dz/pkgXrQrZMjxazZGLLf3NyBcBJVv9RwKKk41s4NQaqVQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534474; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RAjiwiRuOWizs0EGl+79VhmlGSH6tR7oUS2c/1ByVNA=; b=Kjwe/HKr/sGImCZPZugm41uIHFNT42XcER3wEc+0fxlBVUPCCl3y764aSWexThQ7gTdgwZVCUY9/H9/nVJlgzK9ZXknM75psnDCJv+PuOjG4XKul/nmGxsfE18LMvgeSp1ccgBfD7f7/alaDSAPkHsYvtODSTG6ngMHXPvzY9x0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534474187485.46116727349704; Thu, 15 Jan 2026 19:34:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabM-0006AD-PA; Thu, 15 Jan 2026 22:34:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabL-0005zC-5g for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:19 -0500 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabJ-0005cF-Bg for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:18 -0500 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-81f416c0473so1415055b3a.3 for ; Thu, 15 Jan 2026 19:34:16 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534456; x=1769139256; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RAjiwiRuOWizs0EGl+79VhmlGSH6tR7oUS2c/1ByVNA=; b=gTUyhFyQ6gZwI5pmNfYtapXCYqFC3FtojShVyOhQ+SLn5seWuHKwPawQnamhN9/Vzu KDox3LOeasiA2mAUCfYIkEh2z4Vz8ltFr0KvAmDcAZrqfnn2hgihtxSgceyzfCuriy/q FAoeg2hNAV+BhQkRuIz+zVuwN8jSw2BbPUyn0TSxKmvyPpp7xtJpDbIWTL/PX2PTg7zh a0E/ky9q30+IVV9OQZk62YjWMGOZ6d0MtENFaSyeRErgtNkZ34GVa7O9Tr2epOjPy0Gr uMjMWyVi/lKTe9QyYjWi55B9FBU1mGAGG5Ce3oX3Hs+D9jU0+GYVvhQ22rl5pJ62HqVu cJQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534456; x=1769139256; 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; bh=RAjiwiRuOWizs0EGl+79VhmlGSH6tR7oUS2c/1ByVNA=; b=E1hSbxYZ4OtrEZcouNu/eIYjy57WypAttE/uCuvJmyrfDpblZaWwhbUmm9miAXUo/N iQyqcOyddFd8ruOmpXJ1dUT7A3zpCqdqXdP0s3GC258RLsTdHgSEqxmw8FE+o1Iu5hhb bd3AFcAEtrEL+ChEYEo6p4rXVh4x78ybuOjUb6XTWb3WTF0HhdI0pzDFU48bUEB9Efib CMuWezGV9nKGcD1kJoxEYPUwSdytmFmFvRbGWmruVLFybG5FQUMQD1QwvXpZuMPYaxqz /yBW5gMrLM4/lFAfdFpm8lJ2N+/fyQrP3wZupvvy7VS5aPypKWfy9wqfeus7xnVfFWl4 8wNA== X-Gm-Message-State: AOJu0YyXK3ypUR3IwfSJq+NFJe1aeVAwpPA0O8NIPbRldXLgaV8RnIvm tTY2P6grm/9aPDZZeZp8evQuwddltG/c4i70H+QPCQ5w1Mb+eP7LVojrJoVkcYJ/9SmqCpWjt3d ZKSG9ARcw7w== X-Gm-Gg: AY/fxX6iOIWkgMDGT7BUJa2j7hllGkf5hBntn1oUy0yGdoNuytzxftO9uIFIDUgk5b8 ODVbC2tbXwRu1W3qqksM9xcBgh/qeKonXL96YaljNeqNI4dGh0UsIaibx8SDDSMUrHPLafruy/k 21BS39eG5LSY4bOKEEGQBl8evDvfEuIeUNRfpl7HM4efoZ+Cx14npPOBcOLCtcOfGUvCPCrjF4y ex28mOLb9NWElSwcmbgGSF91N4qdXDTXSuk/PrvgIyyhTpWOaMnoYXMVMPiaqTIREICxgzVsv7W Bj22Srtb35CY3pl2lbP2BiC56X1H7QHcJOx1t+pf8fwk/DZ3lYi9b38exVzSCQ9n47wTl7nzNNg OnVtZ3Wez60oOELhv0IV61ZVHUQxZR26IvXrfC5N8izgClVD2x0CY60X1rBNj/RPv3YaK1HnmuF uXP7Fs7CgBQX4zf2Y4rw== X-Received: by 2002:a05:6a00:3a25:b0:81f:43fe:988c with SMTP id d2e1a72fcca58-81f9f684e86mr1866693b3a.6.1768534455566; Thu, 15 Jan 2026 19:34:15 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 15/58] meson: Remove cpu == x86 tests Date: Fri, 16 Jan 2026 14:32:21 +1100 Message-ID: <20260116033305.51162-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534475388158500 Content-Type: text/plain; charset="utf-8" The 32-bit x86 host is no longer supported. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- configure | 16 +--------------- meson.build | 49 ++++++++++--------------------------------------- 2 files changed, 11 insertions(+), 54 deletions(-) diff --git a/configure b/configure index de0f3a8ebe..e9d0b9e2c0 100755 --- a/configure +++ b/configure @@ -447,13 +447,6 @@ case "$cpu" in linux_arch=3Darm64 ;; =20 - i386|i486|i586|i686) - cpu=3D"i386" - host_arch=3Di386 - linux_arch=3Dx86 - CPU_CFLAGS=3D"-m32" - ;; - loongarch*) cpu=3Dloongarch64 host_arch=3Dloongarch64 @@ -1944,14 +1937,7 @@ if test "$skip_meson" =3D no; then if test "$cross_compile" =3D "yes"; then echo "[host_machine]" >> $cross echo "system =3D '$host_os'" >> $cross - case "$cpu" in - i386) - echo "cpu_family =3D 'x86'" >> $cross - ;; - *) - echo "cpu_family =3D '$cpu'" >> $cross - ;; - esac + echo "cpu_family =3D '$cpu'" >> $cross echo "cpu =3D '$cpu'" >> $cross if test "$bigendian" =3D "yes" ; then echo "endian =3D 'big'" >> $cross diff --git a/meson.build b/meson.build index 137b2dcdc7..506904c7d7 100644 --- a/meson.build +++ b/meson.build @@ -50,7 +50,7 @@ qapi_trace_events =3D [] =20 bsd_oses =3D ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly',= 'darwin'] supported_oses =3D ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', '= sunos', 'linux', 'emscripten'] -supported_cpus =3D ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', = 'x86_64', +supported_cpus =3D ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86_64= ', 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm64'] =20 cpu =3D host_machine.cpu_family() @@ -265,8 +265,6 @@ enable_modules =3D get_option('modules') \ =20 if cpu not in supported_cpus host_arch =3D 'unknown' -elif cpu =3D=3D 'x86' - host_arch =3D 'i386' elif cpu =3D=3D 'mips64' host_arch =3D 'mips' elif cpu in ['riscv32', 'riscv64'] @@ -275,9 +273,7 @@ else host_arch =3D cpu endif =20 -if cpu =3D=3D 'x86' - kvm_targets =3D ['i386-softmmu'] -elif cpu =3D=3D 'x86_64' +if cpu =3D=3D 'x86_64' kvm_targets =3D ['i386-softmmu', 'x86_64-softmmu'] elif cpu =3D=3D 'aarch64' kvm_targets =3D ['aarch64-softmmu'] @@ -300,9 +296,7 @@ else endif accelerator_targets =3D { 'CONFIG_KVM': kvm_targets } =20 -if cpu =3D=3D 'x86' - xen_targets =3D ['i386-softmmu'] -elif cpu =3D=3D 'x86_64' +if cpu =3D=3D 'x86_64' xen_targets =3D ['i386-softmmu', 'x86_64-softmmu'] elif cpu =3D=3D 'aarch64' # i386 emulator provides xenpv machine type for multiple architectures @@ -391,40 +385,17 @@ endif =20 qemu_isa_flags =3D [] =20 -# __sync_fetch_and_and requires at least -march=3Di486. Many toolchains -# use i686 as default anyway, but for those that don't, an explicit -# specification is necessary -if host_arch =3D=3D 'i386' and not cc.links(''' - static int sfaa(int *ptr) - { - return __sync_fetch_and_and(ptr, 0); - } - - int main(void) - { - int val =3D 42; - val =3D __sync_val_compare_and_swap(&val, 0, 1); - sfaa(&val); - return val; - }''') - qemu_isa_flags +=3D ['-march=3Di486'] -endif - # Pick x86-64 baseline version -if host_arch in ['i386', 'x86_64'] - if get_option('x86_version') =3D=3D '0' and host_arch =3D=3D 'x86_64' +if host_arch =3D=3D 'x86_64' + if get_option('x86_version') =3D=3D '0' error('x86_64-v1 required for x86-64 hosts') endif =20 # add flags for individual instruction set extensions if get_option('x86_version') >=3D '1' - if host_arch =3D=3D 'i386' - qemu_common_flags =3D ['-mfpmath=3Dsse'] + qemu_common_flags - else - # present on basically all processors but technically not part of - # x86-64-v1, so only include -mneeded for x86-64 version 2 and above - qemu_isa_flags +=3D ['-mcx16'] - endif + # present on basically all processors but technically not part of + # x86-64-v1, so only include -mneeded for x86-64 version 2 and above + qemu_isa_flags +=3D ['-mcx16'] endif if get_option('x86_version') >=3D '2' qemu_isa_flags +=3D ['-mpopcnt'] @@ -1040,7 +1011,7 @@ have_xen_pci_passthrough =3D get_option('xen_pci_pass= through') \ error_message: 'Xen PCI passthrough requested but Xen not enabl= ed') \ .require(host_os =3D=3D 'linux', error_message: 'Xen PCI passthrough not available on this platf= orm') \ - .require(cpu =3D=3D 'x86' or cpu =3D=3D 'x86_64', + .require(cpu =3D=3D 'x86_64', error_message: 'Xen PCI passthrough not available on this platf= orm') \ .allowed() =20 @@ -4564,7 +4535,7 @@ if have_tools libcap_ng, mpathpersist], install: true) =20 - if cpu in ['x86', 'x86_64'] + if cpu =3D=3D 'x86_64' executable('qemu-vmsr-helper', files('tools/i386/qemu-vmsr-helper.c'= ), dependencies: [authz, crypto, io, qom, qemuutil, libcap_ng, mpathpersist], --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534633; cv=none; d=zohomail.com; s=zohoarc; b=WhPZcQwRxhITemrysZQHlAhsFkNZWhDCFHJP+ytqsVIx4RTMAJJKqk0oYTXX+FQjJfDTMHaxN8q2WP3QMdNQnxPRj5JEo8TAi+5xBwTpMA7Vm/M3mWxvzk2+Bq8gaHw6UoKTZK3VLR+g44tZpMFd7AId2bzg4LmRNxFumPPewWA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534633; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UanRVIi+nePBx9P9C2dWtHxLGCeZ+PWfJ962yXiADQc=; b=LUN1LdB+L9CcSvc3cAE6rOx3qY7cYbEPpNhiaYTwc3MExB0ujp5U1yNOPv4TWn5+k5lxKAA0CFRObanyIafOEpkqkQ17u2atmtFmSeK+H4MVl40LTafeJhHYlZZoAgd6UsHdxBbhkYZ9CDG2m7tQbJsh9c8PeBelVwjMCTKuaXM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534633523171.47352762586615; Thu, 15 Jan 2026 19:37:13 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabY-00075M-K3; Thu, 15 Jan 2026 22:34:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabR-0006tJ-H5 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:26 -0500 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabM-0005do-VT for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:25 -0500 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-81f3d6990d6so914384b3a.3 for ; Thu, 15 Jan 2026 19:34:20 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534459; x=1769139259; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UanRVIi+nePBx9P9C2dWtHxLGCeZ+PWfJ962yXiADQc=; b=gzwte+LXjtbiGp1/43YHblJ/h7osjyxI9Wd8S3/gklibrsgF5du/ait7jLbc+SG0ky z1FnOt1tbGTmL5XZcuamHEGqwb1XFLPTv/Y2KKkuHfuySgwZ5xUmZu8z9Oun/HDQRJJV 9ko4j1Qu4eAM5hbsJ7oyvJdWWzpw7gz7Rp9zXpfVeSpl19w3gtVW+B1aets+W9d5M3Au qJ3D/wzDv+qTvqtUu5dtUnwWPuUOoxEAw+Dr7d7y81urkeqxm4/N/hPUyAN+DnwHN19z +GaDEZBsQ1pMfMhnYqZ+8Ca3SkiphgoPZKl0zYo8kftwAk+18EGV5sJqL1AT9O1Lat2/ 0QYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534459; x=1769139259; 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; bh=UanRVIi+nePBx9P9C2dWtHxLGCeZ+PWfJ962yXiADQc=; b=tXuNKoSQFhkUgGkBziAUeDDpcj272CA0HcUBnelcl/MU/fspvq4z8bctYDA1dThMzj iOTNEboLADaPJ4yNYIAExUZ8ne5UmMT02OhDOPzsPGsbxGFU940NsCA7RqDBtA5u42R7 rf/B79LQ9+UrGhMKQExT4iyfxgWW+HYXYXaXePd0yuHTFcejQ9KnoVzHP6hbufyISZ/J HF/EmzPifl5F1/5z8Uxep1LqyNICyWJUkAwZ3vCqKooYqp66e8mY3CLWXTSb6enHrac4 PZBRFWKyC/ItNlnqpuJ7PoUSSIbFLzq4IfRpqOSAsKCMef70UfU/kQeHb+HHvkXNUHxZ bUtg== X-Gm-Message-State: AOJu0YwyY8TTlorwgodtxyYpYQymheFbQAwwtAFLps2Q2O1Ooavi/xQn cIGaqnwg0JTz7Dmfugod6YpZ0G5pHydOLzZIsp040pc5IiEBUGGwK8142b1Z4tsWXlMzzgdaF5g +dqd1AgH24Q== X-Gm-Gg: AY/fxX6GBlr9HDH8M4JsgB3LBceWjz7ccf80t2FIKa7g91HMm8cSt6lS+9FekOqvnsK YDPGIe7/kUfTs9nVYgKtVpJRDq+8qA08FAgNSQ+8cnBZqzPieaIE8YuhMWT8MVqK76r94v99eF3 k7DixpgKcltTSqExGfC6MC0mfXI222eiSroKRydyjYZ5ibPmspgp4UswmWSyHbDMBKxFQ7zU+92 pMLfX2W5dPoGinklspiFZmEfUVeGC4Ky+HcRfq+QCvl3LDzXky7nu8KhYXujSnC+Gh8kwcr9M4J Ba7fonZlVD+gVSEDpYrga2sglTkxLympAvUDNFPxg3oV/wFdXuQRrucME3cJaBuSHs7K02jOXlm XmtGYkZuQ3mN0IUhoYbUwQx+S6XX1RPiPJlFfdGAT0KkwNWrrI5qf3qEyZR7GDlZ+a6PRyoIc8d wUc2oFXY6+G16rPqerhA== X-Received: by 2002:a05:6a00:1411:b0:81f:4769:6fde with SMTP id d2e1a72fcca58-81f9fce5e96mr1309717b3a.17.1768534459336; Thu, 15 Jan 2026 19:34:19 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 16/58] *: Remove ppc host support Date: Fri, 16 Jan 2026 14:32:22 +1100 Message-ID: <20260116033305.51162-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534633917158500 Content-Type: text/plain; charset="utf-8" Move the files from host/include/ppc to host/include/ppc64, replacing the stub headers that redirected to ppc. Remove linux-user/include/host/ppc. Remove common-user/host/ppc. Remove cpu =3D=3D ppc tests from meson. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- host/include/ppc/host/cpuinfo.h | 30 ---- host/include/ppc/host/crypto/aes-round.h | 182 -------------------- host/include/ppc64/host/cpuinfo.h | 31 +++- host/include/ppc64/host/crypto/aes-round.h | 183 ++++++++++++++++++++- linux-user/include/host/ppc/host-signal.h | 39 ----- common-user/host/ppc/safe-syscall.inc.S | 107 ------------ meson.build | 4 +- 7 files changed, 213 insertions(+), 363 deletions(-) delete mode 100644 host/include/ppc/host/cpuinfo.h delete mode 100644 host/include/ppc/host/crypto/aes-round.h delete mode 100644 linux-user/include/host/ppc/host-signal.h delete mode 100644 common-user/host/ppc/safe-syscall.inc.S diff --git a/host/include/ppc/host/cpuinfo.h b/host/include/ppc/host/cpuinf= o.h deleted file mode 100644 index 38b8eabe2a..0000000000 --- a/host/include/ppc/host/cpuinfo.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * SPDX-License-Identifier: GPL-2.0-or-later - * Host specific cpu identification for ppc. - */ - -#ifndef HOST_CPUINFO_H -#define HOST_CPUINFO_H - -/* Digested version of */ - -#define CPUINFO_ALWAYS (1u << 0) /* so cpuinfo is nonzero */ -#define CPUINFO_V2_06 (1u << 1) -#define CPUINFO_V2_07 (1u << 2) -#define CPUINFO_V3_0 (1u << 3) -#define CPUINFO_V3_1 (1u << 4) -#define CPUINFO_ISEL (1u << 5) -#define CPUINFO_ALTIVEC (1u << 6) -#define CPUINFO_VSX (1u << 7) -#define CPUINFO_CRYPTO (1u << 8) - -/* Initialized with a constructor. */ -extern unsigned cpuinfo; - -/* - * We cannot rely on constructor ordering, so other constructors must - * use the function interface rather than the variable above. - */ -unsigned cpuinfo_init(void); - -#endif /* HOST_CPUINFO_H */ diff --git a/host/include/ppc/host/crypto/aes-round.h b/host/include/ppc/ho= st/crypto/aes-round.h deleted file mode 100644 index 8062d2a537..0000000000 --- a/host/include/ppc/host/crypto/aes-round.h +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Power v2.07 specific aes acceleration. - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#ifndef PPC_HOST_CRYPTO_AES_ROUND_H -#define PPC_HOST_CRYPTO_AES_ROUND_H - -#ifdef __ALTIVEC__ -#include "host/cpuinfo.h" - -#ifdef __CRYPTO__ -# define HAVE_AES_ACCEL true -#else -# define HAVE_AES_ACCEL likely(cpuinfo & CPUINFO_CRYPTO) -#endif -#define ATTR_AES_ACCEL - -/* - * While there is , both gcc and clang "aid" with the - * endianness issues in different ways. Just use inline asm instead. - */ - -/* Bytes in memory are host-endian; bytes in register are @be. */ -static inline AESStateVec aes_accel_ld(const AESState *p, bool be) -{ - AESStateVec r; - - if (be) { - asm("lvx %0, 0, %1" : "=3Dv"(r) : "r"(p), "m"(*p)); - } else if (HOST_BIG_ENDIAN) { - AESStateVec rev =3D { - 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, - }; - asm("lvx %0, 0, %1\n\t" - "vperm %0, %0, %0, %2" - : "=3Dv"(r) : "r"(p), "v"(rev), "m"(*p)); - } else { -#ifdef __POWER9_VECTOR__ - asm("lxvb16x %x0, 0, %1" : "=3Dv"(r) : "r"(p), "m"(*p)); -#else - asm("lxvd2x %x0, 0, %1\n\t" - "xxpermdi %x0, %x0, %x0, 2" - : "=3Dv"(r) : "r"(p), "m"(*p)); -#endif - } - return r; -} - -static void aes_accel_st(AESState *p, AESStateVec r, bool be) -{ - if (be) { - asm("stvx %1, 0, %2" : "=3Dm"(*p) : "v"(r), "r"(p)); - } else if (HOST_BIG_ENDIAN) { - AESStateVec rev =3D { - 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, - }; - asm("vperm %1, %1, %1, %2\n\t" - "stvx %1, 0, %3" - : "=3Dm"(*p), "+v"(r) : "v"(rev), "r"(p)); - } else { -#ifdef __POWER9_VECTOR__ - asm("stxvb16x %x1, 0, %2" : "=3Dm"(*p) : "v"(r), "r"(p)); -#else - asm("xxpermdi %x1, %x1, %x1, 2\n\t" - "stxvd2x %x1, 0, %2" - : "=3Dm"(*p), "+v"(r) : "r"(p)); -#endif - } -} - -static inline AESStateVec aes_accel_vcipher(AESStateVec d, AESStateVec k) -{ - asm("vcipher %0, %0, %1" : "+v"(d) : "v"(k)); - return d; -} - -static inline AESStateVec aes_accel_vncipher(AESStateVec d, AESStateVec k) -{ - asm("vncipher %0, %0, %1" : "+v"(d) : "v"(k)); - return d; -} - -static inline AESStateVec aes_accel_vcipherlast(AESStateVec d, AESStateVec= k) -{ - asm("vcipherlast %0, %0, %1" : "+v"(d) : "v"(k)); - return d; -} - -static inline AESStateVec aes_accel_vncipherlast(AESStateVec d, AESStateVe= c k) -{ - asm("vncipherlast %0, %0, %1" : "+v"(d) : "v"(k)); - return d; -} - -static inline void -aesenc_MC_accel(AESState *ret, const AESState *st, bool be) -{ - AESStateVec t, z =3D { }; - - t =3D aes_accel_ld(st, be); - t =3D aes_accel_vncipherlast(t, z); - t =3D aes_accel_vcipher(t, z); - aes_accel_st(ret, t, be); -} - -static inline void -aesenc_SB_SR_AK_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - AESStateVec t, k; - - t =3D aes_accel_ld(st, be); - k =3D aes_accel_ld(rk, be); - t =3D aes_accel_vcipherlast(t, k); - aes_accel_st(ret, t, be); -} - -static inline void -aesenc_SB_SR_MC_AK_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - AESStateVec t, k; - - t =3D aes_accel_ld(st, be); - k =3D aes_accel_ld(rk, be); - t =3D aes_accel_vcipher(t, k); - aes_accel_st(ret, t, be); -} - -static inline void -aesdec_IMC_accel(AESState *ret, const AESState *st, bool be) -{ - AESStateVec t, z =3D { }; - - t =3D aes_accel_ld(st, be); - t =3D aes_accel_vcipherlast(t, z); - t =3D aes_accel_vncipher(t, z); - aes_accel_st(ret, t, be); -} - -static inline void -aesdec_ISB_ISR_AK_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - AESStateVec t, k; - - t =3D aes_accel_ld(st, be); - k =3D aes_accel_ld(rk, be); - t =3D aes_accel_vncipherlast(t, k); - aes_accel_st(ret, t, be); -} - -static inline void -aesdec_ISB_ISR_AK_IMC_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - AESStateVec t, k; - - t =3D aes_accel_ld(st, be); - k =3D aes_accel_ld(rk, be); - t =3D aes_accel_vncipher(t, k); - aes_accel_st(ret, t, be); -} - -static inline void -aesdec_ISB_ISR_IMC_AK_accel(AESState *ret, const AESState *st, - const AESState *rk, bool be) -{ - AESStateVec t, k, z =3D { }; - - t =3D aes_accel_ld(st, be); - k =3D aes_accel_ld(rk, be); - t =3D aes_accel_vncipher(t, z); - aes_accel_st(ret, t ^ k, be); -} -#else -/* Without ALTIVEC, we can't even write inline assembly. */ -#include "host/include/generic/host/crypto/aes-round.h" -#endif - -#endif /* PPC_HOST_CRYPTO_AES_ROUND_H */ diff --git a/host/include/ppc64/host/cpuinfo.h b/host/include/ppc64/host/cp= uinfo.h index 2f036a0627..38b8eabe2a 100644 --- a/host/include/ppc64/host/cpuinfo.h +++ b/host/include/ppc64/host/cpuinfo.h @@ -1 +1,30 @@ -#include "host/include/ppc/host/cpuinfo.h" +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * Host specific cpu identification for ppc. + */ + +#ifndef HOST_CPUINFO_H +#define HOST_CPUINFO_H + +/* Digested version of */ + +#define CPUINFO_ALWAYS (1u << 0) /* so cpuinfo is nonzero */ +#define CPUINFO_V2_06 (1u << 1) +#define CPUINFO_V2_07 (1u << 2) +#define CPUINFO_V3_0 (1u << 3) +#define CPUINFO_V3_1 (1u << 4) +#define CPUINFO_ISEL (1u << 5) +#define CPUINFO_ALTIVEC (1u << 6) +#define CPUINFO_VSX (1u << 7) +#define CPUINFO_CRYPTO (1u << 8) + +/* Initialized with a constructor. */ +extern unsigned cpuinfo; + +/* + * We cannot rely on constructor ordering, so other constructors must + * use the function interface rather than the variable above. + */ +unsigned cpuinfo_init(void); + +#endif /* HOST_CPUINFO_H */ diff --git a/host/include/ppc64/host/crypto/aes-round.h b/host/include/ppc6= 4/host/crypto/aes-round.h index 5eeba6dcb7..8062d2a537 100644 --- a/host/include/ppc64/host/crypto/aes-round.h +++ b/host/include/ppc64/host/crypto/aes-round.h @@ -1 +1,182 @@ -#include "host/include/ppc/host/crypto/aes-round.h" +/* + * Power v2.07 specific aes acceleration. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef PPC_HOST_CRYPTO_AES_ROUND_H +#define PPC_HOST_CRYPTO_AES_ROUND_H + +#ifdef __ALTIVEC__ +#include "host/cpuinfo.h" + +#ifdef __CRYPTO__ +# define HAVE_AES_ACCEL true +#else +# define HAVE_AES_ACCEL likely(cpuinfo & CPUINFO_CRYPTO) +#endif +#define ATTR_AES_ACCEL + +/* + * While there is , both gcc and clang "aid" with the + * endianness issues in different ways. Just use inline asm instead. + */ + +/* Bytes in memory are host-endian; bytes in register are @be. */ +static inline AESStateVec aes_accel_ld(const AESState *p, bool be) +{ + AESStateVec r; + + if (be) { + asm("lvx %0, 0, %1" : "=3Dv"(r) : "r"(p), "m"(*p)); + } else if (HOST_BIG_ENDIAN) { + AESStateVec rev =3D { + 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, + }; + asm("lvx %0, 0, %1\n\t" + "vperm %0, %0, %0, %2" + : "=3Dv"(r) : "r"(p), "v"(rev), "m"(*p)); + } else { +#ifdef __POWER9_VECTOR__ + asm("lxvb16x %x0, 0, %1" : "=3Dv"(r) : "r"(p), "m"(*p)); +#else + asm("lxvd2x %x0, 0, %1\n\t" + "xxpermdi %x0, %x0, %x0, 2" + : "=3Dv"(r) : "r"(p), "m"(*p)); +#endif + } + return r; +} + +static void aes_accel_st(AESState *p, AESStateVec r, bool be) +{ + if (be) { + asm("stvx %1, 0, %2" : "=3Dm"(*p) : "v"(r), "r"(p)); + } else if (HOST_BIG_ENDIAN) { + AESStateVec rev =3D { + 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, + }; + asm("vperm %1, %1, %1, %2\n\t" + "stvx %1, 0, %3" + : "=3Dm"(*p), "+v"(r) : "v"(rev), "r"(p)); + } else { +#ifdef __POWER9_VECTOR__ + asm("stxvb16x %x1, 0, %2" : "=3Dm"(*p) : "v"(r), "r"(p)); +#else + asm("xxpermdi %x1, %x1, %x1, 2\n\t" + "stxvd2x %x1, 0, %2" + : "=3Dm"(*p), "+v"(r) : "r"(p)); +#endif + } +} + +static inline AESStateVec aes_accel_vcipher(AESStateVec d, AESStateVec k) +{ + asm("vcipher %0, %0, %1" : "+v"(d) : "v"(k)); + return d; +} + +static inline AESStateVec aes_accel_vncipher(AESStateVec d, AESStateVec k) +{ + asm("vncipher %0, %0, %1" : "+v"(d) : "v"(k)); + return d; +} + +static inline AESStateVec aes_accel_vcipherlast(AESStateVec d, AESStateVec= k) +{ + asm("vcipherlast %0, %0, %1" : "+v"(d) : "v"(k)); + return d; +} + +static inline AESStateVec aes_accel_vncipherlast(AESStateVec d, AESStateVe= c k) +{ + asm("vncipherlast %0, %0, %1" : "+v"(d) : "v"(k)); + return d; +} + +static inline void +aesenc_MC_accel(AESState *ret, const AESState *st, bool be) +{ + AESStateVec t, z =3D { }; + + t =3D aes_accel_ld(st, be); + t =3D aes_accel_vncipherlast(t, z); + t =3D aes_accel_vcipher(t, z); + aes_accel_st(ret, t, be); +} + +static inline void +aesenc_SB_SR_AK_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + AESStateVec t, k; + + t =3D aes_accel_ld(st, be); + k =3D aes_accel_ld(rk, be); + t =3D aes_accel_vcipherlast(t, k); + aes_accel_st(ret, t, be); +} + +static inline void +aesenc_SB_SR_MC_AK_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + AESStateVec t, k; + + t =3D aes_accel_ld(st, be); + k =3D aes_accel_ld(rk, be); + t =3D aes_accel_vcipher(t, k); + aes_accel_st(ret, t, be); +} + +static inline void +aesdec_IMC_accel(AESState *ret, const AESState *st, bool be) +{ + AESStateVec t, z =3D { }; + + t =3D aes_accel_ld(st, be); + t =3D aes_accel_vcipherlast(t, z); + t =3D aes_accel_vncipher(t, z); + aes_accel_st(ret, t, be); +} + +static inline void +aesdec_ISB_ISR_AK_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + AESStateVec t, k; + + t =3D aes_accel_ld(st, be); + k =3D aes_accel_ld(rk, be); + t =3D aes_accel_vncipherlast(t, k); + aes_accel_st(ret, t, be); +} + +static inline void +aesdec_ISB_ISR_AK_IMC_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + AESStateVec t, k; + + t =3D aes_accel_ld(st, be); + k =3D aes_accel_ld(rk, be); + t =3D aes_accel_vncipher(t, k); + aes_accel_st(ret, t, be); +} + +static inline void +aesdec_ISB_ISR_IMC_AK_accel(AESState *ret, const AESState *st, + const AESState *rk, bool be) +{ + AESStateVec t, k, z =3D { }; + + t =3D aes_accel_ld(st, be); + k =3D aes_accel_ld(rk, be); + t =3D aes_accel_vncipher(t, z); + aes_accel_st(ret, t ^ k, be); +} +#else +/* Without ALTIVEC, we can't even write inline assembly. */ +#include "host/include/generic/host/crypto/aes-round.h" +#endif + +#endif /* PPC_HOST_CRYPTO_AES_ROUND_H */ diff --git a/linux-user/include/host/ppc/host-signal.h b/linux-user/include= /host/ppc/host-signal.h deleted file mode 100644 index de25c803f5..0000000000 --- a/linux-user/include/host/ppc/host-signal.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * host-signal.h: signal info dependent on the host architecture - * - * Copyright (c) 2022 Linaro Ltd. - * - * This work is licensed under the terms of the GNU LGPL, version 2.1 or l= ater. - * See the COPYING file in the top-level directory. - */ - -#ifndef PPC_HOST_SIGNAL_H -#define PPC_HOST_SIGNAL_H - -#include - -/* The third argument to a SA_SIGINFO handler is ucontext_t. */ -typedef ucontext_t host_sigcontext; - -static inline uintptr_t host_signal_pc(host_sigcontext *uc) -{ - return uc->uc_mcontext.regs->nip; -} - -static inline void host_signal_set_pc(host_sigcontext *uc, uintptr_t pc) -{ - uc->uc_mcontext.regs->nip =3D pc; -} - -static inline void *host_signal_mask(host_sigcontext *uc) -{ - return &uc->uc_sigmask; -} - -static inline bool host_signal_write(siginfo_t *info, host_sigcontext *uc) -{ - return uc->uc_mcontext.regs->trap !=3D 0x400 - && (uc->uc_mcontext.regs->dsisr & 0x02000000); -} - -#endif diff --git a/common-user/host/ppc/safe-syscall.inc.S b/common-user/host/ppc= /safe-syscall.inc.S deleted file mode 100644 index 0851f6c0b8..0000000000 --- a/common-user/host/ppc/safe-syscall.inc.S +++ /dev/null @@ -1,107 +0,0 @@ -/* - * safe-syscall.inc.S : host-specific assembly fragment - * to handle signals occurring at the same time as system calls. - * This is intended to be included by common-user/safe-syscall.S - * - * Copyright (C) 2022 Linaro, Ltd. - * - * This work is licensed under the terms of the GNU GPL, version 2 or late= r. - * See the COPYING file in the top-level directory. - */ - -/* - * Standardize on the _CALL_FOO symbols used by GCC: - * Apple XCode does not define _CALL_DARWIN. - * Clang defines _CALL_ELF (64-bit) but not _CALL_SYSV (32-bit). - */ -#if !defined(_CALL_SYSV) && \ - !defined(_CALL_DARWIN) && \ - !defined(_CALL_AIX) && \ - !defined(_CALL_ELF) -# if defined(__APPLE__) -# define _CALL_DARWIN -# elif defined(__ELF__) && TCG_TARGET_REG_BITS =3D=3D 32 -# define _CALL_SYSV -# else -# error "Unknown ABI" -# endif -#endif=20 - -#ifndef _CALL_SYSV -# error "Unsupported ABI" -#endif - - - .global safe_syscall_base - .global safe_syscall_start - .global safe_syscall_end - .type safe_syscall_base, @function - - .text - - /* - * This is the entry point for making a system call. The calling - * convention here is that of a C varargs function with the - * first argument an 'int *' to the signal_pending flag, the - * second one the system call number (as a 'long'), and all further - * arguments being syscall arguments (also 'long'). - */ -safe_syscall_base: - .cfi_startproc - stwu 1, -8(1) - .cfi_def_cfa_offset 8 - stw 30, 4(1) - .cfi_offset 30, -4 - - /* - * We enter with r3 =3D=3D &signal_pending - * r4 =3D=3D syscall number - * r5 ... r10 =3D=3D syscall arguments - * and return the result in r3 - * and the syscall instruction needs - * r0 =3D=3D syscall number - * r3 ... r8 =3D=3D syscall arguments - * and returns the result in r3 - * Shuffle everything around appropriately. - */ - mr 30, 3 /* signal_pending */ - mr 0, 4 /* syscall number */ - mr 3, 5 /* syscall arguments */ - mr 4, 6 - mr 5, 7 - mr 6, 8 - mr 7, 9 - mr 8, 10 - - /* - * This next sequence of code works in conjunction with the - * rewind_if_safe_syscall_function(). If a signal is taken - * and the interrupted PC is anywhere between 'safe_syscall_start' - * and 'safe_syscall_end' then we rewind it to 'safe_syscall_start= '. - * The code sequence must therefore be able to cope with this, and - * the syscall instruction must be the final one in the sequence. - */ -safe_syscall_start: - /* if signal_pending is non-zero, don't do the call */ - lwz 12, 0(30) - cmpwi 0, 12, 0 - bne- 2f - sc -safe_syscall_end: - /* code path when we did execute the syscall */ - lwz 30, 4(1) /* restore r30 */ - addi 1, 1, 8 /* restore stack */ - .cfi_restore 30 - .cfi_def_cfa_offset 0 - bnslr+ /* return on success */ - b safe_syscall_set_errno_tail - - /* code path when we didn't execute the syscall */ -2: lwz 30, 4(1) - addi 1, 1, 8 - addi 3, 0, QEMU_ERESTARTSYS - b safe_syscall_set_errno_tail - - .cfi_endproc - - .size safe_syscall_base, .-safe_syscall_base diff --git a/meson.build b/meson.build index 506904c7d7..7993e4cfb9 100644 --- a/meson.build +++ b/meson.build @@ -50,7 +50,7 @@ qapi_trace_events =3D [] =20 bsd_oses =3D ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly',= 'darwin'] supported_oses =3D ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', '= sunos', 'linux', 'emscripten'] -supported_cpus =3D ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86_64= ', +supported_cpus =3D ['ppc64', 's390x', 'riscv32', 'riscv64', 'x86_64', 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm64'] =20 cpu =3D host_machine.cpu_family() @@ -279,8 +279,6 @@ elif cpu =3D=3D 'aarch64' kvm_targets =3D ['aarch64-softmmu'] elif cpu =3D=3D 's390x' kvm_targets =3D ['s390x-softmmu'] -elif cpu =3D=3D 'ppc' - kvm_targets =3D ['ppc-softmmu'] elif cpu =3D=3D 'ppc64' kvm_targets =3D ['ppc-softmmu', 'ppc64-softmmu'] elif cpu =3D=3D 'mips64' --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534516; cv=none; d=zohomail.com; s=zohoarc; b=TOVc9XhAiprrtY5oK9UhGatMvLKk9XQB5pGLEZ5I89YpGjZvMTHkyJOUhiw1Vx/SEEfqUapWS7c8AwpAXsRaF0OxLd6+s2UmayCMKt5KcsGQkW+Dphw6a2rn3qSgIUS/oxk+3S2cuvplE9xc0sqWK2ol8pbhUOIJ2h/0O4T1WsU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534516; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wz/TZzAvKKMZ0ZLpHsQdp9lkg8RdqzBSeeZVnCRtct8=; b=juvJ9WVjFjcpB8Z5zfkQZ/Ie7lSeexQjIbM2zorb6P4yA5GaL85n0yxm8U6vXbzbHlWlOPoV14fUUte3GwYLC2a1C8C9RAdBWNxXWKUGhpwoDvP2yCoZU2qBYijeM0Qn780OXSEqb/8WgMtelahnUxS5lJi4yM91FI1nbF7Mcu0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534516054626.0572353792504; Thu, 15 Jan 2026 19:35:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabo-0007Sz-Am; Thu, 15 Jan 2026 22:34:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabU-00073D-RQ for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:30 -0500 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabR-0005ft-0b for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:28 -0500 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-81e8b1bdf0cso941840b3a.3 for ; Thu, 15 Jan 2026 19:34:24 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534464; x=1769139264; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wz/TZzAvKKMZ0ZLpHsQdp9lkg8RdqzBSeeZVnCRtct8=; b=KyAue7vOm/v7a0MIzYTheYID810c151j+UsyEDrd/1G7OyMtcqbOPg3lGNY2245he6 b8ZKj3org6mPNmRclqoMIHgLvK0lSl0UbMJP1ITygTDglNIncVZWlNzCEszl0IlMPDDP AiyLAM/1TfSPRV9tmrqf3WRbhEa/OOxyn8EfaIW+UB8ipbLRIkoTIKjk1QY0MuRR5spf VWTKXO6nEIIE8m0TZAkMUViMNcFRlknODHF7k48smj3PxEHVUTmrvRfpEFpL193y7SRx XcR/CbnkXCcpZk00tdFtC/doOVwBeE/h/2+HUfaW8nDG6D8Vb0xfgGHHExvtWOFUReHy 3xqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534464; x=1769139264; 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; bh=wz/TZzAvKKMZ0ZLpHsQdp9lkg8RdqzBSeeZVnCRtct8=; b=QZx6NSBh8hCTTSSouWx8sE0zQNxUMwQ7SH5SMBwMNqFC309yLSbmNnFebVBj4MznoM noaIQ2SDj4hhuJ57G8BKJn4l3jKucgW7UrKZAZN8wCjHINxrwUrQGOOIQxfNbZAPQdj0 F4QjP4tdUsxzDZ6NvjMhjM8JXDQzRtovbHiUNsagKK+Wa2yQON876yF00SxHaWd8x5qF VWAy2fb3NmFYz//lxjI3/G2bW0SMwBrrETvtr9yhg4iTtwMLFMQnxr262hieVsyy5WTe fGNbUE7enuCT6CZ3qPSnLGjHzhjqoD9Xnobow6Ke8vTRJNw3rTqKHMO6voAWeGGgooVY nSDw== X-Gm-Message-State: AOJu0YyQsfilNabXH+85XcgurmR5NNZGtr2Dntaad8u1NjY0pDDPqG9R X2/LF6Iu3t6gmhvyKFvzBR89gq2OygHnpla/JXcOzXhzKtQkQnUKvFWdT2ln+0EznwNRsWcGOvk FhIcbA9hCsg== X-Gm-Gg: AY/fxX4cw0magpk7HrLgGUd6AOAAd1L9akdFAPTdFZ4yC7dLdZ1WeDp8YuDzEy8aWlE tX9PqCwISh01PtdpD81n4EemzHVEHrUWGHB7XOnBB0Pi4Hm8e5KkxGqaBe2Yar4vGq5zVgrwKRN +iso3JeJ+AZUaAt3jfJ7+fKvIijOhj9vLH371X3doF/MKYbykDgG9oYEQ9XYBz793os84J3+Qcu UpwiIfISzBzKB1EAmakZJe1W4cPgpOWooaomj+pPQUBopxygIPKj6kn9ymj2Qic44jmeLzT7Edl qo07OBtDPUCN98DXe5GSlzPw4mdYnLgz0MsiraaA6Q1ExLdHN5b2I/JAko7EgHxGQsFA8/1lOej IekwZy0oqSFHiQehQWaG3TTdag5PV0tC4waZD63XiMMCQ2XB3Q7vOhwwfBDKf3pwOUQzzmYBBCl /u9U0qfv8+yregYbiduQ== X-Received: by 2002:a05:6a00:e84:b0:81e:b809:cf22 with SMTP id d2e1a72fcca58-81fa030f777mr1515588b3a.48.1768534463366; Thu, 15 Jan 2026 19:34:23 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 17/58] tcg/i386: Remove TCG_TARGET_REG_BITS tests Date: Fri, 16 Jan 2026 14:32:23 +1100 Message-ID: <20260116033305.51162-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534517526158500 Content-Type: text/plain; charset="utf-8" We now only support 64-bit code generation. Signed-off-by: Richard Henderson Reviewed-by: Thomas Huth --- tcg/i386/tcg-target-has.h | 8 +- tcg/i386/tcg-target-reg-bits.h | 2 +- tcg/i386/tcg-target.h | 13 +- tcg/i386/tcg-target.c.inc | 552 ++++++--------------------------- 4 files changed, 97 insertions(+), 478 deletions(-) diff --git a/tcg/i386/tcg-target-has.h b/tcg/i386/tcg-target-has.h index 42647fabbd..d249c1b3e7 100644 --- a/tcg/i386/tcg-target-has.h +++ b/tcg/i386/tcg-target-has.h @@ -26,13 +26,10 @@ #define have_avx512vbmi2 ((cpuinfo & CPUINFO_AVX512VBMI2) && have_avx512v= l) =20 /* optional instructions */ -#if TCG_TARGET_REG_BITS =3D=3D 64 /* Keep 32-bit values zero-extended in a register. */ #define TCG_TARGET_HAS_extr_i64_i32 1 -#endif =20 -#define TCG_TARGET_HAS_qemu_ldst_i128 \ - (TCG_TARGET_REG_BITS =3D=3D 64 && (cpuinfo & CPUINFO_ATOMIC_VMOVDQA)) +#define TCG_TARGET_HAS_qemu_ldst_i128 (cpuinfo & CPUINFO_ATOMIC_VMOVDQA) =20 #define TCG_TARGET_HAS_tst 1 =20 @@ -63,8 +60,7 @@ #define TCG_TARGET_HAS_tst_vec have_avx512bw =20 #define TCG_TARGET_deposit_valid(type, ofs, len) \ - (((ofs) =3D=3D 0 && ((len) =3D=3D 8 || (len) =3D=3D 16)) || \ - (TCG_TARGET_REG_BITS =3D=3D 32 && (ofs) =3D=3D 8 && (len) =3D=3D 8)) + ((ofs) =3D=3D 0 && ((len) =3D=3D 8 || (len) =3D=3D 16)) =20 /* * Check for the possibility of low byte/word extraction, high-byte extrac= tion diff --git a/tcg/i386/tcg-target-reg-bits.h b/tcg/i386/tcg-target-reg-bits.h index aa386050eb..fc3377e829 100644 --- a/tcg/i386/tcg-target-reg-bits.h +++ b/tcg/i386/tcg-target-reg-bits.h @@ -10,7 +10,7 @@ #ifdef __x86_64__ # define TCG_TARGET_REG_BITS 64 #else -# define TCG_TARGET_REG_BITS 32 +# error #endif =20 #endif diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index 3cbdfbca52..7ebae56a7d 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -27,13 +27,8 @@ =20 #define TCG_TARGET_INSN_UNIT_SIZE 1 =20 -#ifdef __x86_64__ -# define TCG_TARGET_NB_REGS 32 -# define MAX_CODE_GEN_BUFFER_SIZE (2 * GiB) -#else -# define TCG_TARGET_NB_REGS 24 -# define MAX_CODE_GEN_BUFFER_SIZE UINT32_MAX -#endif +#define TCG_TARGET_NB_REGS 32 +#define MAX_CODE_GEN_BUFFER_SIZE (2 * GiB) =20 typedef enum { TCG_REG_EAX =3D 0, @@ -45,8 +40,6 @@ typedef enum { TCG_REG_ESI, TCG_REG_EDI, =20 - /* 64-bit registers; always define the symbols to avoid - too much if-deffing. */ TCG_REG_R8, TCG_REG_R9, TCG_REG_R10, @@ -64,8 +57,6 @@ typedef enum { TCG_REG_XMM5, TCG_REG_XMM6, TCG_REG_XMM7, - - /* 64-bit registers; likewise always define. */ TCG_REG_XMM8, TCG_REG_XMM9, TCG_REG_XMM10, diff --git a/tcg/i386/tcg-target.c.inc b/tcg/i386/tcg-target.c.inc index ee27266861..92251f8327 100644 --- a/tcg/i386/tcg-target.c.inc +++ b/tcg/i386/tcg-target.c.inc @@ -34,32 +34,22 @@ #if defined(_WIN64) # define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_BY_REF # define TCG_TARGET_CALL_RET_I128 TCG_CALL_RET_BY_VEC -#elif TCG_TARGET_REG_BITS =3D=3D 64 -# define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_NORMAL -# define TCG_TARGET_CALL_RET_I128 TCG_CALL_RET_NORMAL #else # define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_NORMAL -# define TCG_TARGET_CALL_RET_I128 TCG_CALL_RET_BY_REF +# define TCG_TARGET_CALL_RET_I128 TCG_CALL_RET_NORMAL #endif =20 #ifdef CONFIG_DEBUG_TCG static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] =3D { -#if TCG_TARGET_REG_BITS =3D=3D 64 "%rax", "%rcx", "%rdx", "%rbx", "%rsp", "%rbp", "%rsi", "%rdi", -#else - "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi", -#endif "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6", "%xmm7", -#if TCG_TARGET_REG_BITS =3D=3D 64 "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15", -#endif }; #endif =20 static const int tcg_target_reg_alloc_order[] =3D { -#if TCG_TARGET_REG_BITS =3D=3D 64 TCG_REG_RBP, TCG_REG_RBX, TCG_REG_R12, @@ -75,15 +65,6 @@ static const int tcg_target_reg_alloc_order[] =3D { TCG_REG_RSI, TCG_REG_RDI, TCG_REG_RAX, -#else - TCG_REG_EBX, - TCG_REG_ESI, - TCG_REG_EDI, - TCG_REG_EBP, - TCG_REG_ECX, - TCG_REG_EDX, - TCG_REG_EAX, -#endif TCG_REG_XMM0, TCG_REG_XMM1, TCG_REG_XMM2, @@ -95,7 +76,6 @@ static const int tcg_target_reg_alloc_order[] =3D { any of them. Therefore only allow xmm0-xmm5 to be allocated. */ TCG_REG_XMM6, TCG_REG_XMM7, -#if TCG_TARGET_REG_BITS =3D=3D 64 TCG_REG_XMM8, TCG_REG_XMM9, TCG_REG_XMM10, @@ -105,13 +85,11 @@ static const int tcg_target_reg_alloc_order[] =3D { TCG_REG_XMM14, TCG_REG_XMM15, #endif -#endif }; =20 #define TCG_TMP_VEC TCG_REG_XMM5 =20 static const int tcg_target_call_iarg_regs[] =3D { -#if TCG_TARGET_REG_BITS =3D=3D 64 #if defined(_WIN64) TCG_REG_RCX, TCG_REG_RDX, @@ -123,9 +101,6 @@ static const int tcg_target_call_iarg_regs[] =3D { #endif TCG_REG_R8, TCG_REG_R9, -#else - /* 32 bit mode uses stack based calling convention (GCC default). */ -#endif }; =20 static TCGReg tcg_target_call_oarg_reg(TCGCallReturnKind kind, int slot) @@ -152,26 +127,13 @@ static TCGReg tcg_target_call_oarg_reg(TCGCallReturnK= ind kind, int slot) #define TCG_CT_CONST_TST 0x1000 #define TCG_CT_CONST_ZERO 0x2000 =20 -/* Registers used with L constraint, which are the first argument - registers on x86_64, and two random call clobbered registers on - i386. */ -#if TCG_TARGET_REG_BITS =3D=3D 64 -# define TCG_REG_L0 tcg_target_call_iarg_regs[0] -# define TCG_REG_L1 tcg_target_call_iarg_regs[1] -#else -# define TCG_REG_L0 TCG_REG_EAX -# define TCG_REG_L1 TCG_REG_EDX -#endif +/* Registers used with L constraint. */ +#define TCG_REG_L0 tcg_target_call_iarg_regs[0] +#define TCG_REG_L1 tcg_target_call_iarg_regs[1] =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 -# define ALL_GENERAL_REGS 0x0000ffffu -# define ALL_VECTOR_REGS 0xffff0000u -# define ALL_BYTEL_REGS ALL_GENERAL_REGS -#else -# define ALL_GENERAL_REGS 0x000000ffu -# define ALL_VECTOR_REGS 0x00ff0000u -# define ALL_BYTEL_REGS 0x0000000fu -#endif +#define ALL_GENERAL_REGS 0x0000ffffu +#define ALL_VECTOR_REGS 0xffff0000u +#define ALL_BYTEL_REGS ALL_GENERAL_REGS #define SOFTMMU_RESERVE_REGS \ (tcg_use_softmmu ? (1 << TCG_REG_L0) | (1 << TCG_REG_L1) : 0) =20 @@ -184,14 +146,12 @@ static bool patch_reloc(tcg_insn_unit *code_ptr, int = type, intptr_t value, intptr_t addend) { value +=3D addend; - switch(type) { + switch (type) { case R_386_PC32: value -=3D (uintptr_t)tcg_splitwx_to_rx(code_ptr); if (value !=3D (int32_t)value) { return false; } - /* FALLTHRU */ - case R_386_32: tcg_patch32(code_ptr, value); break; case R_386_PC8: @@ -256,17 +216,10 @@ static bool tcg_target_const_match(int64_t val, int c= t, #define P_EXT38 0x200 /* 0x0f 0x38 opcode prefix */ #define P_DATA16 0x400 /* 0x66 opcode prefix */ #define P_VEXW 0x1000 /* Set VEX.W =3D 1 */ -#if TCG_TARGET_REG_BITS =3D=3D 64 -# define P_REXW P_VEXW /* Set REX.W =3D 1; match VEXW */ -# define P_REXB_R 0x2000 /* REG field as byte register */ -# define P_REXB_RM 0x4000 /* R/M field as byte register */ -# define P_GS 0x8000 /* gs segment override */ -#else -# define P_REXW 0 -# define P_REXB_R 0 -# define P_REXB_RM 0 -# define P_GS 0 -#endif +#define P_REXW P_VEXW /* Set REX.W =3D 1; match VEXW */ +#define P_REXB_R 0x2000 /* REG field as byte register */ +#define P_REXB_RM 0x4000 /* R/M field as byte register */ +#define P_GS 0x8000 /* gs segment override */ #define P_EXT3A 0x10000 /* 0x0f 0x3a opcode prefix */ #define P_SIMDF3 0x20000 /* 0xf3 opcode prefix */ #define P_SIMDF2 0x40000 /* 0xf2 opcode prefix */ @@ -571,7 +524,6 @@ static const uint8_t tcg_cond_to_jcc[] =3D { [TCG_COND_TSTNE] =3D JCC_JNE, }; =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 static void tcg_out_opc(TCGContext *s, int opc, int r, int rm, int x) { int rex; @@ -619,32 +571,6 @@ static void tcg_out_opc(TCGContext *s, int opc, int r,= int rm, int x) =20 tcg_out8(s, opc); } -#else -static void tcg_out_opc(TCGContext *s, int opc) -{ - if (opc & P_DATA16) { - tcg_out8(s, 0x66); - } - if (opc & P_SIMDF3) { - tcg_out8(s, 0xf3); - } else if (opc & P_SIMDF2) { - tcg_out8(s, 0xf2); - } - if (opc & (P_EXT | P_EXT38 | P_EXT3A)) { - tcg_out8(s, 0x0f); - if (opc & P_EXT38) { - tcg_out8(s, 0x38); - } else if (opc & P_EXT3A) { - tcg_out8(s, 0x3a); - } - } - tcg_out8(s, opc); -} -/* Discard the register arguments to tcg_out_opc early, so as not to penal= ize - the 32-bit compilation paths. This method works with all versions of g= cc, - whereas relying on optimization may not be able to exclude them. */ -#define tcg_out_opc(s, opc, r, rm, x) (tcg_out_opc)(s, opc) -#endif =20 static void tcg_out_modrm(TCGContext *s, int opc, int r, int rm) { @@ -790,35 +716,32 @@ static void tcg_out_sib_offset(TCGContext *s, int r, = int rm, int index, int mod, len; =20 if (index < 0 && rm < 0) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - /* Try for a rip-relative addressing mode. This has replaced - the 32-bit-mode absolute addressing encoding. */ - intptr_t pc =3D (intptr_t)s->code_ptr + 5 + ~rm; - intptr_t disp =3D offset - pc; - if (disp =3D=3D (int32_t)disp) { - tcg_out8(s, (LOWREGMASK(r) << 3) | 5); - tcg_out32(s, disp); - return; - } + /* + * Try for a rip-relative addressing mode. This has replaced + * the 32-bit-mode absolute addressing encoding. + */ + intptr_t pc =3D (intptr_t)s->code_ptr + 5 + ~rm; + intptr_t disp =3D offset - pc; + if (disp =3D=3D (int32_t)disp) { + tcg_out8(s, (LOWREGMASK(r) << 3) | 5); + tcg_out32(s, disp); + return; + } =20 - /* Try for an absolute address encoding. This requires the - use of the MODRM+SIB encoding and is therefore larger than - rip-relative addressing. */ - if (offset =3D=3D (int32_t)offset) { - tcg_out8(s, (LOWREGMASK(r) << 3) | 4); - tcg_out8(s, (4 << 3) | 5); - tcg_out32(s, offset); - return; - } - - /* ??? The memory isn't directly addressable. */ - g_assert_not_reached(); - } else { - /* Absolute address. */ - tcg_out8(s, (r << 3) | 5); + /* + * Try for an absolute address encoding. This requires the + * use of the MODRM+SIB encoding and is therefore larger than + * rip-relative addressing. + */ + if (offset =3D=3D (int32_t)offset) { + tcg_out8(s, (LOWREGMASK(r) << 3) | 4); + tcg_out8(s, (4 << 3) | 5); tcg_out32(s, offset); return; } + + /* ??? The memory isn't directly addressable. */ + g_assert_not_reached(); } =20 /* Find the length of the immediate addend. Note that the encoding @@ -1045,27 +968,14 @@ static void tcg_out_dupi_vec(TCGContext *s, TCGType = type, unsigned vece, return; } =20 - if (TCG_TARGET_REG_BITS =3D=3D 32 && vece < MO_64) { - if (have_avx2) { - tcg_out_vex_modrm_pool(s, OPC_VPBROADCASTD + vex_l, ret); - } else { - tcg_out_vex_modrm_pool(s, OPC_VBROADCASTSS, ret); - } - new_pool_label(s, arg, R_386_32, s->code_ptr - 4, 0); + if (type =3D=3D TCG_TYPE_V64) { + tcg_out_vex_modrm_pool(s, OPC_MOVQ_VqWq, ret); + } else if (have_avx2) { + tcg_out_vex_modrm_pool(s, OPC_VPBROADCASTQ + vex_l, ret); } else { - if (type =3D=3D TCG_TYPE_V64) { - tcg_out_vex_modrm_pool(s, OPC_MOVQ_VqWq, ret); - } else if (have_avx2) { - tcg_out_vex_modrm_pool(s, OPC_VPBROADCASTQ + vex_l, ret); - } else { - tcg_out_vex_modrm_pool(s, OPC_MOVDDUP, ret); - } - if (TCG_TARGET_REG_BITS =3D=3D 64) { - new_pool_label(s, arg, R_386_PC32, s->code_ptr - 4, -4); - } else { - new_pool_l2(s, R_386_32, s->code_ptr - 4, 0, arg, arg >> 32); - } + tcg_out_vex_modrm_pool(s, OPC_MOVDDUP, ret); } + new_pool_label(s, arg, R_386_PC32, s->code_ptr - 4, -4); } =20 static void tcg_out_movi_vec(TCGContext *s, TCGType type, @@ -1082,11 +992,7 @@ static void tcg_out_movi_vec(TCGContext *s, TCGType t= ype, =20 int rexw =3D (type =3D=3D TCG_TYPE_I32 ? 0 : P_REXW); tcg_out_vex_modrm_pool(s, OPC_MOVD_VyEy + rexw, ret); - if (TCG_TARGET_REG_BITS =3D=3D 64) { - new_pool_label(s, arg, R_386_PC32, s->code_ptr - 4, -4); - } else { - new_pool_label(s, arg, R_386_32, s->code_ptr - 4, 0); - } + new_pool_label(s, arg, R_386_PC32, s->code_ptr - 4, -4); } =20 static void tcg_out_movi_int(TCGContext *s, TCGType type, @@ -1127,9 +1033,7 @@ static void tcg_out_movi(TCGContext *s, TCGType type, { switch (type) { case TCG_TYPE_I32: -#if TCG_TARGET_REG_BITS =3D=3D 64 case TCG_TYPE_I64: -#endif if (ret < 16) { tcg_out_movi_int(s, type, ret, arg); } else { @@ -1292,7 +1196,7 @@ static bool tcg_out_sti(TCGContext *s, TCGType type, = TCGArg val, TCGReg base, intptr_t ofs) { int rexw =3D 0; - if (TCG_TARGET_REG_BITS =3D=3D 64 && type =3D=3D TCG_TYPE_I64) { + if (type =3D=3D TCG_TYPE_I64) { if (val !=3D (int32_t)val) { return false; } @@ -1331,31 +1235,12 @@ static inline void tcg_out_rolw_8(TCGContext *s, in= t reg) =20 static void tcg_out_ext8u(TCGContext *s, TCGReg dest, TCGReg src) { - if (TCG_TARGET_REG_BITS =3D=3D 32 && src >=3D 4) { - tcg_out_mov(s, TCG_TYPE_I32, dest, src); - if (dest >=3D 4) { - tcg_out_modrm(s, OPC_ARITH_EvIz, ARITH_AND, dest); - tcg_out32(s, 0xff); - return; - } - src =3D dest; - } tcg_out_modrm(s, OPC_MOVZBL + P_REXB_RM, dest, src); } =20 static void tcg_out_ext8s(TCGContext *s, TCGType type, TCGReg dest, TCGReg= src) { int rexw =3D type =3D=3D TCG_TYPE_I32 ? 0 : P_REXW; - - if (TCG_TARGET_REG_BITS =3D=3D 32 && src >=3D 4) { - tcg_out_mov(s, TCG_TYPE_I32, dest, src); - if (dest >=3D 4) { - tcg_out_shifti(s, SHIFT_SHL, dest, 24); - tcg_out_shifti(s, SHIFT_SAR, dest, 24); - return; - } - src =3D dest; - } tcg_out_modrm(s, OPC_MOVSBL + P_REXB_RM + rexw, dest, src); } =20 @@ -1380,7 +1265,6 @@ static void tcg_out_ext32u(TCGContext *s, TCGReg dest= , TCGReg src) =20 static void tcg_out_ext32s(TCGContext *s, TCGReg dest, TCGReg src) { - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64); tcg_out_modrm(s, OPC_MOVSLQ, dest, src); } =20 @@ -1409,12 +1293,9 @@ static inline void tcg_out_bswap64(TCGContext *s, in= t reg) static void tgen_arithi(TCGContext *s, int c, int r0, tcg_target_long val, int cf) { - int rexw =3D 0; + int rexw =3D c & -8; =20 - if (TCG_TARGET_REG_BITS =3D=3D 64) { - rexw =3D c & -8; - c &=3D 7; - } + c &=3D 7; =20 switch (c) { case ARITH_ADD: @@ -1427,16 +1308,12 @@ static void tgen_arithi(TCGContext *s, int c, int r= 0, */ if (val =3D=3D 1 || val =3D=3D -1) { int is_inc =3D (c =3D=3D ARITH_ADD) ^ (val < 0); - if (TCG_TARGET_REG_BITS =3D=3D 64) { - /* - * The single-byte increment encodings are re-tasked - * as the REX prefixes. Use the MODRM encoding. - */ - tcg_out_modrm(s, OPC_GRP5 + rexw, - (is_inc ? EXT5_INC_Ev : EXT5_DEC_Ev), r0= ); - } else { - tcg_out8(s, (is_inc ? OPC_INC_r32 : OPC_DEC_r32) + r0); - } + /* + * The single-byte increment encodings are re-tasked + * as the REX prefixes. Use the MODRM encoding. + */ + tcg_out_modrm(s, OPC_GRP5 + rexw, + (is_inc ? EXT5_INC_Ev : EXT5_DEC_Ev), r0); return; } if (val =3D=3D 128) { @@ -1451,17 +1328,15 @@ static void tgen_arithi(TCGContext *s, int c, int r= 0, break; =20 case ARITH_AND: - if (TCG_TARGET_REG_BITS =3D=3D 64) { - if (val =3D=3D 0xffffffffu) { - tcg_out_ext32u(s, r0, r0); - return; - } - if (val =3D=3D (uint32_t)val) { - /* AND with no high bits set can use a 32-bit operation. = */ - rexw =3D 0; - } + if (val =3D=3D 0xffffffffu) { + tcg_out_ext32u(s, r0, r0); + return; } - if (val =3D=3D 0xffu && (r0 < 4 || TCG_TARGET_REG_BITS =3D=3D 64))= { + if (val =3D=3D (uint32_t)val) { + /* AND with no high bits set can use a 32-bit operation. */ + rexw =3D 0; + } + if (val =3D=3D 0xffu) { tcg_out_ext8u(s, r0, r0); return; } @@ -1473,8 +1348,7 @@ static void tgen_arithi(TCGContext *s, int c, int r0, =20 case ARITH_OR: case ARITH_XOR: - if (val >=3D 0x80 && val <=3D 0xff - && (r0 < 4 || TCG_TARGET_REG_BITS =3D=3D 64)) { + if (val >=3D 0x80 && val <=3D 0xff) { tcg_out_modrm(s, OPC_ARITH_EbIb + P_REXB_RM, c, r0); tcg_out8(s, val); return; @@ -1577,7 +1451,7 @@ static int tcg_out_cmp(TCGContext *s, TCGCond cond, T= CGArg arg1, return jz; } =20 - if (arg2 <=3D 0xff && (TCG_TARGET_REG_BITS =3D=3D 64 || arg1 < 4)) { + if (arg2 <=3D 0xff) { if (arg2 =3D=3D 0x80) { tcg_out_modrm(s, OPC_TESTB | P_REXB_R, arg1, arg1); return js; @@ -1669,53 +1543,6 @@ static const TCGOutOpBrcond outop_brcond =3D { .out_ri =3D tgen_brcondi, }; =20 -static void tcg_out_brcond2(TCGContext *s, TCGCond cond, TCGReg al, - TCGReg ah, TCGArg bl, bool blconst, - TCGArg bh, bool bhconst, - TCGLabel *label_this, bool small) -{ - TCGLabel *label_next =3D gen_new_label(); - - switch (cond) { - case TCG_COND_EQ: - case TCG_COND_TSTEQ: - tcg_out_brcond(s, 0, tcg_invert_cond(cond), - al, bl, blconst, label_next, true); - tcg_out_brcond(s, 0, cond, ah, bh, bhconst, label_this, small); - break; - - case TCG_COND_NE: - case TCG_COND_TSTNE: - tcg_out_brcond(s, 0, cond, al, bl, blconst, label_this, small); - tcg_out_brcond(s, 0, cond, ah, bh, bhconst, label_this, small); - break; - - default: - tcg_out_brcond(s, 0, tcg_high_cond(cond), - ah, bh, bhconst, label_this, small); - tcg_out_jxx(s, JCC_JNE, label_next, 1); - tcg_out_brcond(s, 0, tcg_unsigned_cond(cond), - al, bl, blconst, label_this, small); - break; - } - tcg_out_label(s, label_next); -} - -static void tgen_brcond2(TCGContext *s, TCGCond cond, TCGReg al, - TCGReg ah, TCGArg bl, bool blconst, - TCGArg bh, bool bhconst, TCGLabel *l) -{ - tcg_out_brcond2(s, cond, al, ah, bl, blconst, bh, bhconst, l, false); -} - -#if TCG_TARGET_REG_BITS !=3D 32 -__attribute__((unused)) -#endif -static const TCGOutOpBrcond2 outop_brcond2 =3D { - .base.static_constraint =3D C_O0_I4(r, r, ri, ri), - .out =3D tgen_brcond2, -}; - static void tcg_out_setcond(TCGContext *s, TCGType type, TCGCond cond, TCGReg dest, TCGReg arg1, TCGArg arg2, bool const_arg2, bool neg) @@ -1867,54 +1694,6 @@ static const TCGOutOpSetcond outop_negsetcond =3D { .out_rri =3D tgen_negsetcondi, }; =20 -static void tgen_setcond2(TCGContext *s, TCGCond cond, TCGReg ret, - TCGReg al, TCGReg ah, - TCGArg bl, bool const_bl, - TCGArg bh, bool const_bh) -{ - TCGLabel *label_over =3D gen_new_label(); - - if (ret =3D=3D al || ret =3D=3D ah - || (!const_bl && ret =3D=3D bl) - || (!const_bh && ret =3D=3D bh)) { - /* - * When the destination overlaps with one of the argument - * registers, don't do anything tricky. - */ - TCGLabel *label_true =3D gen_new_label(); - - tcg_out_brcond2(s, cond, al, ah, bl, const_bl, - bh, const_bh, label_true, true); - - tcg_out_movi(s, TCG_TYPE_I32, ret, 0); - tcg_out_jxx(s, JCC_JMP, label_over, 1); - tcg_out_label(s, label_true); - - tcg_out_movi(s, TCG_TYPE_I32, ret, 1); - } else { - /* - * When the destination does not overlap one of the arguments, - * clear the destination first, jump if cond false, and emit an - * increment in the true case. This results in smaller code. - */ - tcg_out_movi(s, TCG_TYPE_I32, ret, 0); - - tcg_out_brcond2(s, tcg_invert_cond(cond), al, ah, bl, const_bl, - bh, const_bh, label_over, true); - - tgen_arithi(s, ARITH_ADD, ret, 1, 0); - } - tcg_out_label(s, label_over); -} - -#if TCG_TARGET_REG_BITS !=3D 32 -__attribute__((unused)) -#endif -static const TCGOutOpSetcond2 outop_setcond2 =3D { - .base.static_constraint =3D C_O1_I4(r, r, r, ri, ri), - .out =3D tgen_setcond2, -}; - static void tcg_out_cmov(TCGContext *s, int jcc, int rexw, TCGReg dest, TCGReg v1) { @@ -1959,22 +1738,6 @@ static void tcg_out_call(TCGContext *s, const tcg_in= sn_unit *dest, const TCGHelperInfo *info) { tcg_out_branch(s, 1, dest); - -#ifndef _WIN32 - if (TCG_TARGET_REG_BITS =3D=3D 32 && info->out_kind =3D=3D TCG_CALL_RE= T_BY_REF) { - /* - * The sysv i386 abi for struct return places a reference as the - * first argument of the stack, and pops that argument with the - * return statement. Since we want to retain the aligned stack - * pointer for the callee, we do not want to actually push that - * argument before the call but rely on the normal store to the - * stack slot. But we do need to compensate for the pop in order - * to reset our correct stack pointer value. - * Pushing a garbage value back onto the stack is quickest. - */ - tcg_out_push(s, TCG_REG_EAX); - } -#endif } =20 static void tcg_out_jmp(TCGContext *s, const tcg_insn_unit *dest) @@ -2025,15 +1788,13 @@ bool tcg_target_has_memory_bswap(MemOp memop) } =20 /* - * Because i686 has no register parameters and because x86_64 has xchg - * to handle addr/data register overlap, we have placed all input arguments - * before we need might need a scratch reg. + * Because x86_64 has xchg to handle addr/data register overlap, we have + * placed all input arguments before we need might need a scratch reg. * * Even then, a scratch is only needed for l->raddr. Rather than expose * a general-purpose scratch when we don't actually know it's available, * use the ra_gen hook to load into RAX if needed. */ -#if TCG_TARGET_REG_BITS =3D=3D 64 static TCGReg ldst_ra_gen(TCGContext *s, const TCGLabelQemuLdst *l, int ar= g) { if (arg < 0) { @@ -2042,12 +1803,10 @@ static TCGReg ldst_ra_gen(TCGContext *s, const TCGL= abelQemuLdst *l, int arg) tcg_out_movi(s, TCG_TYPE_PTR, arg, (uintptr_t)l->raddr); return arg; } + static const TCGLdstHelperParam ldst_helper_param =3D { .ra_gen =3D ldst_ra_gen }; -#else -static const TCGLdstHelperParam ldst_helper_param =3D { }; -#endif =20 static void tcg_out_vec_to_pair(TCGContext *s, TCGType type, TCGReg l, TCGReg h, TCGReg v) @@ -2121,7 +1880,7 @@ static HostAddress x86_guest_base =3D { .index =3D -1 }; =20 -#if defined(__x86_64__) && defined(__linux__) +#if defined(__linux__) # include # include int arch_prctl(int code, unsigned long addr); @@ -2133,8 +1892,7 @@ static inline int setup_guest_base_seg(void) return 0; } #define setup_guest_base_seg setup_guest_base_seg -#elif defined(__x86_64__) && \ - (defined (__FreeBSD__) || defined (__FreeBSD_kernel__)) +#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__) # include static inline int setup_guest_base_seg(void) { @@ -2195,14 +1953,12 @@ static TCGLabelQemuLdst *prepare_host_addr(TCGConte= xt *s, HostAddress *h, ldst->oi =3D oi; ldst->addr_reg =3D addr; =20 - if (TCG_TARGET_REG_BITS =3D=3D 64) { - ttype =3D s->addr_type; - trexw =3D (ttype =3D=3D TCG_TYPE_I32 ? 0 : P_REXW); - if (TCG_TYPE_PTR =3D=3D TCG_TYPE_I64) { - hrexw =3D P_REXW; - tlbtype =3D TCG_TYPE_I64; - tlbrexw =3D P_REXW; - } + ttype =3D s->addr_type; + trexw =3D (ttype =3D=3D TCG_TYPE_I32 ? 0 : P_REXW); + if (TCG_TYPE_PTR =3D=3D TCG_TYPE_I64) { + hrexw =3D P_REXW; + tlbtype =3D TCG_TYPE_I64; + tlbrexw =3D P_REXW; } =20 tcg_out_mov(s, tlbtype, TCG_REG_L0, addr); @@ -2314,7 +2070,6 @@ static void tcg_out_qemu_ld_direct(TCGContext *s, TCG= Reg datalo, TCGReg datahi, tcg_out_modrm_sib_offset(s, movop + h.seg, datalo, h.base, h.index, 0, h.ofs); break; -#if TCG_TARGET_REG_BITS =3D=3D 64 case MO_SL: if (use_movbe) { tcg_out_modrm_sib_offset(s, OPC_MOVBE_GyMy + h.seg, datalo, @@ -2325,34 +2080,12 @@ static void tcg_out_qemu_ld_direct(TCGContext *s, T= CGReg datalo, TCGReg datahi, h.base, h.index, 0, h.ofs); } break; -#endif case MO_UQ: - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_out_modrm_sib_offset(s, movop + P_REXW + h.seg, datalo, - h.base, h.index, 0, h.ofs); - break; - } - if (use_movbe) { - TCGReg t =3D datalo; - datalo =3D datahi; - datahi =3D t; - } - if (h.base =3D=3D datalo || h.index =3D=3D datalo) { - tcg_out_modrm_sib_offset(s, OPC_LEA, datahi, - h.base, h.index, 0, h.ofs); - tcg_out_modrm_offset(s, movop + h.seg, datalo, datahi, 0); - tcg_out_modrm_offset(s, movop + h.seg, datahi, datahi, 4); - } else { - tcg_out_modrm_sib_offset(s, movop + h.seg, datalo, - h.base, h.index, 0, h.ofs); - tcg_out_modrm_sib_offset(s, movop + h.seg, datahi, - h.base, h.index, 0, h.ofs + 4); - } + tcg_out_modrm_sib_offset(s, movop + P_REXW + h.seg, datalo, + h.base, h.index, 0, h.ofs); break; =20 case MO_128: - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64); - /* * Without 16-byte atomicity, use integer regs. * That is where we want the data, and it allows bswaps. @@ -2483,8 +2216,6 @@ static void tcg_out_qemu_st_direct(TCGContext *s, TCG= Reg datalo, TCGReg datahi, =20 switch (memop & MO_SIZE) { case MO_8: - /* This is handled with constraints in cset_qemu_st(). */ - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64 || datalo < 4); tcg_out_modrm_sib_offset(s, OPC_MOVB_EvGv + P_REXB_R + h.seg, datalo, h.base, h.index, 0, h.ofs); break; @@ -2497,25 +2228,11 @@ static void tcg_out_qemu_st_direct(TCGContext *s, T= CGReg datalo, TCGReg datahi, h.base, h.index, 0, h.ofs); break; case MO_64: - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_out_modrm_sib_offset(s, movop + P_REXW + h.seg, datalo, - h.base, h.index, 0, h.ofs); - } else { - if (use_movbe) { - TCGReg t =3D datalo; - datalo =3D datahi; - datahi =3D t; - } - tcg_out_modrm_sib_offset(s, movop + h.seg, datalo, - h.base, h.index, 0, h.ofs); - tcg_out_modrm_sib_offset(s, movop + h.seg, datahi, - h.base, h.index, 0, h.ofs + 4); - } + tcg_out_modrm_sib_offset(s, movop + P_REXW + h.seg, datalo, + h.base, h.index, 0, h.ofs); break; =20 case MO_128: - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64); - /* * Without 16-byte atomicity, use integer regs. * That is where we have the data, and it allows bswaps. @@ -2592,16 +2309,8 @@ static void tgen_qemu_st(TCGContext *s, TCGType type= , TCGReg data, } } =20 -static TCGConstraintSetIndex cset_qemu_st(TCGType type, unsigned flags) -{ - return flags =3D=3D MO_8 ? C_O0_I2(s, L) : C_O0_I2(L, L); -} - static const TCGOutOpQemuLdSt outop_qemu_st =3D { - .base.static_constraint =3D - TCG_TARGET_REG_BITS =3D=3D 32 ? C_Dynamic : C_O0_I2(L, L), - .base.dynamic_constraint =3D - TCG_TARGET_REG_BITS =3D=3D 32 ? cset_qemu_st : NULL, + .base.static_constraint =3D C_O0_I2(L, L), .out =3D tgen_qemu_st, }; =20 @@ -2958,7 +2667,6 @@ static const TCGOutOpBinary outop_eqv =3D { .base.static_constraint =3D C_NotImplemented, }; =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 static void tgen_extrh_i64_i32(TCGContext *s, TCGType t, TCGReg a0, TCGReg= a1) { tcg_out_shifti(s, SHIFT_SHR + P_REXW, a0, 32); @@ -2968,7 +2676,6 @@ static const TCGOutOpUnary outop_extrh_i64_i32 =3D { .base.static_constraint =3D C_O1_I1(r, 0), .out_rr =3D tgen_extrh_i64_i32, }; -#endif /* TCG_TARGET_REG_BITS =3D=3D 64 */ =20 static void tgen_mul(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) @@ -3320,7 +3027,6 @@ static const TCGOutOpBswap outop_bswap32 =3D { .out_rr =3D tgen_bswap32, }; =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 static void tgen_bswap64(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { tcg_out_bswap64(s, a0); @@ -3330,7 +3036,6 @@ static const TCGOutOpUnary outop_bswap64 =3D { .base.static_constraint =3D C_O1_I1(r, 0), .out_rr =3D tgen_bswap64, }; -#endif =20 static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { @@ -3361,8 +3066,6 @@ static void tgen_deposit(TCGContext *s, TCGType type,= TCGReg a0, TCGReg a1, tcg_out_modrm(s, OPC_MOVB_EvGv | P_REXB_R | P_REXB_RM, a2, a0); } else if (ofs =3D=3D 0 && len =3D=3D 16) { tcg_out_modrm(s, OPC_MOVL_EvGv | P_DATA16, a2, a0); - } else if (TCG_TARGET_REG_BITS =3D=3D 32 && ofs =3D=3D 8 && len =3D=3D= 8) { - tcg_out_modrm(s, OPC_MOVB_EvGv, a2, a0 + 4); } else { g_assert_not_reached(); } @@ -3377,9 +3080,6 @@ static void tgen_depositi(TCGContext *s, TCGType type= , TCGReg a0, TCGReg a1, } else if (ofs =3D=3D 0 && len =3D=3D 16) { tcg_out_opc(s, OPC_MOVL_Iv | P_DATA16 | LOWREGMASK(a0), 0, a0, 0); tcg_out16(s, a2); - } else if (TCG_TARGET_REG_BITS =3D=3D 32 && ofs =3D=3D 8 && len =3D=3D= 8) { - tcg_out8(s, OPC_MOVB_Ib + a0 + 4); - tcg_out8(s, a2); } else { g_assert_not_reached(); } @@ -3406,7 +3106,7 @@ static void tgen_extract(TCGContext *s, TCGType type,= TCGReg a0, TCGReg a1, tcg_out_ext32u(s, a0, a1); return; } - } else if (TCG_TARGET_REG_BITS =3D=3D 64 && ofs + len =3D=3D 32) { + } else if (ofs + len =3D=3D 32) { /* This is a 32-bit zero-extending right shift. */ tcg_out_mov(s, TCG_TYPE_I32, a0, a1); tcg_out_shifti(s, SHIFT_SHR, a0, ofs); @@ -3417,7 +3117,7 @@ static void tgen_extract(TCGContext *s, TCGType type,= TCGReg a0, TCGReg a1, * Otherwise we emit the same ext16 + shift pattern that we * would have gotten from the normal tcg-op.c expansion. */ - if (a1 < 4 && (TCG_TARGET_REG_BITS =3D=3D 32 || a0 < 8)) { + if (a1 < 4 && a0 < 8) { tcg_out_modrm(s, OPC_MOVZBL, a0, a1 + 4); } else { tcg_out_ext16u(s, a0, a1); @@ -3526,7 +3226,6 @@ static const TCGOutOpLoad outop_ld16s =3D { .out =3D tgen_ld16s, }; =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 static void tgen_ld32u(TCGContext *s, TCGType type, TCGReg dest, TCGReg base, ptrdiff_t offset) { @@ -3548,7 +3247,6 @@ static const TCGOutOpLoad outop_ld32s =3D { .base.static_constraint =3D C_O1_I1(r, r), .out =3D tgen_ld32s, }; -#endif =20 static void tgen_st8_r(TCGContext *s, TCGType type, TCGReg data, TCGReg base, ptrdiff_t offset) @@ -3990,16 +3688,6 @@ static void tcg_out_vec_op(TCGContext *s, TCGOpcode = opc, a1 =3D a2; a2 =3D args[3]; goto gen_simd; -#if TCG_TARGET_REG_BITS =3D=3D 32 - case INDEX_op_dup2_vec: - /* First merge the two 32-bit inputs to a single 64-bit element. */ - tcg_out_vex_modrm(s, OPC_PUNPCKLDQ, a0, a1, a2); - /* Then replicate the 64-bit elements across the rest of the vecto= r. */ - if (type !=3D TCG_TYPE_V64) { - tcg_out_dup_vec(s, type, MO_64, a0, a0); - } - break; -#endif case INDEX_op_abs_vec: insn =3D abs_insn[vece]; a2 =3D a1; @@ -4194,9 +3882,6 @@ tcg_target_op_def(TCGOpcode op, TCGType type, unsigne= d flags) case INDEX_op_x86_punpckh_vec: case INDEX_op_x86_vpshldi_vec: case INDEX_op_x86_vgf2p8affineqb_vec: -#if TCG_TARGET_REG_BITS =3D=3D 32 - case INDEX_op_dup2_vec: -#endif return C_O1_I2(x, x, x); =20 case INDEX_op_abs_vec: @@ -4732,7 +4417,6 @@ void tcg_expand_vec_op(TCGOpcode opc, TCGType type, u= nsigned vece, } =20 static const int tcg_target_callee_save_regs[] =3D { -#if TCG_TARGET_REG_BITS =3D=3D 64 TCG_REG_RBP, TCG_REG_RBX, #if defined(_WIN64) @@ -4743,20 +4427,13 @@ static const int tcg_target_callee_save_regs[] =3D { TCG_REG_R13, TCG_REG_R14, /* Currently used for the global env. */ TCG_REG_R15, -#else - TCG_REG_EBP, /* Currently used for the global env. */ - TCG_REG_EBX, - TCG_REG_ESI, - TCG_REG_EDI, -#endif }; =20 /* Compute frame size via macros, to share between tcg_target_qemu_prologue and tcg_register_jit. */ =20 #define PUSH_SIZE \ - ((1 + ARRAY_SIZE(tcg_target_callee_save_regs)) \ - * (TCG_TARGET_REG_BITS / 8)) + ((1 + ARRAY_SIZE(tcg_target_callee_save_regs)) * sizeof(tcg_target_lon= g)) =20 #define FRAME_SIZE \ ((PUSH_SIZE \ @@ -4789,7 +4466,6 @@ static void tcg_target_qemu_prologue(TCGContext *s) } else if (guest_base =3D=3D (int32_t)guest_base) { x86_guest_base.ofs =3D guest_base; } else { - assert(TCG_TARGET_REG_BITS =3D=3D 64); /* Choose R12 because, as a base, it requires a SIB byte. */ x86_guest_base.index =3D TCG_REG_R12; tcg_out_movi(s, TCG_TYPE_PTR, x86_guest_base.index, guest_base= ); @@ -4797,20 +4473,10 @@ static void tcg_target_qemu_prologue(TCGContext *s) } } =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_out_ld(s, TCG_TYPE_PTR, TCG_AREG0, TCG_REG_ESP, - (ARRAY_SIZE(tcg_target_callee_save_regs) + 1) * 4); - tcg_out_addi(s, TCG_REG_ESP, -stack_addend); - /* jmp *tb. */ - tcg_out_modrm_offset(s, OPC_GRP5, EXT5_JMPN_Ev, TCG_REG_ESP, - (ARRAY_SIZE(tcg_target_callee_save_regs) + 2)= * 4 - + stack_addend); - } else { - tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[= 0]); - tcg_out_addi(s, TCG_REG_ESP, -stack_addend); - /* jmp *tb. */ - tcg_out_modrm(s, OPC_GRP5, EXT5_JMPN_Ev, tcg_target_call_iarg_regs= [1]); - } + tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[0]); + tcg_out_addi(s, TCG_REG_ESP, -stack_addend); + /* jmp *tb. */ + tcg_out_modrm(s, OPC_GRP5, EXT5_JMPN_Ev, tcg_target_call_iarg_regs[1]); =20 /* * Return path for goto_ptr. Set return value to 0, a-la exit_tb, @@ -4846,9 +4512,7 @@ static void tcg_out_nop_fill(tcg_insn_unit *p, int co= unt) static void tcg_target_init(TCGContext *s) { tcg_target_available_regs[TCG_TYPE_I32] =3D ALL_GENERAL_REGS; - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_target_available_regs[TCG_TYPE_I64] =3D ALL_GENERAL_REGS; - } + tcg_target_available_regs[TCG_TYPE_I64] =3D ALL_GENERAL_REGS; if (have_avx1) { tcg_target_available_regs[TCG_TYPE_V64] =3D ALL_VECTOR_REGS; tcg_target_available_regs[TCG_TYPE_V128] =3D ALL_VECTOR_REGS; @@ -4861,16 +4525,14 @@ static void tcg_target_init(TCGContext *s) tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_EAX); tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_EDX); tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_ECX); - if (TCG_TARGET_REG_BITS =3D=3D 64) { #if !defined(_WIN64) - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_RDI); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_RSI); + tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_RDI); + tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_RSI); #endif - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R8); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R9); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R10); - tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R11); - } + tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R8); + tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R9); + tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R10); + tcg_regset_set_reg(tcg_target_call_clobber_regs, TCG_REG_R11); =20 s->reserved_regs =3D 0; tcg_regset_set_reg(s->reserved_regs, TCG_REG_CALL_STACK); @@ -4899,10 +4561,9 @@ typedef struct { /* We're expecting a 2 byte uleb128 encoded value. */ QEMU_BUILD_BUG_ON(FRAME_SIZE >=3D (1 << 14)); =20 -#if !defined(__ELF__) - /* Host machine without ELF. */ -#elif TCG_TARGET_REG_BITS =3D=3D 64 +#ifdef __ELF__ #define ELF_HOST_MACHINE EM_X86_64 + static const DebugFrame debug_frame =3D { .h.cie.len =3D sizeof(DebugFrameCIE)-4, /* length after .len member */ .h.cie.id =3D -1, @@ -4930,36 +4591,7 @@ static const DebugFrame debug_frame =3D { 0x8f, 7, /* DW_CFA_offset, %r15, -56 */ } }; -#else -#define ELF_HOST_MACHINE EM_386 -static const DebugFrame debug_frame =3D { - .h.cie.len =3D sizeof(DebugFrameCIE)-4, /* length after .len member */ - .h.cie.id =3D -1, - .h.cie.version =3D 1, - .h.cie.code_align =3D 1, - .h.cie.data_align =3D 0x7c, /* sleb128 -4 */ - .h.cie.return_column =3D 8, =20 - /* Total FDE size does not include the "len" member. */ - .h.fde.len =3D sizeof(DebugFrame) - offsetof(DebugFrame, h.fde.cie_off= set), - - .fde_def_cfa =3D { - 12, 4, /* DW_CFA_def_cfa %esp, ... */ - (FRAME_SIZE & 0x7f) | 0x80, /* ... uleb128 FRAME_SIZE */ - (FRAME_SIZE >> 7) - }, - .fde_reg_ofs =3D { - 0x88, 1, /* DW_CFA_offset, %eip, -4 */ - /* The following ordering must match tcg_target_callee_save_regs. = */ - 0x85, 2, /* DW_CFA_offset, %ebp, -8 */ - 0x83, 3, /* DW_CFA_offset, %ebx, -12 */ - 0x86, 4, /* DW_CFA_offset, %esi, -16 */ - 0x87, 5, /* DW_CFA_offset, %edi, -20 */ - } -}; -#endif - -#if defined(ELF_HOST_MACHINE) void tcg_register_jit(const void *buf, size_t buf_size) { tcg_register_jit_int(buf, buf_size, &debug_frame, sizeof(debug_frame)); --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534640; cv=none; d=zohomail.com; s=zohoarc; b=BES1Y56vF8iiaM4aIw11vF27PdFRPm5+3WDQDXITGAStlBW/5aau/JhQTqhpaTvcIfO5jkkEU+HdhE3+bNNTBwwCrOD+O/WBaeWYA7smBBXlFBErAznay3TiODdgOY9GWk4JwBjsLgTw/zMtlA/5ASm0IixEO2YQY4urUk+v61M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534640; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7DzNQby4LQPUtVLwqs2IyxJ1FWe8jwshY5ovM9t1IBI=; b=mMcs9TjZUy0T7TyyiLRKECK0LdxMwOKKxUY2zmqc6IuvJVC2HhdqEHtUw3QZEAKMT1y3pQ4PyO42A5dx28QHHgN9Ancz+wZR/XGLurYOeCsSGfG1C4qVva0L3a87v4DQsb/akOmAQMn3yG0/x0Zg2Z2xMOoY8AmfID2x0MGTxGU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534640756575.9946321999062; Thu, 15 Jan 2026 19:37:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabn-0007OJ-Vj; Thu, 15 Jan 2026 22:34:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabX-00075f-3I for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:32 -0500 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabV-0005hg-84 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:30 -0500 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-c2af7d09533so1084671a12.1 for ; Thu, 15 Jan 2026 19:34:28 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534467; x=1769139267; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7DzNQby4LQPUtVLwqs2IyxJ1FWe8jwshY5ovM9t1IBI=; b=BJJ4u9BDKhiWH65Swdz/WoGWJlQkpZO4xdohnhAc3B/ymbQZ926QXxvtSP/WtDveh/ mrCXAJSY6Akl3T5sBrUvrmY9yhTHZvWGh7A8D8XGR2ECJMpVEcgQOS0fCYCyCU3pMQnT xs6cXOSGmvHNbEBv5eJC9nF8v80hdrRCpydPK8GqMYwFECO1sZ1ld0eD09kNSmmtRPEA 27DqmjmTY9RrVWh9Y/ZxOiX6xxkM+GFbi7GcEkotCgbtYbpCH0VqzBeU7I/de7/CLJF7 gyu7WguQjoQutX00VXETIe3c2qYaOBMd9egFsp3265OLFNnuducwSoqkgTVFscpGjqJf cnmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534467; x=1769139267; 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; bh=7DzNQby4LQPUtVLwqs2IyxJ1FWe8jwshY5ovM9t1IBI=; b=e3HIaGOV5kRgBkANCmAWf8kQcRyIHnvI6HLf9+BPGBbVw3KgR6D21cAPxz+paQ6VYO SsJEBVlRu3U8Tj+oZQogS4n3Ivr8mRtUw972gLuGi47H13S50KsQZwIjKVDUCUd7ccL9 u72VkROjKrJMKp8AEepBF+xo+jGHz2ZEiFHDCGd0pxxxcep8L/ZKfKZ9Ot/8YD54QcYb l7meRCJieJbFag0WnVnkGh9Faip36TBnMje52ufiwlACbl/TZqg5AYuaNZx4ae03HSpD IG4Zhg2G8YEPJgN01e0U/IETKjq3cYdpIBsWZErH1ns4gCIfcpt4jAcoj3d9wJfQrnJ9 EJNw== X-Gm-Message-State: AOJu0YzlDED0hDE7F3xSw+dH2W8TMjvjCVTDxCCOBWDMpxkvQAKuSovU jSS1NDQ3iSINvO+FFeSzc1z2xthPrngNXk/Y2a9fF6WGxjPOoBr0XoYjX2xFhIFg8Y6EKhD6+FO +qDgyJhJS3w== X-Gm-Gg: AY/fxX5a2YqHTYmiX0Qlg+/yB+LXEg1TAx7YqKMAEcPoqdSAX4LfYGBWaLlNh0bTXY9 KnukZB9KtL/vr8nBEitXLbiS2tj/4RK2i156eLXsSU89rnHgJUutdxdsSzx6G9KWrXUicqV3JpR mVE/z18iVnmyoRr0Fg8bjuGT29HQ1PEBLF2aYQH4LRNRIJnJfK0AQry7PNJdO966tJ/3XYAxWU2 xOhji5cmx03CfgkSGUUcn7Xru4kkEzLxW+Ls+QGXe0GR1A6nq+ZwOU24dlMpPHAASqoiZ2ppQNK t/Uj8q70CGaz7EBYOpxhPy6fOLQFUF89y+BqXMClqro8qfBbKmi4PrXnhkZZC3p0LqCa2tlk/NB YDsozh/tUaal/XZWQ0Dr6Qt0oKonRxF+ZIZgwEHVxKYzqz8tAbQqPnEEL+VDrtfIYdwoefxiXAY E9d5cKHDGlcRTrGYWkDg== X-Received: by 2002:a05:6a20:431c:b0:38b:dec8:9da2 with SMTP id adf61e73a8af0-38dfe67bb6fmr1927619637.26.1768534467149; Thu, 15 Jan 2026 19:34:27 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 18/58] tcg/x86_64: Rename from i386 Date: Fri, 16 Jan 2026 14:32:24 +1100 Message-ID: <20260116033305.51162-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534641976158500 Emphasize that we're generating 64-bit code. Drop the explicit rename from meson's cpu. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/{i386 =3D> x86_64}/tcg-target-con-set.h | 0 tcg/{i386 =3D> x86_64}/tcg-target-con-str.h | 0 tcg/{i386 =3D> x86_64}/tcg-target-has.h | 0 tcg/{i386 =3D> x86_64}/tcg-target-mo.h | 0 tcg/{i386 =3D> x86_64}/tcg-target-reg-bits.h | 0 tcg/{i386 =3D> x86_64}/tcg-target.h | 0 MAINTAINERS | 4 ++-- meson.build | 2 -- tcg/{i386 =3D> x86_64}/tcg-target-opc.h.inc | 0 tcg/{i386 =3D> x86_64}/tcg-target.c.inc | 0 10 files changed, 2 insertions(+), 4 deletions(-) rename tcg/{i386 =3D> x86_64}/tcg-target-con-set.h (100%) rename tcg/{i386 =3D> x86_64}/tcg-target-con-str.h (100%) rename tcg/{i386 =3D> x86_64}/tcg-target-has.h (100%) rename tcg/{i386 =3D> x86_64}/tcg-target-mo.h (100%) rename tcg/{i386 =3D> x86_64}/tcg-target-reg-bits.h (100%) rename tcg/{i386 =3D> x86_64}/tcg-target.h (100%) rename tcg/{i386 =3D> x86_64}/tcg-target-opc.h.inc (100%) rename tcg/{i386 =3D> x86_64}/tcg-target.c.inc (100%) diff --git a/tcg/i386/tcg-target-con-set.h b/tcg/x86_64/tcg-target-con-set.h similarity index 100% rename from tcg/i386/tcg-target-con-set.h rename to tcg/x86_64/tcg-target-con-set.h diff --git a/tcg/i386/tcg-target-con-str.h b/tcg/x86_64/tcg-target-con-str.h similarity index 100% rename from tcg/i386/tcg-target-con-str.h rename to tcg/x86_64/tcg-target-con-str.h diff --git a/tcg/i386/tcg-target-has.h b/tcg/x86_64/tcg-target-has.h similarity index 100% rename from tcg/i386/tcg-target-has.h rename to tcg/x86_64/tcg-target-has.h diff --git a/tcg/i386/tcg-target-mo.h b/tcg/x86_64/tcg-target-mo.h similarity index 100% rename from tcg/i386/tcg-target-mo.h rename to tcg/x86_64/tcg-target-mo.h diff --git a/tcg/i386/tcg-target-reg-bits.h b/tcg/x86_64/tcg-target-reg-bit= s.h similarity index 100% rename from tcg/i386/tcg-target-reg-bits.h rename to tcg/x86_64/tcg-target-reg-bits.h diff --git a/tcg/i386/tcg-target.h b/tcg/x86_64/tcg-target.h similarity index 100% rename from tcg/i386/tcg-target.h rename to tcg/x86_64/tcg-target.h diff --git a/MAINTAINERS b/MAINTAINERS index 1a6e5bbafe..c39a8f54e8 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4057,10 +4057,10 @@ S: Maintained L: qemu-arm@nongnu.org F: tcg/aarch64/ =20 -i386 TCG target +X86 TCG target M: Richard Henderson S: Maintained -F: tcg/i386/ +F: tcg/x86_64/ =20 LoongArch64 TCG target M: WANG Xuerui diff --git a/meson.build b/meson.build index 7993e4cfb9..594e7d42c0 100644 --- a/meson.build +++ b/meson.build @@ -907,8 +907,6 @@ if have_tcg endif if get_option('tcg_interpreter') tcg_arch =3D 'tci' - elif host_arch =3D=3D 'x86_64' - tcg_arch =3D 'i386' elif host_arch =3D=3D 'ppc64' tcg_arch =3D 'ppc' endif diff --git a/tcg/i386/tcg-target-opc.h.inc b/tcg/x86_64/tcg-target-opc.h.inc similarity index 100% rename from tcg/i386/tcg-target-opc.h.inc rename to tcg/x86_64/tcg-target-opc.h.inc diff --git a/tcg/i386/tcg-target.c.inc b/tcg/x86_64/tcg-target.c.inc similarity index 100% rename from tcg/i386/tcg-target.c.inc rename to tcg/x86_64/tcg-target.c.inc --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534545; cv=none; d=zohomail.com; s=zohoarc; b=T8X7ySl3XrULob13PShIm0oeoQKm1f4ZLfrIQpCDUzGIwxPSFHyvx+s26F8DpAQE46rlkvNpM9NAQaE2+TQ1kXEuMOzukxGmmMWopeOleA0+ZKYMlaLFhcbXYw/hEd2vGkeQa1L3QE70qZCALRM1JEuXpagqtOGT5oEX8EusA+o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534545; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=92HxQ69qgo/2VgbhtKQwCIAt9EeS2yQ9NqJlStKghbs=; b=Wc/NRZTnFFTflha8uP+3BwkgccQ11rYfReOA4We6+s+ey6Ev1ABj7PYDSXJmadKuhBc+cfFEbM9MNUXrER9pzTrGjlp0qxy9HTpEhN/KvuNBYTQ65ZtDzsQLah38WzKuJ13U0yCJB7tkK/IednYIfsAv+EA1mv859Ix86Cjf9XE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534545539839.5673262162277; Thu, 15 Jan 2026 19:35:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabp-0007Wy-5C; Thu, 15 Jan 2026 22:34:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaba-0007D3-DL for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:36 -0500 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabY-0005jL-Ee for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:33 -0500 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-81f42a49437so814573b3a.0 for ; Thu, 15 Jan 2026 19:34:32 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534471; x=1769139271; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=92HxQ69qgo/2VgbhtKQwCIAt9EeS2yQ9NqJlStKghbs=; b=xDBXwA4PuXWc8tsBP9t2Xa6kNpUI73daLhz0LXm7rBRK8QmfvFMBSyW3SyudguXTFY ErG1Ogojl9oqORI10rl0byoqHeN9eAm7yjrpLPRVbPKqgvLvB2cNGaTsnmvCzzSvZIU0 tMxKo3e5xTIlH0cxtc0YuSKz5SAI62BJKvTGYiyrDNWmax8ufhk9CG4zgn2XzHTXlrAV +qsFxxTDGqGzGqFVGsEIlJkMwDn+hBguMdmXA/GrmeARJLL3KTtGLOHplGRB5lg4B+lA lf62NUxlWC0Zm7RmdFze5DiPJa9gGZEjvG2zn7UsAcfBj8NWpX2ysXOxKcJZn44gJMRX cv5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534471; x=1769139271; 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; bh=92HxQ69qgo/2VgbhtKQwCIAt9EeS2yQ9NqJlStKghbs=; b=hGLqIBmp0wYG0jxSo2TuU/QU+1hFVYqIAKmPpcaCWj2EzSO5+h1oGlAZbJu/5ShykD x8q25jwSzbydPPA5oCdow0u1DComAY26s/U8oW8xKuoWuMdESzVfHg8TvW+gcaPktVvN AFW3triTn4/Hscn2OdgHOV53ovwruNf/QS3IdHbpaBaQTQW9jm/rofizfxQT/swgO0QZ LayE/QwuyOo3O1OhOarXwpskSleIJBfoT6wD5bnRZo/PDIE4BsvPVxV/qrs9fi+U8Pti Ai8/07vz3Gw4oKZbPGxpKnKRIBVjiJagWrDTowEdyiE1/yxSlwObiRhjLhI57K5OgmSv 0mqQ== X-Gm-Message-State: AOJu0Yx5lZdE0SubB3gfaE3MaslP2s0namJyplw37bwC0J72zDgAkABU +pg7jcfVaFYJDh0KaruQ9542E+t6+crnDOk5h8lifZueWYWqD02aMa273rqxbR3KLBvHgGyxCQA pv3eGmfuAbg== X-Gm-Gg: AY/fxX6z2YgrKR7rXQitNTKHYCxwPxjXd3NbI9aV1Cf4bz4xbr2Aa3GitJXAFRHc0Qy WyzRgGGvd8NV7o1LsPXGZQZPai93R5IIuBWRaXixbEHrlwTBIayvN2eCVnC4xgsKfySh29h8ekS MDO8asJQiw98bHdNh1lFpoSz+KOiwulbiRTxhLoSHZgkRqF0AfD/wKLKUpuII/o9LHepKaUnlHg 9IbEZlK3sVD4I++yqrgq15drUaKhA+ozxbRlYdQ9h2cTQaBQTfPRSS0qSJCq28EXhWRKPlsYUAR qgqQHvXVgP6FJf/stob7N/6xOXeK4ccUBloIEGexwIqiEZsBEAH59oJcWuu+ru4WhgEAgFbOU0+ uH7vwd20ZOW1LTORfq0K2EvbX4XVB9XER+z4TokrFswwdEIB+GeTDtN095ep5pHDtvnnkZLs0E6 y40xm8xDWejgRBqGpssw== X-Received: by 2002:a05:6a00:1da7:b0:7e8:43f5:bd40 with SMTP id d2e1a72fcca58-81fa01e2082mr1468693b3a.44.1768534470926; Thu, 15 Jan 2026 19:34:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 19/58] tcg/ppc64: Rename from ppc Date: Fri, 16 Jan 2026 14:32:25 +1100 Message-ID: <20260116033305.51162-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534547630158500 Emphasize that we're generating 64-bit code. Drop the explicit rename from meson's cpu. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/{ppc =3D> ppc64}/tcg-target-con-set.h | 0 tcg/{ppc =3D> ppc64}/tcg-target-con-str.h | 0 tcg/{ppc =3D> ppc64}/tcg-target-has.h | 0 tcg/{ppc =3D> ppc64}/tcg-target-mo.h | 0 tcg/{ppc =3D> ppc64}/tcg-target-reg-bits.h | 0 tcg/{ppc =3D> ppc64}/tcg-target.h | 0 MAINTAINERS | 2 +- meson.build | 2 -- tcg/{ppc =3D> ppc64}/tcg-target-opc.h.inc | 0 tcg/{ppc =3D> ppc64}/tcg-target.c.inc | 0 10 files changed, 1 insertion(+), 3 deletions(-) rename tcg/{ppc =3D> ppc64}/tcg-target-con-set.h (100%) rename tcg/{ppc =3D> ppc64}/tcg-target-con-str.h (100%) rename tcg/{ppc =3D> ppc64}/tcg-target-has.h (100%) rename tcg/{ppc =3D> ppc64}/tcg-target-mo.h (100%) rename tcg/{ppc =3D> ppc64}/tcg-target-reg-bits.h (100%) rename tcg/{ppc =3D> ppc64}/tcg-target.h (100%) rename tcg/{ppc =3D> ppc64}/tcg-target-opc.h.inc (100%) rename tcg/{ppc =3D> ppc64}/tcg-target.c.inc (100%) diff --git a/tcg/ppc/tcg-target-con-set.h b/tcg/ppc64/tcg-target-con-set.h similarity index 100% rename from tcg/ppc/tcg-target-con-set.h rename to tcg/ppc64/tcg-target-con-set.h diff --git a/tcg/ppc/tcg-target-con-str.h b/tcg/ppc64/tcg-target-con-str.h similarity index 100% rename from tcg/ppc/tcg-target-con-str.h rename to tcg/ppc64/tcg-target-con-str.h diff --git a/tcg/ppc/tcg-target-has.h b/tcg/ppc64/tcg-target-has.h similarity index 100% rename from tcg/ppc/tcg-target-has.h rename to tcg/ppc64/tcg-target-has.h diff --git a/tcg/ppc/tcg-target-mo.h b/tcg/ppc64/tcg-target-mo.h similarity index 100% rename from tcg/ppc/tcg-target-mo.h rename to tcg/ppc64/tcg-target-mo.h diff --git a/tcg/ppc/tcg-target-reg-bits.h b/tcg/ppc64/tcg-target-reg-bits.h similarity index 100% rename from tcg/ppc/tcg-target-reg-bits.h rename to tcg/ppc64/tcg-target-reg-bits.h diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc64/tcg-target.h similarity index 100% rename from tcg/ppc/tcg-target.h rename to tcg/ppc64/tcg-target.h diff --git a/MAINTAINERS b/MAINTAINERS index c39a8f54e8..c58fa93fd5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4079,7 +4079,7 @@ F: tcg/mips/ PPC TCG target M: Richard Henderson S: Odd Fixes -F: tcg/ppc/ +F: tcg/ppc64/ =20 RISC-V TCG target M: Palmer Dabbelt diff --git a/meson.build b/meson.build index 594e7d42c0..0647ca0c89 100644 --- a/meson.build +++ b/meson.build @@ -907,8 +907,6 @@ if have_tcg endif if get_option('tcg_interpreter') tcg_arch =3D 'tci' - elif host_arch =3D=3D 'ppc64' - tcg_arch =3D 'ppc' endif add_project_arguments('-iquote', meson.current_source_dir() / 'tcg' / tc= g_arch, language: all_languages) diff --git a/tcg/ppc/tcg-target-opc.h.inc b/tcg/ppc64/tcg-target-opc.h.inc similarity index 100% rename from tcg/ppc/tcg-target-opc.h.inc rename to tcg/ppc64/tcg-target-opc.h.inc diff --git a/tcg/ppc/tcg-target.c.inc b/tcg/ppc64/tcg-target.c.inc similarity index 100% rename from tcg/ppc/tcg-target.c.inc rename to tcg/ppc64/tcg-target.c.inc --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534666; cv=none; d=zohomail.com; s=zohoarc; b=igxUcxo0q8nOHK/31syyWpUh6uObf/qb2kH6l3lwBaOe0irncjZhMsoQH+HYMJ6PWLRqfCFJKxFxOGHMJNgGAcMcakirRLRdY1SLGv0HyvarISNSvleDovl+cx1eNt8pI4uQM5K4liNrjmGtMnS7A2fQcMSMuMbB431VstFszWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534666; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KL546BRv3o5TBcmNuNTcD1O7NivqyCwfyc6P5AJbIyY=; b=KwsWLqIZ6TRYEERkwIsdAj/ldASZJy3GisE9ARIFw9/88mYgTz9IorGJRH1BE5mAo/rkGj9YyoCUeBz7o6RGn4pXpxr5Wt9s2nzTMFk0iuxZpiHoO1Cnqy8hrfbEEW1s7K+vZWHBlywEKrQasmnG0BZUCiDEgdZXt65e1kUPyAE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534666616656.1662469776285; Thu, 15 Jan 2026 19:37:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabo-0007Vr-TH; Thu, 15 Jan 2026 22:34:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabd-0007Fz-N5 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:40 -0500 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabc-0005ks-0Y for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:37 -0500 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-7b22ffa2a88so705436b3a.1 for ; Thu, 15 Jan 2026 19:34:35 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534475; x=1769139275; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KL546BRv3o5TBcmNuNTcD1O7NivqyCwfyc6P5AJbIyY=; b=PebdVed6IiAeFlUbg9Y3i0KLuwCTinvPIBb1gbDbIoBnAOHtRTFxiz0t9gEcuGEGkJ sSFhhhzPIQf94LA22qkuivpJwz6WsnuOoTSl+xjujhRaulSyobhvmWXbsYLF8GDRP+nh ed+NQ4pcNdp/GZpviJCvNLUxOvwzb3QtyumaHLVLrySAv310bDcoJD7lRU/rMaF/IVXr QA69pcYcmSj0ayNn4A7DKs4ZZ2I/TPXWzipfpXD54go1DmufDgmpkdEKNvO+jWMjQ5tu IG0zm3o/TjMeyJ9bdxC/fUfqWn4blWejcKQnC9R/N/U/cXQEhvCQ8Xp6MLPGM1zqlvUT N3kQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534475; x=1769139275; 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; bh=KL546BRv3o5TBcmNuNTcD1O7NivqyCwfyc6P5AJbIyY=; b=UaLqJhz5+Lfonhw56w3gaM0XYY7uPJnTYmWM5hoC77kGjIVC+Z6DZe4HNrc4eCsrL2 7XV7KJZclMbwinSdU0MtCU4OpVRH4k4sRknBbVLea1tEvoiZybs6stQrA/rMOMsTm0r0 154JSBqd748+tfq551t7KOr/yAvhGrKD0OPMJcr6bDiK0Q2RiCEHSIwJCIDVncUjTUoP tYSyb5Qgemosfn3EmRRRkY08hXmBzjQSi0kacuQao7PMG+l2VaaMf941JOveE/NmX07P fEhiwnD86ooYIlxzJ3kk4+gZlmFzPzHMh7yrsxdBB3oG6/v/rCi0mGmh5JZBlCVblWrp zNzQ== X-Gm-Message-State: AOJu0YyCnqBPTlbUvnhifU/WE3gIv1VtX0TNLmyfyOfwJ5B42nT0Farl e31omeaOqUx04LYzHecWTKIhWTED2YWi2IAk47FBwVQeA2ArEw0pwH3v9t3/unzB7RXbSApm1LS +dEmxNn3q5A== X-Gm-Gg: AY/fxX7wtR/GA6lRTK4LDeMQh6q/M15OfyfSDsIqAJUBI4GMOOTbRyPt8XVQIpDn7D0 sVyM65qUM02lq+nydUBll/iCgeKCyKKk7jdJSiRhbNwdOFJ+5O/gDrQietUVFw3rNe1ID/i96TQ nA44xHvfnpZGZUV2KbTAd6HbyOQmk67sqI4GKv2dNhIR72LmXuHmD4z4XvgAz8mcVs1XrFPN/MI 3UbH8Ed6PtnfhGbDVvzBW4OTJHVnC+Sg6BzP9hR4vlbTbSjhwNtddKE4k2GuiqcS8yN8keiFKLn njA6YibUqAJw2KSJ0URZetOJbY7t/fSCHA+jYjglb78je39mZobbGW1u691oH2+IWYrlmSb1Rj4 NV9Tmj+MIXalnaGXxxlV3kFOpb0UoSi2Duil3w3geTQQZq+1Xdbblmk0Vfpmzqu4rE17L4QrNK2 2tsGJdGFYPjKJHygrVYA== X-Received: by 2002:a05:6a00:2e90:b0:81f:44f9:7c1a with SMTP id d2e1a72fcca58-81fa1771ec6mr1122948b3a.3.1768534474569; Thu, 15 Jan 2026 19:34:34 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 20/58] meson: Drop host_arch rename for mips64 Date: Fri, 16 Jan 2026 14:32:26 +1100 Message-ID: <20260116033305.51162-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534667999158500 This requires renaming several directories: tcg/mips, linux-user/include/host/mips, and common-user/host/mips. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/include/host/{mips =3D> mips64}/host-signal.h | 0 tcg/{mips =3D> mips64}/tcg-target-con-set.h | 0 tcg/{mips =3D> mips64}/tcg-target-con-str.h | 0 tcg/{mips =3D> mips64}/tcg-target-has.h | 0 tcg/{mips =3D> mips64}/tcg-target-mo.h | 0 tcg/{mips =3D> mips64}/tcg-target-reg-bits.h | 0 tcg/{mips =3D> mips64}/tcg-target.h | 0 MAINTAINERS | 2 +- common-user/host/{mips =3D> mips64}/safe-syscall.inc.S | 0 configure | 8 +++----- meson.build | 2 -- tcg/{mips =3D> mips64}/tcg-target-opc.h.inc | 0 tcg/{mips =3D> mips64}/tcg-target.c.inc | 0 13 files changed, 4 insertions(+), 8 deletions(-) rename linux-user/include/host/{mips =3D> mips64}/host-signal.h (100%) rename tcg/{mips =3D> mips64}/tcg-target-con-set.h (100%) rename tcg/{mips =3D> mips64}/tcg-target-con-str.h (100%) rename tcg/{mips =3D> mips64}/tcg-target-has.h (100%) rename tcg/{mips =3D> mips64}/tcg-target-mo.h (100%) rename tcg/{mips =3D> mips64}/tcg-target-reg-bits.h (100%) rename tcg/{mips =3D> mips64}/tcg-target.h (100%) rename common-user/host/{mips =3D> mips64}/safe-syscall.inc.S (100%) rename tcg/{mips =3D> mips64}/tcg-target-opc.h.inc (100%) rename tcg/{mips =3D> mips64}/tcg-target.c.inc (100%) diff --git a/linux-user/include/host/mips/host-signal.h b/linux-user/includ= e/host/mips64/host-signal.h similarity index 100% rename from linux-user/include/host/mips/host-signal.h rename to linux-user/include/host/mips64/host-signal.h diff --git a/tcg/mips/tcg-target-con-set.h b/tcg/mips64/tcg-target-con-set.h similarity index 100% rename from tcg/mips/tcg-target-con-set.h rename to tcg/mips64/tcg-target-con-set.h diff --git a/tcg/mips/tcg-target-con-str.h b/tcg/mips64/tcg-target-con-str.h similarity index 100% rename from tcg/mips/tcg-target-con-str.h rename to tcg/mips64/tcg-target-con-str.h diff --git a/tcg/mips/tcg-target-has.h b/tcg/mips64/tcg-target-has.h similarity index 100% rename from tcg/mips/tcg-target-has.h rename to tcg/mips64/tcg-target-has.h diff --git a/tcg/mips/tcg-target-mo.h b/tcg/mips64/tcg-target-mo.h similarity index 100% rename from tcg/mips/tcg-target-mo.h rename to tcg/mips64/tcg-target-mo.h diff --git a/tcg/mips/tcg-target-reg-bits.h b/tcg/mips64/tcg-target-reg-bit= s.h similarity index 100% rename from tcg/mips/tcg-target-reg-bits.h rename to tcg/mips64/tcg-target-reg-bits.h diff --git a/tcg/mips/tcg-target.h b/tcg/mips64/tcg-target.h similarity index 100% rename from tcg/mips/tcg-target.h rename to tcg/mips64/tcg-target.h diff --git a/MAINTAINERS b/MAINTAINERS index c58fa93fd5..d3e6041186 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4074,7 +4074,7 @@ R: Huacai Chen R: Jiaxun Yang R: Aleksandar Rikalo S: Odd Fixes -F: tcg/mips/ +F: tcg/mips64/ =20 PPC TCG target M: Richard Henderson diff --git a/common-user/host/mips/safe-syscall.inc.S b/common-user/host/mi= ps64/safe-syscall.inc.S similarity index 100% rename from common-user/host/mips/safe-syscall.inc.S rename to common-user/host/mips64/safe-syscall.inc.S diff --git a/configure b/configure index e9d0b9e2c0..04d0b214b6 100755 --- a/configure +++ b/configure @@ -400,10 +400,8 @@ elif check_define _ARCH_PPC64 ; then else cpu=3D"ppc64" fi -elif check_define __mips__ ; then - if check_define __mips64 ; then - cpu=3D"mips64" - fi +elif check_define __mips64 ; then + cpu=3D"mips64" elif check_define __s390__ ; then if check_define __s390x__ ; then cpu=3D"s390x" @@ -455,7 +453,7 @@ case "$cpu" in =20 mips64*|mipsisa64*) cpu=3Dmips64 - host_arch=3Dmips + host_arch=3Dmips64 linux_arch=3Dmips ;; =20 diff --git a/meson.build b/meson.build index 0647ca0c89..c36f2f6962 100644 --- a/meson.build +++ b/meson.build @@ -265,8 +265,6 @@ enable_modules =3D get_option('modules') \ =20 if cpu not in supported_cpus host_arch =3D 'unknown' -elif cpu =3D=3D 'mips64' - host_arch =3D 'mips' elif cpu in ['riscv32', 'riscv64'] host_arch =3D 'riscv' else diff --git a/tcg/mips/tcg-target-opc.h.inc b/tcg/mips64/tcg-target-opc.h.inc similarity index 100% rename from tcg/mips/tcg-target-opc.h.inc rename to tcg/mips64/tcg-target-opc.h.inc diff --git a/tcg/mips/tcg-target.c.inc b/tcg/mips64/tcg-target.c.inc similarity index 100% rename from tcg/mips/tcg-target.c.inc rename to tcg/mips64/tcg-target.c.inc --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534651; cv=none; d=zohomail.com; s=zohoarc; b=nAFCossg7UnrB16Ndgt+ern3puMn+3mSYXSlu5sS1dMysZmfRtYv2dNcLQoHMCNc4ATMwH6BkWeu3Oez2oc+RqcjypfCmWbuyBBfbpOkLbDl/yI3jnxtmpntKxs6iQ9LHvBI0shFHfGFIB24Ihqhq35Uxq4GPJNFYLznnHpJF5Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534651; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1elLXYSGrJNsfz40yQiYIFdnTmy9vR+YxG5ftNQkGbA=; b=V4lXSApk3UniFg9NxGLZgij1gSV1UvDvqPrfYOM+wKqAjX34rkJZP2lfekgaOL1p2G2Bq4KgwyieZBXqbeSEul4984XIZKVP5GpqQpnhtvag/YNQjAGsGAXGtDr5rcboCyVstu0+feQGm5bF5vaDei867ajgad+yaIO1rRx4m5Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534651335531.947111434149; Thu, 15 Jan 2026 19:37:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabp-0007XO-GL; Thu, 15 Jan 2026 22:34:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabi-0007IR-1v for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:45 -0500 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabf-0005mi-KE for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:41 -0500 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-81ecbdfdcebso921284b3a.1 for ; Thu, 15 Jan 2026 19:34:39 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534478; x=1769139278; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1elLXYSGrJNsfz40yQiYIFdnTmy9vR+YxG5ftNQkGbA=; b=oLpLITrPkshjaOM5X466rcGrr9PgxnhmqnT6EzxdZp2cX+87fTbdVqwQ8PH8Wl/qX1 Lcp8QRWL+r5QhI1yitvqC6E7ScIKTopkCr0oqxiNoytNP96dcgowXN4EeJUzVMSkWbKX 4hAsTbGguqpSbqujvqk5RuZ9U2r5tPKXbITxqNPbYAP+2H0QhrMC4s+e9NPTcmBl1n2N yLa8SkUR1sMtZrrt1a55UT05i4YsDhHPgkgUZZnDY2NJiiu3B9lXMuCiMnKAdlV4WTdX URq7hx2Vq7kRMAze9V/fRBA6kpPEWOO9UyIwCdUCmsaSGx50QQem6LyvLNIaTIoCvkyG /HKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534478; x=1769139278; 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; bh=1elLXYSGrJNsfz40yQiYIFdnTmy9vR+YxG5ftNQkGbA=; b=r0KOlbZaBlg80kmxNUAO505uNxpkRLLnwKK3G5y5EZdOjDMoF9g+NKq1zYP+BZBJj9 8H+zeD1kbFqTX681q9mpXbWHJ5yc58iSAHq+UIrKJekp9ohNT0azQHGHMgP3kTIcDvPo YoSj5osqeHhQQJyYqpRH5oJGFgZ9r839Ij+oUpRLCELIegzfRBzaDaEJ1oPduLpgAb/r 300JAYjz5v+WtQbx2URICXsfNzrF0om7Lp0ae9iroqS5q8hvpsYTTvlpkExR5Wj8EjRW qR0OA685CNcl0oT36X5gNkHIEvGaZtcLPm2pYMHs0L150aUlnaVsGYXrSvMZC3fwie63 haEg== X-Gm-Message-State: AOJu0YxAvUa3W9M5j3TsgAyj0q6NZkUlc+TGcpyKs3DjIhluJMbbFlrr AwXp5Q6JVZTvn1BJtYRuIgNdvR5bqaPsLtjXrNwmKQPK+tJN52sDzYoxBqTDcga0BBXmAzLV6JV Eslw0O37NGw== X-Gm-Gg: AY/fxX7LBD95O4L0yi1Q+jujWhRj1K5SrUFYkXcOREgOCvPI2I64sxAa1u39nzovuWH EMFvwKrGai3aSd0mw5rxKCMCAHNOJU73hQcPTpRLJRhqa+Gd0bO1NrBO9KF1gNAlvW+JqJ5HrWk I0vjPpk3jKcaElk1CgRHo9Gbvatt10hajJB0fo7ckyVz4AFv7CroI069KVCOSxoGGLsNSUiQkeR aiqbkCYay/s/1V1jpxXEwlgIkSgDXXD4l8MYXxWMLHEtDbzlYDGkHIwG+xig2cDOpICuNeIS6ES 5XMuc2b+g09709fZshVkQ9WJBFRsg+MCNnVzrdWDnLwUrVTx2SKrVPnUMocNIuZcOx1nbQfP/eH Etr13pZmntN55fK3+rxi24P7fWKYfmb7F2rzW47b1Q0Ac3WJl735T5oNpRWVJPF+vXoyx3G2qWf /GnPI4B/RHa1kdp215XQ== X-Received: by 2002:a05:6a00:3397:b0:81f:4566:cce8 with SMTP id d2e1a72fcca58-81fa184d5b5mr1068751b3a.55.1768534478257; Thu, 15 Jan 2026 19:34:38 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 21/58] meson: Drop host_arch rename for riscv64 Date: Fri, 16 Jan 2026 14:32:27 +1100 Message-ID: <20260116033305.51162-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534651957158500 This requires renaming several directories: tcg/riscv, linux-user/include/host/riscv, and common-user/host/riscv. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- host/include/{riscv =3D> riscv64}/host/cpuinfo.h | 0 linux-user/include/host/{riscv =3D> riscv64}/host-signal.h | 0 tcg/{riscv =3D> riscv64}/tcg-target-con-set.h | 0 tcg/{riscv =3D> riscv64}/tcg-target-con-str.h | 0 tcg/{riscv =3D> riscv64}/tcg-target-has.h | 0 tcg/{riscv =3D> riscv64}/tcg-target-mo.h | 0 tcg/{riscv =3D> riscv64}/tcg-target-reg-bits.h | 0 tcg/{riscv =3D> riscv64}/tcg-target.h | 0 MAINTAINERS | 2 +- common-user/host/{riscv =3D> riscv64}/safe-syscall.inc.S | 0 configure | 4 ++-- meson.build | 2 -- tcg/{riscv =3D> riscv64}/tcg-target-opc.h.inc | 0 tcg/{riscv =3D> riscv64}/tcg-target.c.inc | 0 14 files changed, 3 insertions(+), 5 deletions(-) rename host/include/{riscv =3D> riscv64}/host/cpuinfo.h (100%) rename linux-user/include/host/{riscv =3D> riscv64}/host-signal.h (100%) rename tcg/{riscv =3D> riscv64}/tcg-target-con-set.h (100%) rename tcg/{riscv =3D> riscv64}/tcg-target-con-str.h (100%) rename tcg/{riscv =3D> riscv64}/tcg-target-has.h (100%) rename tcg/{riscv =3D> riscv64}/tcg-target-mo.h (100%) rename tcg/{riscv =3D> riscv64}/tcg-target-reg-bits.h (100%) rename tcg/{riscv =3D> riscv64}/tcg-target.h (100%) rename common-user/host/{riscv =3D> riscv64}/safe-syscall.inc.S (100%) rename tcg/{riscv =3D> riscv64}/tcg-target-opc.h.inc (100%) rename tcg/{riscv =3D> riscv64}/tcg-target.c.inc (100%) diff --git a/host/include/riscv/host/cpuinfo.h b/host/include/riscv64/host/= cpuinfo.h similarity index 100% rename from host/include/riscv/host/cpuinfo.h rename to host/include/riscv64/host/cpuinfo.h diff --git a/linux-user/include/host/riscv/host-signal.h b/linux-user/inclu= de/host/riscv64/host-signal.h similarity index 100% rename from linux-user/include/host/riscv/host-signal.h rename to linux-user/include/host/riscv64/host-signal.h diff --git a/tcg/riscv/tcg-target-con-set.h b/tcg/riscv64/tcg-target-con-se= t.h similarity index 100% rename from tcg/riscv/tcg-target-con-set.h rename to tcg/riscv64/tcg-target-con-set.h diff --git a/tcg/riscv/tcg-target-con-str.h b/tcg/riscv64/tcg-target-con-st= r.h similarity index 100% rename from tcg/riscv/tcg-target-con-str.h rename to tcg/riscv64/tcg-target-con-str.h diff --git a/tcg/riscv/tcg-target-has.h b/tcg/riscv64/tcg-target-has.h similarity index 100% rename from tcg/riscv/tcg-target-has.h rename to tcg/riscv64/tcg-target-has.h diff --git a/tcg/riscv/tcg-target-mo.h b/tcg/riscv64/tcg-target-mo.h similarity index 100% rename from tcg/riscv/tcg-target-mo.h rename to tcg/riscv64/tcg-target-mo.h diff --git a/tcg/riscv/tcg-target-reg-bits.h b/tcg/riscv64/tcg-target-reg-b= its.h similarity index 100% rename from tcg/riscv/tcg-target-reg-bits.h rename to tcg/riscv64/tcg-target-reg-bits.h diff --git a/tcg/riscv/tcg-target.h b/tcg/riscv64/tcg-target.h similarity index 100% rename from tcg/riscv/tcg-target.h rename to tcg/riscv64/tcg-target.h diff --git a/MAINTAINERS b/MAINTAINERS index d3e6041186..c1e586c58f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4086,7 +4086,7 @@ M: Palmer Dabbelt M: Alistair Francis L: qemu-riscv@nongnu.org S: Maintained -F: tcg/riscv/ +F: tcg/riscv64/ F: disas/riscv.[ch] =20 S390 TCG target diff --git a/common-user/host/riscv/safe-syscall.inc.S b/common-user/host/r= iscv64/safe-syscall.inc.S similarity index 100% rename from common-user/host/riscv/safe-syscall.inc.S rename to common-user/host/riscv64/safe-syscall.inc.S diff --git a/configure b/configure index 04d0b214b6..ee09f90125 100755 --- a/configure +++ b/configure @@ -469,8 +469,8 @@ case "$cpu" in CPU_CFLAGS=3D"-m64 -mlittle-endian" ;; =20 - riscv32 | riscv64) - host_arch=3Driscv + riscv64) + host_arch=3Driscv64 linux_arch=3Driscv ;; =20 diff --git a/meson.build b/meson.build index c36f2f6962..e1ac764793 100644 --- a/meson.build +++ b/meson.build @@ -265,8 +265,6 @@ enable_modules =3D get_option('modules') \ =20 if cpu not in supported_cpus host_arch =3D 'unknown' -elif cpu in ['riscv32', 'riscv64'] - host_arch =3D 'riscv' else host_arch =3D cpu endif diff --git a/tcg/riscv/tcg-target-opc.h.inc b/tcg/riscv64/tcg-target-opc.h.= inc similarity index 100% rename from tcg/riscv/tcg-target-opc.h.inc rename to tcg/riscv64/tcg-target-opc.h.inc diff --git a/tcg/riscv/tcg-target.c.inc b/tcg/riscv64/tcg-target.c.inc similarity index 100% rename from tcg/riscv/tcg-target.c.inc rename to tcg/riscv64/tcg-target.c.inc --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534542; cv=none; d=zohomail.com; s=zohoarc; b=NwYNhQAqrhf+XkfA0tiQa2oQwp8/UKqX7aE+2fGzjr/YAaQ4i9BCJTYQ7znFzpKrt87MpyKKGLryxLIVVXZhHd4+YwCdUPW7CXX2Gomaf8ReQZ4AKpKeUPdDPMWlpATRvGHbdK2vcxMC35HoBhQuB2Ww5nQNBw9OsXDtR01+kHs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534542; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yAk5bdNYmUwoFtPTTu8n12DNLYrg+PZEaFEkzjHimDM=; b=NLFMzkyV5tOSJ2ijnMkWynqp0ISXbeRJvSkrKq2KnSeywIp7X7drqDK4AJm8ZZgZkKm/8wEgVU4XJzUoZpb6gLSkOb0EWgsSwpRM2DzDcOEVyaRc0tVmemMhlEukk3JdyiA/U39gntRwfzPeAMXSTfnS5A5WwB05JvRcD3ljif4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534542917689.071129051161; Thu, 15 Jan 2026 19:35:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabp-0007Yx-Uo; Thu, 15 Jan 2026 22:34:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabm-0007Mj-2l for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:47 -0500 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabk-0005o9-Jk for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:45 -0500 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2a12ebe4b74so15908365ad.0 for ; Thu, 15 Jan 2026 19:34:42 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534482; x=1769139282; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yAk5bdNYmUwoFtPTTu8n12DNLYrg+PZEaFEkzjHimDM=; b=HZa/XnFTsBmhtYQ7teI6JEbu2WAFaw92hxjts4gSS1CLvIErFk+Ie/kVrk/SPetsTP 5DqTTtWCIXm/+V0w7AUBmXRashe3V2T/fmm0+PzBoGD/xjFSf4s4M6zDgdMmZVp6D9MV SIBsOpN54irkrX/xaWNwcZgncDsXNwkcLuP9qvlV9t9QBVCQdejEKksctoJSYkhyZNsP FMwxz7DlL2HPr622RybtRXLGSdEqk+saIeWwvQJIKRTq7Npzu0ljS0Xakkh35PMXtFyd VMqodiDCEj5cJ9o+bT8H+ZH5dLvA2PSWUpKA7do3ZS7RwsjOtj+kmEU9G8Nb0wqMA/0A FjDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534482; x=1769139282; 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; bh=yAk5bdNYmUwoFtPTTu8n12DNLYrg+PZEaFEkzjHimDM=; b=fI3NHgy1r0a/k9OVJUu9boEtoJ/WEq4hLUDxrkGNSnHKcSEAuYmSWB0PndmQbprtF3 l+EkN+KWWjfM4USw1plrZ5ytpZrPRaP470BlRyXjnm+DT9vt0AiK67Tw7R6RDypNsJ+k cc59CW9CctnBA12B470H3nR1id2bB6GcvoJysF0iv65pKMZGF5jXI1hkl0MbJ0wfmzxU xd8uSa4YoeiU0CCgKvgJYRIqH6L2MM4iRgdMIMwRtxrtWO/06Bfz5Yb+yhelcZDztT/g SIOEXmCaXEsdKbo/o1mZH8bFDsFqh71sNWyWaR8Q88vFWIPio5SIKkMFRG8YvUwMHoyX 8uFg== X-Gm-Message-State: AOJu0YzjR5TMN9Qn56TGuOAXIAEWmC7hjN15LeCy6QuuepV1pUBRDsEG aUihziLq3nfnuPQ07AepLqH+l6FQtBal5imfITG4sz/6BWV4wD5BLXbHS2/fq2YiR7hV61Adql8 d7al40uhHfQ== X-Gm-Gg: AY/fxX5A3PXfd4ZXRTk5uP+xlv6EXyuACX+nTVmw1usXLMDKESBrkTAGnYDLD+gF67c Ejs74M838pDhwVkpAIDUstsbCgzWtT+MYEBVyLThDQQpGoZOjjuJNM/ZgjOK3GBfNPk3UJ/e7kj 6eb+JUeqOOXnyBQIGH48A0r23LC6pDComhP4IjSG8M2MYLRrXp2p4A8c2We6GOA8WZRQBiFKplW yXCOvHbLc1lvLAcTb+dEugAt5Hhk4NVD4W9/0O9JofXsCB/wT4DKuNgKNifbsgWy+qQyhF/p96Q 9j3kDkA5aNjAC5PdFjMLCGHA0dP+S18uE9AxBKkUXYantaTjTGSxayX+ENy2iyhew0Ea4MUC6+t vl/cbS3zOyLcDBLlk+VyQ6uyWlr3baxzkjuKYGhnBBbIFE7KIm0EGcv+E1PbwudtbLhMpXjQBLo PRRvkjctKz9oVWVuA6+g== X-Received: by 2002:a17:903:1ae4:b0:2a0:f828:24a3 with SMTP id d9443c01a7336-2a7175cc0f1mr17370305ad.28.1768534481754; Thu, 15 Jan 2026 19:34:41 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 22/58] meson: Remove cpu == riscv32 tests Date: Fri, 16 Jan 2026 14:32:28 +1100 Message-ID: <20260116033305.51162-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534543571158500 Content-Type: text/plain; charset="utf-8" The 32-bit riscv host is no longer supported. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- configure | 10 +++------- meson.build | 4 +--- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/configure b/configure index ee09f90125..e69b3e474e 100755 --- a/configure +++ b/configure @@ -408,12 +408,8 @@ elif check_define __s390__ ; then else cpu=3D"s390" fi -elif check_define __riscv ; then - if check_define _LP64 ; then - cpu=3D"riscv64" - else - cpu=3D"riscv32" - fi +elif check_define __riscv && check_define _LP64 ; then + cpu=3D"riscv64" elif check_define __aarch64__ ; then cpu=3D"aarch64" elif check_define __loongarch64 ; then @@ -1280,7 +1276,7 @@ EOF test "$bigendian" =3D no && rust_arch=3D${rust_arch}el ;; =20 - riscv32|riscv64) + riscv64) # e.g. riscv64gc-unknown-linux-gnu, but riscv64-linux-android test "$android" =3D no && rust_arch=3D${rust_arch}gc ;; diff --git a/meson.build b/meson.build index e1ac764793..0189d8fd44 100644 --- a/meson.build +++ b/meson.build @@ -50,7 +50,7 @@ qapi_trace_events =3D [] =20 bsd_oses =3D ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly',= 'darwin'] supported_oses =3D ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', '= sunos', 'linux', 'emscripten'] -supported_cpus =3D ['ppc64', 's390x', 'riscv32', 'riscv64', 'x86_64', +supported_cpus =3D ['ppc64', 's390x', 'riscv64', 'x86_64', 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm64'] =20 cpu =3D host_machine.cpu_family() @@ -279,8 +279,6 @@ elif cpu =3D=3D 'ppc64' kvm_targets =3D ['ppc-softmmu', 'ppc64-softmmu'] elif cpu =3D=3D 'mips64' kvm_targets =3D ['mips-softmmu', 'mipsel-softmmu', 'mips64-softmmu', 'mi= ps64el-softmmu'] -elif cpu =3D=3D 'riscv32' - kvm_targets =3D ['riscv32-softmmu'] elif cpu =3D=3D 'riscv64' kvm_targets =3D ['riscv64-softmmu'] elif cpu =3D=3D 'loongarch64' --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534570; cv=none; d=zohomail.com; s=zohoarc; b=hpfoVPxJd0EelEsy1qL/rtpAQncQNWo+WRdod9o1E+SA1OEV/liTinqn+siU+xdJQHu3nZFBfTfWXbiFXZqCJvKESqMDnp1eVSJVkXpkydsy6Jn43tm4hE8TShsK0fAMrBZh/pl/vyRRbAwmKuCluSa1can0jGuCm3VwfiiVIMk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534570; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=C9G7CRzjGckeYSeIr9MRvFLtIOKXPKdQ7GnAe48PSp8=; b=BCyMGmDIJ9JzhPPA0dC08MjZR3fdU5D46YekzQYoc8djE7W8BPP0dA6PqXQdO7IQ09KdvjgGsjvRye0lJrwTNCfAB+G6hUENYW0WlFCdp7G7lxkuykb8nvRR2pBalzEEPpguRDQvgHrLcN2xQ6yqaaUqzG5Fv9wm3bmrR1W6kfE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17685345707769.481309139184873; Thu, 15 Jan 2026 19:36:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabq-0007jF-Gi; Thu, 15 Jan 2026 22:34:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabo-0007Wn-VC for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:48 -0500 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabn-0005pn-1l for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:48 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-29efd139227so10002765ad.1 for ; Thu, 15 Jan 2026 19:34:46 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534486; x=1769139286; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=C9G7CRzjGckeYSeIr9MRvFLtIOKXPKdQ7GnAe48PSp8=; b=ZsVF9FHCLDdhJWXp/C67NKAQF7rs70zfudqzclBqQ740b+s2dTdxtHgUuEn3KcdH0S Ce9Sff0cRJEKI+So2+ODTRwctm7M3jF+lptvth3VbvrkWq/hVVMX2lBb1i9Kef/B3wZK e5a5mVzAkTsAJ9+Uym5ToIyYNGFLoxBKV5fryhgULF6j7fVNECcJJxvRjSPDnxAxR6tR d9uMNhQGNNziffv5lvL8o4pRDhlf8Skh3fdTh/ALoIAzBZzso/pP1BstVab2KZ45cB5u /qawJpfsWxk83vepaX7LZQiPIQVhhrfvpxi/Ux0AaS+hvEVU1b83JIPzomg32ayBo0SP iVFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534486; x=1769139286; 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; bh=C9G7CRzjGckeYSeIr9MRvFLtIOKXPKdQ7GnAe48PSp8=; b=P8nPv8k8XGYPwJQSvqWLoyoPldG//GI0cjsoOJMmxJ+/7EQhobDD1T3h02P19lCXou YH6RbIR5hMVe/qcmdsgzmAD9uluCwIubMqeNGGeQz2EbzSspIp9a7qrrfWhZet6Bunjt xTjMl6+MDiXNJm3HS53r5E5N44hdERDRk7hqG5IVCikPNGlsR/ZYcfBmLuFz7QsPa1j7 neqEajrQU7auPIiGKHGrrJ7E1WSlKj1RuNPn3XidzgevDKPEinrCl6JgnSC9BogLo2tp DKn/z9+cN1RmxjTzapTaUPPRJh1f6KiYSbTteLINbfU8cfaGk0F4EeAN6EdiPG48I6KF 0A7w== X-Gm-Message-State: AOJu0YxdMrfbSjE0eufVdE8CIBjo/OfTrycdg1JfALioErpvgTtw6pdk 48nO+eelS14L1+ICVzJMdM3FA7x5Se5enoX90Qii0LLJMEobus+kPm3kf45dLDBAssZmACxjaKa xyXbGRuOboA== X-Gm-Gg: AY/fxX7jYudMTRKRSCb466Vdm4+MImm8ZBre6kUP0agRFqtXNLnlWmFZ5rIM29pWg/N knWQcNZu/DTm70vvXr7S3tjGx56f29IjLslk0ZQx9Q6xtXs3TknNn1MY1x6bKp2oAUNNJezA3pg B5Lv38R2KpCr3ICuR3YagD0DOdb7B+wRF+o4BX0kywiQDaxbpe07iQYH37S0ovEMay6I3OQ0H70 oZqqW16LTwCqEbRzm0ZQQHa/bxsNl9k/1dut7MHchcd/a54co4sb1F5vjQplIp/iAkC37kuFvm1 P7Ku7JAl5T8ChCKidRjoXhnSqx4nKaRo+iUw2sSYkMOo3LAU+Hkf1nVSvkgqD1ibE8+gdMIgnNL yzppQ5e5R1p6DrL2LKJEDPXkV8CEvt4hxrcs/3amN3omTXYqhh3a6VwN5TFUm419zcmDjmKeo0x 45vIuDuphJvKE3p6M2IQ== X-Received: by 2002:a17:902:f652:b0:269:8d1b:40c3 with SMTP id d9443c01a7336-2a71888abfdmr15869545ad.12.1768534485534; Thu, 15 Jan 2026 19:34:45 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 23/58] tcg: Make TCG_TARGET_REG_BITS common Date: Fri, 16 Jan 2026 14:32:29 +1100 Message-ID: <20260116033305.51162-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534571706158500 Since we only support 64-bit hosts, there's no real need to parameterize TCG_TARGET_REG_BITS. It seems worth holding on to the identifier though, for documentation purposes. Move one tcg/*/tcg-target-reg-bits.h to tcg/target-reg-bits.h and remove the others. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/tcg/helper-info.h | 2 +- .../tcg/target-reg-bits.h | 8 +++---- include/tcg/tcg.h | 2 +- tcg/aarch64/tcg-target-reg-bits.h | 12 ----------- tcg/loongarch64/tcg-target-reg-bits.h | 21 ------------------- tcg/mips64/tcg-target-reg-bits.h | 16 -------------- tcg/riscv64/tcg-target-reg-bits.h | 19 ----------------- tcg/s390x/tcg-target-reg-bits.h | 17 --------------- tcg/sparc64/tcg-target-reg-bits.h | 12 ----------- tcg/tci/tcg-target-reg-bits.h | 18 ---------------- tcg/x86_64/tcg-target-reg-bits.h | 16 -------------- 11 files changed, 6 insertions(+), 137 deletions(-) rename tcg/ppc64/tcg-target-reg-bits.h =3D> include/tcg/target-reg-bits.h = (71%) delete mode 100644 tcg/aarch64/tcg-target-reg-bits.h delete mode 100644 tcg/loongarch64/tcg-target-reg-bits.h delete mode 100644 tcg/mips64/tcg-target-reg-bits.h delete mode 100644 tcg/riscv64/tcg-target-reg-bits.h delete mode 100644 tcg/s390x/tcg-target-reg-bits.h delete mode 100644 tcg/sparc64/tcg-target-reg-bits.h delete mode 100644 tcg/tci/tcg-target-reg-bits.h delete mode 100644 tcg/x86_64/tcg-target-reg-bits.h diff --git a/include/tcg/helper-info.h b/include/tcg/helper-info.h index 49a27e4eae..d5bda83a2e 100644 --- a/include/tcg/helper-info.h +++ b/include/tcg/helper-info.h @@ -24,7 +24,7 @@ #include #pragma GCC diagnostic pop #endif -#include "tcg-target-reg-bits.h" +#include "tcg/target-reg-bits.h" =20 #define MAX_CALL_IARGS 7 =20 diff --git a/tcg/ppc64/tcg-target-reg-bits.h b/include/tcg/target-reg-bits.h similarity index 71% rename from tcg/ppc64/tcg-target-reg-bits.h rename to include/tcg/target-reg-bits.h index 3a15d7bee4..8f4ad3ed99 100644 --- a/tcg/ppc64/tcg-target-reg-bits.h +++ b/include/tcg/target-reg-bits.h @@ -7,10 +7,10 @@ #ifndef TCG_TARGET_REG_BITS_H #define TCG_TARGET_REG_BITS_H =20 -#ifndef _ARCH_PPC64 -# error Expecting 64-bit host architecture -#endif - +/* + * We only support 64-bit hosts now. + * Retain the identifier for documentation. + */ #define TCG_TARGET_REG_BITS 64 =20 #endif diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index a6d9aa50d4..067150c542 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -31,7 +31,7 @@ #include "qemu/plugin.h" #include "qemu/queue.h" #include "tcg/tcg-mo.h" -#include "tcg-target-reg-bits.h" +#include "tcg/target-reg-bits.h" #include "tcg-target.h" #include "tcg/tcg-cond.h" #include "tcg/insn-start-words.h" diff --git a/tcg/aarch64/tcg-target-reg-bits.h b/tcg/aarch64/tcg-target-reg= -bits.h deleted file mode 100644 index 3b57a1aafb..0000000000 --- a/tcg/aarch64/tcg-target-reg-bits.h +++ /dev/null @@ -1,12 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ -/* - * Define target-specific register size - * Copyright (c) 2023 Linaro - */ - -#ifndef TCG_TARGET_REG_BITS_H -#define TCG_TARGET_REG_BITS_H - -#define TCG_TARGET_REG_BITS 64 - -#endif diff --git a/tcg/loongarch64/tcg-target-reg-bits.h b/tcg/loongarch64/tcg-ta= rget-reg-bits.h deleted file mode 100644 index 51373ad70a..0000000000 --- a/tcg/loongarch64/tcg-target-reg-bits.h +++ /dev/null @@ -1,21 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific register size - * Copyright (c) 2021 WANG Xuerui - */ - -#ifndef TCG_TARGET_REG_BITS_H -#define TCG_TARGET_REG_BITS_H - -/* - * Loongson removed the (incomplete) 32-bit support from kernel and toolch= ain - * for the initial upstreaming of this architecture, so don't bother and j= ust - * support the LP64* ABI for now. - */ -#if defined(__loongarch64) -# define TCG_TARGET_REG_BITS 64 -#else -# error unsupported LoongArch register size -#endif - -#endif diff --git a/tcg/mips64/tcg-target-reg-bits.h b/tcg/mips64/tcg-target-reg-b= its.h deleted file mode 100644 index ee346a3f25..0000000000 --- a/tcg/mips64/tcg-target-reg-bits.h +++ /dev/null @@ -1,16 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific register size - * Copyright (c) 2008-2009 Arnaud Patard - */ - -#ifndef TCG_TARGET_REG_BITS_H -#define TCG_TARGET_REG_BITS_H - -#if !defined(_MIPS_SIM) || _MIPS_SIM !=3D _ABI64 -# error "Unknown ABI" -#endif - -#define TCG_TARGET_REG_BITS 64 - -#endif diff --git a/tcg/riscv64/tcg-target-reg-bits.h b/tcg/riscv64/tcg-target-reg= -bits.h deleted file mode 100644 index 761ca0d774..0000000000 --- a/tcg/riscv64/tcg-target-reg-bits.h +++ /dev/null @@ -1,19 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific register size - * Copyright (c) 2018 SiFive, Inc - */ - -#ifndef TCG_TARGET_REG_BITS_H -#define TCG_TARGET_REG_BITS_H - -/* - * We don't support oversize guests. - * Since we will only build tcg once, this in turn requires a 64-bit host. - */ -#if __riscv_xlen !=3D 64 -#error "unsupported code generation mode" -#endif -#define TCG_TARGET_REG_BITS 64 - -#endif diff --git a/tcg/s390x/tcg-target-reg-bits.h b/tcg/s390x/tcg-target-reg-bit= s.h deleted file mode 100644 index b01414e09d..0000000000 --- a/tcg/s390x/tcg-target-reg-bits.h +++ /dev/null @@ -1,17 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific register size - * Copyright (c) 2009 Ulrich Hecht - */ - -#ifndef TCG_TARGET_REG_BITS_H -#define TCG_TARGET_REG_BITS_H - -/* We only support generating code for 64-bit mode. */ -#if UINTPTR_MAX =3D=3D UINT64_MAX -# define TCG_TARGET_REG_BITS 64 -#else -# error "unsupported code generation mode" -#endif - -#endif diff --git a/tcg/sparc64/tcg-target-reg-bits.h b/tcg/sparc64/tcg-target-reg= -bits.h deleted file mode 100644 index 34a6711013..0000000000 --- a/tcg/sparc64/tcg-target-reg-bits.h +++ /dev/null @@ -1,12 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific register size - * Copyright (c) 2023 Linaro - */ - -#ifndef TCG_TARGET_REG_BITS_H -#define TCG_TARGET_REG_BITS_H - -#define TCG_TARGET_REG_BITS 64 - -#endif diff --git a/tcg/tci/tcg-target-reg-bits.h b/tcg/tci/tcg-target-reg-bits.h deleted file mode 100644 index dcb1a203f8..0000000000 --- a/tcg/tci/tcg-target-reg-bits.h +++ /dev/null @@ -1,18 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific register size - * Copyright (c) 2009, 2011 Stefan Weil - */ - -#ifndef TCG_TARGET_REG_BITS_H -#define TCG_TARGET_REG_BITS_H - -#if UINTPTR_MAX =3D=3D UINT32_MAX -# define TCG_TARGET_REG_BITS 32 -#elif UINTPTR_MAX =3D=3D UINT64_MAX -# define TCG_TARGET_REG_BITS 64 -#else -# error Unknown pointer size for tci target -#endif - -#endif diff --git a/tcg/x86_64/tcg-target-reg-bits.h b/tcg/x86_64/tcg-target-reg-b= its.h deleted file mode 100644 index fc3377e829..0000000000 --- a/tcg/x86_64/tcg-target-reg-bits.h +++ /dev/null @@ -1,16 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Define target-specific register size - * Copyright (c) 2008 Fabrice Bellard - */ - -#ifndef TCG_TARGET_REG_BITS_H -#define TCG_TARGET_REG_BITS_H - -#ifdef __x86_64__ -# define TCG_TARGET_REG_BITS 64 -#else -# error -#endif - -#endif --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534551; cv=none; d=zohomail.com; s=zohoarc; b=Dh5n5t2qkovO0j0Uigxvi4BNlNIJo2axA7nMFP4HV/09OLcpGsK0D+DvvP2etXKHbwzFhoSWgNMTa6oW4whA0UV1AAcH56t3HnBpoCQ4/TQvBunjfxAsvs4RvRzuhAUTcxKYnNLKNvxjAyJerI5ZcCtOskizg+66zDzc0A3CWgI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534551; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=U5sBU2zk1bX0ddl3O5KkamyL/V1clpqH1xPWvT/iVmQ=; b=YU0ZdQiFxcM4IZsnN/AZhXwdtk8Suy23lHhx0ifYcGaZ9vYA24sFvUnVn45VFtJQU6O6bE8Zafs6QxqiBirPZxIFmZwKyELOX2QQ0xazDdRxR9eixTj6StGhSEbHRfJdwGKViStkIVfyQLx5axksSrwuWp6d4vIHKQB7PqRTWeU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534551371881.3868290985168; Thu, 15 Jan 2026 19:35:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabw-00007h-2h; Thu, 15 Jan 2026 22:34:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabs-00087J-Jv for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:52 -0500 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabq-0005rd-RX for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:52 -0500 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-34c84ec3b6eso1345733a91.3 for ; Thu, 15 Jan 2026 19:34:50 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534489; x=1769139289; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=U5sBU2zk1bX0ddl3O5KkamyL/V1clpqH1xPWvT/iVmQ=; b=mzerapluU1pkEfGURjdoGNGGck4Y5vIK1vpBVYvwkWRRKV3jFYgso4xh5+AtDBbkCd rVt3mbm+HW9U3XOA0SHlpnovTNokqPszjRSQdiOnkHGjmKsUrTgxNrElC13G6wGtQtjd wgCYCHjqtdNV0OCkcJYN0CKxY8uVp5eHKK+hA3hGTnihukzxkV00Zx00vm9akPnHh+yD kFOVobpssgI2aZEx5ilKIA7+j9sk21mEZ/VlYww3fH5ppZ6a61KeitmOZP6kGaU1CqCO 2YGA6LT4LD3gJYifaX6UapaYQpW9XQoHnflZag2lkRJ5V/47OcMF/1vRhSNNrkwd41Xe YlJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534489; x=1769139289; 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; bh=U5sBU2zk1bX0ddl3O5KkamyL/V1clpqH1xPWvT/iVmQ=; b=FQuQq5Ijaw2zZ2OkzwRCwAglgBsa2do/WubDWayXR/vmrx9+JJGQ+yoysioJEUzMb9 ZrYWkHKVfhULqSJzZx3yHF0eOGjzAU7o2f1Swyjoss+RmKrLgfyS+NgVld2Ywo7h3xpw Al4mW7NNfy9qkwhNZvst5oXGcheTwGb3EB4CoIVrxv/xPExi6i+IKDvPEoW5D4+JZbMm fFOLTKes1iB1wcmScUb5yRzR87/G1JJUcPiNZx0VjLFV1hFXmQl5wlfWs6110LTmYmLI FRTAlMs9zQ9ehXDKj/zECuJHR7tvFJEu1UI2C0Yj5C1tauObXIFBgu7QBlPHHgkfjSOF D0Sw== X-Gm-Message-State: AOJu0YwgG8lg5d5zZR7J+IRGthy77WnxeGU/KHEF7o4eI6jD4hYw4ZPA zPn+9u/vQ7QM5i1Y4Km0rnPJrEPEJVTDH7IShwgTf+wErpG3djDse1ydN6wZfjGeGmkGk44VTFl eit5dWJYpmA== X-Gm-Gg: AY/fxX6uUnhiKRd5CZFIhJRrDN5VgPJE1KJBx0S2cjUrKr+8lMz/9kgN4zChZA9o3nx aIAVHp0zwpGCm2MfqUsTFvfxmL1ItebD9U/WV33bzv52YIgaj9G6iDZxyvKOgKpJOSjbMpjVG0x 717U/xbOGg6dOhk7SJwDcoPJdo0/6QwL3irXAcs/j81XLWe+4YHl7DskbJugtFpVd9V9WcJC71C wb0JZIRTKo6Q632xrrvEx9vl28NuRxIZRznkzKaevQxGAt98wP6udzdCuBjngWFueZ5eyqBOon/ U8ftYtXc5grz4z+CzLl0kkZ642WZ6CxTD3vtyvjmSj4J1l/0VzfshtpEIjiJSwuReFoDv7pJW11 Y04m8Wz4vFByvf0/c407qg68CsWYREiWsBCwoxrDTfSqCvxCV1BYjuKsMH0jF/QxJBfYcrpEcSq ELegqtb3j3Aba31skwew== X-Received: by 2002:a17:90b:58c4:b0:34c:9cf7:60a0 with SMTP id 98e67ed59e1d1-35272ec5a42mr1176126a91.5.1768534489423; Thu, 15 Jan 2026 19:34:49 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 24/58] tcg: Replace TCG_TARGET_REG_BITS / 8 Date: Fri, 16 Jan 2026 14:32:30 +1100 Message-ID: <20260116033305.51162-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534553608158500 Content-Type: text/plain; charset="utf-8" Use sizeof(tcg_target_long) instead of division. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/tcg-op-gvec.c | 2 +- tcg/loongarch64/tcg-target.c.inc | 4 ++-- tcg/ppc64/tcg-target.c.inc | 2 +- tcg/riscv64/tcg-target.c.inc | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 2d184547ba..9c33430638 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -607,7 +607,7 @@ static void do_dup(unsigned vece, TCGv_ptr dbase, uint3= 2_t dofs, } =20 /* Otherwise, inline with an integer type, unless "large". */ - if (check_size_impl(oprsz, TCG_TARGET_REG_BITS / 8)) { + if (check_size_impl(oprsz, sizeof(tcg_target_long))) { t_64 =3D NULL; t_32 =3D NULL; =20 diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index 10c69211ac..c3350c90fc 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -2604,7 +2604,7 @@ static const int tcg_target_callee_save_regs[] =3D { }; =20 /* Stack frame parameters. */ -#define REG_SIZE (TCG_TARGET_REG_BITS / 8) +#define REG_SIZE ((int)sizeof(tcg_target_long)) #define SAVE_SIZE ((int)ARRAY_SIZE(tcg_target_callee_save_regs) * REG_SIZ= E) #define TEMP_SIZE (CPU_TEMP_BUF_NLONGS * (int)sizeof(long)) #define FRAME_SIZE ((TCG_STATIC_CALL_ARGS_SIZE + TEMP_SIZE + SAVE_SIZE \ @@ -2731,7 +2731,7 @@ static const DebugFrame debug_frame =3D { .h.cie.id =3D -1, .h.cie.version =3D 1, .h.cie.code_align =3D 1, - .h.cie.data_align =3D -(TCG_TARGET_REG_BITS / 8) & 0x7f, /* sleb128 */ + .h.cie.data_align =3D -sizeof(tcg_target_long) & 0x7f, /* sleb128 */ .h.cie.return_column =3D TCG_REG_RA, =20 /* Total FDE size does not include the "len" member. */ diff --git a/tcg/ppc64/tcg-target.c.inc b/tcg/ppc64/tcg-target.c.inc index 3c36b26f25..b54afa0b6d 100644 --- a/tcg/ppc64/tcg-target.c.inc +++ b/tcg/ppc64/tcg-target.c.inc @@ -70,7 +70,7 @@ #define SZP ((int)sizeof(void *)) =20 /* Shorthand for size of a register. */ -#define SZR (TCG_TARGET_REG_BITS / 8) +#define SZR ((int)sizeof(tcg_target_long)) =20 #define TCG_CT_CONST_S16 0x00100 #define TCG_CT_CONST_U16 0x00200 diff --git a/tcg/riscv64/tcg-target.c.inc b/tcg/riscv64/tcg-target.c.inc index 0967a445a3..76dd4fca97 100644 --- a/tcg/riscv64/tcg-target.c.inc +++ b/tcg/riscv64/tcg-target.c.inc @@ -2934,7 +2934,7 @@ static const int tcg_target_callee_save_regs[] =3D { }; =20 /* Stack frame parameters. */ -#define REG_SIZE (TCG_TARGET_REG_BITS / 8) +#define REG_SIZE ((int)sizeof(tcg_target_long)) #define SAVE_SIZE ((int)ARRAY_SIZE(tcg_target_callee_save_regs) * REG_SIZ= E) #define TEMP_SIZE (CPU_TEMP_BUF_NLONGS * (int)sizeof(long)) #define FRAME_SIZE ((TCG_STATIC_CALL_ARGS_SIZE + TEMP_SIZE + SAVE_SIZE \ @@ -3114,7 +3114,7 @@ static const DebugFrame debug_frame =3D { .h.cie.id =3D -1, .h.cie.version =3D 1, .h.cie.code_align =3D 1, - .h.cie.data_align =3D -(TCG_TARGET_REG_BITS / 8) & 0x7f, /* sleb128 */ + .h.cie.data_align =3D -sizeof(tcg_target_long) & 0x7f, /* sleb128 */ .h.cie.return_column =3D TCG_REG_RA, =20 /* Total FDE size does not include the "len" member. */ --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534521; cv=none; d=zohomail.com; s=zohoarc; b=PaGaNO6mjwZyJfqM2VfOp70/okw06sNXdydyuLGvBFLBrR/zOVjtESh7mkrZyxxd+hwZpKtujTbBG+y7BoVtPeBS2ntzmo0TeUmCiLubQvIxgNwb1idxqjtsPGHiZHWLB7ALA0fRgzsESp3a3Ag7elIMerHMf7VQhs0d9nl0GII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534521; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Hrwc5/QxBHhWpurLFh7R0/jF8nT5qB038yvAaKWWwqA=; b=cB7QPaqm890qOR1jm3wPnbbNDoLwXQqWKwTk2Ks5k3r0RY78YiXbY+FWcu6njHZToGib6JvBFwB/z3ljJbZNZ8Unb6b2kcFKVkQV25fkYUzXeDYmv5qSVnL68zhGeP9WKBugwEI/1AxTI7ioR2rfyakRwug2jbkof6yT7eGzUsM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534521519897.2383943438687; Thu, 15 Jan 2026 19:35:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgabz-0000S1-2X; Thu, 15 Jan 2026 22:34:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgabx-0000Hd-EH for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:57 -0500 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgabu-0005sv-KB for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:34:57 -0500 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-81c72659e6bso1387571b3a.0 for ; Thu, 15 Jan 2026 19:34:54 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534493; x=1769139293; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Hrwc5/QxBHhWpurLFh7R0/jF8nT5qB038yvAaKWWwqA=; b=nhMycbTh363ewbDVx6kS/tFvvtGLAqAf+9F1aIIbZaYivkqP6DlKLQ0dO9D82oFPO6 Yax2buClSpZCYDsYNcyOytuoCJmNhFGDk0pstVJm9lE3R2ck4RrZePz8R2Ega3y84ThM LDbM1I3uWhkyQ6sQJVRq+YmZFi//2iWwTFZ4tSA7pi5MTvGIrgyvO613vn5p/d+2aSI/ PR+/8vqMqwivo737HlHH0sr9m2D0U+HzVZc1zufWgYD6Z1gbY+KMLKP01hO9Gq6pm2W0 Vrp2mhG9FXyP0vuwFsL7Whesc2Z48fM4JG4TALdjEe+6CNxavNsdhKqJe3R4AP9FHnrb zPXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534493; x=1769139293; 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; bh=Hrwc5/QxBHhWpurLFh7R0/jF8nT5qB038yvAaKWWwqA=; b=A9WsN8BWk736xtrm5LGCtVq6Q/oTiidan19+N8KgWnnvwc0LBIDdlYqQgaR3YtbMSM i1Kz3bttTxhDeQmjWOe8xLFAaiGPkZCwUKYmVrAuyooIC6edess8ZrbGNxqjSiEvbmsk 19Zs62eQ/K1taTWrt+W1dSbpSX2tMW0p9kt9E929PvT4GQQHLJkNzHgms6hmnk5j0YRC AIO/sJrFncoHzkzLW4pkqufC2nbudNsZiGhS9KOqYYCD+97VikJeWaYtvFD8PBJ+9kOx It/2/os6B/hsufbmuz3bEnmEHxQD6WjbAsdjB78/mtnensO9y8XRJ/qCQvrGaz7lQcqs NAXA== X-Gm-Message-State: AOJu0YwInPlAl9zD1wg10jQloyatN6dGZbrs0aZaZy0lB4cs96VCg16y GT0usV0n5LM4qZ+G96xUAUbejngaFdcLrR0eEL9kHXuRwXp2kE4Fiffw88spbKIcpGfSHRS5sJa RkbjHzrEj1g== X-Gm-Gg: AY/fxX7yNxwMHJ24isn8xofdppUrYJfC+ShgOfiPoME6LXEWt55jwjV6qf1Jemp3z47 HKBUXuiXKSExUnRI+7UDv51Rx+3gwXu+kC5tcDzDXLLssUTyvkFdGPF8qG3jMUQy5FH7f8HvtY0 vCriDpYIYmqv97xTnFsAUuUk3oEd8moQ13a34lBVqWLNWVIgaoze/dOwBK8jQLekIkVoEQFTa6l AqQOp1WR0Q/FTBQaQk3i8e5sHutG9QuWPcZNNfjhiz+JYBleItZ7tIFnFkCh9g9jcyI1m5Fdfbi nbPfGEwxJwGAc91A8Kg90sxGveqj1ON6qg4EtvwE/nu69zCBZF3RK7w5wPPvQUUmdJE18SNSFmQ 1NMY3FiHGW9moC1yRLkcc7tOkYceuOaTER/H5bktvYaAOIoKNZ8944+BrrUW06lifM8WI8naXQp 7tiP773Uie7DktERaz6w== X-Received: by 2002:a05:6a00:3cd6:b0:81c:8d47:33f5 with SMTP id d2e1a72fcca58-81fa01e1f1emr1706580b3a.31.1768534493115; Thu, 15 Jan 2026 19:34:53 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 25/58] *: Drop TCG_TARGET_REG_BITS test for prefer_i64 Date: Fri, 16 Jan 2026 14:32:31 +1100 Message-ID: <20260116033305.51162-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534523442158500 Mechanically via sed -i. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/tcg/gengvec.c | 32 ++++++------- target/arm/tcg/gengvec64.c | 4 +- target/arm/tcg/translate-sve.c | 26 +++++------ tcg/tcg-op-gvec.c | 62 ++++++++++++------------- target/i386/tcg/emit.c.inc | 2 +- target/riscv/insn_trans/trans_rvv.c.inc | 2 +- 6 files changed, 64 insertions(+), 64 deletions(-) diff --git a/target/arm/tcg/gengvec.c b/target/arm/tcg/gengvec.c index 01867f8ace..f97d63549c 100644 --- a/target/arm/tcg/gengvec.c +++ b/target/arm/tcg/gengvec.c @@ -165,7 +165,7 @@ void gen_gvec_ssra(unsigned vece, uint32_t rd_ofs, uint= 32_t rm_ofs, { .fni8 =3D gen_ssra64_i64, .fniv =3D gen_ssra_vec, .fno =3D gen_helper_gvec_ssra_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .load_dest =3D true, .vece =3D MO_64 }, @@ -241,7 +241,7 @@ void gen_gvec_usra(unsigned vece, uint32_t rd_ofs, uint= 32_t rm_ofs, { .fni8 =3D gen_usra64_i64, .fniv =3D gen_usra_vec, .fno =3D gen_helper_gvec_usra_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .load_dest =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64, }, @@ -349,7 +349,7 @@ void gen_gvec_srshr(unsigned vece, uint32_t rd_ofs, uin= t32_t rm_ofs, { .fni8 =3D gen_srshr64_i64, .fniv =3D gen_srshr_vec, .fno =3D gen_helper_gvec_srshr_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64 }, }; @@ -439,7 +439,7 @@ void gen_gvec_srsra(unsigned vece, uint32_t rd_ofs, uin= t32_t rm_ofs, { .fni8 =3D gen_srsra64_i64, .fniv =3D gen_srsra_vec, .fno =3D gen_helper_gvec_srsra_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .load_dest =3D true, .vece =3D MO_64 }, @@ -543,7 +543,7 @@ void gen_gvec_urshr(unsigned vece, uint32_t rd_ofs, uin= t32_t rm_ofs, { .fni8 =3D gen_urshr64_i64, .fniv =3D gen_urshr_vec, .fno =3D gen_helper_gvec_urshr_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64 }, }; @@ -652,7 +652,7 @@ void gen_gvec_ursra(unsigned vece, uint32_t rd_ofs, uin= t32_t rm_ofs, { .fni8 =3D gen_ursra64_i64, .fniv =3D gen_ursra_vec, .fno =3D gen_helper_gvec_ursra_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .load_dest =3D true, .vece =3D MO_64 }, @@ -736,7 +736,7 @@ void gen_gvec_sri(unsigned vece, uint32_t rd_ofs, uint3= 2_t rm_ofs, { .fni8 =3D gen_shr64_ins_i64, .fniv =3D gen_shr_ins_vec, .fno =3D gen_helper_gvec_sri_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .load_dest =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64 }, @@ -823,7 +823,7 @@ void gen_gvec_sli(unsigned vece, uint32_t rd_ofs, uint3= 2_t rm_ofs, { .fni8 =3D gen_shl64_ins_i64, .fniv =3D gen_shl_ins_vec, .fno =3D gen_helper_gvec_sli_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .load_dest =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64 }, @@ -927,7 +927,7 @@ void gen_gvec_mla(unsigned vece, uint32_t rd_ofs, uint3= 2_t rn_ofs, .vece =3D MO_32 }, { .fni8 =3D gen_mla64_i64, .fniv =3D gen_mla_vec, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .load_dest =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64 }, @@ -959,7 +959,7 @@ void gen_gvec_mls(unsigned vece, uint32_t rd_ofs, uint3= 2_t rn_ofs, .vece =3D MO_32 }, { .fni8 =3D gen_mls64_i64, .fniv =3D gen_mls_vec, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .load_dest =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64 }, @@ -1002,7 +1002,7 @@ void gen_gvec_cmtst(unsigned vece, uint32_t rd_ofs, u= int32_t rn_ofs, .vece =3D MO_32 }, { .fni8 =3D gen_cmtst_i64, .fniv =3D gen_cmtst_vec, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64 }, }; @@ -1691,7 +1691,7 @@ void gen_gvec_sabd(unsigned vece, uint32_t rd_ofs, ui= nt32_t rn_ofs, { .fni8 =3D gen_sabd_i64, .fniv =3D gen_sabd_vec, .fno =3D gen_helper_gvec_sabd_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64 }, }; @@ -1748,7 +1748,7 @@ void gen_gvec_uabd(unsigned vece, uint32_t rd_ofs, ui= nt32_t rn_ofs, { .fni8 =3D gen_uabd_i64, .fniv =3D gen_uabd_vec, .fno =3D gen_helper_gvec_uabd_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .vece =3D MO_64 }, }; @@ -1803,7 +1803,7 @@ void gen_gvec_saba(unsigned vece, uint32_t rd_ofs, ui= nt32_t rn_ofs, { .fni8 =3D gen_saba_i64, .fniv =3D gen_saba_vec, .fno =3D gen_helper_gvec_saba_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .load_dest =3D true, .vece =3D MO_64 }, @@ -1859,7 +1859,7 @@ void gen_gvec_uaba(unsigned vece, uint32_t rd_ofs, ui= nt32_t rn_ofs, { .fni8 =3D gen_uaba_i64, .fniv =3D gen_uaba_vec, .fno =3D gen_helper_gvec_uaba_d, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .opt_opc =3D vecop_list, .load_dest =3D true, .vece =3D MO_64 }, @@ -2429,7 +2429,7 @@ void gen_gvec_rev32(unsigned vece, uint32_t rd_ofs, u= int32_t rn_ofs, static const GVecGen2 g =3D { .fni8 =3D gen_bswap32_i64, .fni4 =3D tcg_gen_bswap32_i32, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_32 }; =20 diff --git a/target/arm/tcg/gengvec64.c b/target/arm/tcg/gengvec64.c index 2429cab1b8..c425d2b149 100644 --- a/target/arm/tcg/gengvec64.c +++ b/target/arm/tcg/gengvec64.c @@ -157,7 +157,7 @@ void gen_gvec_eor3(unsigned vece, uint32_t d, uint32_t = n, uint32_t m, .fniv =3D gen_eor3_vec, .fno =3D gen_helper_sve2_eor3, .vece =3D MO_64, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; tcg_gen_gvec_4(d, n, m, a, oprsz, maxsz, &op); } @@ -183,7 +183,7 @@ void gen_gvec_bcax(unsigned vece, uint32_t d, uint32_t = n, uint32_t m, .fniv =3D gen_bcax_vec, .fno =3D gen_helper_sve2_bcax, .vece =3D MO_64, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; tcg_gen_gvec_4(d, n, m, a, oprsz, maxsz, &op); } diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 07b827fa8e..64adb5c1ce 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -623,7 +623,7 @@ static void gen_bsl1n(unsigned vece, uint32_t d, uint32= _t n, uint32_t m, .fniv =3D gen_bsl1n_vec, .fno =3D gen_helper_sve2_bsl1n, .vece =3D MO_64, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; tcg_gen_gvec_4(d, n, m, a, oprsz, maxsz, &op); } @@ -661,7 +661,7 @@ static void gen_bsl2n(unsigned vece, uint32_t d, uint32= _t n, uint32_t m, .fniv =3D gen_bsl2n_vec, .fno =3D gen_helper_sve2_bsl2n, .vece =3D MO_64, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; tcg_gen_gvec_4(d, n, m, a, oprsz, maxsz, &op); } @@ -690,7 +690,7 @@ static void gen_nbsl(unsigned vece, uint32_t d, uint32_= t n, uint32_t m, .fniv =3D gen_nbsl_vec, .fno =3D gen_helper_sve2_nbsl, .vece =3D MO_64, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; tcg_gen_gvec_4(d, n, m, a, oprsz, maxsz, &op); } @@ -1367,7 +1367,7 @@ static bool trans_AND_pppp(DisasContext *s, arg_rprr_= s *a) .fni8 =3D gen_and_pg_i64, .fniv =3D gen_and_pg_vec, .fno =3D gen_helper_sve_and_pppp, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (!dc_isar_feature(aa64_sve, s)) { @@ -1405,7 +1405,7 @@ static bool trans_BIC_pppp(DisasContext *s, arg_rprr_= s *a) .fni8 =3D gen_bic_pg_i64, .fniv =3D gen_bic_pg_vec, .fno =3D gen_helper_sve_bic_pppp, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (!dc_isar_feature(aa64_sve, s)) { @@ -1436,7 +1436,7 @@ static bool trans_EOR_pppp(DisasContext *s, arg_rprr_= s *a) .fni8 =3D gen_eor_pg_i64, .fniv =3D gen_eor_pg_vec, .fno =3D gen_helper_sve_eor_pppp, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (!dc_isar_feature(aa64_sve, s)) { @@ -1483,7 +1483,7 @@ static bool trans_ORR_pppp(DisasContext *s, arg_rprr_= s *a) .fni8 =3D gen_orr_pg_i64, .fniv =3D gen_orr_pg_vec, .fno =3D gen_helper_sve_orr_pppp, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (!dc_isar_feature(aa64_sve, s)) { @@ -1514,7 +1514,7 @@ static bool trans_ORN_pppp(DisasContext *s, arg_rprr_= s *a) .fni8 =3D gen_orn_pg_i64, .fniv =3D gen_orn_pg_vec, .fno =3D gen_helper_sve_orn_pppp, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (!dc_isar_feature(aa64_sve, s)) { @@ -1542,7 +1542,7 @@ static bool trans_NOR_pppp(DisasContext *s, arg_rprr_= s *a) .fni8 =3D gen_nor_pg_i64, .fniv =3D gen_nor_pg_vec, .fno =3D gen_helper_sve_nor_pppp, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (!dc_isar_feature(aa64_sve, s)) { @@ -1570,7 +1570,7 @@ static bool trans_NAND_pppp(DisasContext *s, arg_rprr= _s *a) .fni8 =3D gen_nand_pg_i64, .fniv =3D gen_nand_pg_vec, .fno =3D gen_helper_sve_nand_pppp, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (!dc_isar_feature(aa64_sve, s)) { @@ -3680,7 +3680,7 @@ static bool trans_SUBR_zzi(DisasContext *s, arg_rri_e= sz *a) .fniv =3D tcg_gen_sub_vec, .fno =3D gen_helper_sve_subri_d, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64, .scalar_first =3D true } }; @@ -8024,7 +8024,7 @@ static void gen_sclamp(unsigned vece, uint32_t d, uin= t32_t n, uint32_t m, .fno =3D gen_helper_gvec_sclamp_d, .opt_opc =3D vecop, .vece =3D MO_64, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64 } + .prefer_i64 =3D true } }; tcg_gen_gvec_4(d, n, m, a, oprsz, maxsz, &ops[vece]); } @@ -8075,7 +8075,7 @@ static void gen_uclamp(unsigned vece, uint32_t d, uin= t32_t n, uint32_t m, .fno =3D gen_helper_gvec_uclamp_d, .opt_opc =3D vecop, .vece =3D MO_64, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64 } + .prefer_i64 =3D true } }; tcg_gen_gvec_4(d, n, m, a, oprsz, maxsz, &ops[vece]); } diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 9c33430638..2cfc7e9409 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -1754,7 +1754,7 @@ void tcg_gen_gvec_mov_var(unsigned vece, TCGv_ptr dba= se, uint32_t dofs, .fni8 =3D tcg_gen_mov_i64, .fniv =3D vec_mov2, .fno =3D gen_helper_gvec_mov, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (dofs =3D=3D aofs && dbase =3D=3D abase) { @@ -1917,7 +1917,7 @@ void tcg_gen_gvec_not(unsigned vece, uint32_t dofs, u= int32_t aofs, .fni8 =3D tcg_gen_not_i64, .fniv =3D tcg_gen_not_vec, .fno =3D gen_helper_gvec_not, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; tcg_gen_gvec_2(dofs, aofs, oprsz, maxsz, &g); } @@ -2030,7 +2030,7 @@ void tcg_gen_gvec_add_var(unsigned vece, TCGv_ptr dba= se, uint32_t dofs, .fniv =3D tcg_gen_add_vec, .fno =3D gen_helper_gvec_add64, .opt_opc =3D vecop_list_add, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -2069,7 +2069,7 @@ void tcg_gen_gvec_adds(unsigned vece, uint32_t dofs, = uint32_t aofs, .fniv =3D tcg_gen_add_vec, .fno =3D gen_helper_gvec_adds64, .opt_opc =3D vecop_list_add, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -2109,7 +2109,7 @@ void tcg_gen_gvec_subs(unsigned vece, uint32_t dofs, = uint32_t aofs, .fniv =3D tcg_gen_sub_vec, .fno =3D gen_helper_gvec_subs64, .opt_opc =3D vecop_list_sub, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -2221,7 +2221,7 @@ void tcg_gen_gvec_sub_var(unsigned vece, TCGv_ptr dba= se, uint32_t dofs, .fniv =3D tcg_gen_sub_vec, .fno =3D gen_helper_gvec_sub64, .opt_opc =3D vecop_list_sub, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -2260,7 +2260,7 @@ void tcg_gen_gvec_mul(unsigned vece, uint32_t dofs, u= int32_t aofs, .fniv =3D tcg_gen_mul_vec, .fno =3D gen_helper_gvec_mul64, .opt_opc =3D vecop_list_mul, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -2289,7 +2289,7 @@ void tcg_gen_gvec_muls(unsigned vece, uint32_t dofs, = uint32_t aofs, .fniv =3D tcg_gen_mul_vec, .fno =3D gen_helper_gvec_muls64, .opt_opc =3D vecop_list_mul, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -2618,7 +2618,7 @@ void tcg_gen_gvec_neg(unsigned vece, uint32_t dofs, u= int32_t aofs, .fniv =3D tcg_gen_neg_vec, .fno =3D gen_helper_gvec_neg64, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -2682,7 +2682,7 @@ void tcg_gen_gvec_abs(unsigned vece, uint32_t dofs, u= int32_t aofs, .fniv =3D tcg_gen_abs_vec, .fno =3D gen_helper_gvec_abs64, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -2697,7 +2697,7 @@ void tcg_gen_gvec_and(unsigned vece, uint32_t dofs, u= int32_t aofs, .fni8 =3D tcg_gen_and_i64, .fniv =3D tcg_gen_and_vec, .fno =3D gen_helper_gvec_and, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (aofs =3D=3D bofs) { @@ -2714,7 +2714,7 @@ void tcg_gen_gvec_or(unsigned vece, uint32_t dofs, ui= nt32_t aofs, .fni8 =3D tcg_gen_or_i64, .fniv =3D tcg_gen_or_vec, .fno =3D gen_helper_gvec_or, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (aofs =3D=3D bofs) { @@ -2731,7 +2731,7 @@ void tcg_gen_gvec_xor(unsigned vece, uint32_t dofs, u= int32_t aofs, .fni8 =3D tcg_gen_xor_i64, .fniv =3D tcg_gen_xor_vec, .fno =3D gen_helper_gvec_xor, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (aofs =3D=3D bofs) { @@ -2748,7 +2748,7 @@ void tcg_gen_gvec_andc(unsigned vece, uint32_t dofs, = uint32_t aofs, .fni8 =3D tcg_gen_andc_i64, .fniv =3D tcg_gen_andc_vec, .fno =3D gen_helper_gvec_andc, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (aofs =3D=3D bofs) { @@ -2765,7 +2765,7 @@ void tcg_gen_gvec_orc(unsigned vece, uint32_t dofs, u= int32_t aofs, .fni8 =3D tcg_gen_orc_i64, .fniv =3D tcg_gen_orc_vec, .fno =3D gen_helper_gvec_orc, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (aofs =3D=3D bofs) { @@ -2782,7 +2782,7 @@ void tcg_gen_gvec_nand(unsigned vece, uint32_t dofs, = uint32_t aofs, .fni8 =3D tcg_gen_nand_i64, .fniv =3D tcg_gen_nand_vec, .fno =3D gen_helper_gvec_nand, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (aofs =3D=3D bofs) { @@ -2799,7 +2799,7 @@ void tcg_gen_gvec_nor(unsigned vece, uint32_t dofs, u= int32_t aofs, .fni8 =3D tcg_gen_nor_i64, .fniv =3D tcg_gen_nor_vec, .fno =3D gen_helper_gvec_nor, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (aofs =3D=3D bofs) { @@ -2816,7 +2816,7 @@ void tcg_gen_gvec_eqv(unsigned vece, uint32_t dofs, u= int32_t aofs, .fni8 =3D tcg_gen_eqv_i64, .fniv =3D tcg_gen_eqv_vec, .fno =3D gen_helper_gvec_eqv, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, }; =20 if (aofs =3D=3D bofs) { @@ -2830,7 +2830,7 @@ static const GVecGen2s gop_ands =3D { .fni8 =3D tcg_gen_and_i64, .fniv =3D tcg_gen_and_vec, .fno =3D gen_helper_gvec_ands, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }; =20 @@ -2857,7 +2857,7 @@ void tcg_gen_gvec_andcs(unsigned vece, uint32_t dofs,= uint32_t aofs, .fni8 =3D tcg_gen_andc_i64, .fniv =3D tcg_gen_andc_vec, .fno =3D gen_helper_gvec_andcs, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }; =20 @@ -2871,7 +2871,7 @@ static const GVecGen2s gop_xors =3D { .fni8 =3D tcg_gen_xor_i64, .fniv =3D tcg_gen_xor_vec, .fno =3D gen_helper_gvec_xors, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }; =20 @@ -2895,7 +2895,7 @@ static const GVecGen2s gop_ors =3D { .fni8 =3D tcg_gen_or_i64, .fniv =3D tcg_gen_or_vec, .fno =3D gen_helper_gvec_ors, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }; =20 @@ -2967,7 +2967,7 @@ void tcg_gen_gvec_shli(unsigned vece, uint32_t dofs, = uint32_t aofs, .fniv =3D tcg_gen_shli_vec, .fno =3D gen_helper_gvec_shl64i, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -3032,7 +3032,7 @@ void tcg_gen_gvec_shri(unsigned vece, uint32_t dofs, = uint32_t aofs, .fniv =3D tcg_gen_shri_vec, .fno =3D gen_helper_gvec_shr64i, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -3125,7 +3125,7 @@ void tcg_gen_gvec_sari(unsigned vece, uint32_t dofs, = uint32_t aofs, .fniv =3D tcg_gen_sari_vec, .fno =3D gen_helper_gvec_sar64i, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -3184,7 +3184,7 @@ void tcg_gen_gvec_rotli(unsigned vece, uint32_t dofs,= uint32_t aofs, .fniv =3D tcg_gen_rotli_vec, .fno =3D gen_helper_gvec_rotl64i, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -3513,7 +3513,7 @@ void tcg_gen_gvec_shlv(unsigned vece, uint32_t dofs, = uint32_t aofs, .fniv =3D tcg_gen_shlv_mod_vec, .fno =3D gen_helper_gvec_shl64v, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -3576,7 +3576,7 @@ void tcg_gen_gvec_shrv(unsigned vece, uint32_t dofs, = uint32_t aofs, .fniv =3D tcg_gen_shrv_mod_vec, .fno =3D gen_helper_gvec_shr64v, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -3639,7 +3639,7 @@ void tcg_gen_gvec_sarv(unsigned vece, uint32_t dofs, = uint32_t aofs, .fniv =3D tcg_gen_sarv_mod_vec, .fno =3D gen_helper_gvec_sar64v, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -3702,7 +3702,7 @@ void tcg_gen_gvec_rotlv(unsigned vece, uint32_t dofs,= uint32_t aofs, .fniv =3D tcg_gen_rotlv_mod_vec, .fno =3D gen_helper_gvec_rotl64v, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 @@ -3761,7 +3761,7 @@ void tcg_gen_gvec_rotrv(unsigned vece, uint32_t dofs,= uint32_t aofs, .fniv =3D tcg_gen_rotrv_mod_vec, .fno =3D gen_helper_gvec_rotr64v, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index bc3a07f972..41bf047b8d 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -3006,7 +3006,7 @@ static void gen_PMOVMSKB(DisasContext *s, X86DecodedI= nsn *decode) .fniv =3D gen_pmovmskb_vec, .opt_opc =3D vecop_list, .vece =3D MO_64, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64 + .prefer_i64 =3D true }; MemOp ot =3D decode->op[2].ot; int vec_len =3D vector_len(s, decode); diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 2a487179f6..caefd38216 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -1489,7 +1489,7 @@ static void tcg_gen_gvec_rsubs(unsigned vece, uint32_= t dofs, uint32_t aofs, .fniv =3D gen_rsub_vec, .fno =3D gen_helper_vec_rsubs64, .opt_opc =3D vecop_list, - .prefer_i64 =3D TCG_TARGET_REG_BITS =3D=3D 64, + .prefer_i64 =3D true, .vece =3D MO_64 }, }; =20 --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534511; cv=none; d=zohomail.com; s=zohoarc; b=UpceBL6tNY367MdWgkHMlb3BMG6iBsNfJ3mmNEBzELcG+tBFhT2jpSV5qMhNOIZ0rUyRA5qHLr3nHhQS3blMrT5cdvU8Oi/MmCkrQrldUq3YvaXYWtZ+t/0roswrmlYSI/VtHpo45KI3+F7UQM20b0icrvDOMYjssP4TdoXmLug= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534511; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=V606qWDykwCVpb/3iOpNOphjhPCSJtqkWo8JNzY5dBc=; b=db/d97FThSwtpqHA8x/SIOkah85lKA6IcqO/IAXXiPBCV7ROw1Rk2mBbqd9RUqBvOCouuaXr/rNW8wBrGAXbJMh/bqhzG2fxE6+wU5OfHb204r42Wn+VLpkdxot+HcrcIcrMSjUkGubOmOH0kt7fSuiEjHPIZf7heT2XZ0EY6og= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534511887543.8257136791393; Thu, 15 Jan 2026 19:35:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgac3-0000ZM-S2; Thu, 15 Jan 2026 22:35:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgac0-0000W8-VU for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:00 -0500 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaby-0005uk-I0 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:00 -0500 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-81f3d6990d6so914621b3a.3 for ; Thu, 15 Jan 2026 19:34:58 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:34:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534497; x=1769139297; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=V606qWDykwCVpb/3iOpNOphjhPCSJtqkWo8JNzY5dBc=; b=Oyze8G8nAXOHgAZHPytIlzaUvqjy63iTbh1sLwB4x5RgK0tRmt7o5ic6IzfM2o1j2V G5Bz3/DGikA984/PwsuUbo0uldS7tn8rd/jyOEeFc0hy8L6AajFtbbvcVIpimfE7gocG JOei3+wLtO2ZI+OnkGO0LGy2M4xp3mH22BSE03PPHVVpqM1LH9m/GRiK08JaeXscI4ua 9iRoNYnaLyKTZ3my6JSf9UzUoO8NnfJU4Q9XXC1uWvywn7ajoUmKpXaqg00ZlhURjeUy erIohYPK/7zpyrvZBaY6HFQ2JIeAbhYz8bE1JavnkS2sTB24eP462bDDJTm7ZKuakFPb Z40w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534497; x=1769139297; 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; bh=V606qWDykwCVpb/3iOpNOphjhPCSJtqkWo8JNzY5dBc=; b=Cin4rAfvA/Z0wstcAsu02aog9NqQ2l3mGj/nkqbxnmLsgxfS9xJgrvkJXbKj3H6O0E 5FIeyl4c/fVXdns56KL6lsoWu9ja5w4Ljh/tJl2X16v1RKsKw2v8yBfO9bsY7Mcff8sx ReEYFPG8BHtqyIw703WG0udObvKinjR6wSbQkLTPUVhYwBy/N2sFpEU7ipnUvdjaQX45 bzfKZ6E8W9VtztRbOTq2uhoxIREVsSGC+laO0tq06k2qIJCUgHTD3KDnb+FE45m0nWUU iIMSXB+QEsoGKzEP1QM8zKp2KRWtMkqPZjUzkLEm1Cm6umaV6MdTLjCwjUlsoU6VbTg1 ugdA== X-Gm-Message-State: AOJu0YzCcrRuo+iRsvNl9UfiYHcaAuRv1voQn4MvSx8QaGOcfHRCf1oW 9bJ/Men2nNpv2yk3kJbkv/4Rq445J9628tWMeOlGjfhtPl0+nkykEp//J+WfA7YkGJY213xelVn 7OZGdiDCHWw== X-Gm-Gg: AY/fxX6Gmzx8godC+xW89gwuHSavU+RkPlcvAkqRrI2P1AvwMd0cGKO7MSIx5PvOYPC sPuwnEta65lwZb5fP0w5KQXCb2BnuQh2CbfiGsXUcHP45tb1yjCMEuTmVoDFczSOQ34Vqb6pFEw T1AatCqSsBwi0OU5uEB9xD3BeBkuX+At8vacvEsTWx/fMhm++7+1rnRb2qO4K5xmpe+JDQpbHSb 8gEA7OhzKfzY0iwdA1LbfHs4a8jytrN1BSfbWulXiEX4Sukrn07AaroqWqYBnC/7E2eYnZIa5eW dJw/9wNFgbLbyryPLjCh/vVtXPXpoLd86DP4/Ca7XepMTKNVizeDysBDK5Gs0H4TSsx2rlwQYWd HArO6+dj99DsdoeoVjQFj8MkbTktD5odjd26SgRRW8l8escvzmwq8kAeknwcSYI5k0O6jGJVJ5w M44uEzZXnxw205ylJ8Ug== X-Received: by 2002:a05:6a00:22cc:b0:81f:3afe:2824 with SMTP id d2e1a72fcca58-81f9fce5d63mr1673419b3a.24.1768534496906; Thu, 15 Jan 2026 19:34:56 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 26/58] tcg: Remove INDEX_op_brcond2_i32 Date: Fri, 16 Jan 2026 14:32:32 +1100 Message-ID: <20260116033305.51162-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534513585158500 Content-Type: text/plain; charset="utf-8" This opcode was exclusively for 32-bit hosts. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/tcg/tcg-opc.h | 1 - tcg/optimize.c | 99 ---------------------------------------- tcg/tcg-op.c | 32 ++----------- tcg/tcg.c | 34 -------------- docs/devel/tcg-ops.rst | 7 +-- tcg/tci/tcg-target.c.inc | 17 ------- 6 files changed, 4 insertions(+), 186 deletions(-) diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index e988edd93a..55283af326 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -103,7 +103,6 @@ DEF(subb1o, 1, 2, 0, TCG_OPF_INT | TCG_OPF_CARRY_OUT) DEF(subbi, 1, 2, 0, TCG_OPF_INT | TCG_OPF_CARRY_IN) DEF(subbio, 1, 2, 0, TCG_OPF_INT | TCG_OPF_CARRY_IN | TCG_OPF_CARRY_OUT) =20 -DEF(brcond2_i32, 0, 4, 2, TCG_OPF_BB_END | TCG_OPF_COND_BRANCH) DEF(setcond2_i32, 1, 4, 1, 0) =20 /* size changing ops */ diff --git a/tcg/optimize.c b/tcg/optimize.c index 5ae26e4a10..a544c055b8 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -1597,102 +1597,6 @@ static bool fold_brcond(OptContext *ctx, TCGOp *op) return true; } =20 -static bool fold_brcond2(OptContext *ctx, TCGOp *op) -{ - TCGCond cond; - TCGArg label; - int i, inv =3D 0; - - i =3D do_constant_folding_cond2(ctx, op, &op->args[0]); - cond =3D op->args[4]; - label =3D op->args[5]; - if (i >=3D 0) { - goto do_brcond_const; - } - - switch (cond) { - case TCG_COND_LT: - case TCG_COND_GE: - /* - * Simplify LT/GE comparisons vs zero to a single compare - * vs the high word of the input. - */ - if (arg_is_const_val(op->args[2], 0) && - arg_is_const_val(op->args[3], 0)) { - goto do_brcond_high; - } - break; - - case TCG_COND_NE: - inv =3D 1; - QEMU_FALLTHROUGH; - case TCG_COND_EQ: - /* - * Simplify EQ/NE comparisons where one of the pairs - * can be simplified. - */ - i =3D do_constant_folding_cond(TCG_TYPE_I32, op->args[0], - op->args[2], cond); - switch (i ^ inv) { - case 0: - goto do_brcond_const; - case 1: - goto do_brcond_high; - } - - i =3D do_constant_folding_cond(TCG_TYPE_I32, op->args[1], - op->args[3], cond); - switch (i ^ inv) { - case 0: - goto do_brcond_const; - case 1: - goto do_brcond_low; - } - break; - - case TCG_COND_TSTEQ: - case TCG_COND_TSTNE: - if (arg_is_const_val(op->args[2], 0)) { - goto do_brcond_high; - } - if (arg_is_const_val(op->args[3], 0)) { - goto do_brcond_low; - } - break; - - default: - break; - - do_brcond_low: - op->opc =3D INDEX_op_brcond; - op->args[1] =3D op->args[2]; - op->args[2] =3D cond; - op->args[3] =3D label; - return fold_brcond(ctx, op); - - do_brcond_high: - op->opc =3D INDEX_op_brcond; - op->args[0] =3D op->args[1]; - op->args[1] =3D op->args[3]; - op->args[2] =3D cond; - op->args[3] =3D label; - return fold_brcond(ctx, op); - - do_brcond_const: - if (i =3D=3D 0) { - tcg_op_remove(ctx->tcg, op); - return true; - } - op->opc =3D INDEX_op_br; - op->args[0] =3D label; - finish_ebb(ctx); - return true; - } - - finish_bb(ctx); - return true; -} - static bool fold_bswap(OptContext *ctx, TCGOp *op) { uint64_t z_mask, o_mask, s_mask; @@ -3163,9 +3067,6 @@ void tcg_optimize(TCGContext *s) case INDEX_op_brcond: done =3D fold_brcond(&ctx, op); break; - case INDEX_op_brcond2_i32: - done =3D fold_brcond2(&ctx, op); - break; case INDEX_op_bswap16: case INDEX_op_bswap32: case INDEX_op_bswap64: diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index ab7b409be6..61f6fd9095 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -265,14 +265,6 @@ static void DNI tcg_gen_op6i_i64(TCGOpcode opc, TCGv_i= 64 a1, TCGv_i64 a2, tcgv_i64_arg(a3), tcgv_i64_arg(a4), tcgv_i64_arg(a5), a6); } =20 -static TCGOp * DNI tcg_gen_op6ii_i32(TCGOpcode opc, TCGv_i32 a1, TCGv_i32 = a2, - TCGv_i32 a3, TCGv_i32 a4, - TCGArg a5, TCGArg a6) -{ - return tcg_gen_op6(opc, TCG_TYPE_I32, tcgv_i32_arg(a1), tcgv_i32_arg(a= 2), - tcgv_i32_arg(a3), tcgv_i32_arg(a4), a5, a6); -} - /* Generic ops. */ =20 void gen_set_label(TCGLabel *l) @@ -1873,33 +1865,15 @@ void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1= , TCGv_i64 arg2, TCGLabel *l) if (cond =3D=3D TCG_COND_ALWAYS) { tcg_gen_br(l); } else if (cond !=3D TCG_COND_NEVER) { - TCGOp *op; - if (TCG_TARGET_REG_BITS =3D=3D 32) { - op =3D tcg_gen_op6ii_i32(INDEX_op_brcond2_i32, TCGV_LOW(arg1), - TCGV_HIGH(arg1), TCGV_LOW(arg2), - TCGV_HIGH(arg2), cond, label_arg(l)); - } else { - op =3D tcg_gen_op4ii_i64(INDEX_op_brcond, arg1, arg2, cond, - label_arg(l)); - } + TCGOp *op =3D tcg_gen_op4ii_i64(INDEX_op_brcond, arg1, arg2, cond, + label_arg(l)); add_as_label_use(l, op); } } =20 void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, TCGLab= el *l) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_brcond_i64(cond, arg1, tcg_constant_i64(arg2), l); - } else if (cond =3D=3D TCG_COND_ALWAYS) { - tcg_gen_br(l); - } else if (cond !=3D TCG_COND_NEVER) { - TCGOp *op =3D tcg_gen_op6ii_i32(INDEX_op_brcond2_i32, - TCGV_LOW(arg1), TCGV_HIGH(arg1), - tcg_constant_i32(arg2), - tcg_constant_i32(arg2 >> 32), - cond, label_arg(l)); - add_as_label_use(l, op); - } + tcg_gen_brcond_i64(cond, arg1, tcg_constant_i64(arg2), l); } =20 void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, diff --git a/tcg/tcg.c b/tcg/tcg.c index fbf09f5c82..0521767c46 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1010,13 +1010,6 @@ typedef struct TCGOutOpBrcond { TCGReg a1, tcg_target_long a2, TCGLabel *label); } TCGOutOpBrcond; =20 -typedef struct TCGOutOpBrcond2 { - TCGOutOp base; - void (*out)(TCGContext *s, TCGCond cond, TCGReg al, TCGReg ah, - TCGArg bl, bool const_bl, - TCGArg bh, bool const_bh, TCGLabel *l); -} TCGOutOpBrcond2; - typedef struct TCGOutOpBswap { TCGOutOp base; void (*out_rr)(TCGContext *s, TCGType type, @@ -1248,7 +1241,6 @@ static const TCGOutOp * const all_outop[NB_OPS] =3D { [INDEX_op_goto_ptr] =3D &outop_goto_ptr, =20 #if TCG_TARGET_REG_BITS =3D=3D 32 - OUTOP(INDEX_op_brcond2_i32, TCGOutOpBrcond2, outop_brcond2), OUTOP(INDEX_op_setcond2_i32, TCGOutOpSetcond2, outop_setcond2), #else OUTOP(INDEX_op_bswap64, TCGOutOpUnary, outop_bswap64), @@ -2490,7 +2482,6 @@ bool tcg_op_supported(TCGOpcode op, TCGType type, uns= igned flags) case INDEX_op_xor: return has_type; =20 - case INDEX_op_brcond2_i32: case INDEX_op_setcond2_i32: return TCG_TARGET_REG_BITS =3D=3D 32; =20 @@ -3022,7 +3013,6 @@ void tcg_dump_ops(TCGContext *s, FILE *f, bool have_p= refs) case INDEX_op_setcond: case INDEX_op_negsetcond: case INDEX_op_movcond: - case INDEX_op_brcond2_i32: case INDEX_op_setcond2_i32: case INDEX_op_cmp_vec: case INDEX_op_cmpsel_vec: @@ -3106,7 +3096,6 @@ void tcg_dump_ops(TCGContext *s, FILE *f, bool have_p= refs) case INDEX_op_set_label: case INDEX_op_br: case INDEX_op_brcond: - case INDEX_op_brcond2_i32: col +=3D ne_fprintf(f, "%s$L%d", k ? "," : "", arg_label(op->args[k])->id); i++, k++; @@ -3563,9 +3552,6 @@ void tcg_op_remove(TCGContext *s, TCGOp *op) case INDEX_op_brcond: remove_label_use(op, 3); break; - case INDEX_op_brcond2_i32: - remove_label_use(op, 5); - break; default: break; } @@ -3664,9 +3650,6 @@ static void move_label_uses(TCGLabel *to, TCGLabel *f= rom) case INDEX_op_brcond: op->args[3] =3D label_arg(to); break; - case INDEX_op_brcond2_i32: - op->args[5] =3D label_arg(to); - break; default: g_assert_not_reached(); } @@ -5285,9 +5268,6 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG= Op *op) case INDEX_op_cmp_vec: op_cond =3D op->args[3]; break; - case INDEX_op_brcond2_i32: - op_cond =3D op->args[4]; - break; case INDEX_op_movcond: case INDEX_op_setcond2_i32: case INDEX_op_cmpsel_vec: @@ -5890,19 +5870,6 @@ static void tcg_reg_alloc_op(TCGContext *s, const TC= GOp *op) break; =20 #if TCG_TARGET_REG_BITS =3D=3D 32 - case INDEX_op_brcond2_i32: - { - const TCGOutOpBrcond2 *out =3D &outop_brcond2; - TCGCond cond =3D new_args[4]; - TCGLabel *label =3D arg_label(new_args[5]); - - tcg_debug_assert(!const_args[0]); - tcg_debug_assert(!const_args[1]); - out->out(s, cond, new_args[0], new_args[1], - new_args[2], const_args[2], - new_args[3], const_args[3], label); - } - break; case INDEX_op_setcond2_i32: { const TCGOutOpSetcond2 *out =3D &outop_setcond2; @@ -5915,7 +5882,6 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG= Op *op) } break; #else - case INDEX_op_brcond2_i32: case INDEX_op_setcond2_i32: g_assert_not_reached(); #endif diff --git a/docs/devel/tcg-ops.rst b/docs/devel/tcg-ops.rst index f26b837a30..10d5edb4ca 100644 --- a/docs/devel/tcg-ops.rst +++ b/docs/devel/tcg-ops.rst @@ -705,11 +705,6 @@ They are emitted as needed by inline functions within = ``tcg-op.h``. =20 .. list-table:: =20 - * - brcond2_i32 *t0_low*, *t0_high*, *t1_low*, *t1_high*, *cond*, *labe= l* - - - | Similar to brcond, except that the 64-bit values *t0* and *t1* - are formed from two 32-bit arguments. - * - setcond2_i32 *dest*, *t1_low*, *t1_high*, *t2_low*, *t2_high*, *con= d* =20 - | Similar to setcond, except that the 64-bit values *t1* and *t2* a= re @@ -940,7 +935,7 @@ The target word size (``TCG_TARGET_REG_BITS``) is expec= ted to be 32 bit or =20 On a 32 bit target, all 64 bit operations are converted to 32 bits. A few specific operations must be implemented to allow it -(see brcond2_i32, setcond2_i32). +(see setcond2_i32). =20 On a 64 bit target, the values are transferred between 32 and 64-bit registers using the following ops: diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc index 532f87262c..1756ffc59c 100644 --- a/tcg/tci/tcg-target.c.inc +++ b/tcg/tci/tcg-target.c.inc @@ -1047,23 +1047,6 @@ static const TCGOutOpMovcond outop_movcond =3D { .out =3D tgen_movcond, }; =20 -static void tgen_brcond2(TCGContext *s, TCGCond cond, TCGReg al, TCGReg ah, - TCGArg bl, bool const_bl, - TCGArg bh, bool const_bh, TCGLabel *l) -{ - tcg_out_op_rrrrrc(s, INDEX_op_setcond2_i32, TCG_REG_TMP, - al, ah, bl, bh, cond); - tcg_out_op_rl(s, INDEX_op_brcond, TCG_REG_TMP, l); -} - -#if TCG_TARGET_REG_BITS !=3D 32 -__attribute__((unused)) -#endif -static const TCGOutOpBrcond2 outop_brcond2 =3D { - .base.static_constraint =3D C_O0_I4(r, r, r, r), - .out =3D tgen_brcond2, -}; - static void tgen_setcond2(TCGContext *s, TCGCond cond, TCGReg ret, TCGReg al, TCGReg ah, TCGArg bl, bool const_bl, --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534554; cv=none; d=zohomail.com; s=zohoarc; b=IOD/NMMk65HEursqCAwyvJDnPJZgKt9WD97gIgYj8V6nt6v1oSKRw3M2/vM8G9bqd6btXoT3L4CCI8X8bTxVEkUBFgOHfwaze3k7edw4BOug34QUWsy49n57U4n8hlyouR/TW/v8/DQt6T47pOukUv3uYi1SJKKKbhNZPLFNr6k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534554; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xxGjmvi5stD/pKxpCi2bexDDgM4UjuXeBBR0I0HBVUM=; b=lTEPhuVV6aOBpJuYHV2a5G/FpRWJNrQbeHKS/5OA+KwrUi9qaQitxWuHxs/S8/AihwqqziuIeKGQ9X+1zG1o/+oZ0lYsukmRK7Z8Qu2M7ds2U4fCCWDayw4oG/GmN2pbEGAtA5OJ5Gw2aGqA0Q2JRlETIfzw9t7z6N1pEq3f2m4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534554933265.92382564436855; Thu, 15 Jan 2026 19:35:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgac6-0000io-Bv; Thu, 15 Jan 2026 22:35:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgac4-0000ed-TG for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:05 -0500 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgac2-0005wn-8C for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:04 -0500 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-81f4c0e2b42so882376b3a.1 for ; Thu, 15 Jan 2026 19:35:01 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.34.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534501; x=1769139301; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xxGjmvi5stD/pKxpCi2bexDDgM4UjuXeBBR0I0HBVUM=; b=RBvPjnjitj9FedwzCqNuo3v9livg+evg2HyUttGJJP5c4CR2aMBCanhZ3sWta52uu/ hoCSlbyFMwzvTi5r6LpL1ijbe5bm+TuUMwdglApcgfFw4rplRr8OAYJsl1MQLJx+Fn5I sxY33l4Cz87rUu9vW5dsNi3bKvw1OKUkge7qZRL0NU12RwL2T43FLIbj80w2IuXo+sYM d54hCr2vRwDKUbKJWQtkmrHuv23Z0YrXHoVx03LetmhDZebL7gCIH9JoQtC6VHQ3Bl+z oKVgT+7jHQ9G/EVrhy5gwiSMbtE7pMTONzt+Q6L81RxIudmolsWjCTycV6OrvJrr9Ida veUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534501; x=1769139301; 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; bh=xxGjmvi5stD/pKxpCi2bexDDgM4UjuXeBBR0I0HBVUM=; b=OAWMezei3remTrmeKDIaS6lFGboJ0j2t3ZZGw+e+ueXCCmbZl5BJBDI46ULtgD9eqd j2BOOhYnPK9eMTaMx7xv0odU3e8qhox1xgpwmYpqOE5ZAWrbhEGhuMdSuUpackRwGGUq iOmcg6OM6XGASNhKd61X/itTfbrmRcarSoE7AnEnNjFuoMaqRcMttICIPUeXQiTwJIZ5 6CIN0+UIGxBVaZqOsU2ctYbSYjejERrzbX3jvsiwa90lbMXVQoFUzhH0KAGOLRffTBmH XOzC1hoTDfJ9KTcSOAbMA1gZTPHedaXowPSUyTBDmW+to8oU4GZlDalA5RObaZUEoWvp lQyQ== X-Gm-Message-State: AOJu0YxKooNmAvXJ3YyFTpd+EYl5ZLbWVfHAd+8FA6EMysrl0dlP0xG+ NNFDr49UGyTG0PoGq6xGBOXVBSq8i1+/CPVCOxhiqsGBEB/SSMoUt4+4ZtdI+welf4m0ThLw/wh jR55fr/1hKw== X-Gm-Gg: AY/fxX4hObd6Q1QWFBI8xqmxm4CcOR+MCyPLY7/MGoDNYxsfy0fCkM5UylnkQwZg9pM wGRJNBtOTktZQ+y3+kQc1VB1o4nglEGL5QFVqbNgK2eheYEbXj8Y39aBGLnBaIucRrsZfUSKkj4 SgxFkAF/wdLXO//mPJBsqszHZMwpvond5bKSei4MToEL7ikvuUY4qAQ7QyacTN4mVMU1Qxx2Ha5 LPGcGrTJn/JireUT34RygYhjegzDZpq7KUq5Fim6S0I0lsYkKCDi6QL87yiiNYhpbv5tsU2bCfZ 4QlZ1Zz48KkKR5X0jklmQElfzLGU/hs53PM9rsT/YTYfjQ+hUtOflU2dhcPzxVH9yTx53fzEDPW f9g+BRYrrZiu4/KmB6NhltWVZXy22EFL+HJRK5hUtGyNaUi5sCyiksKkKS4JQwdJoqSrw4xkZwE 7E3cH9K+5oubNMkYdgeg== X-Received: by 2002:a05:6a00:1c86:b0:81f:852b:a932 with SMTP id d2e1a72fcca58-81f9f6aba80mr1761449b3a.25.1768534500710; Thu, 15 Jan 2026 19:35:00 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 27/58] tcg: Remove INDEX_op_setcond2_i32 Date: Fri, 16 Jan 2026 14:32:33 +1100 Message-ID: <20260116033305.51162-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534580863158500 Content-Type: text/plain; charset="utf-8" This opcode was exclusively for 32-bit hosts. Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/tcg/tcg-opc.h | 2 - tcg/optimize.c | 205 --------------------------------------- tcg/tcg-op.c | 47 +-------- tcg/tcg.c | 32 ------ tcg/tci.c | 10 -- docs/devel/tcg-ops.rst | 27 +----- tcg/tci/tcg-target.c.inc | 16 --- 7 files changed, 8 insertions(+), 331 deletions(-) diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index 55283af326..fc1270f01e 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -103,8 +103,6 @@ DEF(subb1o, 1, 2, 0, TCG_OPF_INT | TCG_OPF_CARRY_OUT) DEF(subbi, 1, 2, 0, TCG_OPF_INT | TCG_OPF_CARRY_IN) DEF(subbio, 1, 2, 0, TCG_OPF_INT | TCG_OPF_CARRY_IN | TCG_OPF_CARRY_OUT) =20 -DEF(setcond2_i32, 1, 4, 1, 0) - /* size changing ops */ DEF(ext_i32_i64, 1, 1, 0, 0) DEF(extu_i32_i64, 1, 1, 0, 0) diff --git a/tcg/optimize.c b/tcg/optimize.c index a544c055b8..d845c7eef2 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -764,22 +764,6 @@ static bool swap_commutative(TCGArg dest, TCGArg *p1, = TCGArg *p2) return false; } =20 -static bool swap_commutative2(TCGArg *p1, TCGArg *p2) -{ - int sum =3D 0; - sum +=3D pref_commutative(arg_info(p1[0])); - sum +=3D pref_commutative(arg_info(p1[1])); - sum -=3D pref_commutative(arg_info(p2[0])); - sum -=3D pref_commutative(arg_info(p2[1])); - if (sum > 0) { - TCGArg t; - t =3D p1[0], p1[0] =3D p2[0], p2[0] =3D t; - t =3D p1[1], p1[1] =3D p2[1], p2[1] =3D t; - return true; - } - return false; -} - /* * Return -1 if the condition can't be simplified, * and the result of the condition (0 or 1) if it can. @@ -844,108 +828,6 @@ static int do_constant_folding_cond1(OptContext *ctx,= TCGOp *op, TCGArg dest, return -1; } =20 -static int do_constant_folding_cond2(OptContext *ctx, TCGOp *op, TCGArg *a= rgs) -{ - TCGArg al, ah, bl, bh; - TCGCond c; - bool swap; - int r; - - swap =3D swap_commutative2(args, args + 2); - c =3D args[4]; - if (swap) { - args[4] =3D c =3D tcg_swap_cond(c); - } - - al =3D args[0]; - ah =3D args[1]; - bl =3D args[2]; - bh =3D args[3]; - - if (arg_is_const(bl) && arg_is_const(bh)) { - tcg_target_ulong blv =3D arg_const_val(bl); - tcg_target_ulong bhv =3D arg_const_val(bh); - uint64_t b =3D deposit64(blv, 32, 32, bhv); - - if (arg_is_const(al) && arg_is_const(ah)) { - tcg_target_ulong alv =3D arg_const_val(al); - tcg_target_ulong ahv =3D arg_const_val(ah); - uint64_t a =3D deposit64(alv, 32, 32, ahv); - - r =3D do_constant_folding_cond_64(a, b, c); - if (r >=3D 0) { - return r; - } - } - - if (b =3D=3D 0) { - switch (c) { - case TCG_COND_LTU: - case TCG_COND_TSTNE: - return 0; - case TCG_COND_GEU: - case TCG_COND_TSTEQ: - return 1; - default: - break; - } - } - - /* TSTNE x,-1 -> NE x,0 */ - if (b =3D=3D -1 && is_tst_cond(c)) { - args[3] =3D args[2] =3D arg_new_constant(ctx, 0); - args[4] =3D tcg_tst_eqne_cond(c); - return -1; - } - - /* TSTNE x,sign -> LT x,0 */ - if (b =3D=3D INT64_MIN && is_tst_cond(c)) { - /* bl must be 0, so copy that to bh */ - args[3] =3D bl; - args[4] =3D tcg_tst_ltge_cond(c); - return -1; - } - } - - if (args_are_copies(al, bl) && args_are_copies(ah, bh)) { - r =3D do_constant_folding_cond_eq(c); - if (r >=3D 0) { - return r; - } - - /* TSTNE x,x -> NE x,0 */ - if (is_tst_cond(c)) { - args[3] =3D args[2] =3D arg_new_constant(ctx, 0); - args[4] =3D tcg_tst_eqne_cond(c); - return -1; - } - } - - /* Expand to AND with a temporary if no backend support. */ - if (!TCG_TARGET_HAS_tst && is_tst_cond(c)) { - TCGOp *op1 =3D opt_insert_before(ctx, op, INDEX_op_and, 3); - TCGOp *op2 =3D opt_insert_before(ctx, op, INDEX_op_and, 3); - TCGArg t1 =3D arg_new_temp(ctx); - TCGArg t2 =3D arg_new_temp(ctx); - - op1->args[0] =3D t1; - op1->args[1] =3D al; - op1->args[2] =3D bl; - fold_and(ctx, op1); - - op2->args[0] =3D t2; - op2->args[1] =3D ah; - op2->args[2] =3D bh; - fold_and(ctx, op1); - - args[0] =3D t1; - args[1] =3D t2; - args[3] =3D args[2] =3D arg_new_constant(ctx, 0); - args[4] =3D tcg_tst_eqne_cond(c); - } - return -1; -} - static void init_arguments(OptContext *ctx, TCGOp *op, int nb_args) { for (int i =3D 0; i < nb_args; i++) { @@ -2503,90 +2385,6 @@ static bool fold_negsetcond(OptContext *ctx, TCGOp *= op) return fold_masks_s(ctx, op, -1); } =20 -static bool fold_setcond2(OptContext *ctx, TCGOp *op) -{ - TCGCond cond; - int i, inv =3D 0; - - i =3D do_constant_folding_cond2(ctx, op, &op->args[1]); - cond =3D op->args[5]; - if (i >=3D 0) { - goto do_setcond_const; - } - - switch (cond) { - case TCG_COND_LT: - case TCG_COND_GE: - /* - * Simplify LT/GE comparisons vs zero to a single compare - * vs the high word of the input. - */ - if (arg_is_const_val(op->args[3], 0) && - arg_is_const_val(op->args[4], 0)) { - goto do_setcond_high; - } - break; - - case TCG_COND_NE: - inv =3D 1; - QEMU_FALLTHROUGH; - case TCG_COND_EQ: - /* - * Simplify EQ/NE comparisons where one of the pairs - * can be simplified. - */ - i =3D do_constant_folding_cond(TCG_TYPE_I32, op->args[1], - op->args[3], cond); - switch (i ^ inv) { - case 0: - goto do_setcond_const; - case 1: - goto do_setcond_high; - } - - i =3D do_constant_folding_cond(TCG_TYPE_I32, op->args[2], - op->args[4], cond); - switch (i ^ inv) { - case 0: - goto do_setcond_const; - case 1: - goto do_setcond_low; - } - break; - - case TCG_COND_TSTEQ: - case TCG_COND_TSTNE: - if (arg_is_const_val(op->args[3], 0)) { - goto do_setcond_high; - } - if (arg_is_const_val(op->args[4], 0)) { - goto do_setcond_low; - } - break; - - default: - break; - - do_setcond_low: - op->args[2] =3D op->args[3]; - op->args[3] =3D cond; - op->opc =3D INDEX_op_setcond; - return fold_setcond(ctx, op); - - do_setcond_high: - op->args[1] =3D op->args[2]; - op->args[2] =3D op->args[4]; - op->args[3] =3D cond; - op->opc =3D INDEX_op_setcond; - return fold_setcond(ctx, op); - } - - return fold_masks_z(ctx, op, 1); - - do_setcond_const: - return tcg_opt_gen_movi(ctx, op, op->args[0], i); -} - static bool fold_sextract(OptContext *ctx, TCGOp *op) { uint64_t z_mask, o_mask, s_mask, a_mask; @@ -3202,9 +3000,6 @@ void tcg_optimize(TCGContext *s) case INDEX_op_negsetcond: done =3D fold_negsetcond(&ctx, op); break; - case INDEX_op_setcond2_i32: - done =3D fold_setcond2(&ctx, op); - break; case INDEX_op_cmp_vec: done =3D fold_cmp_vec(&ctx, op); break; diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 61f6fd9095..d20888dd8f 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1884,33 +1884,14 @@ void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret, } else if (cond =3D=3D TCG_COND_NEVER) { tcg_gen_movi_i64(ret, 0); } else { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_op6i_i32(INDEX_op_setcond2_i32, TCGV_LOW(ret), - TCGV_LOW(arg1), TCGV_HIGH(arg1), - TCGV_LOW(arg2), TCGV_HIGH(arg2), cond); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } else { - tcg_gen_op4i_i64(INDEX_op_setcond, ret, arg1, arg2, cond); - } + tcg_gen_op4i_i64(INDEX_op_setcond, ret, arg1, arg2, cond); } } =20 void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_setcond_i64(cond, ret, arg1, tcg_constant_i64(arg2)); - } else 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_op6i_i32(INDEX_op_setcond2_i32, TCGV_LOW(ret), - TCGV_LOW(arg1), TCGV_HIGH(arg1), - tcg_constant_i32(arg2), - tcg_constant_i32(arg2 >> 32), cond); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } + tcg_gen_setcond_i64(cond, ret, arg1, tcg_constant_i64(arg2)); } =20 void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret, @@ -1926,14 +1907,8 @@ void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 r= et, tcg_gen_movi_i64(ret, -1); } else if (cond =3D=3D TCG_COND_NEVER) { tcg_gen_movi_i64(ret, 0); - } else if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op4i_i64(INDEX_op_negsetcond, ret, arg1, arg2, cond); } else { - tcg_gen_op6i_i32(INDEX_op_setcond2_i32, TCGV_LOW(ret), - TCGV_LOW(arg1), TCGV_HIGH(arg1), - TCGV_LOW(arg2), TCGV_HIGH(arg2), cond); - tcg_gen_neg_i32(TCGV_LOW(ret), TCGV_LOW(ret)); - tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_LOW(ret)); + tcg_gen_op4i_i64(INDEX_op_negsetcond, ret, arg1, arg2, cond); } } =20 @@ -2777,22 +2752,8 @@ void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret,= TCGv_i64 c1, tcg_gen_mov_i64(ret, v1); } else if (cond =3D=3D TCG_COND_NEVER) { tcg_gen_mov_i64(ret, v2); - } else if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op6i_i64(INDEX_op_movcond, ret, c1, c2, v1, v2, cond); } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 zero =3D tcg_constant_i32(0); - - tcg_gen_op6i_i32(INDEX_op_setcond2_i32, t0, - TCGV_LOW(c1), TCGV_HIGH(c1), - TCGV_LOW(c2), TCGV_HIGH(c2), cond); - - tcg_gen_movcond_i32(TCG_COND_NE, TCGV_LOW(ret), t0, zero, - TCGV_LOW(v1), TCGV_LOW(v2)); - tcg_gen_movcond_i32(TCG_COND_NE, TCGV_HIGH(ret), t0, zero, - TCGV_HIGH(v1), TCGV_HIGH(v2)); - - tcg_temp_free_i32(t0); + tcg_gen_op6i_i64(INDEX_op_movcond, ret, c1, c2, v1, v2, cond); } } =20 diff --git a/tcg/tcg.c b/tcg/tcg.c index 0521767c46..b6a65fe224 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1088,12 +1088,6 @@ typedef struct TCGOutOpSetcond { TCGReg ret, TCGReg a1, tcg_target_long a2); } TCGOutOpSetcond; =20 -typedef struct TCGOutOpSetcond2 { - TCGOutOp base; - void (*out)(TCGContext *s, TCGCond cond, TCGReg ret, TCGReg al, TCGReg= ah, - TCGArg bl, bool const_bl, TCGArg bh, bool const_bh); -} TCGOutOpSetcond2; - typedef struct TCGOutOpStore { TCGOutOp base; void (*out_r)(TCGContext *s, TCGType type, TCGReg data, @@ -1240,9 +1234,6 @@ static const TCGOutOp * const all_outop[NB_OPS] =3D { =20 [INDEX_op_goto_ptr] =3D &outop_goto_ptr, =20 -#if TCG_TARGET_REG_BITS =3D=3D 32 - OUTOP(INDEX_op_setcond2_i32, TCGOutOpSetcond2, outop_setcond2), -#else OUTOP(INDEX_op_bswap64, TCGOutOpUnary, outop_bswap64), OUTOP(INDEX_op_ext_i32_i64, TCGOutOpUnary, outop_exts_i32_i64), OUTOP(INDEX_op_extu_i32_i64, TCGOutOpUnary, outop_extu_i32_i64), @@ -1251,7 +1242,6 @@ static const TCGOutOp * const all_outop[NB_OPS] =3D { OUTOP(INDEX_op_ld32u, TCGOutOpLoad, outop_ld32u), OUTOP(INDEX_op_ld32s, TCGOutOpLoad, outop_ld32s), OUTOP(INDEX_op_st32, TCGOutOpStore, outop_st), -#endif }; =20 #undef OUTOP @@ -2482,9 +2472,6 @@ bool tcg_op_supported(TCGOpcode op, TCGType type, uns= igned flags) case INDEX_op_xor: return has_type; =20 - case INDEX_op_setcond2_i32: - return TCG_TARGET_REG_BITS =3D=3D 32; - case INDEX_op_ld32u: case INDEX_op_ld32s: case INDEX_op_st32: @@ -3013,7 +3000,6 @@ void tcg_dump_ops(TCGContext *s, FILE *f, bool have_p= refs) case INDEX_op_setcond: case INDEX_op_negsetcond: case INDEX_op_movcond: - case INDEX_op_setcond2_i32: case INDEX_op_cmp_vec: case INDEX_op_cmpsel_vec: if (op->args[k] < ARRAY_SIZE(cond_name) @@ -5269,7 +5255,6 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG= Op *op) op_cond =3D op->args[3]; break; case INDEX_op_movcond: - case INDEX_op_setcond2_i32: case INDEX_op_cmpsel_vec: op_cond =3D op->args[5]; break; @@ -5869,23 +5854,6 @@ static void tcg_reg_alloc_op(TCGContext *s, const TC= GOp *op) } break; =20 -#if TCG_TARGET_REG_BITS =3D=3D 32 - case INDEX_op_setcond2_i32: - { - const TCGOutOpSetcond2 *out =3D &outop_setcond2; - TCGCond cond =3D new_args[5]; - - tcg_debug_assert(!const_args[1]); - tcg_debug_assert(!const_args[2]); - out->out(s, cond, new_args[0], new_args[1], new_args[2], - new_args[3], const_args[3], new_args[4], const_args[4= ]); - } - break; -#else - case INDEX_op_setcond2_i32: - g_assert_not_reached(); -#endif - case INDEX_op_goto_ptr: tcg_debug_assert(!const_args[0]); tcg_out_goto_ptr(s, new_args[0]); diff --git a/tcg/tci.c b/tcg/tci.c index e15d4e8e08..7f3ba9b5da 100644 --- a/tcg/tci.c +++ b/tcg/tci.c @@ -418,14 +418,6 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchSta= te *env, tci_args_l(insn, tb_ptr, &ptr); tb_ptr =3D ptr; continue; -#if TCG_TARGET_REG_BITS =3D=3D 32 - case INDEX_op_setcond2_i32: - tci_args_rrrrrc(insn, &r0, &r1, &r2, &r3, &r4, &condition); - regs[r0] =3D tci_compare64(tci_uint64(regs[r2], regs[r1]), - tci_uint64(regs[r4], regs[r3]), - condition); - break; -#elif TCG_TARGET_REG_BITS =3D=3D 64 case INDEX_op_setcond: tci_args_rrrc(insn, &r0, &r1, &r2, &condition); regs[r0] =3D tci_compare64(regs[r1], regs[r2], condition); @@ -435,7 +427,6 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchStat= e *env, tmp32 =3D tci_compare64(regs[r1], regs[r2], condition); regs[r0] =3D regs[tmp32 ? r3 : r4]; break; -#endif case INDEX_op_mov: tci_args_rr(insn, &r0, &r1); regs[r0] =3D regs[r1]; @@ -1040,7 +1031,6 @@ int print_insn_tci(bfd_vma addr, disassemble_info *in= fo) =20 case INDEX_op_tci_movcond32: case INDEX_op_movcond: - case INDEX_op_setcond2_i32: tci_args_rrrrrc(insn, &r0, &r1, &r2, &r3, &r4, &c); info->fprintf_func(info->stream, "%-12s %s, %s, %s, %s, %s, %s", op_name, str_r(r0), str_r(r1), str_r(r2), diff --git a/docs/devel/tcg-ops.rst b/docs/devel/tcg-ops.rst index 10d5edb4ca..fd3a50bf4c 100644 --- a/docs/devel/tcg-ops.rst +++ b/docs/devel/tcg-ops.rst @@ -696,21 +696,6 @@ Memory Barrier support | Please see :ref:`atomics-ref` for more information on memory barr= iers. =20 =20 -64-bit guest on 32-bit host support ------------------------------------ - -The following opcodes are internal to TCG. Thus they are to be implemente= d by -32-bit host code generators, but are not to be emitted by guest translator= s. -They are emitted as needed by inline functions within ``tcg-op.h``. - -.. list-table:: - - * - setcond2_i32 *dest*, *t1_low*, *t1_high*, *t2_low*, *t2_high*, *con= d* - - - | Similar to setcond, except that the 64-bit values *t1* and *t2* a= re - formed from two 32-bit arguments. The result is a 32-bit value. - - QEMU specific operations ------------------------ =20 @@ -930,15 +915,11 @@ than being a standalone C file. Assumptions ----------- =20 -The target word size (``TCG_TARGET_REG_BITS``) is expected to be 32 bit or -64 bit. It is expected that the pointer has the same size as the word. +The target word size (``TCG_TARGET_REG_BITS``) is expected to be 64 bit. +It is expected that the pointer has the same size as the word. =20 -On a 32 bit target, all 64 bit operations are converted to 32 bits. -A few specific operations must be implemented to allow it -(see setcond2_i32). - -On a 64 bit target, the values are transferred between 32 and 64-bit -registers using the following ops: +Values are transferred between 32 and 64-bit registers using the +following ops: =20 - extrl_i64_i32 - extrh_i64_i32 diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc index 1756ffc59c..8bd8db4401 100644 --- a/tcg/tci/tcg-target.c.inc +++ b/tcg/tci/tcg-target.c.inc @@ -1047,22 +1047,6 @@ static const TCGOutOpMovcond outop_movcond =3D { .out =3D tgen_movcond, }; =20 -static void tgen_setcond2(TCGContext *s, TCGCond cond, TCGReg ret, - TCGReg al, TCGReg ah, - TCGArg bl, bool const_bl, - TCGArg bh, bool const_bh) -{ - tcg_out_op_rrrrrc(s, INDEX_op_setcond2_i32, ret, al, ah, bl, bh, cond); -} - -#if TCG_TARGET_REG_BITS !=3D 32 -__attribute__((unused)) -#endif -static const TCGOutOpSetcond2 outop_setcond2 =3D { - .base.static_constraint =3D C_O1_I4(r, r, r, r, r), - .out =3D tgen_setcond2, -}; - static void tcg_out_mb(TCGContext *s, unsigned a0) { tcg_out_op_v(s, INDEX_op_mb); --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534675; cv=none; d=zohomail.com; s=zohoarc; b=bi0NLYdgEL8vPDIe+OZ9kkjZCgN474ZFDTeUfPfcWjxLU+IHPNCVo0hSlwGHFJs8hSeLHLO5N1L1tn+OZjRvCqRuVDBLmPN4LD1J3KeHhgPrziNfklD4SnT3QKLokGibeWWmc0qm8rDlIT6g/83WgyZljImsR8yLWlkruyokuyM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534675; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lyHPNybRY+NoN8XylpS1cgArMSCY+8ib77S0l59/9JY=; b=ne1ik0Wk/3vqCIF+rbXyscMc7gVxynwfl7ZgaM67rqUEIVYAuWlgjbjT+S35RoSkqKFyRAs+AW0piQGXvCOYt58gC251EZ7KuD+0lcfUkRRJ2RjasGSdNTdkd7qrn3YmJrxtvL1CIXjFJl476oq/t1Ke7wPUiZm0jm2vfgWo9Lw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534675162675.832601026194; Thu, 15 Jan 2026 19:37:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacA-0000wa-1Y; Thu, 15 Jan 2026 22:35:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgac8-0000uP-Sq for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:08 -0500 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgac5-000695-Vc for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:08 -0500 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-7b22ffa2a88so705556b3a.1 for ; Thu, 15 Jan 2026 19:35:05 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534505; x=1769139305; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lyHPNybRY+NoN8XylpS1cgArMSCY+8ib77S0l59/9JY=; b=VgYvO0uuJqoKTabj+8oTcr/CS5R3I5LiPhi4MK9Wtvh5XFffp53yQZW6WUOBv0Dcb4 hKcMJ35DsRP5M01khRjHYfcBIIltbnF0U8/UjS6qAA73p3ukX12iShMeUuxU59q/6zND 6GIxK2KfJ6f3lX3gqcyii5EPjo2KrsVB19XIsyUS1nS+/21MclaYuVIepmMCDrbIksZq CPcIpY1Xp2tR1DyBN0z6Ylhxjr+NmpfMo/IjIDDBxHUTLiUiQQjLn3pAFdWNa/Fu09Fe Jnl9koSlbG3ZdSYyJZrxpta8FSfm7XVss/GEpi9puV1O9jb6wLMu25gbS1ns2G/Flced S0tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534505; x=1769139305; 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; bh=lyHPNybRY+NoN8XylpS1cgArMSCY+8ib77S0l59/9JY=; b=reP7SxLndpUXHjlm692OUhwkGWwgugyDgP4/c8MYw+b7doMm6HPVu+08fctEXLbOQM usQZ+3okrtBc3+geMfVU4PQfiR3pgTobh83ZbvBi5qNcZMv7/ZvSjCFOIb2r+3xoeHGd wEKZBOYOXbwTZLSf1qwvrTBplW+xxNC7QlLXO0+VWgHM+BrIGsQro/7eR4abBTF3KIM7 H0rKV/BZ5AoLuOQQymAQTC8j5KzROZWsh2dkDL41n0r5wdNBqVdIg3dTP5e4PgcZyfrj 9xevL8/+IwJu1LWTeY3LH5xf3/JIz/GvT49wrihRuNobG14HGf7UOJMWd6jr8xR4r2pX 5fyg== X-Gm-Message-State: AOJu0Yy9xkibhQQ3nYSLZDLd4FRl8l0ulga1mFOlwXuNnB6gCptlPPeb p0KTa0EOr52R7zjnhkZMtI2M/UynN0eBSlsqjP9YosxVlEd6wefN64/SFS/bS49X8Wd3ncclGyC C7UV7Dalflg== X-Gm-Gg: AY/fxX6dNdVcR7w67LTuL9M+pwtxS7ZaZhHnelojvKoAWwoJRX5ET8Wd578uCvyqRVt ZG3qexxCfDcxLqn9lhT0Sn4jvx+wAQyEpwU1uXmoR8Umm/5hjcWywuJ9E1Jv1m/PxwkTi7EvQth pwo9HPgU5+d7RI/BIxsLdvdinbxa2SW1dSm7vDb870eJ37DtVwhuVN6oLuO08kmN8v4oBv6VY76 9FXO9cTKzAcOuHofiGKqX5mTuckAH3TrrDLGKI9Jjywm/PnKLb7b+7QHVp0tu8sC4MTps8E+0XR O/sSAIFzl1rnWTNoM9IVl9dU7Jv+bN6H9Fnb4SosM0tjLRUUruJz5p0lX2DCPPRiH4tH2qYX1/X cPTAvkvH+vIqjDwqtxeUwhZK8IfGy2JnHwBG2wsBz8veAHNvVxNHTQ0YCdVDsJK3k4bEHH96nHs 6e/Zsw+bz4gFVnvLbqNw== X-Received: by 2002:a05:6a00:3926:b0:81f:b97:14a with SMTP id d2e1a72fcca58-81fa189099fmr1161114b3a.61.1768534504507; Thu, 15 Jan 2026 19:35:04 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 28/58] tcg: Remove INDEX_op_dup2_vec Date: Fri, 16 Jan 2026 14:32:34 +1100 Message-ID: <20260116033305.51162-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534676032158500 Content-Type: text/plain; charset="utf-8" This opcode was exclusively for 32-bit hosts. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/tcg/tcg-opc.h | 1 - tcg/optimize.c | 18 --------- tcg/tcg-op-vec.c | 14 +------ tcg/tcg.c | 94 ------------------------------------------- 4 files changed, 2 insertions(+), 125 deletions(-) diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index fc1270f01e..28806057c5 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -130,7 +130,6 @@ DEF(qemu_st2, 0, 3, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_S= IDE_EFFECTS | TCG_OPF_INT DEF(mov_vec, 1, 1, 0, TCG_OPF_VECTOR | TCG_OPF_NOT_PRESENT) =20 DEF(dup_vec, 1, 1, 0, TCG_OPF_VECTOR) -DEF(dup2_vec, 1, 2, 0, TCG_OPF_VECTOR) =20 DEF(ld_vec, 1, 1, 1, TCG_OPF_VECTOR) DEF(st_vec, 0, 2, 1, TCG_OPF_VECTOR) diff --git a/tcg/optimize.c b/tcg/optimize.c index d845c7eef2..801a0a2c68 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -1716,21 +1716,6 @@ static bool fold_dup(OptContext *ctx, TCGOp *op) return finish_folding(ctx, op); } =20 -static bool fold_dup2(OptContext *ctx, TCGOp *op) -{ - if (arg_is_const(op->args[1]) && arg_is_const(op->args[2])) { - uint64_t t =3D deposit64(arg_const_val(op->args[1]), 32, 32, - arg_const_val(op->args[2])); - return tcg_opt_gen_movi(ctx, op, op->args[0], t); - } - - if (args_are_copies(op->args[1], op->args[2])) { - op->opc =3D INDEX_op_dup_vec; - TCGOP_VECE(op) =3D MO_32; - } - return finish_folding(ctx, op); -} - static bool fold_eqv(OptContext *ctx, TCGOp *op) { uint64_t z_mask, o_mask, s_mask; @@ -2887,9 +2872,6 @@ void tcg_optimize(TCGContext *s) case INDEX_op_dup_vec: done =3D fold_dup(&ctx, op); break; - case INDEX_op_dup2_vec: - done =3D fold_dup2(&ctx, op); - break; case INDEX_op_eqv: case INDEX_op_eqv_vec: done =3D fold_eqv(&ctx, op); diff --git a/tcg/tcg-op-vec.c b/tcg/tcg-op-vec.c index 893d68e7d8..67e837174b 100644 --- a/tcg/tcg-op-vec.c +++ b/tcg/tcg-op-vec.c @@ -75,7 +75,6 @@ bool tcg_can_emit_vecop_list(const TCGOpcode *list, case INDEX_op_xor_vec: case INDEX_op_mov_vec: case INDEX_op_dup_vec: - case INDEX_op_dup2_vec: case INDEX_op_ld_vec: case INDEX_op_st_vec: case INDEX_op_bitsel_vec: @@ -228,20 +227,11 @@ void tcg_gen_dupi_vec(unsigned vece, TCGv_vec r, uint= 64_t a) void tcg_gen_dup_i64_vec(unsigned vece, TCGv_vec r, TCGv_i64 a) { TCGArg ri =3D tcgv_vec_arg(r); + TCGArg ai =3D tcgv_i64_arg(a); TCGTemp *rt =3D arg_temp(ri); TCGType type =3D rt->base_type; =20 - if (TCG_TARGET_REG_BITS =3D=3D 64) { - TCGArg ai =3D tcgv_i64_arg(a); - vec_gen_2(INDEX_op_dup_vec, type, vece, ri, ai); - } else if (vece =3D=3D MO_64) { - TCGArg al =3D tcgv_i32_arg(TCGV_LOW(a)); - TCGArg ah =3D tcgv_i32_arg(TCGV_HIGH(a)); - vec_gen_3(INDEX_op_dup2_vec, type, MO_64, ri, al, ah); - } else { - TCGArg ai =3D tcgv_i32_arg(TCGV_LOW(a)); - vec_gen_2(INDEX_op_dup_vec, type, vece, ri, ai); - } + vec_gen_2(INDEX_op_dup_vec, type, vece, ri, ai); } =20 void tcg_gen_dup_i32_vec(unsigned vece, TCGv_vec r, TCGv_i32 a) diff --git a/tcg/tcg.c b/tcg/tcg.c index b6a65fe224..2b3bcbe750 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2493,8 +2493,6 @@ bool tcg_op_supported(TCGOpcode op, TCGType type, uns= igned flags) case INDEX_op_xor_vec: case INDEX_op_cmp_vec: return has_type; - case INDEX_op_dup2_vec: - return has_type && TCG_TARGET_REG_BITS =3D=3D 32; case INDEX_op_not_vec: return has_type && TCG_TARGET_HAS_not_vec; case INDEX_op_neg_vec: @@ -5888,93 +5886,6 @@ static void tcg_reg_alloc_op(TCGContext *s, const TC= GOp *op) } } =20 -static bool tcg_reg_alloc_dup2(TCGContext *s, const TCGOp *op) -{ - const TCGLifeData arg_life =3D op->life; - TCGTemp *ots, *itsl, *itsh; - TCGType vtype =3D TCGOP_TYPE(op); - - /* This opcode is only valid for 32-bit hosts, for 64-bit elements. */ - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 32); - tcg_debug_assert(TCGOP_VECE(op) =3D=3D MO_64); - - ots =3D arg_temp(op->args[0]); - itsl =3D arg_temp(op->args[1]); - itsh =3D arg_temp(op->args[2]); - - /* ENV should not be modified. */ - tcg_debug_assert(!temp_readonly(ots)); - - /* Allocate the output register now. */ - if (ots->val_type !=3D TEMP_VAL_REG) { - TCGRegSet allocated_regs =3D s->reserved_regs; - TCGRegSet dup_out_regs =3D opcode_args_ct(op)[0].regs; - TCGReg oreg; - - /* Make sure to not spill the input registers. */ - if (!IS_DEAD_ARG(1) && itsl->val_type =3D=3D TEMP_VAL_REG) { - tcg_regset_set_reg(allocated_regs, itsl->reg); - } - if (!IS_DEAD_ARG(2) && itsh->val_type =3D=3D TEMP_VAL_REG) { - tcg_regset_set_reg(allocated_regs, itsh->reg); - } - - oreg =3D tcg_reg_alloc(s, dup_out_regs, allocated_regs, - output_pref(op, 0), ots->indirect_base); - set_temp_val_reg(s, ots, oreg); - } - - /* Promote dup2 of immediates to dupi_vec. */ - if (itsl->val_type =3D=3D TEMP_VAL_CONST && itsh->val_type =3D=3D TEMP= _VAL_CONST) { - uint64_t val =3D deposit64(itsl->val, 32, 32, itsh->val); - MemOp vece =3D MO_64; - - if (val =3D=3D dup_const(MO_8, val)) { - vece =3D MO_8; - } else if (val =3D=3D dup_const(MO_16, val)) { - vece =3D MO_16; - } else if (val =3D=3D dup_const(MO_32, val)) { - vece =3D MO_32; - } - - tcg_out_dupi_vec(s, vtype, vece, ots->reg, val); - goto done; - } - - /* If the two inputs form one 64-bit value, try dupm_vec. */ - if (itsl->temp_subindex =3D=3D HOST_BIG_ENDIAN && - itsh->temp_subindex =3D=3D !HOST_BIG_ENDIAN && - itsl =3D=3D itsh + (HOST_BIG_ENDIAN ? 1 : -1)) { - TCGTemp *its =3D itsl - HOST_BIG_ENDIAN; - - temp_sync(s, its + 0, s->reserved_regs, 0, 0); - temp_sync(s, its + 1, s->reserved_regs, 0, 0); - - if (tcg_out_dupm_vec(s, vtype, MO_64, ots->reg, - its->mem_base->reg, its->mem_offset)) { - goto done; - } - } - - /* Fall back to generic expansion. */ - return false; - - done: - ots->mem_coherent =3D 0; - if (IS_DEAD_ARG(1)) { - temp_dead(s, itsl); - } - if (IS_DEAD_ARG(2)) { - temp_dead(s, itsh); - } - if (NEED_SYNC_ARG(0)) { - temp_sync(s, ots, s->reserved_regs, 0, IS_DEAD_ARG(0)); - } else if (IS_DEAD_ARG(0)) { - temp_dead(s, ots); - } - return true; -} - static void load_arg_reg(TCGContext *s, TCGReg reg, TCGTemp *ts, TCGRegSet allocated_regs) { @@ -6939,11 +6850,6 @@ int tcg_gen_code(TCGContext *s, TranslationBlock *tb= , uint64_t pc_start) case INDEX_op_mb: tcg_out_mb(s, op->args[0]); break; - case INDEX_op_dup2_vec: - if (tcg_reg_alloc_dup2(s, op)) { - break; - } - /* fall through */ default: do_default: /* Sanity check that we've not introduced any unhandled opcode= s. */ --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534650; cv=none; d=zohomail.com; s=zohoarc; b=MT+1a3iNwW6/0IneQV9nEjOChYpVCig4UMgY7Gw5aRBoj97GzJnQ5hT0HImKVMrrl9BB+lOxrFG2s1rRZyDEqlULuQpALxr2BQlvuKY4zuvvAO2VDXDuL8JoW2TJDjIz9CVk0J5JW5Sj5BkBEwkIqmOdmS7+cuJc10UvIeWWiu0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534650; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UXwXqWP+qbBtQcQ3awqxzmtTcS0rN/AzxMHqU1weZEg=; b=hYs7A3RYRDNBlTn5vA9rvbeFWL/ut8DRuxYlOW4JgPs5RA+7bspmltMcVybjzInwqWx4ZhcLAnSBzt83AzNrWqZiruQoNevtrvghkalKK6aPvRRg/PyWC+9fD+y+LV8BrOoiXE7fjk3M2m//dQ24oFzTDg6SDOI0uEcnfcm0COI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534650701839.3230798719824; Thu, 15 Jan 2026 19:37:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacF-0001Ep-Nf; Thu, 15 Jan 2026 22:35:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgacB-00010H-Of for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:11 -0500 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgac9-0006As-Nv for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:11 -0500 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-81f223c70d8so1344675b3a.1 for ; Thu, 15 Jan 2026 19:35:09 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534508; x=1769139308; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UXwXqWP+qbBtQcQ3awqxzmtTcS0rN/AzxMHqU1weZEg=; b=tG7JfE4ZOQOPNyGjcx0AQiCFvEX3ksmgsIXx4WJwvm2si9vE4vmFDyMK45PFEjWa8R dUeLey4GqH9ZQKUXNQlRn3dCxq7E0vFMJ37XMhyaC/ZEDV+oqL1/ZfV9ERwj0hrFE28V W8MOJy1lp5aIWvX902jPJDrDvdctFnUY6pF59ywesO2H4Ui6Prh12JrfblHXHXMjxzps T81pIQgBu85UvDALSXvgb1CAN2+TTpBBc+Ao0BidupkYdNm+MuAhZbYs1rRfPlPrEeCf 5ez0M6D1D09kLTmxn5aBBUZ9ldOmHA6NsvX7ImDLE4MMA+m/AcI0hgopHB+yuLc0AEUW aV8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534508; x=1769139308; 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; bh=UXwXqWP+qbBtQcQ3awqxzmtTcS0rN/AzxMHqU1weZEg=; b=a8IJ20r5hGUor4PZ9p13WRZ0Fv/OsOk1yUIRKi12wFMSSfGNL9Y3VvgGu6mDLiIi9W Vw3Et9BO03ATwBzP0T8FhMA+UFkCg7I8QVFrjpb1MY7kOnOCw8LbxkuMXmXiMt9eSCs3 YOC8PtHPmtR1Fjc1lW6lbS5EUadd5JyPQ6pugTBslU4n9J7pLtFlk1UJhF3MlyQHj5bo GlAy1BsqI4PO7/KJabrcF7iDfULvnJodT/L3QjnjHAL79IhAe+OYKoaEenhmkhtvoH/H lenqO37BNSSGCKqiKs8JaX3CpQw6Rq58o97MFMugif8vCRrY51dRIGhWT2l0PGmKJ+Sp 8o6A== X-Gm-Message-State: AOJu0YxOFijoS7coszPYSBoGUK9ELmyNY6Rcy+drlUa0scwFTpkSbNpG HQh+WOYGTAUAK9AeG0JpQhpbLrrM+ebz07gEE9W93Wif6+7Ambd0KvsctgNCqzNTNE5I1QVlVIT BJmiVANKPwQ== X-Gm-Gg: AY/fxX7pE68MD2Z4fpysWOu6d7vDFmbVq+V5OvV3EhxyA5dC2J05NEWek5MAJA6JMa8 6wI3TH0ur0WGR3+G9GKOl44K1rIrBZ08f+j9wYiYoPDeH6YTsSc3xzBDpregUdsDWVcgHexz7fi Geh9Nw0aH3pT3vAm03y+RRDHjJvcEkzzQt7ruLsGrCbnMV928+cc9oW8eQeB2b/sCqv1aIQBmsH jRznSusJ5CcqjGZrTAoDKFomM5bwqZaNKs9j7o0zBi/N5BjS3SuZtlHAqJey2bigFOPiwJ0p5Wq bXGG28IfDVrx82uPA/Q5QL3nsXvyFPt1mBKWhb5Z37hm12A4aL9RF3oWevM/YaKOm/tB4RAFr+y n1qjPAf1DiEllSFRC8+xEuzeoHlZyrSMsJfOi1UkKEym7N3TEBJgOBxI3ayIGL3CDuwUUdFy2bO ViroF7aKCK+yuNsTVi6Q== X-Received: by 2002:a05:6a00:9286:b0:81f:4708:b477 with SMTP id d2e1a72fcca58-81fa1883638mr1177533b3a.60.1768534508303; Thu, 15 Jan 2026 19:35:08 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 29/58] tcg/tci: Drop TCG_TARGET_REG_BITS tests Date: Fri, 16 Jan 2026 14:32:35 +1100 Message-ID: <20260116033305.51162-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534652019158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/tci/tcg-target-has.h | 2 -- tcg/tci.c | 50 ++------------------------------------- tcg/tci/tcg-target.c.inc | 51 ++++++---------------------------------- 3 files changed, 9 insertions(+), 94 deletions(-) diff --git a/tcg/tci/tcg-target-has.h b/tcg/tci/tcg-target-has.h index ab07ce1fcb..64742cf0b7 100644 --- a/tcg/tci/tcg-target-has.h +++ b/tcg/tci/tcg-target-has.h @@ -7,9 +7,7 @@ #ifndef TCG_TARGET_HAS_H #define TCG_TARGET_HAS_H =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 #define TCG_TARGET_HAS_extr_i64_i32 0 -#endif /* TCG_TARGET_REG_BITS =3D=3D 64 */ =20 #define TCG_TARGET_HAS_qemu_ldst_i128 0 =20 diff --git a/tcg/tci.c b/tcg/tci.c index 7f3ba9b5da..f71993c287 100644 --- a/tcg/tci.c +++ b/tcg/tci.c @@ -43,19 +43,6 @@ =20 __thread uintptr_t tci_tb_ptr; =20 -static void tci_write_reg64(tcg_target_ulong *regs, uint32_t high_index, - uint32_t low_index, uint64_t value) -{ - regs[low_index] =3D (uint32_t)value; - regs[high_index] =3D value >> 32; -} - -/* Create a 64 bit value from two 32 bit values. */ -static uint64_t tci_uint64(uint32_t high, uint32_t low) -{ - return ((uint64_t)high << 32) + low; -} - /* * Load sets of arguments all at once. The naming convention is: * tci_args_ @@ -352,7 +339,7 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchStat= e *env, TCGCond condition; uint8_t pos, len; uint32_t tmp32; - uint64_t tmp64, taddr; + uint64_t taddr; MemOpIdx oi; int32_t ofs; void *ptr; @@ -400,10 +387,6 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchSta= te *env, } break; case 2: /* uint64_t */ - /* - * For TCG_TARGET_REG_BITS =3D=3D 32, the register pair - * must stay in host memory order. - */ memcpy(®s[TCG_REG_R0], stack, 8); break; case 3: /* Int128 */ @@ -586,21 +569,11 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchSt= ate *env, break; case INDEX_op_muls2: tci_args_rrrr(insn, &r0, &r1, &r2, &r3); -#if TCG_TARGET_REG_BITS =3D=3D 32 - tmp64 =3D (int64_t)(int32_t)regs[r2] * (int32_t)regs[r3]; - tci_write_reg64(regs, r1, r0, tmp64); -#else muls64(®s[r0], ®s[r1], regs[r2], regs[r3]); -#endif break; case INDEX_op_mulu2: tci_args_rrrr(insn, &r0, &r1, &r2, &r3); -#if TCG_TARGET_REG_BITS =3D=3D 32 - tmp64 =3D (uint64_t)(uint32_t)regs[r2] * (uint32_t)regs[r3]; - tci_write_reg64(regs, r1, r0, tmp64); -#else mulu64(®s[r0], ®s[r1], regs[r2], regs[r3]); -#endif break; =20 /* Arithmetic operations (32 bit). */ @@ -690,7 +663,7 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchStat= e *env, tci_args_rr(insn, &r0, &r1); regs[r0] =3D bswap32(regs[r1]); break; -#if TCG_TARGET_REG_BITS =3D=3D 64 + /* Load/store operations (64 bit). */ =20 case INDEX_op_ld32u: @@ -758,7 +731,6 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchStat= e *env, tci_args_rr(insn, &r0, &r1); regs[r0] =3D bswap64(regs[r1]); break; -#endif /* TCG_TARGET_REG_BITS =3D=3D 64 */ =20 /* QEMU specific operations. */ =20 @@ -804,24 +776,6 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchSta= te *env, tci_qemu_st(env, taddr, regs[r0], oi, tb_ptr); break; =20 - case INDEX_op_qemu_ld2: - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 32); - tci_args_rrrr(insn, &r0, &r1, &r2, &r3); - taddr =3D regs[r2]; - oi =3D regs[r3]; - tmp64 =3D tci_qemu_ld(env, taddr, oi, tb_ptr); - tci_write_reg64(regs, r1, r0, tmp64); - break; - - case INDEX_op_qemu_st2: - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 32); - tci_args_rrrr(insn, &r0, &r1, &r2, &r3); - tmp64 =3D tci_uint64(regs[r1], regs[r0]); - taddr =3D regs[r2]; - oi =3D regs[r3]; - tci_qemu_st(env, taddr, tmp64, oi, tb_ptr); - break; - case INDEX_op_mb: /* Ensure ordering for all kinds */ smp_mb(); diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc index 8bd8db4401..1b22c70616 100644 --- a/tcg/tci/tcg-target.c.inc +++ b/tcg/tci/tcg-target.c.inc @@ -25,15 +25,9 @@ /* Used for function call generation. */ #define TCG_TARGET_CALL_STACK_OFFSET 0 #define TCG_TARGET_STACK_ALIGN 8 -#if TCG_TARGET_REG_BITS =3D=3D 32 -# define TCG_TARGET_CALL_ARG_I32 TCG_CALL_ARG_EVEN -# define TCG_TARGET_CALL_ARG_I64 TCG_CALL_ARG_EVEN -# define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_EVEN -#else -# define TCG_TARGET_CALL_ARG_I32 TCG_CALL_ARG_NORMAL -# define TCG_TARGET_CALL_ARG_I64 TCG_CALL_ARG_NORMAL -# define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_NORMAL -#endif +#define TCG_TARGET_CALL_ARG_I32 TCG_CALL_ARG_NORMAL +#define TCG_TARGET_CALL_ARG_I64 TCG_CALL_ARG_NORMAL +#define TCG_TARGET_CALL_ARG_I128 TCG_CALL_ARG_NORMAL #define TCG_TARGET_CALL_RET_I128 TCG_CALL_RET_NORMAL =20 static TCGConstraintSetIndex @@ -320,7 +314,7 @@ static void tcg_out_ld(TCGContext *s, TCGType type, TCG= Reg val, TCGReg base, { TCGOpcode op =3D INDEX_op_ld; =20 - if (TCG_TARGET_REG_BITS =3D=3D 64 && type =3D=3D TCG_TYPE_I32) { + if (type =3D=3D TCG_TYPE_I32) { op =3D INDEX_op_ld32u; } tcg_out_ldst(s, op, val, base, offset); @@ -337,11 +331,9 @@ static void tcg_out_movi(TCGContext *s, TCGType type, { switch (type) { case TCG_TYPE_I32: -#if TCG_TARGET_REG_BITS =3D=3D 64 arg =3D (int32_t)arg; /* fall through */ case TCG_TYPE_I64: -#endif break; default: g_assert_not_reached(); @@ -407,13 +399,11 @@ static void tcg_out_ext16u(TCGContext *s, TCGReg rd, = TCGReg rs) =20 static void tcg_out_ext32s(TCGContext *s, TCGReg rd, TCGReg rs) { - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64); tcg_out_sextract(s, TCG_TYPE_I64, rd, rs, 0, 32); } =20 static void tcg_out_ext32u(TCGContext *s, TCGReg rd, TCGReg rs) { - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64); tcg_out_extract(s, TCG_TYPE_I64, rd, rs, 0, 32); } =20 @@ -429,7 +419,6 @@ static void tcg_out_extu_i32_i64(TCGContext *s, TCGReg = rd, TCGReg rs) =20 static void tcg_out_extrl_i64_i32(TCGContext *s, TCGReg rd, TCGReg rs) { - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64); tcg_out_mov(s, TCG_TYPE_I32, rd, rs); } =20 @@ -654,7 +643,6 @@ static const TCGOutOpBinary outop_eqv =3D { .out_rrr =3D tgen_eqv, }; =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 static void tgen_extrh_i64_i32(TCGContext *s, TCGType t, TCGReg a0, TCGReg= a1) { tcg_out_extract(s, TCG_TYPE_I64, a0, a1, 32, 32); @@ -664,7 +652,6 @@ static const TCGOutOpUnary outop_extrh_i64_i32 =3D { .base.static_constraint =3D C_O1_I1(r, r), .out_rr =3D tgen_extrh_i64_i32, }; -#endif =20 static void tgen_mul(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) @@ -962,7 +949,6 @@ static const TCGOutOpBswap outop_bswap32 =3D { .out_rr =3D tgen_bswap32, }; =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 static void tgen_bswap64(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { tcg_out_op_rr(s, INDEX_op_bswap64, a0, a1); @@ -972,7 +958,6 @@ static const TCGOutOpUnary outop_bswap64 =3D { .base.static_constraint =3D C_O1_I1(r, r), .out_rr =3D tgen_bswap64, }; -#endif =20 static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { @@ -1101,7 +1086,6 @@ static const TCGOutOpLoad outop_ld16s =3D { .out =3D tgen_ld16s, }; =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 static void tgen_ld32u(TCGContext *s, TCGType type, TCGReg dest, TCGReg base, ptrdiff_t offset) { @@ -1123,7 +1107,6 @@ static const TCGOutOpLoad outop_ld32s =3D { .base.static_constraint =3D C_O1_I1(r, r), .out =3D tgen_ld32s, }; -#endif =20 static void tgen_st8(TCGContext *s, TCGType type, TCGReg data, TCGReg base, ptrdiff_t offset) @@ -1168,18 +1151,8 @@ static const TCGOutOpQemuLdSt outop_qemu_ld =3D { .out =3D tgen_qemu_ld, }; =20 -static void tgen_qemu_ld2(TCGContext *s, TCGType type, TCGReg datalo, - TCGReg datahi, TCGReg addr, MemOpIdx oi) -{ - tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_TMP, oi); - tcg_out_op_rrrr(s, INDEX_op_qemu_ld2, datalo, datahi, addr, TCG_REG_TM= P); -} - static const TCGOutOpQemuLdSt2 outop_qemu_ld2 =3D { - .base.static_constraint =3D - TCG_TARGET_REG_BITS =3D=3D 64 ? C_NotImplemented : C_O2_I1(r, r, r= ), - .out =3D - TCG_TARGET_REG_BITS =3D=3D 64 ? NULL : tgen_qemu_ld2, + .base.static_constraint =3D C_NotImplemented, }; =20 static void tgen_qemu_st(TCGContext *s, TCGType type, TCGReg data, @@ -1198,18 +1171,8 @@ static const TCGOutOpQemuLdSt outop_qemu_st =3D { .out =3D tgen_qemu_st, }; =20 -static void tgen_qemu_st2(TCGContext *s, TCGType type, TCGReg datalo, - TCGReg datahi, TCGReg addr, MemOpIdx oi) -{ - tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_TMP, oi); - tcg_out_op_rrrr(s, INDEX_op_qemu_st2, datalo, datahi, addr, TCG_REG_TM= P); -} - static const TCGOutOpQemuLdSt2 outop_qemu_st2 =3D { - .base.static_constraint =3D - TCG_TARGET_REG_BITS =3D=3D 64 ? C_NotImplemented : C_O0_I3(r, r, r= ), - .out =3D - TCG_TARGET_REG_BITS =3D=3D 64 ? NULL : tgen_qemu_st2, + .base.static_constraint =3D C_NotImplemented, }; =20 static void tcg_out_st(TCGContext *s, TCGType type, TCGReg val, TCGReg bas= e, @@ -1217,7 +1180,7 @@ static void tcg_out_st(TCGContext *s, TCGType type, T= CGReg val, TCGReg base, { TCGOpcode op =3D INDEX_op_st; =20 - if (TCG_TARGET_REG_BITS =3D=3D 64 && type =3D=3D TCG_TYPE_I32) { + if (type =3D=3D TCG_TYPE_I32) { op =3D INDEX_op_st32; } tcg_out_ldst(s, op, val, base, offset); --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534590; cv=none; d=zohomail.com; s=zohoarc; b=exq2Wq/k4BBs/3tyD0K8/l2zJE8WGBY+DD/12JFPBeHKnxDIOhyaDgsj3A+dpQS5xvVsbQSxjAy633WqmAMFNQRAoU/0/pVgNYfYzWV0ZIFkNSab3gGrkr9Dq/w1hLDNJaimT8NZwiSOc46Kp2RmwfNWenVYT8aOgcDbYrjpgtQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534590; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=E3quorIoavgbRlUqCdA1N/hSlFNVi1G5ba+Ci7qX808=; b=Evl29VRCyJPd/MWaR3ElVLDdZJ71Iq90j41rHx0wtijR+dyPVHLfRO3S+jxmkRj/M2ROfknIDg81bm/jRj1OJw1RmXw7JJtBdA5K3brp1mCfRTI80Uond4UiaE6I4oDW0apClN6bH07f+hDeuX9pBKi2jg2vGlDkQSnZ5CYHaXM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534590787221.30337289820022; Thu, 15 Jan 2026 19:36:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacH-0001Ko-IR; Thu, 15 Jan 2026 22:35:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgacF-0001E0-6v for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:15 -0500 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgacD-0006Cf-Hk for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:14 -0500 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-81f4e136481so759607b3a.3 for ; Thu, 15 Jan 2026 19:35:13 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534512; x=1769139312; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=E3quorIoavgbRlUqCdA1N/hSlFNVi1G5ba+Ci7qX808=; b=pfyU9a21JgUnqLfct2YKiqnaK/0y23xZSXgQMM6jrPW2rMA7QjPqLwvhzfAlITqYRh nOnn33BWLhQzLji3oTkVZIMtzTWErbJaDy7XJSaplR3qpI0QUQxlg8wfaFKPPBJcv1+x wObn9wmAqlTyC2TW+CloilYdr1Pxw+jcPUgOvFEj14TaZ6dhMSo+lf0hCCrrrAj02QL8 lQr9FX70DmmlbSqEY0UDYqJbJ0FHyYyacE3euG7zVWvshXQWbxhQs7Te9wOL1eQ4+Tvq bLZR8rZvhkXhany/CkcRCRmOtwlcTNbgOC4aFFnIVe481+IgUL7ZW2Q2Qh0WH33Gfm6e Jdsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534512; x=1769139312; 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; bh=E3quorIoavgbRlUqCdA1N/hSlFNVi1G5ba+Ci7qX808=; b=xLRbT5H6+ramZbmL+YdB5KjytyBvVjNlbbDWYmMSz9GmvM/HMYIrHshPtjPEcq3ByJ 6Mr1MFQijwxKgbhvrN4APLyyZ7ntlaGcCbrE8llOV0EeFa6sygh7t9+0QjCRJF6TYJWz 2UB/uqLOP1pmwzmIz13hkHvnrhyj6A2M0gSDLjkb8zw44epnP5R5QG62e/n/C3vHOFSu b3bxVYAu3eLRjrqolu5ri0jsTcZtbMqE3WWDnsRh42IZFnmL8gT31OXmiFCQnu7uOBcE GL/wdA0QX6FWKA0Q3aYGhyFOXk+uWmnU+g8M3UwrXhXaBxSw8ByjT7YZK7ouavYQCvlF HCvQ== X-Gm-Message-State: AOJu0Yy/9qmNn5YXkbUo/07iLp1ceXsMKmqVH0rJunaJh4Id4VMVt56w XoV+B91LpmNv7R33GnV99dv6/Se2MsiLdDo2pEJz/z1Dkv9L59KOwOrNoyC5NGjYxvGPm9dDwPj NU9b/ggnC7Q== X-Gm-Gg: AY/fxX6b9Lz16oa+bqhJ7bUq0yyKJPBLz2sxdCO3BDF9XLXuwvWP1cgMuksA9eqqPle TMLyjpC7SJYPJyQnOgxcripHg4TlP+zIdNzKKm5/WU6Vtlpm1h/dn3gOcp5pTGrrQuhBPfsoiol FXLxjMgGl3DBuDq1lcBq6FQid4WTkK7WR6ZDp9nUlCAvidP9gTA4EEMSgoWfjge2at4lbrZXliC br6WXguS5sS5o8lZBZMxpwi3Hnb/SgGLfm/tUmYfIbmpuQDyxOtQkm6yWdSTMgsEgrpsr29fweK ln/f5vkF02LP6pWVQ+L41L/gwU1ZoEwm3oAsRQXXxzaJN12EgZ8VscJnDvZilQyZtrH5gFzpEfs z1WLlIqJpgBHnSJ4pi3+I1F59YJVUzNmxPp3GuzIeppy1T68ouCtqcvwSKChqJorUypzYusrbCP +oOxJ7EjS/oV1b6KlqTw== X-Received: by 2002:a05:6a00:3e0e:b0:81f:40e5:34c1 with SMTP id d2e1a72fcca58-81fa18820f8mr1177177b3a.64.1768534512078; Thu, 15 Jan 2026 19:35:12 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 30/58] tcg/tci: Remove glue TCG_TARGET_REG_BITS renames Date: Fri, 16 Jan 2026 14:32:36 +1100 Message-ID: <20260116033305.51162-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534591641158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/tci.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/tcg/tci.c b/tcg/tci.c index f71993c287..29ecb39929 100644 --- a/tcg/tci.c +++ b/tcg/tci.c @@ -26,11 +26,6 @@ #include =20 =20 -#define ctpop_tr glue(ctpop, TCG_TARGET_REG_BITS) -#define deposit_tr glue(deposit, TCG_TARGET_REG_BITS) -#define extract_tr glue(extract, TCG_TARGET_REG_BITS) -#define sextract_tr glue(sextract, TCG_TARGET_REG_BITS) - /* * Enable TCI assertions only when debugging TCG (and without NDEBUG defin= ed). * Without assertions, the interpreter runs much faster. @@ -525,7 +520,7 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchStat= e *env, break; case INDEX_op_ctpop: tci_args_rr(insn, &r0, &r1); - regs[r0] =3D ctpop_tr(regs[r1]); + regs[r0] =3D ctpop64(regs[r1]); break; case INDEX_op_addco: tci_args_rrr(insn, &r0, &r1, &r2); @@ -639,15 +634,15 @@ uintptr_t QEMU_DISABLE_CFI tcg_qemu_tb_exec(CPUArchSt= ate *env, break; case INDEX_op_deposit: tci_args_rrrbb(insn, &r0, &r1, &r2, &pos, &len); - regs[r0] =3D deposit_tr(regs[r1], pos, len, regs[r2]); + regs[r0] =3D deposit64(regs[r1], pos, len, regs[r2]); break; case INDEX_op_extract: tci_args_rrbb(insn, &r0, &r1, &pos, &len); - regs[r0] =3D extract_tr(regs[r1], pos, len); + regs[r0] =3D extract64(regs[r1], pos, len); break; case INDEX_op_sextract: tci_args_rrbb(insn, &r0, &r1, &pos, &len); - regs[r0] =3D sextract_tr(regs[r1], pos, len); + regs[r0] =3D sextract64(regs[r1], pos, len); break; case INDEX_op_brcond: tci_args_rl(insn, tb_ptr, &r0, &ptr); --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534662; cv=none; d=zohomail.com; s=zohoarc; b=JpfFQUYudDfLOdD2oKetjZM0eP8rizY5SRm3TRmZSSvzimqVf7OEC5ctXkCLs4KD/kDw52afcQGJMpMZ2DRHgfe64yemt9Mba4X6vdDzAaPbyGMn87+kFIbWHvcsQILPpGJlrTlK/4Dxt+Q4Qe4eP6wTblVtCTBhoWXSJ0QJipA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534662; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rGBrEuQ4ySeYQyQaMh9vioeyRGMPOCdt+8viJgwwXN0=; b=mMi+6SEjW3MucSE7TRYF0/yxaCUhB76Yn7N19/SRIyWjXdAWISZpvztiMVbqN3KdLH0Cud2pzoof4bO+7ItnT/yh8jrsgB5aoRGMN7pZN3sCci3LvjlR+SjL+G1z5uhyZzf+rYzojhjzlgP8MZcDs3hRRSbGMP0US5OeqY0svRU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534662566309.5807398228992; Thu, 15 Jan 2026 19:37:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacK-0001S1-KJ; Thu, 15 Jan 2026 22:35:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgacI-0001OF-Jn for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:18 -0500 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgacH-0006EB-1A for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:18 -0500 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-81f478e5283so1397737b3a.2 for ; Thu, 15 Jan 2026 19:35:16 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534516; x=1769139316; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rGBrEuQ4ySeYQyQaMh9vioeyRGMPOCdt+8viJgwwXN0=; b=A7WtctokLym5FwhdMzbnZXHgkTlVX2iEldYrXiNQ3zLz7SqgmdOIjBnILa5EHD+oKX gfcI671aIl0S9sR+FtlnSq+ioDbLCITEC0oUSTckdU1tO8DjZ1RxB//ZlI4OFsThUbte DUwj+/Q4sKqONKg86BwOmOoXdn5ZLyLREZA0qypB6rt+8dyVMXt2LGBialR+o8oKkiHW p3lm2HArrS/I7X1U9Id9wS4JYbflKQlQVfv4lz1jnSo/E/Kv+W+Aqr9LaOi+96ldXtmG gRiz/5LGfM/b20Gpap4ZPCtxcjTQPQmp3UTcxvyi37FoVlWC3QeOmRQtlViNOU5+I86p jzIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534516; x=1769139316; 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; bh=rGBrEuQ4ySeYQyQaMh9vioeyRGMPOCdt+8viJgwwXN0=; b=ZtoLdhqQzMAkBv9SH3ztE1aA1B5k1S95I3VY8XzA3dHqCPrhc9jvCalLvPL0C3pi0U 44EcGks6eWvs0fyGwgt3StLaDiyOSGbTjZqM1jpeC0dSqhENJijkQe8sqx2l5fXY+iCU wnIJ/jaSD6JHdw66013vUtuXBeZqdQVvusWJpbKUL8puensMrqcYbzuFE1WxtZB4OoEP ZkwobP5NuLFbMoW8MzU1NyiDVio9G4++u1y/BZiofQhBJpVN+isvLEQXKDzTwz5IMOQB J56esnfzT78df+FWWqqKvc3UXbLk0+fmoIBRwO0ST3XoeTVVFCty/NXvtqt5KRyCKDt+ GT4w== X-Gm-Message-State: AOJu0Yyi6vkgvfrRKcZRc7+IzhA4CpApy0tkDx2OBPWFwjgSqh8YzYYQ 9SvN4BOMn1IPBo8MHqytD0F0jJ6ZGUwaHx/KN/N27x0E7P+sKK02RVO7lFpHO/6J70T01nwyWiV 05kZAfikVhA== X-Gm-Gg: AY/fxX7UnUWa0Haj8x8O86rmiGBbYSMwlN6s+wPMOuL7I/2FJUqKzN56UjMdXbPJqTU hRWd/yAKGc0qSCeZhcN3+CapT1Z/RFMNqpbLGraMB6++9G8aSzZsu66T/6naofOQcFp/iHAllJm 0wG4h+qfOT22QBaTzrmEdGVk1s90yeEQW6j1h4qr18krwA+uMZ57fusN9sif/8xiBYHueXdZOlq KxpvrtiFGIpXEMuZ5wD3IpdNHGLqUgl1fhxkrkgg0IaaixlC+J9TKKn9+1pBwskH6/oQ/vyZ+cX UyGVEWzuNGJb1W+mwKxJCC6+jJQ6MEhH4nPjc4VhrL7oWgjlCBmyJ4megaY1jyZVlC0MCVsQFqj RA7Q6YbAfRndHyA4b4/FsaICBFOtbaT1EiGmOhfatNbHkTdZX/Bb3wDWv3c4ZHYf7k/xguc+J// pTxrCDeSaEykmK+p0e+QRl2QWzL9pt X-Received: by 2002:a05:6a00:4517:b0:81e:8e66:38eb with SMTP id d2e1a72fcca58-81fa03cd847mr1536188b3a.63.1768534515617; Thu, 15 Jan 2026 19:35:15 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 31/58] tcg: Drop TCG_TARGET_REG_BITS test in region.c Date: Fri, 16 Jan 2026 14:32:37 +1100 Message-ID: <20260116033305.51162-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534663920158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/region.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/tcg/region.c b/tcg/region.c index 2181267e48..5d4be1453b 100644 --- a/tcg/region.c +++ b/tcg/region.c @@ -464,17 +464,6 @@ static size_t tcg_n_regions(size_t tb_size, unsigned m= ax_threads) */ #define MIN_CODE_GEN_BUFFER_SIZE (1 * MiB) =20 -#if TCG_TARGET_REG_BITS =3D=3D 32 -#define DEFAULT_CODE_GEN_BUFFER_SIZE_1 (32 * MiB) -#ifdef CONFIG_USER_ONLY -/* - * For user mode on smaller 32 bit systems we may run into trouble - * allocating big chunks of data in the right place. On these systems - * we utilise a static code generation buffer directly in the binary. - */ -#define USE_STATIC_CODE_GEN_BUFFER -#endif -#else /* TCG_TARGET_REG_BITS =3D=3D 64 */ #ifdef CONFIG_USER_ONLY /* * As user-mode emulation typically means running multiple instances @@ -490,7 +479,6 @@ static size_t tcg_n_regions(size_t tb_size, unsigned ma= x_threads) */ #define DEFAULT_CODE_GEN_BUFFER_SIZE_1 (1 * GiB) #endif -#endif =20 #define DEFAULT_CODE_GEN_BUFFER_SIZE \ (DEFAULT_CODE_GEN_BUFFER_SIZE_1 < MAX_CODE_GEN_BUFFER_SIZE \ --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534552; cv=none; d=zohomail.com; s=zohoarc; b=SxqXQoApjoMltCJ/vCfP09M/rrK/br5F6IdRfB6aTQoLK9Wbswiw3xLgafVymhFRc3LUDUH/B/1v/Kj4ty5OTNYF6PXgwn2d74+DezOUY5vVL3ScqEWYFwFbwtmTDUnIfbg1c8jglNK7oGFQmJ+Ngz2fOofB+36E+FtqaB57nMY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534552; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/I60gyIokTIrbunC9gly6yzJgKVfoNKqDR47yyL6wsE=; b=XljueUqfdk1SfXQKfdtV1nfN+aCimvzyuHLph1u1xwaAtr6jD7HcOvlIHXcZdYiZwTkaBOp6MMJX6jjiYHspdk7W/uE9uPji+Yz1AzHyENiY4IPPdOIXglsMAk6Vnk1q6pge46scXFPk0E8Vv+23ae0kEqqhaPWND/7Zx3YCsXM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534552443282.5150378889622; Thu, 15 Jan 2026 19:35:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacQ-0001n0-KG; Thu, 15 Jan 2026 22:35:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgacP-0001fw-97 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:25 -0500 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgacL-0006GM-Av for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:24 -0500 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-34c718c5481so753759a91.3 for ; Thu, 15 Jan 2026 19:35:20 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534520; x=1769139320; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/I60gyIokTIrbunC9gly6yzJgKVfoNKqDR47yyL6wsE=; b=YaEnnrQAZbEkWjtxHyrPWar3ieEMZCbf4GqGuHC9TySJOZMDFbdq8Y0SiopzWw7lwp YOBu23NK+dXL4tNS852j9Pjhz0/XCt+WLv+/MANSxkbNzl98iLHklX32AcA+KitzejyI qrxoh/gdrICyyIY5Y4DZ0akrZqCuo1TNzgiUZ6Z/kKT5ddFjrIDsj7RrnR/Rn4SsbAa7 CBqb3dK2Qx+1Ab3KEAVZeaqYXPrA0/okC9dVaHD2lpxIvXK9xHzsuMM5xE92tfCKTOSa CXoX9I9StuvpOmwD3RVE4QHqkTnrtiLf2ky/NeUlhag5smrJxw4/ssR3Ag/C35I3vQIf NpGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534520; x=1769139320; 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; bh=/I60gyIokTIrbunC9gly6yzJgKVfoNKqDR47yyL6wsE=; b=FttgWICsyFX0GnWESfmo2W8NN9VzxSkBT7cdII9YEKyrCnqZtf+JoFL165KW5+8OLc 9HVyE9R4RNo94H9OL74LUuR/nt8IWuVJizanNY4ruyUxNiYNX6m9JvTLP77A8GAHDCzd 1/tykQP3SlmftaeUGuCJrr+KigDh00wvZGzCAO+sGxXVbnzQ+BqvzeFMLBCTfolHogpB m8ipXWyFB1Os2I6lbEtreKkkyp58dVr5Aho4GJNj//o3fMFufPl6bcvonz++zD2vMQg0 1ktPQkEYHrKr8aq+XLprB1ugdIrxpEnmR0JYaMD4gdsbEeaUpsj/PfxX3yB5bGq4Otma 7fww== X-Gm-Message-State: AOJu0YxupwEIHJ0Pt38hkYW0LMcG2Esg9uxUSd10iRxHDgK5T/4QZW1l MoSo6gutUUC5JBxT/wiQCgXa9qegyb0dbrChN+1wTczHQcB9IEoX4yUl2ZUAPECzU/mQw/OmpWp w4FBR2jD6Ng== X-Gm-Gg: AY/fxX5U/7G9CUXjTlUUm5o4J7J2A60HO3vou0r8ccHbVrLULn/1nLnd+04QnOy5WwK 7AfBoDDfZNFOadqnL6Cp79IwF4MMvgqmvTfO+eGlgQ7u9f9FCGh2wRZh1unEM4F/XKQSfD0XqhV 3ImEfyNSlsBLc9fV6/tai4T5WhXmJJtau3108GZUZWTfHVwdS6rAJ29D1KLfbqJ45w920J6ADPb 2VwHayAzqDpdUU2IKayGVAYm8MUnFT2RuM33KcXGu9vz1fjhApPt/ssYpo+IWAoN4I7cXx78Gm/ j1fKkNI8T83jLzL6QBDFOmH4ZOWA4FmtA/8JLfSA5HRQQV0QwGrwSTcsnxNh+5ZXdj6oZGhg1YD 8QTGbbLMsUCWFm9yGKbSn8ye2vd49g6w97AHJZiDr0QqjdRzcWuA/9XZIOK+TlAoFuHsPXbN9Fl edWMygmJg1Bbo/tRTZ0UIOYq4G/oIa X-Received: by 2002:a17:90b:58cf:b0:349:162d:ae1e with SMTP id 98e67ed59e1d1-3527327df4fmr1354959a91.33.1768534519498; Thu, 15 Jan 2026 19:35:19 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 32/58] tcg: Drop TCG_TARGET_REG_BITS tests in tcg-op.c Date: Fri, 16 Jan 2026 14:32:38 +1100 Message-ID: <20260116033305.51162-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534553616158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 686 +++++++-------------------------------------------- 1 file changed, 90 insertions(+), 596 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index d20888dd8f..8d67acc4fc 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1154,7 +1154,7 @@ void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv= _i32 arg1, TCGv_i32 arg2) tcg_gen_op3_i32(INDEX_op_muluh, rh, arg1, arg2); tcg_gen_mov_i32(rl, t); tcg_temp_free_i32(t); - } else if (TCG_TARGET_REG_BITS =3D=3D 64) { + } 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); @@ -1163,8 +1163,6 @@ void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv= _i32 arg1, TCGv_i32 arg2) tcg_gen_extr_i64_i32(rl, rh, t0); tcg_temp_free_i64(t0); tcg_temp_free_i64(t1); - } else { - g_assert_not_reached(); } } =20 @@ -1178,24 +1176,6 @@ void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TCG= v_i32 arg1, TCGv_i32 arg2) tcg_gen_op3_i32(INDEX_op_mulsh, rh, arg1, arg2); tcg_gen_mov_i32(rl, t); tcg_temp_free_i32(t); - } else if (TCG_TARGET_REG_BITS =3D=3D 32) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t2 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t3 =3D tcg_temp_ebb_new_i32(); - tcg_gen_mulu2_i32(t0, t1, arg1, arg2); - /* Adjust for negative inputs. */ - tcg_gen_sari_i32(t2, arg1, 31); - tcg_gen_sari_i32(t3, arg2, 31); - tcg_gen_and_i32(t2, t2, arg2); - tcg_gen_and_i32(t3, t3, arg1); - tcg_gen_sub_i32(rh, t1, t2); - tcg_gen_sub_i32(rh, rh, t3); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t2); - tcg_temp_free_i32(t3); } else { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); @@ -1210,29 +1190,14 @@ void tcg_gen_muls2_i32(TCGv_i32 rl, TCGv_i32 rh, TC= Gv_i32 arg1, TCGv_i32 arg2) =20 void tcg_gen_mulsu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 arg1, TCGv_i32 = arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t2 =3D tcg_temp_ebb_new_i32(); - tcg_gen_mulu2_i32(t0, t1, arg1, arg2); - /* Adjust for negative input for the signed arg1. */ - tcg_gen_sari_i32(t2, arg1, 31); - tcg_gen_and_i32(t2, t2, arg2); - tcg_gen_sub_i32(rh, t1, t2); - tcg_gen_mov_i32(rl, t0); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - tcg_temp_free_i32(t2); - } 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_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); - } + 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_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); } =20 void tcg_gen_ext8s_i32(TCGv_i32 ret, TCGv_i32 arg) @@ -1414,263 +1379,119 @@ void tcg_gen_st_i32(TCGv_i32 arg1, TCGv_ptr arg2,= tcg_target_long offset) =20 void tcg_gen_discard_i64(TCGv_i64 arg) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op1_i64(INDEX_op_discard, TCG_TYPE_I64, arg); - } else { - tcg_gen_discard_i32(TCGV_LOW(arg)); - tcg_gen_discard_i32(TCGV_HIGH(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=3D arg) { - return; - } - if (TCG_TARGET_REG_BITS =3D=3D 64) { + if (ret !=3D arg) { tcg_gen_op2_i64(INDEX_op_mov, ret, arg); - } else { - TCGTemp *ts =3D tcgv_i64_temp(arg); - - /* Canonicalize TCGv_i64 TEMP_CONST into TCGv_i32 TEMP_CONST. */ - if (ts->kind =3D=3D TEMP_CONST) { - tcg_gen_movi_i64(ret, ts->val); - } else { - tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg)); - tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg)); - } } } =20 void tcg_gen_movi_i64(TCGv_i64 ret, int64_t arg) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_mov_i64(ret, tcg_constant_i64(arg)); - } else { - tcg_gen_movi_i32(TCGV_LOW(ret), arg); - tcg_gen_movi_i32(TCGV_HIGH(ret), arg >> 32); - } + tcg_gen_mov_i64(ret, tcg_constant_i64(arg)); } =20 void tcg_gen_ld8u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_ld8u, ret, arg2, offset); - } else { - tcg_gen_ld8u_i32(TCGV_LOW(ret), arg2, offset); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } + 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) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_ld8s, ret, arg2, offset); - } else { - tcg_gen_ld8s_i32(TCGV_LOW(ret), arg2, offset); - tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); - } + tcg_gen_ldst_op_i64(INDEX_op_ld8s, ret, arg2, offset); } =20 void tcg_gen_ld16u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_ld16u, ret, arg2, offset); - } else { - tcg_gen_ld16u_i32(TCGV_LOW(ret), arg2, offset); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } + 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) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_ld16s, ret, arg2, offset); - } else { - tcg_gen_ld16s_i32(TCGV_LOW(ret), arg2, offset); - tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); - } + tcg_gen_ldst_op_i64(INDEX_op_ld16s, ret, arg2, offset); } =20 void tcg_gen_ld32u_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_ld32u, ret, arg2, offset); - } else { - tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } + tcg_gen_ldst_op_i64(INDEX_op_ld32u, ret, arg2, offset); } =20 void tcg_gen_ld32s_i64(TCGv_i64 ret, TCGv_ptr arg2, tcg_target_long offset) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_ld32s, ret, arg2, offset); - } else { - tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset); - tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); - } + 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) { - /* - * For 32-bit host, since arg2 and ret have different types, - * they cannot be the same temporary -- no chance of overlap. - */ - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_ld, ret, arg2, offset); - } else if (HOST_BIG_ENDIAN) { - tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset); - tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset + 4); - } else { - tcg_gen_ld_i32(TCGV_LOW(ret), arg2, offset); - tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset + 4); - } + tcg_gen_ldst_op_i64(INDEX_op_ld, ret, arg2, offset); } =20 void tcg_gen_st8_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_st8, arg1, arg2, offset); - } else { - tcg_gen_st8_i32(TCGV_LOW(arg1), arg2, offset); - } + tcg_gen_ldst_op_i64(INDEX_op_st8, arg1, arg2, offset); } =20 void tcg_gen_st16_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_st16, arg1, arg2, offset); - } else { - tcg_gen_st16_i32(TCGV_LOW(arg1), arg2, offset); - } + tcg_gen_ldst_op_i64(INDEX_op_st16, arg1, arg2, offset); } =20 void tcg_gen_st32_i64(TCGv_i64 arg1, TCGv_ptr arg2, tcg_target_long offset) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_st32, arg1, arg2, offset); - } else { - tcg_gen_st_i32(TCGV_LOW(arg1), arg2, 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) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_ldst_op_i64(INDEX_op_st, arg1, arg2, offset); - } else if (HOST_BIG_ENDIAN) { - tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset); - tcg_gen_st_i32(TCGV_LOW(arg1), arg2, offset + 4); - } else { - tcg_gen_st_i32(TCGV_LOW(arg1), arg2, offset); - tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset + 4); - } + 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) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op3_i64(INDEX_op_add, ret, arg1, arg2); - } else { - tcg_gen_add2_i32(TCGV_LOW(ret), TCGV_HIGH(ret), TCGV_LOW(arg1), - TCGV_HIGH(arg1), TCGV_LOW(arg2), TCGV_HIGH(arg2)); - } + tcg_gen_op3_i64(INDEX_op_add, ret, arg1, arg2); } =20 void tcg_gen_sub_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op3_i64(INDEX_op_sub, ret, arg1, arg2); - } else { - tcg_gen_sub2_i32(TCGV_LOW(ret), TCGV_HIGH(ret), TCGV_LOW(arg1), - TCGV_HIGH(arg1), TCGV_LOW(arg2), TCGV_HIGH(arg2)); - } + tcg_gen_op3_i64(INDEX_op_sub, ret, arg1, arg2); } =20 void tcg_gen_and_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op3_i64(INDEX_op_and, ret, arg1, arg2); - } else { - tcg_gen_and_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); - tcg_gen_and_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); - } + tcg_gen_op3_i64(INDEX_op_and, ret, arg1, arg2); } =20 void tcg_gen_or_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op3_i64(INDEX_op_or, ret, arg1, arg2); - } else { - tcg_gen_or_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); - tcg_gen_or_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); - } + tcg_gen_op3_i64(INDEX_op_or, ret, arg1, arg2); } =20 void tcg_gen_xor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op3_i64(INDEX_op_xor, ret, arg1, arg2); - } else { - tcg_gen_xor_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); - tcg_gen_xor_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); - } + tcg_gen_op3_i64(INDEX_op_xor, ret, arg1, arg2); } =20 void tcg_gen_shl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op3_i64(INDEX_op_shl, ret, arg1, arg2); - } else { - gen_helper_shl_i64(ret, arg1, arg2); - } + tcg_gen_op3_i64(INDEX_op_shl, ret, arg1, arg2); } =20 void tcg_gen_shr_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op3_i64(INDEX_op_shr, ret, arg1, arg2); - } else { - gen_helper_shr_i64(ret, arg1, arg2); - } + tcg_gen_op3_i64(INDEX_op_shr, ret, arg1, arg2); } =20 void tcg_gen_sar_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op3_i64(INDEX_op_sar, ret, arg1, arg2); - } else { - gen_helper_sar_i64(ret, arg1, arg2); - } + tcg_gen_op3_i64(INDEX_op_sar, ret, arg1, arg2); } =20 void tcg_gen_mul_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - TCGv_i64 t0; - TCGv_i32 t1; - - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op3_i64(INDEX_op_mul, ret, arg1, arg2); - return; - } - - - t0 =3D tcg_temp_ebb_new_i64(); - t1 =3D tcg_temp_ebb_new_i32(); - - tcg_gen_mulu2_i32(TCGV_LOW(t0), TCGV_HIGH(t0), - TCGV_LOW(arg1), TCGV_LOW(arg2)); - - tcg_gen_mul_i32(t1, TCGV_LOW(arg1), TCGV_HIGH(arg2)); - tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1); - tcg_gen_mul_i32(t1, TCGV_HIGH(arg1), TCGV_LOW(arg2)); - tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1); - - tcg_gen_mov_i64(ret, t0); - tcg_temp_free_i64(t0); - tcg_temp_free_i32(t1); + 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) @@ -1678,12 +1499,8 @@ void tcg_gen_addi_i64(TCGv_i64 ret, TCGv_i64 arg1, i= nt64_t arg2) /* some cases can be optimized here */ if (arg2 =3D=3D 0) { tcg_gen_mov_i64(ret, arg1); - } else if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_add_i64(ret, arg1, tcg_constant_i64(arg2)); } else { - tcg_gen_add2_i32(TCGV_LOW(ret), TCGV_HIGH(ret), - TCGV_LOW(arg1), TCGV_HIGH(arg1), - tcg_constant_i32(arg2), tcg_constant_i32(arg2 >> = 32)); + tcg_gen_add_i64(ret, arg1, tcg_constant_i64(arg2)); } } =20 @@ -1691,12 +1508,8 @@ void tcg_gen_subfi_i64(TCGv_i64 ret, int64_t arg1, T= CGv_i64 arg2) { if (arg1 =3D=3D 0) { tcg_gen_neg_i64(ret, arg2); - } else if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_sub_i64(ret, tcg_constant_i64(arg1), arg2); } else { - tcg_gen_sub2_i32(TCGV_LOW(ret), TCGV_HIGH(ret), - tcg_constant_i32(arg1), tcg_constant_i32(arg1 >> = 32), - TCGV_LOW(arg2), TCGV_HIGH(arg2)); + tcg_gen_sub_i64(ret, tcg_constant_i64(arg1), arg2); } } =20 @@ -1707,23 +1520,11 @@ void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, = int64_t arg2) =20 void tcg_gen_neg_i64(TCGv_i64 ret, TCGv_i64 arg) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_gen_op2_i64(INDEX_op_neg, ret, arg); - } else { - TCGv_i32 zero =3D tcg_constant_i32(0); - tcg_gen_sub2_i32(TCGV_LOW(ret), TCGV_HIGH(ret), - zero, zero, TCGV_LOW(arg), TCGV_HIGH(arg)); - } + tcg_gen_op2_i64(INDEX_op_neg, ret, arg); } =20 void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_andi_i32(TCGV_LOW(ret), TCGV_LOW(arg1), arg2); - tcg_gen_andi_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); - return; - } - /* Some cases can be optimized here. */ switch (arg2) { case 0: @@ -1754,11 +1555,6 @@ void tcg_gen_andi_i64(TCGv_i64 ret, TCGv_i64 arg1, i= nt64_t arg2) =20 void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_ori_i32(TCGV_LOW(ret), TCGV_LOW(arg1), arg2); - tcg_gen_ori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); - return; - } /* Some cases can be optimized here. */ if (arg2 =3D=3D -1) { tcg_gen_movi_i64(ret, -1); @@ -1771,11 +1567,6 @@ void tcg_gen_ori_i64(TCGv_i64 ret, TCGv_i64 arg1, in= t64_t arg2) =20 void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_xori_i32(TCGV_LOW(ret), TCGV_LOW(arg1), arg2); - tcg_gen_xori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32); - return; - } /* Some cases can be optimized here. */ if (arg2 =3D=3D 0) { tcg_gen_mov_i64(ret, arg1); @@ -1788,48 +1579,10 @@ void tcg_gen_xori_i64(TCGv_i64 ret, TCGv_i64 arg1, = int64_t arg2) } } =20 -static inline void tcg_gen_shifti_i64(TCGv_i64 ret, TCGv_i64 arg1, - unsigned c, bool right, bool arith) -{ - tcg_debug_assert(c < 64); - if (c =3D=3D 0) { - tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg1)); - tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1)); - } else if (c >=3D 32) { - c -=3D 32; - if (right) { - if (arith) { - tcg_gen_sari_i32(TCGV_LOW(ret), TCGV_HIGH(arg1), c); - tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), 31); - } else { - tcg_gen_shri_i32(TCGV_LOW(ret), TCGV_HIGH(arg1), c); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } - } else { - tcg_gen_shli_i32(TCGV_HIGH(ret), TCGV_LOW(arg1), c); - tcg_gen_movi_i32(TCGV_LOW(ret), 0); - } - } else if (right) { - tcg_gen_extract2_i32(TCGV_LOW(ret), TCGV_LOW(arg1), - TCGV_HIGH(arg1), c); - if (arith) { - tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), c); - } else { - tcg_gen_shri_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), c); - } - } else { - tcg_gen_extract2_i32(TCGV_HIGH(ret), TCGV_LOW(arg1), - TCGV_HIGH(arg1), 32 - c); - tcg_gen_shli_i32(TCGV_LOW(ret), TCGV_LOW(arg1), c); - } -} - void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_shifti_i64(ret, arg1, arg2, 0, 0); - } else if (arg2 =3D=3D 0) { + if (arg2 =3D=3D 0) { tcg_gen_mov_i64(ret, arg1); } else { tcg_gen_shl_i64(ret, arg1, tcg_constant_i64(arg2)); @@ -1839,9 +1592,7 @@ void tcg_gen_shli_i64(TCGv_i64 ret, TCGv_i64 arg1, in= t64_t arg2) void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_shifti_i64(ret, arg1, arg2, 1, 0); - } else if (arg2 =3D=3D 0) { + if (arg2 =3D=3D 0) { tcg_gen_mov_i64(ret, arg1); } else { tcg_gen_shr_i64(ret, arg1, tcg_constant_i64(arg2)); @@ -1851,9 +1602,7 @@ void tcg_gen_shri_i64(TCGv_i64 ret, TCGv_i64 arg1, in= t64_t arg2) void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) { tcg_debug_assert(arg2 >=3D 0 && arg2 < 64); - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_shifti_i64(ret, arg1, arg2, 1, 1); - } else if (arg2 =3D=3D 0) { + if (arg2 =3D=3D 0) { tcg_gen_mov_i64(ret, arg1); } else { tcg_gen_sar_i64(ret, arg1, tcg_constant_i64(arg2)); @@ -2034,14 +1783,7 @@ void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg,= int flags) /* Only one extension flag may be present. */ tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_bswap16_i32(TCGV_LOW(ret), TCGV_LOW(arg), flags); - if (flags & TCG_BSWAP_OS) { - tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); - } else { - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } - } else if (tcg_op_supported(INDEX_op_bswap16, TCG_TYPE_I64, 0)) { + 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(); @@ -2084,14 +1826,7 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg,= int flags) /* Only one extension flag may be present. */ tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_bswap32_i32(TCGV_LOW(ret), TCGV_LOW(arg)); - if (flags & TCG_BSWAP_OS) { - tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); - } else { - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } - } else if (tcg_op_supported(INDEX_op_bswap32, TCG_TYPE_I64, 0)) { + if (tcg_op_supported(INDEX_op_bswap32, TCG_TYPE_I64, 0)) { tcg_gen_op3i_i64(INDEX_op_bswap32, ret, arg, flags); } else { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); @@ -2127,18 +1862,7 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg,= int flags) */ void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - TCGv_i32 t0, t1; - t0 =3D tcg_temp_ebb_new_i32(); - t1 =3D tcg_temp_ebb_new_i32(); - - tcg_gen_bswap32_i32(t0, TCGV_LOW(arg)); - tcg_gen_bswap32_i32(t1, TCGV_HIGH(arg)); - tcg_gen_mov_i32(TCGV_LOW(ret), t1); - tcg_gen_mov_i32(TCGV_HIGH(ret), t0); - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); - } else if (tcg_op_supported(INDEX_op_bswap64, TCG_TYPE_I64, 0)) { + if (tcg_op_supported(INDEX_op_bswap64, TCG_TYPE_I64, 0)) { tcg_gen_op3i_i64(INDEX_op_bswap64, ret, arg, 0); } else { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); @@ -2207,10 +1931,7 @@ void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg) =20 void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_not_i32(TCGV_LOW(ret), TCGV_LOW(arg)); - tcg_gen_not_i32(TCGV_HIGH(ret), TCGV_HIGH(arg)); - } else if (tcg_op_supported(INDEX_op_not, TCG_TYPE_I64, 0)) { + 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); @@ -2219,10 +1940,7 @@ void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg) =20 void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_andc_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); - tcg_gen_andc_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); - } else if (tcg_op_supported(INDEX_op_andc, TCG_TYPE_I64, 0)) { + 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(); @@ -2234,10 +1952,7 @@ void tcg_gen_andc_i64(TCGv_i64 ret, TCGv_i64 arg1, T= CGv_i64 arg2) =20 void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_eqv_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); - tcg_gen_eqv_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); - } else if (tcg_op_supported(INDEX_op_eqv, TCG_TYPE_I64, 0)) { + 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); @@ -2247,10 +1962,7 @@ void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) =20 void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_nand_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); - tcg_gen_nand_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); - } else if (tcg_op_supported(INDEX_op_nand, TCG_TYPE_I64, 0)) { + 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); @@ -2260,10 +1972,7 @@ void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, T= CGv_i64 arg2) =20 void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_nor_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); - tcg_gen_nor_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); - } else if (tcg_op_supported(INDEX_op_nor, TCG_TYPE_I64, 0)) { + 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); @@ -2273,10 +1982,7 @@ void tcg_gen_nor_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) =20 void tcg_gen_orc_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_orc_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2)); - tcg_gen_orc_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2)); - } else if (tcg_op_supported(INDEX_op_orc, TCG_TYPE_I64, 0)) { + 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(); @@ -2297,18 +2003,7 @@ void tcg_gen_clz_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) =20 void tcg_gen_clzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32 - && arg2 <=3D 0xffffffffu - && tcg_op_supported(INDEX_op_clz, TCG_TYPE_I32, 0)) { - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - tcg_gen_clzi_i32(t, TCGV_LOW(arg1), arg2 - 32); - tcg_gen_addi_i32(t, t, 32); - tcg_gen_clz_i32(TCGV_LOW(ret), TCGV_HIGH(arg1), t); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - tcg_temp_free_i32(t); - } else { - tcg_gen_clz_i64(ret, arg1, tcg_constant_i64(arg2)); - } + tcg_gen_clz_i64(ret, arg1, tcg_constant_i64(arg2)); } =20 void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) @@ -2342,18 +2037,9 @@ void tcg_gen_ctz_i64(TCGv_i64 ret, TCGv_i64 arg1, TC= Gv_i64 arg2) =20 void tcg_gen_ctzi_i64(TCGv_i64 ret, TCGv_i64 arg1, uint64_t arg2) { - if (TCG_TARGET_REG_BITS =3D=3D 32 - && arg2 <=3D 0xffffffffu - && tcg_op_supported(INDEX_op_ctz, TCG_TYPE_I32, 0)) { - TCGv_i32 t32 =3D tcg_temp_ebb_new_i32(); - tcg_gen_ctzi_i32(t32, TCGV_HIGH(arg1), arg2 - 32); - tcg_gen_addi_i32(t32, t32, 32); - tcg_gen_ctz_i32(TCGV_LOW(ret), TCGV_LOW(arg1), t32); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - tcg_temp_free_i32(t32); - } else 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)) { + 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); @@ -2381,21 +2067,11 @@ 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_TARGET_REG_BITS =3D=3D 64) { - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { - tcg_gen_op2_i64(INDEX_op_ctpop, ret, arg1); - return; - } + if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I64, 0)) { + tcg_gen_op2_i64(INDEX_op_ctpop, ret, arg1); } else { - if (tcg_op_supported(INDEX_op_ctpop, TCG_TYPE_I32, 0)) { - tcg_gen_ctpop_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1)); - tcg_gen_ctpop_i32(TCGV_LOW(ret), TCGV_LOW(arg1)); - tcg_gen_add_i32(TCGV_LOW(ret), TCGV_LOW(ret), TCGV_HIGH(ret)); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - return; - } + gen_helper_ctpop_i64(ret, arg1); } - gen_helper_ctpop_i64(ret, arg1); } =20 void tcg_gen_rotl_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2) @@ -2485,24 +2161,9 @@ void tcg_gen_deposit_i64(TCGv_i64 ret, TCGv_i64 arg1= , TCGv_i64 arg2, return; } =20 - if (TCG_TARGET_REG_BITS =3D=3D 64) { - if (TCG_TARGET_deposit_valid(TCG_TYPE_I64, ofs, len)) { - tcg_gen_op5ii_i64(INDEX_op_deposit, ret, arg1, arg2, ofs, len); - return; - } - } else { - if (ofs >=3D 32) { - tcg_gen_deposit_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), - TCGV_LOW(arg2), ofs - 32, len); - tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg1)); - return; - } - if (ofs + len <=3D 32) { - tcg_gen_deposit_i32(TCGV_LOW(ret), TCGV_LOW(arg1), - TCGV_LOW(arg2), ofs, len); - tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1)); - return; - } + if (TCG_TARGET_deposit_valid(TCG_TYPE_I64, ofs, len)) { + tcg_gen_op5ii_i64(INDEX_op_deposit, ret, arg1, arg2, ofs, len); + return; } =20 t1 =3D tcg_temp_ebb_new_i64(); @@ -2545,24 +2206,10 @@ void tcg_gen_deposit_z_i64(TCGv_i64 ret, TCGv_i64 a= rg, tcg_gen_shli_i64(ret, arg, ofs); } else if (ofs =3D=3D 0) { tcg_gen_andi_i64(ret, arg, (1ull << len) - 1); - } else if (TCG_TARGET_REG_BITS =3D=3D 64 && - TCG_TARGET_deposit_valid(TCG_TYPE_I64, ofs, len)) { + } else if (TCG_TARGET_deposit_valid(TCG_TYPE_I64, ofs, len)) { TCGv_i64 zero =3D tcg_constant_i64(0); tcg_gen_op5ii_i64(INDEX_op_deposit, ret, zero, arg, ofs, len); } else { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - if (ofs >=3D 32) { - tcg_gen_deposit_z_i32(TCGV_HIGH(ret), TCGV_LOW(arg), - ofs - 32, len); - tcg_gen_movi_i32(TCGV_LOW(ret), 0); - return; - } - if (ofs + len <=3D 32) { - tcg_gen_deposit_z_i32(TCGV_LOW(ret), TCGV_LOW(arg), ofs, l= en); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - return; - } - } /* * To help two-operand hosts we prefer to zero-extend first, * which allows ARG to stay live. @@ -2597,32 +2244,6 @@ void tcg_gen_extract_i64(TCGv_i64 ret, TCGv_i64 arg, return; } =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - /* Look for a 32-bit extract within one of the two words. */ - if (ofs >=3D 32) { - tcg_gen_extract_i32(TCGV_LOW(ret), TCGV_HIGH(arg), ofs - 32, l= en); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - return; - } - if (ofs + len <=3D 32) { - tcg_gen_extract_i32(TCGV_LOW(ret), TCGV_LOW(arg), ofs, len); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - return; - } - - /* The field is split across two words. */ - tcg_gen_extract2_i32(TCGV_LOW(ret), TCGV_LOW(arg), - TCGV_HIGH(arg), ofs); - if (len <=3D 32) { - tcg_gen_extract_i32(TCGV_LOW(ret), TCGV_LOW(ret), 0, len); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } else { - tcg_gen_extract_i32(TCGV_HIGH(ret), TCGV_HIGH(arg), - ofs, len - 32); - } - return; - } - if (TCG_TARGET_extract_valid(TCG_TYPE_I64, ofs, len)) { tcg_gen_op4ii_i64(INDEX_op_extract, ret, arg, ofs, len); return; @@ -2668,38 +2289,6 @@ void tcg_gen_sextract_i64(TCGv_i64 ret, TCGv_i64 arg, return; } =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - /* Look for a 32-bit extract within one of the two words. */ - if (ofs >=3D 32) { - tcg_gen_sextract_i32(TCGV_LOW(ret), TCGV_HIGH(arg), ofs - 32, = len); - } else if (ofs + len <=3D 32) { - tcg_gen_sextract_i32(TCGV_LOW(ret), TCGV_LOW(arg), ofs, len); - } else if (ofs =3D=3D 0) { - tcg_gen_mov_i32(TCGV_LOW(ret), TCGV_LOW(arg)); - tcg_gen_sextract_i32(TCGV_HIGH(ret), TCGV_HIGH(arg), 0, len - = 32); - return; - } else if (len > 32) { - TCGv_i32 t =3D tcg_temp_ebb_new_i32(); - /* Extract the bits for the high word normally. */ - tcg_gen_sextract_i32(t, TCGV_HIGH(arg), ofs + 32, len - 32); - /* Shift the field down for the low part. */ - tcg_gen_shri_i64(ret, arg, ofs); - /* Overwrite the shift into the high part. */ - tcg_gen_mov_i32(TCGV_HIGH(ret), t); - tcg_temp_free_i32(t); - return; - } else { - /* Shift the field down for the low part, such that the - field sits at the MSB. */ - tcg_gen_shri_i64(ret, arg, ofs + len - 32); - /* Shift the field down from the MSB, sign extending. */ - tcg_gen_sari_i32(TCGV_LOW(ret), TCGV_LOW(ret), 32 - len); - } - /* Sign-extend the field from 32 bits. */ - tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); - return; - } - if (TCG_TARGET_sextract_valid(TCG_TYPE_I64, ofs, len)) { tcg_gen_op4ii_i64(INDEX_op_sextract, ret, arg, ofs, len); return; @@ -2763,20 +2352,8 @@ void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv= _i64 al, if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_REG, 0)) { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_op3_i32(INDEX_op_addco, TCGV_LOW(t0), - TCGV_LOW(al), TCGV_LOW(bl)); - tcg_gen_op3_i32(INDEX_op_addcio, TCGV_HIGH(t0), - TCGV_HIGH(al), TCGV_HIGH(bl)); - tcg_gen_op3_i32(INDEX_op_addcio, TCGV_LOW(rh), - TCGV_LOW(ah), TCGV_LOW(bh)); - tcg_gen_op3_i32(INDEX_op_addci, TCGV_HIGH(rh), - TCGV_HIGH(ah), TCGV_HIGH(bh)); - } else { - tcg_gen_op3_i64(INDEX_op_addco, t0, al, bl); - tcg_gen_op3_i64(INDEX_op_addci, rh, ah, bh); - } - + 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 { @@ -2795,68 +2372,27 @@ void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCG= v_i64 al, void tcg_gen_addcio_i64(TCGv_i64 r, TCGv_i64 co, TCGv_i64 a, TCGv_i64 b, TCGv_i64 ci) { - if (TCG_TARGET_REG_BITS =3D=3D 64) { - 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); + 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); =20 - 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); - } + 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 { - if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_I32, 0)) { - TCGv_i32 discard =3D tcg_temp_ebb_new_i32(); - TCGv_i32 zero =3D tcg_constant_i32(0); - TCGv_i32 mone =3D tcg_constant_i32(-1); + TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); + TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); =20 - tcg_gen_op3_i32(INDEX_op_addco, discard, TCGV_LOW(ci), mone); - tcg_gen_op3_i32(INDEX_op_addcio, discard, TCGV_HIGH(ci), mone); - tcg_gen_op3_i32(INDEX_op_addcio, TCGV_LOW(r), - TCGV_LOW(a), TCGV_LOW(b)); - tcg_gen_op3_i32(INDEX_op_addcio, TCGV_HIGH(r), - TCGV_HIGH(a), TCGV_HIGH(b)); - tcg_gen_op3_i32(INDEX_op_addci, TCGV_LOW(co), zero, zero); - tcg_temp_free_i32(discard); - } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 c0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 c1 =3D tcg_temp_ebb_new_i32(); + 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); =20 - tcg_gen_or_i32(c1, TCGV_LOW(ci), TCGV_HIGH(ci)); - tcg_gen_setcondi_i32(TCG_COND_NE, c1, c1, 0); - - tcg_gen_add_i32(t0, TCGV_LOW(a), TCGV_LOW(b)); - tcg_gen_setcond_i32(TCG_COND_LTU, c0, t0, TCGV_LOW(a)); - tcg_gen_add_i32(TCGV_LOW(r), t0, c1); - tcg_gen_setcond_i32(TCG_COND_LTU, c1, TCGV_LOW(r), c1); - tcg_gen_or_i32(c1, c1, c0); - - tcg_gen_add_i32(t0, TCGV_HIGH(a), TCGV_HIGH(b)); - tcg_gen_setcond_i32(TCG_COND_LTU, c0, t0, TCGV_HIGH(a)); - tcg_gen_add_i32(TCGV_HIGH(r), t0, c1); - tcg_gen_setcond_i32(TCG_COND_LTU, c1, TCGV_HIGH(r), c1); - tcg_gen_or_i32(TCGV_LOW(co), c0, c1); - - tcg_temp_free_i32(t0); - tcg_temp_free_i32(c0); - tcg_temp_free_i32(c1); - } - tcg_gen_movi_i32(TCGV_HIGH(co), 0); + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); } } =20 @@ -2866,20 +2402,8 @@ void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv= _i64 al, if (tcg_op_supported(INDEX_op_subbi, TCG_TYPE_REG, 0)) { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_op3_i32(INDEX_op_subbo, TCGV_LOW(t0), - TCGV_LOW(al), TCGV_LOW(bl)); - tcg_gen_op3_i32(INDEX_op_subbio, TCGV_HIGH(t0), - TCGV_HIGH(al), TCGV_HIGH(bl)); - tcg_gen_op3_i32(INDEX_op_subbio, TCGV_LOW(rh), - TCGV_LOW(ah), TCGV_LOW(bh)); - tcg_gen_op3_i32(INDEX_op_subbi, TCGV_HIGH(rh), - TCGV_HIGH(ah), TCGV_HIGH(bh)); - } else { - tcg_gen_op3_i64(INDEX_op_subbo, t0, al, bl); - tcg_gen_op3_i64(INDEX_op_subbi, rh, ah, bh); - } - + 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 { @@ -3002,57 +2526,32 @@ void tcg_gen_abs_i64(TCGv_i64 ret, TCGv_i64 a) =20 void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_mov_i32(ret, TCGV_LOW(arg)); - } else { - tcg_gen_op2(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, - tcgv_i32_arg(ret), tcgv_i64_arg(arg)); - } + tcg_gen_op2(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, + tcgv_i32_arg(ret), tcgv_i64_arg(arg)); } =20 void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_mov_i32(ret, TCGV_HIGH(arg)); - } else { - tcg_gen_op2(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, - tcgv_i32_arg(ret), tcgv_i64_arg(arg)); - } + tcg_gen_op2(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, + tcgv_i32_arg(ret), tcgv_i64_arg(arg)); } =20 void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_mov_i32(TCGV_LOW(ret), arg); - tcg_gen_movi_i32(TCGV_HIGH(ret), 0); - } else { - tcg_gen_op2(INDEX_op_extu_i32_i64, TCG_TYPE_I64, - tcgv_i64_arg(ret), tcgv_i32_arg(arg)); - } + tcg_gen_op2(INDEX_op_extu_i32_i64, TCG_TYPE_I64, + tcgv_i64_arg(ret), tcgv_i32_arg(arg)); } =20 void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_mov_i32(TCGV_LOW(ret), arg); - tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_LOW(ret), 31); - } else { - tcg_gen_op2(INDEX_op_ext_i32_i64, TCG_TYPE_I64, - tcgv_i64_arg(ret), tcgv_i32_arg(arg)); - } + tcg_gen_op2(INDEX_op_ext_i32_i64, TCG_TYPE_I64, + tcgv_i64_arg(ret), tcgv_i32_arg(arg)); } =20 void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 low, TCGv_i32 high) { - TCGv_i64 tmp; + TCGv_i64 tmp =3D tcg_temp_ebb_new_i64(); =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_mov_i32(TCGV_LOW(dest), low); - tcg_gen_mov_i32(TCGV_HIGH(dest), high); - return; - } - - tmp =3D tcg_temp_ebb_new_i64(); /* These extensions are only needed for type correctness. We may be able to do better given target specific information. */ tcg_gen_extu_i32_i64(tmp, high); @@ -3070,13 +2569,8 @@ void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 = low, TCGv_i32 high) =20 void tcg_gen_extr_i64_i32(TCGv_i32 lo, TCGv_i32 hi, TCGv_i64 arg) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_mov_i32(lo, TCGV_LOW(arg)); - tcg_gen_mov_i32(hi, TCGV_HIGH(arg)); - } else { - tcg_gen_extrl_i64_i32(lo, arg); - tcg_gen_extrh_i64_i32(hi, arg); - } + tcg_gen_extrl_i64_i32(lo, arg); + tcg_gen_extrh_i64_i32(hi, arg); } =20 void tcg_gen_extr32_i64(TCGv_i64 lo, TCGv_i64 hi, TCGv_i64 arg) --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534610; cv=none; d=zohomail.com; s=zohoarc; b=nZqCMvSiarQrrdgS78MrMkXtRLAFnV9W9Lhq7HTNQy4ZrebbYvw3f/dnqcJfF2fm4bB2eV0/A3U6UWrg+ajbIhkD+kvLr/QM2oFubxVk1GRYmVRBlvLClDLStIMwyGYWMyjZlYdsyBTmJvY14UU3S5pWIUv+Skh/wJ284TeKR0s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534610; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qmAp6PNa9duSslOM86Ejx4hWWn+4Ohddq0ga5kua76c=; b=dmgqPJmJExoy1HaewZCoDdMZ2euKdmlLp1xEavxxUtpOuN9u75sfBCNoda2FMKehnR9vzErZydAVcuraZoOUHBxOCAnMbLJDdSV9idhQb1Km/o/ra6024GZRBT8GvBCsyjHC4AliUT+m1AqLboMtJHPMQOi1zHcw/KuXXrHIZA4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534610899266.6485884271923; Thu, 15 Jan 2026 19:36:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacS-0001wh-9l; Thu, 15 Jan 2026 22:35:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgacQ-0001n2-Iy for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:26 -0500 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgacO-0006Hu-IF for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:26 -0500 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-81c72659e6bso1387890b3a.0 for ; Thu, 15 Jan 2026 19:35:24 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534523; x=1769139323; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qmAp6PNa9duSslOM86Ejx4hWWn+4Ohddq0ga5kua76c=; b=TpW9ztJO/solssyoyb+xjMzSRnAeaY6jo/mkr30wB/IanhvmpEQMQ/QpJxpWwRjNAZ /Pr0iNpzY1BQI7tmbJlgYV8o+MiiKls25u9C7WKjyk3nFMEUaW8/8zYRhRZLJxFq4ijf la5NAzGZr1zW9sHreU3RfsYA7MG/xYemyIwIW4f04812I3hYYlCPx5HAp75pBiE/qg+V oMydXHzpknRPsMHkgxI4Xp59iZYM9w5uStdXx7JbKbRatwobo8WMQ9pmO4YzEFmV/PWR 4ySFQZd7+JnTDAbORe7wEenTNCFyR1tV/THcoSCcy4pv5KkSFyYf/l7+pSG2bDNKTj5s Ywvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534523; x=1769139323; 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; bh=qmAp6PNa9duSslOM86Ejx4hWWn+4Ohddq0ga5kua76c=; b=ucKzcixNhnsvf8PhK+bTwARaLuE4VMe/v+28cIvOD/mPVtOzL/uKI3wOP7krarfWyZ WO0K6ftp5h3dsOybVikl9UIEYxtM9pnWd4VSfEIqiumwCMS6k0poKmZsYGBSek4AgIuJ 1x/IusR0uycojWsm6kISXxoIe1IrmRaVYAZ+Aka81WtY0FV6p6h42TXabYcpyFQs4/4k KdTVHkh/8d6c7JySEWWtWhqeqKhDXU3Y+a2TWk11jfV6ZQPQA9RfdKvhqT56VxxfF4uC qjmQSVpntztNMe6M865zniBJxAbnc/YfdDq9Fd5iE0yGvM8vLU7kuaDU8RpBzwDDC9/D zS6g== X-Gm-Message-State: AOJu0YwLCDGGrCiO5QocYiS0ErQmVMYGzbODIDEkgq3//+DpQjJ1I1i+ WyLrxRqpHUYI9SXcUrSs5yJ+A5P6LMS45Xip8UNtbtCVgGdcvDkVJfgzftHrWMoh8XaBBL2/g6j 7KV4dhgNNtw== X-Gm-Gg: AY/fxX6RmnI4UhszfNj1nXZijskAeG7dEFUxCqIVbGOZtJFnBOcS1rfpvEqsO3C5Kzl rtgy6cUKj/mU4pBsgrxZLmHyq3L+vmDkv0wgSQ4duV0XHbjbGfB9mSW17ToGtPDIZRpEbS79HUd yzDOYPof+ZDYaE2RrWAS0tKLODqOT0XwPjBsoLygGW834NxBpxkpv0LBxkjmYL5sElWAI40FcOW p9NHJFvS7KZuOiYVRbsSX8tuEMizA5blq7JH1YiD8EJB4SM0uBtobhotsy9LpyUio9fur36C/8e MOsz4nwsL5cFgpLi93LVr/df/yyzwliTXE2JdL4Ki2FN5FME50Ph+WlYZ9aRHwxJFzxoHaUHgQO EgeHYOI7owd69ohKfckmu0UQ6gRHUlfv5ev4Zp/Va8GYUEDpb80uIz1r1d4IhUECt00M+rtPejG XAsEwJGgIhGtsZ+i642Q/DZuKQwKXk X-Received: by 2002:a05:6a00:4c94:b0:81f:4dfe:dddc with SMTP id d2e1a72fcca58-81f9f7f65edmr1622709b3a.13.1768534523143; Thu, 15 Jan 2026 19:35:23 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 33/58] tcg: Drop TCG_TARGET_REG_BITS tests in tcg-op-gvec.c Date: Fri, 16 Jan 2026 14:32:39 +1100 Message-ID: <20260116033305.51162-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534611783158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/tcg-op-gvec.c | 49 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 2cfc7e9409..bc323e2500 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -586,12 +586,11 @@ static void do_dup(unsigned vece, TCGv_ptr dbase, uin= t32_t dofs, } } =20 - /* Implement inline with a vector type, if possible. - * Prefer integer when 64-bit host and no variable dup. + /* + * Implement inline with a vector type, if possible; + * prefer_i64 with 64-bit variable dup. */ - type =3D choose_vector_type(NULL, vece, oprsz, - (TCG_TARGET_REG_BITS =3D=3D 64 && in_32 =3D= =3D NULL - && (in_64 =3D=3D NULL || vece =3D=3D MO_64)= )); + type =3D choose_vector_type(NULL, vece, oprsz, vece =3D=3D MO_64 && in= _64); if (type !=3D 0) { TCGv_vec t_vec =3D tcg_temp_new_vec(type); =20 @@ -612,11 +611,11 @@ static void do_dup(unsigned vece, TCGv_ptr dbase, uin= t32_t dofs, t_32 =3D NULL; =20 if (in_32) { - /* We are given a 32-bit variable input. For a 64-bit host, - use a 64-bit operation unless the 32-bit operation would - be simple enough. */ - if (TCG_TARGET_REG_BITS =3D=3D 64 - && (vece !=3D MO_32 || !check_size_impl(oprsz, 4))) { + /* + * We are given a 32-bit variable input. Use a 64-bit operati= on + * unless the 32-bit operation would be simple enough. + */ + if (vece !=3D MO_32 || !check_size_impl(oprsz, 4)) { t_64 =3D tcg_temp_ebb_new_i64(); tcg_gen_extu_i32_i64(t_64, in_32); tcg_gen_dup_i64(vece, t_64, t_64); @@ -629,14 +628,16 @@ static void do_dup(unsigned vece, TCGv_ptr dbase, uin= t32_t dofs, t_64 =3D tcg_temp_ebb_new_i64(); tcg_gen_dup_i64(vece, t_64, in_64); } else { - /* We are given a constant input. */ - /* For 64-bit hosts, use 64-bit constants for "simple" constan= ts - or when we'd need too many 32-bit stores, or when a 64-bit - constant is really required. */ + /* + * We are given a constant input. + * Use 64-bit constants for "simple" constants or when we'd + * need too many 32-bit stores, or when a 64-bit constant + * is really required. + */ if (vece =3D=3D MO_64 - || (TCG_TARGET_REG_BITS =3D=3D 64 - && (in_c =3D=3D 0 || in_c =3D=3D -1 - || !check_size_impl(oprsz, 4)))) { + || in_c =3D=3D 0 + || in_c =3D=3D -1 + || !check_size_impl(oprsz, 4)) { t_64 =3D tcg_constant_i64(in_c); } else { t_32 =3D tcg_constant_i32(in_c); @@ -3872,12 +3873,11 @@ void tcg_gen_gvec_cmp(TCGCond cond, unsigned vece, = uint32_t dofs, } =20 /* - * Implement inline with a vector type, if possible. - * Prefer integer when 64-bit host and 64-bit comparison. + * Implement inline with a vector type, if possible; + * prefer_i64 for a 64-bit comparison. */ hold_list =3D tcg_swap_vecop_list(cmp_list); - type =3D choose_vector_type(cmp_list, vece, oprsz, - TCG_TARGET_REG_BITS =3D=3D 64 && vece =3D=3D= MO_64); + type =3D choose_vector_type(cmp_list, vece, oprsz, vece =3D=3D MO_64); switch (type) { case TCG_TYPE_V256: /* Recall that ARM SVE allows vector sizes that are not a @@ -3992,11 +3992,10 @@ void tcg_gen_gvec_cmps(TCGCond cond, unsigned vece,= uint32_t dofs, } =20 /* - * Implement inline with a vector type, if possible. - * Prefer integer when 64-bit host and 64-bit comparison. + * Implement inline with a vector type, if possible; + * prefer_i64 for a 64-bit comparison. */ - type =3D choose_vector_type(cmp_list, vece, oprsz, - TCG_TARGET_REG_BITS =3D=3D 64 && vece =3D=3D= MO_64); + type =3D choose_vector_type(cmp_list, vece, oprsz, vece =3D=3D MO_64); if (type !=3D 0) { const TCGOpcode *hold_list =3D tcg_swap_vecop_list(cmp_list); TCGv_vec t_vec =3D tcg_temp_new_vec(type); --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534632; cv=none; d=zohomail.com; s=zohoarc; b=HDdY3oLf0y8IwrRJeh3fgPbmDcP0qbEQy9Yd8Q9T3YgxtNsLnfg9GkFTHEZcInaWbqqpl6Fx2o0dWj0+8UIhGmdBC8go5tHPxDnt4h/FxSq4hjlXIKc/JCz2R9JNKEd1amkK1V0SAJ0r1iB3D85oCdzf7TxSmjhT6jHmxFeUNyw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534632; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ecDzOzqQ/C38Xzf0BO7uae6DhF/wcxQYsp2ETvYgWSM=; b=Vq9eo1H6oBfwadWWuQxn3nCg4p4cKXknu5p7e2MzoPTSNEiikSLScjdJu21yypirRIgwMeOI12jz7PEnlvrnPxr8CEoHynnQSC/86++194csNXwHZ+u5DSp4veRmuSvG+j2KHo7SapSSSsgTLD6f8+q8K5PNPEj8ImwCnQlpf90= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534632019513.0221978888205; Thu, 15 Jan 2026 19:37:12 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacW-0002Jn-CN; Thu, 15 Jan 2026 22:35:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgacU-00028r-9n for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:30 -0500 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgacS-0006Ji-63 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:30 -0500 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-81c72659e6bso1387940b3a.0 for ; Thu, 15 Jan 2026 19:35:27 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534527; x=1769139327; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ecDzOzqQ/C38Xzf0BO7uae6DhF/wcxQYsp2ETvYgWSM=; b=pT0plUXBfORFAPueD2OrPSQV+phps/aQSOtJTC2O6d0/F187PDFcO4tklEyEVmf1JS wRtaWfyHC1AsHQvYo878GI0ulma7n0cBKUb1XWi0bLwgM3J8APQXD/KjykcxDGw0K6rb RoAoxzUdf8m819R8v9dTukB/JZcgeJKVXft5W+aOIQwXyTnXGxqSyuErJfwRrTrH2hHq xWBPk7XG17tsBg8XXV/lAlnwqUBOPn2VMkPs3hua7bzQ9fnTCfa38rutZKiSBe2fVBZs NesRc6H9uNiS11oqBtQxvO+rzML3S5HghGvDN6qmx0hvnPLymjenPeMBwpj8Y1NTPYWw uxYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534527; x=1769139327; 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; bh=ecDzOzqQ/C38Xzf0BO7uae6DhF/wcxQYsp2ETvYgWSM=; b=SlI3AooK+SBArCTklPj1XnimrL8t+BKC5GQe8KSNCG+JdGIGaB8cDcFJ42z+6QLrEl kYoJfLkQHVRPThdTUTaD5DlQecjeAuLI02e3wRwKY5TKn/yvtwmz7v5oeyHfxxDwpXhK XlmUtHKEK2M5CIpQiQeRzOpf9GDoADfMLPgeQKMoDAnCUYr9H8+yLY203evHnZ3zJvx6 V+4CMTRaLBTX2XUFWSEMRyduN4rOH+gP8CX8mE74iGY5dh6th4GwEra8YPvTW/OS17dq X4cD/VZiwsIrvSWpPg+aBCFI2A+mqxv6a4Ji8sk+/Mhvrw7UCJMVEjtAlKMWhBhR8FNs zgSQ== X-Gm-Message-State: AOJu0Yw/Qk9V62XkfxwMRB7b8g/prj90tESx3/oTRZHyOVC1bNl2wgkO 0QhXKhq6stQnWZTwRVZ3d6P+r905F/fRXTPUJ3J/LH1S1sQXxQcsYGHXHicXmTj1343dV/bZN3r jepnY/3WOQg== X-Gm-Gg: AY/fxX78oeq94KvL9i4UXNWPsZ/6grTrrnB0S5f6uMUsLLIbr9HEftB0jNZvsfothVw n9BrfAMkmug+FMAIsWLwJflhR96tYV/U3PTcb8FvvSX3lElst0h+Sk/d7DYIqcuvZNqR/F1Qppo kLc8VLPW4GQEgHJhBo02bnxrZpKERtD82LxVZzOjcEhBxjjKn+fdMpM/4CUWo+Baxme79Xy8avZ /fIm7bEiw++sBWXjemvNHNaXQ48l9sF3RH2RaWpmpIlMmkf+wO9tfzh1ccObB662CqqxIQQ4Efk 53VAVyPQpU96rhktW/oXcs6ZT620XG/7L21jKStqFxeCVJSdeXCNPslHG2vJ6fUklVQn/8siLtl 5UfOoZdxlih4pgj/dlj5ZQK9rpPXrnRLVuEIzB5fll9iACAKa8f+zrTOPob9V6e2+u1scadCCnw 4Rdm0QegPNSLY7a/76kA== X-Received: by 2002:a05:6a00:2883:b0:81f:5fea:c556 with SMTP id d2e1a72fcca58-81f9f7faaa6mr1801746b3a.6.1768534526735; Thu, 15 Jan 2026 19:35:26 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 34/58] tcg: Drop TCG_TARGET_REG_BITS tests in tcg-op-ldst.c Date: Fri, 16 Jan 2026 14:32:40 +1100 Message-ID: <20260116033305.51162-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534633800158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/tcg-op-ldst.c | 113 +++++++++++----------------------------------- 1 file changed, 27 insertions(+), 86 deletions(-) diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index 7716c3ad7c..55bfbf3a20 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -106,24 +106,12 @@ static void gen_ldst2(TCGOpcode opc, TCGType type, TC= GTemp *vl, TCGTemp *vh, =20 static void gen_ld_i64(TCGv_i64 v, TCGTemp *addr, MemOpIdx oi) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - gen_ldst2(INDEX_op_qemu_ld2, TCG_TYPE_I64, - tcgv_i32_temp(TCGV_LOW(v)), tcgv_i32_temp(TCGV_HIGH(v)), - addr, oi); - } else { - gen_ldst1(INDEX_op_qemu_ld, TCG_TYPE_I64, tcgv_i64_temp(v), addr, = oi); - } + gen_ldst1(INDEX_op_qemu_ld, TCG_TYPE_I64, tcgv_i64_temp(v), addr, oi); } =20 static void gen_st_i64(TCGv_i64 v, TCGTemp *addr, MemOpIdx oi) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - gen_ldst2(INDEX_op_qemu_st2, TCG_TYPE_I64, - tcgv_i32_temp(TCGV_LOW(v)), tcgv_i32_temp(TCGV_HIGH(v)), - addr, oi); - } else { - gen_ldst1(INDEX_op_qemu_st, TCG_TYPE_I64, tcgv_i64_temp(v), addr, = oi); - } + gen_ldst1(INDEX_op_qemu_st, TCG_TYPE_I64, tcgv_i64_temp(v), addr, oi); } =20 static void tcg_gen_req_mo(TCGBar type) @@ -143,7 +131,7 @@ static TCGTemp *tci_extend_addr(TCGTemp *addr) * Compare to the extension performed by tcg_out_{ld,st}_helper_args * for native code generation. */ - if (TCG_TARGET_REG_BITS =3D=3D 64 && tcg_ctx->addr_type =3D=3D TCG_TYP= E_I32) { + if (tcg_ctx->addr_type =3D=3D TCG_TYPE_I32) { TCGv_i64 temp =3D tcg_temp_ebb_new_i64(); tcg_gen_extu_i32_i64(temp, temp_tcgv_i32(addr)); return tcgv_i64_temp(temp); @@ -356,16 +344,6 @@ static void tcg_gen_qemu_ld_i64_int(TCGv_i64 val, TCGT= emp *addr, TCGv_i64 copy_addr; TCGTemp *addr_new; =20 - if (TCG_TARGET_REG_BITS =3D=3D 32 && (memop & MO_SIZE) < MO_64) { - tcg_gen_qemu_ld_i32_int(TCGV_LOW(val), addr, idx, memop); - if (memop & MO_SIGN) { - tcg_gen_sari_i32(TCGV_HIGH(val), TCGV_LOW(val), 31); - } else { - tcg_gen_movi_i32(TCGV_HIGH(val), 0); - } - return; - } - 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); @@ -421,11 +399,6 @@ static void tcg_gen_qemu_st_i64_int(TCGv_i64 val, TCGT= emp *addr, MemOpIdx orig_oi, oi; TCGTemp *addr_new; =20 - if (TCG_TARGET_REG_BITS =3D=3D 32 && (memop & MO_SIZE) < MO_64) { - tcg_gen_qemu_st_i32_int(TCGV_LOW(val), addr, idx, memop); - return; - } - 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); @@ -577,7 +550,7 @@ static void tcg_gen_qemu_ld_i128_int(TCGv_i128 val, TCG= Temp *addr, orig_oi =3D make_memop_idx(memop, idx); =20 /* TODO: For now, force 32-bit hosts to use the helper. */ - if (TCG_TARGET_HAS_qemu_ldst_i128 && TCG_TARGET_REG_BITS =3D=3D 64) { + if (TCG_TARGET_HAS_qemu_ldst_i128) { TCGv_i64 lo, hi; bool need_bswap =3D false; MemOpIdx oi =3D orig_oi; @@ -691,7 +664,7 @@ static void tcg_gen_qemu_st_i128_int(TCGv_i128 val, TCG= Temp *addr, =20 /* TODO: For now, force 32-bit hosts to use the helper. */ =20 - if (TCG_TARGET_HAS_qemu_ldst_i128 && TCG_TARGET_REG_BITS =3D=3D 64) { + if (TCG_TARGET_HAS_qemu_ldst_i128) { TCGv_i64 lo, hi; MemOpIdx oi =3D orig_oi; bool need_bswap =3D false; @@ -950,17 +923,6 @@ static void tcg_gen_nonatomic_cmpxchg_i64_int(TCGv_i64= retv, TCGTemp *addr, { TCGv_i64 t1, t2; =20 - if (TCG_TARGET_REG_BITS =3D=3D 32 && (memop & MO_SIZE) < MO_64) { - tcg_gen_nonatomic_cmpxchg_i32_int(TCGV_LOW(retv), addr, TCGV_LOW(c= mpv), - TCGV_LOW(newv), idx, memop); - if (memop & MO_SIGN) { - tcg_gen_sari_i32(TCGV_HIGH(retv), TCGV_LOW(retv), 31); - } else { - tcg_gen_movi_i32(TCGV_HIGH(retv), 0); - } - return; - } - t1 =3D tcg_temp_ebb_new_i64(); t2 =3D tcg_temp_ebb_new_i64(); =20 @@ -1019,17 +981,6 @@ static void tcg_gen_atomic_cmpxchg_i64_int(TCGv_i64 r= etv, TCGTemp *addr, * is removed. */ tcg_gen_movi_i64(retv, 0); - return; - } - - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_gen_atomic_cmpxchg_i32_int(TCGV_LOW(retv), addr, TCGV_LOW(cmpv= ), - TCGV_LOW(newv), idx, memop); - if (memop & MO_SIGN) { - tcg_gen_sari_i32(TCGV_HIGH(retv), TCGV_LOW(retv), 31); - } else { - tcg_gen_movi_i32(TCGV_HIGH(retv), 0); - } } else { TCGv_i32 c32 =3D tcg_temp_ebb_new_i32(); TCGv_i32 n32 =3D tcg_temp_ebb_new_i32(); @@ -1064,43 +1015,33 @@ static void tcg_gen_nonatomic_cmpxchg_i128_int(TCGv= _i128 retv, TCGTemp *addr, TCGv_i128 cmpv, TCGv_i128 n= ewv, TCGArg idx, MemOp memop) { - if (TCG_TARGET_REG_BITS =3D=3D 32) { - /* Inline expansion below is simply too large for 32-bit hosts. */ - MemOpIdx oi =3D make_memop_idx(memop, idx); - TCGv_i64 a64 =3D maybe_extend_addr64(addr); + TCGv_i128 oldv =3D tcg_temp_ebb_new_i128(); + TCGv_i128 tmpv =3D tcg_temp_ebb_new_i128(); + TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); + TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); + TCGv_i64 z =3D tcg_constant_i64(0); =20 - gen_helper_nonatomic_cmpxchgo(retv, tcg_env, a64, cmpv, newv, - tcg_constant_i32(oi)); - maybe_free_addr64(a64); - } else { - TCGv_i128 oldv =3D tcg_temp_ebb_new_i128(); - TCGv_i128 tmpv =3D tcg_temp_ebb_new_i128(); - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 z =3D tcg_constant_i64(0); + tcg_gen_qemu_ld_i128_int(oldv, addr, idx, memop); =20 - tcg_gen_qemu_ld_i128_int(oldv, addr, idx, memop); + /* Compare i128 */ + tcg_gen_xor_i64(t0, TCGV128_LOW(oldv), TCGV128_LOW(cmpv)); + tcg_gen_xor_i64(t1, TCGV128_HIGH(oldv), TCGV128_HIGH(cmpv)); + tcg_gen_or_i64(t0, t0, t1); =20 - /* Compare i128 */ - tcg_gen_xor_i64(t0, TCGV128_LOW(oldv), TCGV128_LOW(cmpv)); - tcg_gen_xor_i64(t1, TCGV128_HIGH(oldv), TCGV128_HIGH(cmpv)); - tcg_gen_or_i64(t0, t0, t1); + /* tmpv =3D equal ? newv : oldv */ + tcg_gen_movcond_i64(TCG_COND_EQ, TCGV128_LOW(tmpv), t0, z, + TCGV128_LOW(newv), TCGV128_LOW(oldv)); + tcg_gen_movcond_i64(TCG_COND_EQ, TCGV128_HIGH(tmpv), t0, z, + TCGV128_HIGH(newv), TCGV128_HIGH(oldv)); =20 - /* tmpv =3D equal ? newv : oldv */ - tcg_gen_movcond_i64(TCG_COND_EQ, TCGV128_LOW(tmpv), t0, z, - TCGV128_LOW(newv), TCGV128_LOW(oldv)); - tcg_gen_movcond_i64(TCG_COND_EQ, TCGV128_HIGH(tmpv), t0, z, - TCGV128_HIGH(newv), TCGV128_HIGH(oldv)); + /* Unconditional writeback. */ + tcg_gen_qemu_st_i128_int(tmpv, addr, idx, memop); + tcg_gen_mov_i128(retv, oldv); =20 - /* Unconditional writeback. */ - tcg_gen_qemu_st_i128_int(tmpv, addr, idx, memop); - tcg_gen_mov_i128(retv, oldv); - - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - tcg_temp_free_i128(tmpv); - tcg_temp_free_i128(oldv); - } + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); + tcg_temp_free_i128(tmpv); + tcg_temp_free_i128(oldv); } =20 void tcg_gen_nonatomic_cmpxchg_i128_chk(TCGv_i128 retv, TCGTemp *addr, --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534635; cv=none; d=zohomail.com; s=zohoarc; b=G2azvYOkksll8pbKk7Bz9TJ24t9teIzI2lAB4DxKMZgnXnrk1s6VGuVQfjEAsaY06xiEiQim8LvSQ6QZQ8F5Ct71MnNQ/2vpY6WOCk7vhUmOul/FB5VXaweKVHddclVafoMMbUgRPGrem5NMSJGK+81XnKlAaolOgrNhGBFMRR4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534635; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YL8K4w4eoq6ZQBe1dCSf/NVOvfZzKR+JbdvjX67X7dA=; b=nNXYcYSZsRQPDQCObbALUgvDZYVApXa2888Tq/Ph803PnujP0RhFJ1XCBCHNRsy3ZiWdpvBGkXJjwoadr9oo8D769NewjlRtHZ83Q1ZB8bZkLqrlWYYbnhKoVuhKzvRRTqXad02SlzeqWrcX2mZuq0Yh7nNMvoZ/7/pGV5ANTC8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534635875644.8167160274023; Thu, 15 Jan 2026 19:37:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgaca-0002mc-6S; Thu, 15 Jan 2026 22:35:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgacY-0002Z9-PH for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:34 -0500 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgacW-0006Lc-2N for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:34 -0500 Received: by mail-pf1-x442.google.com with SMTP id d2e1a72fcca58-81ed3e6b8e3so765915b3a.2 for ; Thu, 15 Jan 2026 19:35:31 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534530; x=1769139330; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YL8K4w4eoq6ZQBe1dCSf/NVOvfZzKR+JbdvjX67X7dA=; b=vu7X/2MiOdteKJRdBGY/Jf7rEolReWyvFudrfypBbIzWUHpKSUGpkh0J11zY2du8UH 6X34RfsjEnErhoRg07eIRB1eL0fA2twZ+RdjmhwGzctDoQx9niEF3g57nuheQsZlMaUX JJOSXvR72hK9m7Xa6SxT2fmyWIUi8xWmXs/0LMFZJSRW4qftEGhDEcJ2jrD8EycT7b/y n/yLxztGy2tapFic9a/Qy6Ipnj9XSsVRCHECGAAfR4rts3R2mqjIYp5t9Rps5kS8Otwz LxiRx9lg22IoPXAuXR53pV/yLVRZ4x2/iTIE1cYFivPNpuoIVVtI2N2svgaU7SdsY3xR TwPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534530; x=1769139330; 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; bh=YL8K4w4eoq6ZQBe1dCSf/NVOvfZzKR+JbdvjX67X7dA=; b=MayzKenHw8OqB6GcZrD0ga1aAVVN3uRxTXT7XvqQ1zBCd8uSm8NvtXhE+HUZYvaA3k aG1Bre8NzdaAjiYmtDqQnYIuLNkAGq7RgL/fLU7gKR8Q5Q0vccpcToayPUd6LcKY4r+O KaZByJ90N5hWt89X3q/vfquc2ni+A2errCCx9gq5KuNJ9HDLpkIpVFd8pcLIN0OL8SFE Z5Et69uWkfwOqHDZlatyvpxJlt/bcJi4vte4oQfLo9f+fFgU0jMzH5ZBjq1WpndF1yN8 Xjd8hLFQHWvy2GqoRy/VuXKp7IoBbHbVe+Nen0Cn1igYcdHA/t+Nsn+0zVA6EQYm6DNM PkEA== X-Gm-Message-State: AOJu0YwwaDLW4Z1dFSALM58xCmti1NUcgfYx+owGIcNc2fZ3XRIt2BNs m79DGNIFs2X5vSCg4utdbQGVLw2VDmc9OZNYr4DG74ElFX/hmLW6fNOYQHTu1gKnDNN7+F+ZSSr uMyFKU1t03siE X-Gm-Gg: AY/fxX7DSnU7VWMEFLj+KjV3v0biSiWmwR3txTMc7kK/h06QuSxIZ0EyD5aZ9hZdCXT krKVxUnGtE39mMkn0oenWUt0SwAwxmS6/JSHgWanp3S05M9p+fxzCAAICtRPUAL926GigpKf09J lqvE+X/Z27gyywoiy3nkADxxqIxdFRwGeufFR3sav5+qzYpRPgoW/FpZH2m3xLLCkRwhmr3usT8 FzcNQNhYDjLSmdfyVDbqCPs+LxKsJn/sqqRTOUj46hBwF8q72mvE6wVgUefL+R49jjKFJWjvgTc kI1O0fzbguIxScm0gC0Rn0gnMGSYxXGlEZzlXfDdHEMXtlg+AlTUKIXiuGgtwuxm/yY3xHxWGDR GZfLG/4XcPUzTQ4vBDTWVXINz7pbvr31kLogNnjRWDgwTOhrm46w6Sd1Jb+75hVVitvovtfvERa Dh3ACegE+h047nI6tygg== X-Received: by 2002:a05:6a00:c8d:b0:7e8:4471:8e2 with SMTP id d2e1a72fcca58-81fa1882721mr1175983b3a.67.1768534530328; Thu, 15 Jan 2026 19:35:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 35/58] tcg: Drop TCG_TARGET_REG_BITS tests in tcg.c Date: Fri, 16 Jan 2026 14:32:41 +1100 Message-ID: <20260116033305.51162-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::442; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x442.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534637979158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/tcg.c | 216 +++++++++--------------------------------------------- 1 file changed, 36 insertions(+), 180 deletions(-) diff --git a/tcg/tcg.c b/tcg/tcg.c index 2b3bcbe750..e7bf4dad4e 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -215,10 +215,8 @@ static void * const qemu_ld_helpers[MO_SSIZE + 1] __at= tribute__((unused)) =3D { [MO_SW] =3D helper_ldsw_mmu, [MO_UL] =3D helper_ldul_mmu, [MO_UQ] =3D helper_ldq_mmu, -#if TCG_TARGET_REG_BITS =3D=3D 64 [MO_SL] =3D helper_ldsl_mmu, [MO_128] =3D helper_ld16_mmu, -#endif }; =20 static void * const qemu_st_helpers[MO_SIZE + 1] __attribute__((unused)) = =3D { @@ -226,9 +224,7 @@ static void * const qemu_st_helpers[MO_SIZE + 1] __attr= ibute__((unused)) =3D { [MO_16] =3D helper_stw_mmu, [MO_32] =3D helper_stl_mmu, [MO_64] =3D helper_stq_mmu, -#if TCG_TARGET_REG_BITS =3D=3D 64 [MO_128] =3D helper_st16_mmu, -#endif }; =20 typedef struct { @@ -504,7 +500,6 @@ static void tcg_out_movext(TCGContext *s, TCGType dst_t= ype, TCGReg dst, } break; case MO_UQ: - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64); if (dst_type =3D=3D TCG_TYPE_I32) { tcg_out_extrl_i64_i32(s, dst, src); } else { @@ -1113,7 +1108,6 @@ QEMU_BUILD_BUG_ON((int)(offsetof(CPUNegativeOffsetSta= te, tlb.f[0]) - < MIN_TLB_MASK_TABLE_OFS); #endif =20 -#if TCG_TARGET_REG_BITS =3D=3D 64 /* * We require these functions for slow-path function calls. * Adapt them generically for opcode output. @@ -1148,7 +1142,6 @@ static const TCGOutOpUnary outop_extrl_i64_i32 =3D { .base.static_constraint =3D C_O1_I1(r, r), .out_rr =3D TCG_TARGET_HAS_extr_i64_i32 ? tgen_extrl_i64_i32 : NULL, }; -#endif =20 static const TCGOutOp outop_goto_ptr =3D { .static_constraint =3D C_O0_I1(r), @@ -1360,11 +1353,7 @@ void tcg_pool_reset(TCGContext *s) * the helpers, with the end result that it's easier to build manually. */ =20 -#if TCG_TARGET_REG_BITS =3D=3D 32 -# define dh_typecode_ttl dh_typecode_i32 -#else -# define dh_typecode_ttl dh_typecode_i64 -#endif +#define dh_typecode_ttl dh_typecode_i64 =20 static TCGHelperInfo info_helper_ld32_mmu =3D { .flags =3D TCG_CALL_NO_WG, @@ -1615,17 +1604,12 @@ static void init_call_layout(TCGHelperInfo *info) break; case dh_typecode_i32: case dh_typecode_s32: + case dh_typecode_i64: + case dh_typecode_s64: case dh_typecode_ptr: info->nr_out =3D 1; info->out_kind =3D TCG_CALL_RET_NORMAL; break; - case dh_typecode_i64: - case dh_typecode_s64: - info->nr_out =3D 64 / TCG_TARGET_REG_BITS; - info->out_kind =3D TCG_CALL_RET_NORMAL; - /* Query the last register now to trigger any assert early. */ - tcg_target_call_oarg_reg(info->out_kind, info->nr_out - 1); - break; case dh_typecode_i128: info->nr_out =3D 128 / TCG_TARGET_REG_BITS; info->out_kind =3D TCG_TARGET_CALL_RET_I128; @@ -1705,11 +1689,7 @@ static void init_call_layout(TCGHelperInfo *info) layout_arg_even(&cum); /* fall through */ case TCG_CALL_ARG_NORMAL: - if (TCG_TARGET_REG_BITS =3D=3D 32) { - layout_arg_normal_n(&cum, info, 2); - } else { - layout_arg_1(&cum, info, TCG_CALL_ARG_NORMAL); - } + layout_arg_1(&cum, info, TCG_CALL_ARG_NORMAL); break; default: qemu_build_not_reached(); @@ -2002,11 +1982,8 @@ static TCGTemp *tcg_global_alloc(TCGContext *s) static TCGTemp *tcg_global_reg_new_internal(TCGContext *s, TCGType type, TCGReg reg, const char *name) { - TCGTemp *ts; + TCGTemp *ts =3D tcg_global_alloc(s); =20 - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64 || type =3D=3D TCG_TYPE= _I32); - - ts =3D tcg_global_alloc(s); ts->base_type =3D type; ts->type =3D type; ts->kind =3D TEMP_FIXED; @@ -2040,48 +2017,20 @@ static TCGTemp *tcg_global_mem_new_internal(TCGv_pt= r base, intptr_t offset, /* We do not support double-indirect registers. */ tcg_debug_assert(!base_ts->indirect_reg); base_ts->indirect_base =3D 1; - s->nb_indirects +=3D (TCG_TARGET_REG_BITS =3D=3D 32 && type =3D=3D= TCG_TYPE_I64 - ? 2 : 1); + s->nb_indirects +=3D 1; indirect_reg =3D 1; break; default: g_assert_not_reached(); } =20 - if (TCG_TARGET_REG_BITS =3D=3D 32 && type =3D=3D TCG_TYPE_I64) { - TCGTemp *ts2 =3D tcg_global_alloc(s); - char buf[64]; - - ts->base_type =3D TCG_TYPE_I64; - ts->type =3D TCG_TYPE_I32; - ts->indirect_reg =3D indirect_reg; - ts->mem_allocated =3D 1; - ts->mem_base =3D base_ts; - ts->mem_offset =3D offset; - pstrcpy(buf, sizeof(buf), name); - pstrcat(buf, sizeof(buf), "_0"); - ts->name =3D strdup(buf); - - tcg_debug_assert(ts2 =3D=3D ts + 1); - ts2->base_type =3D TCG_TYPE_I64; - ts2->type =3D TCG_TYPE_I32; - ts2->indirect_reg =3D indirect_reg; - ts2->mem_allocated =3D 1; - ts2->mem_base =3D base_ts; - ts2->mem_offset =3D offset + 4; - ts2->temp_subindex =3D 1; - pstrcpy(buf, sizeof(buf), name); - pstrcat(buf, sizeof(buf), "_1"); - ts2->name =3D strdup(buf); - } else { - ts->base_type =3D type; - ts->type =3D type; - ts->indirect_reg =3D indirect_reg; - ts->mem_allocated =3D 1; - ts->mem_base =3D base_ts; - ts->mem_offset =3D offset; - ts->name =3D name; - } + ts->base_type =3D type; + ts->type =3D type; + ts->indirect_reg =3D indirect_reg; + ts->mem_allocated =3D 1; + ts->mem_base =3D base_ts; + ts->mem_offset =3D offset; + ts->name =3D name; return ts; } =20 @@ -2128,14 +2077,12 @@ TCGTemp *tcg_temp_new_internal(TCGType type, TCGTem= pKind kind) =20 switch (type) { case TCG_TYPE_I32: + case TCG_TYPE_I64: case TCG_TYPE_V64: case TCG_TYPE_V128: case TCG_TYPE_V256: n =3D 1; break; - case TCG_TYPE_I64: - n =3D 64 / TCG_TARGET_REG_BITS; - break; case TCG_TYPE_I128: n =3D 128 / TCG_TARGET_REG_BITS; break; @@ -2300,43 +2247,13 @@ TCGTemp *tcg_constant_internal(TCGType type, int64_= t val) =20 ts =3D g_hash_table_lookup(h, &val); if (ts =3D=3D NULL) { - int64_t *val_ptr; - ts =3D tcg_temp_alloc(s); - - if (TCG_TARGET_REG_BITS =3D=3D 32 && type =3D=3D TCG_TYPE_I64) { - TCGTemp *ts2 =3D tcg_temp_alloc(s); - - tcg_debug_assert(ts2 =3D=3D ts + 1); - - ts->base_type =3D TCG_TYPE_I64; - ts->type =3D TCG_TYPE_I32; - ts->kind =3D TEMP_CONST; - ts->temp_allocated =3D 1; - - ts2->base_type =3D TCG_TYPE_I64; - ts2->type =3D TCG_TYPE_I32; - ts2->kind =3D TEMP_CONST; - ts2->temp_allocated =3D 1; - ts2->temp_subindex =3D 1; - - /* - * Retain the full value of the 64-bit constant in the low - * part, so that the hash table works. Actual uses will - * truncate the value to the low part. - */ - ts[HOST_BIG_ENDIAN].val =3D val; - ts[!HOST_BIG_ENDIAN].val =3D val >> 32; - val_ptr =3D &ts[HOST_BIG_ENDIAN].val; - } else { - ts->base_type =3D type; - ts->type =3D type; - ts->kind =3D TEMP_CONST; - ts->temp_allocated =3D 1; - ts->val =3D val; - val_ptr =3D &ts->val; - } - g_hash_table_insert(h, val_ptr, ts); + ts->base_type =3D type; + ts->type =3D type; + ts->kind =3D TEMP_CONST; + ts->temp_allocated =3D 1; + ts->val =3D val; + g_hash_table_insert(h, &ts->val, ts); } =20 return ts; @@ -2405,10 +2322,8 @@ bool tcg_op_supported(TCGOpcode op, TCGType type, un= signed flags) =20 switch (type) { case TCG_TYPE_I32: - has_type =3D true; - break; case TCG_TYPE_I64: - has_type =3D TCG_TARGET_REG_BITS =3D=3D 64; + has_type =3D true; break; case TCG_TYPE_V64: has_type =3D TCG_TARGET_HAS_v64; @@ -2443,10 +2358,6 @@ bool tcg_op_supported(TCGOpcode op, TCGType type, un= signed flags) =20 case INDEX_op_qemu_ld2: case INDEX_op_qemu_st2: - if (TCG_TARGET_REG_BITS =3D=3D 32) { - tcg_debug_assert(type =3D=3D TCG_TYPE_I64); - return true; - } tcg_debug_assert(type =3D=3D TCG_TYPE_I128); goto do_lookup; =20 @@ -2479,7 +2390,7 @@ bool tcg_op_supported(TCGOpcode op, TCGType type, uns= igned flags) case INDEX_op_extu_i32_i64: case INDEX_op_extrl_i64_i32: case INDEX_op_extrh_i64_i32: - return TCG_TARGET_REG_BITS =3D=3D 64; + return true; =20 case INDEX_op_mov_vec: case INDEX_op_dup_vec: @@ -2792,11 +2703,9 @@ static char *tcg_get_arg_str_ptr(TCGContext *s, char= *buf, int buf_size, case TCG_TYPE_I32: snprintf(buf, buf_size, "$0x%x", (int32_t)ts->val); break; -#if TCG_TARGET_REG_BITS > 32 case TCG_TYPE_I64: snprintf(buf, buf_size, "$0x%" PRIx64, ts->val); break; -#endif case TCG_TYPE_V64: case TCG_TYPE_V128: case TCG_TYPE_V256: @@ -5654,8 +5563,6 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG= Op *op) case INDEX_op_extu_i32_i64: case INDEX_op_extrl_i64_i32: case INDEX_op_extrh_i64_i32: - assert(TCG_TARGET_REG_BITS =3D=3D 64); - /* fall through */ case INDEX_op_ctpop: case INDEX_op_neg: case INDEX_op_not: @@ -6179,9 +6086,7 @@ static int tcg_out_helper_stk_ofs(TCGType type, unsig= ned slot) * Each stack slot is TCG_TARGET_LONG_BITS. If the host does not * require extension to uint64_t, adjust the address for uint32_t. */ - if (HOST_BIG_ENDIAN && - TCG_TARGET_REG_BITS =3D=3D 64 && - type =3D=3D TCG_TYPE_I32) { + if (HOST_BIG_ENDIAN && type =3D=3D TCG_TYPE_I32) { ofs +=3D 4; } return ofs; @@ -6390,13 +6295,8 @@ static unsigned tcg_out_helper_add_mov(TCGMovExtend = *mov, return 1; } =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - assert(dst_type =3D=3D TCG_TYPE_I64); - reg_mo =3D MO_32; - } else { - assert(dst_type =3D=3D TCG_TYPE_I128); - reg_mo =3D MO_64; - } + assert(dst_type =3D=3D TCG_TYPE_I128); + reg_mo =3D MO_64; =20 mov[0].dst =3D loc[HOST_BIG_ENDIAN].arg_slot; mov[0].src =3D lo; @@ -6442,26 +6342,10 @@ static void tcg_out_ld_helper_args(TCGContext *s, c= onst TCGLabelQemuLdst *ldst, next_arg =3D 1; =20 loc =3D &info->in[next_arg]; - if (TCG_TARGET_REG_BITS =3D=3D 32 && s->addr_type =3D=3D TCG_TYPE_I32)= { - /* - * 32-bit host with 32-bit guest: zero-extend the guest address - * to 64-bits for the helper by storing the low part, then - * load a zero for the high part. - */ - tcg_out_helper_add_mov(mov, loc + HOST_BIG_ENDIAN, - TCG_TYPE_I32, TCG_TYPE_I32, - ldst->addr_reg, -1); - tcg_out_helper_load_slots(s, 1, mov, parm); - - tcg_out_helper_load_imm(s, loc[!HOST_BIG_ENDIAN].arg_slot, - TCG_TYPE_I32, 0, parm); - next_arg +=3D 2; - } else { - nmov =3D tcg_out_helper_add_mov(mov, loc, TCG_TYPE_I64, s->addr_ty= pe, - ldst->addr_reg, -1); - tcg_out_helper_load_slots(s, nmov, mov, parm); - next_arg +=3D nmov; - } + nmov =3D tcg_out_helper_add_mov(mov, loc, TCG_TYPE_I64, s->addr_type, + ldst->addr_reg, -1); + tcg_out_helper_load_slots(s, nmov, mov, parm); + next_arg +=3D nmov; =20 switch (info->out_kind) { case TCG_CALL_RET_NORMAL: @@ -6503,13 +6387,8 @@ static void tcg_out_ld_helper_ret(TCGContext *s, con= st TCGLabelQemuLdst *ldst, int ofs_slot0; =20 switch (ldst->type) { - case TCG_TYPE_I64: - if (TCG_TARGET_REG_BITS =3D=3D 32) { - break; - } - /* fall through */ - case TCG_TYPE_I32: + case TCG_TYPE_I64: mov[0].dst =3D ldst->datalo_reg; mov[0].src =3D tcg_target_call_oarg_reg(TCG_CALL_RET_NORMAL, 0); mov[0].dst_type =3D ldst->type; @@ -6526,7 +6405,7 @@ static void tcg_out_ld_helper_ret(TCGContext *s, cons= t TCGLabelQemuLdst *ldst, * helper functions. */ if (load_sign || !(mop & MO_SIGN)) { - if (TCG_TARGET_REG_BITS =3D=3D 32 || ldst->type =3D=3D TCG_TYP= E_I32) { + if (ldst->type =3D=3D TCG_TYPE_I32) { mov[0].src_ext =3D MO_32; } else { mov[0].src_ext =3D MO_64; @@ -6538,7 +6417,6 @@ static void tcg_out_ld_helper_ret(TCGContext *s, cons= t TCGLabelQemuLdst *ldst, return; =20 case TCG_TYPE_I128: - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64); ofs_slot0 =3D TCG_TARGET_CALL_STACK_OFFSET; switch (TCG_TARGET_CALL_RET_I128) { case TCG_CALL_RET_NORMAL: @@ -6568,14 +6446,14 @@ static void tcg_out_ld_helper_ret(TCGContext *s, co= nst TCGLabelQemuLdst *ldst, tcg_target_call_oarg_reg(TCG_CALL_RET_NORMAL, HOST_BIG_ENDIAN); mov[0].dst_type =3D TCG_TYPE_REG; mov[0].src_type =3D TCG_TYPE_REG; - mov[0].src_ext =3D TCG_TARGET_REG_BITS =3D=3D 32 ? MO_32 : MO_64; + mov[0].src_ext =3D MO_64; =20 mov[1].dst =3D ldst->datahi_reg; mov[1].src =3D tcg_target_call_oarg_reg(TCG_CALL_RET_NORMAL, !HOST_BIG_ENDIAN); mov[1].dst_type =3D TCG_TYPE_REG; mov[1].src_type =3D TCG_TYPE_REG; - mov[1].src_ext =3D TCG_TARGET_REG_BITS =3D=3D 32 ? MO_32 : MO_64; + mov[1].src_ext =3D MO_64; =20 tcg_out_movext2(s, mov, mov + 1, parm->ntmp ? parm->tmp[0] : -1); } @@ -6616,24 +6494,10 @@ static void tcg_out_st_helper_args(TCGContext *s, c= onst TCGLabelQemuLdst *ldst, /* Handle addr argument. */ loc =3D &info->in[next_arg]; tcg_debug_assert(s->addr_type <=3D TCG_TYPE_REG); - if (TCG_TARGET_REG_BITS =3D=3D 32) { - /* - * 32-bit host (and thus 32-bit guest): zero-extend the guest addr= ess - * to 64-bits for the helper by storing the low part. Later, - * after we have processed the register inputs, we will load a - * zero for the high part. - */ - tcg_out_helper_add_mov(mov, loc + HOST_BIG_ENDIAN, - TCG_TYPE_I32, TCG_TYPE_I32, + n =3D tcg_out_helper_add_mov(mov, loc, TCG_TYPE_I64, s->addr_type, ldst->addr_reg, -1); - next_arg +=3D 2; - nmov +=3D 1; - } else { - n =3D tcg_out_helper_add_mov(mov, loc, TCG_TYPE_I64, s->addr_type, - ldst->addr_reg, -1); - next_arg +=3D n; - nmov +=3D n; - } + next_arg +=3D n; + nmov +=3D n; =20 /* Handle data argument. */ loc =3D &info->in[next_arg]; @@ -6649,7 +6513,6 @@ static void tcg_out_st_helper_args(TCGContext *s, con= st TCGLabelQemuLdst *ldst, break; =20 case TCG_CALL_ARG_BY_REF: - tcg_debug_assert(TCG_TARGET_REG_BITS =3D=3D 64); tcg_debug_assert(data_type =3D=3D TCG_TYPE_I128); tcg_out_st(s, TCG_TYPE_I64, HOST_BIG_ENDIAN ? ldst->datahi_reg : ldst->datalo_reg, @@ -6678,12 +6541,6 @@ static void tcg_out_st_helper_args(TCGContext *s, co= nst TCGLabelQemuLdst *ldst, g_assert_not_reached(); } =20 - if (TCG_TARGET_REG_BITS =3D=3D 32) { - /* Zero extend the address by loading a zero for the high part. */ - loc =3D &info->in[1 + !HOST_BIG_ENDIAN]; - tcg_out_helper_load_imm(s, loc->arg_slot, TCG_TYPE_I32, 0, parm); - } - tcg_out_helper_load_common_args(s, ldst, parm, info, next_arg); } =20 @@ -6791,7 +6648,6 @@ int tcg_gen_code(TCGContext *s, TranslationBlock *tb,= uint64_t pc_start) =20 switch (opc) { case INDEX_op_extrl_i64_i32: - assert(TCG_TARGET_REG_BITS =3D=3D 64); /* * If TCG_TYPE_I32 is represented in some canonical form, * e.g. zero or sign-extended, then emit as a unary op. --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534620; cv=none; d=zohomail.com; s=zohoarc; b=Ao+BvdtOLkBj+RL5UqeXUv8Cff38JLjLL0iypTbYsGqrT5t/2EceRvQ+TlBanWPiy6ZHdoAs4gl2egSZ+qRwTZeVr0YEP+YphBsV2TvwlSe8+FKyG9YL0jaE8VnCdsZX47OjTorEjZGiBs/luoJ7RGq09Kk41YD8nLqdr//5MQs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534620; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Jt6epgzk+hjWVFj/7ojbUiaxuIhW/JGBZIUcf+FDUAw=; b=T/0AKK6hoTMubzzHg6FbOODelT4WlgNDpQqRwfKDBHvN+Iogxy6/I/7Z0D2iu7QYS9gpL70udiABu+wECSIMd/us4M0RPTyrQ3547ewKqZrmLhmW0lKRwLbF+pL0kxgTHM0d98+R0kL5i+ANtJwj3X4G6l34/LPFwrrJKirjCAI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534620586142.26646030091013; Thu, 15 Jan 2026 19:37:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacc-0002qT-KP; Thu, 15 Jan 2026 22:35:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgacb-0002oY-6Z for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:37 -0500 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgacZ-0006NC-Hg for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:36 -0500 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-81dbc0a99d2so814807b3a.1 for ; Thu, 15 Jan 2026 19:35:35 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534534; x=1769139334; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Jt6epgzk+hjWVFj/7ojbUiaxuIhW/JGBZIUcf+FDUAw=; b=A/B1HllsicECcJqaCUCxzpydBYKs6dr+iBzb4mO1Ks+9Fr8v52PkcCFo+HqVHVNdI6 +PMADd65J5nX5RHbJnYHiwyXYr8i3B2fBIy83gaOgdyrXlRSCWu+a1S6mWUBdnM3Vy49 lmyiUTUPUtAcdKF8lpNbufETW+i/2uA0pG5GI3iMd1NqlLc9AR6lIYyCJVp8pS2AaIen WzGDrnjxFlm+0a6ppbPrbS2p08IEBR1JCe7UM7nZTXB1xZXFDYYjZqFJqB21qkeFyW5R MjHfONZSUAbylsi3GRShzBQ5RG3hVxw1EXa8niAhcRoqYeS/DULn8PFkYwhyNKjxQyuy iWBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534534; x=1769139334; 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; bh=Jt6epgzk+hjWVFj/7ojbUiaxuIhW/JGBZIUcf+FDUAw=; b=JtjrMnwnsrR0OwJiAyqceRqWrT/2CAeC0I8pyEhZ5CNNXxRjzYml+7QUUcigvS7Pcr UrGizIWUWd1+SM0f3fN7qFcZpW7D2OOW0IDnxJCtTVaHUeCtoKzB+sh865QrTzsv+uWT GDz09IXthaKzc957xxgehsLM96zn5f9MtV0z4e1ic9X/gkgliNpvONhhXfWWj54Thi+v D1Emu4rajnfgMIWV+duREd5L+z2Wo+Tq7OAeiiX5yIku8a7JcSG8GZuJBSeU0XFFnwBw itZ1TOKzsIkpSl5gDfzcr96tfRAWn7huxlh0lBjE9P4SbSGcEJhjJ2CnfMTTnCvTRfyg gcuQ== X-Gm-Message-State: AOJu0YzjTehLKWqNdyaCO5+LFTN46AsibzLX9jp1nFmjFodAsS0yF1kd XZsgbevM2/9o+LqCJy2S6iLDQCdUtI3MYaggd0NwnLFly2cxEUboYXo0EgV0D+QQEmPyXAi/bRI cRfzoZQ6wug== X-Gm-Gg: AY/fxX6tWsPldeKoqEjr5Bl3DMeyMmAoo/T50ciEeZyuxqPqwhZ0+juFxIzKZTfzY3o OzeAgB50MmZE3GaXikCazT/24iLRcpMUYWvyUyWSB1bLZRw4NOUg58Yl24saUPwcvKN7VUL7lzw PhcOH/MKnr52IGhTGNUrjGyeSWXAoH7vdOGA/2detLEDwrbb3X/KsL+sZ0cU/7ROVZJOs4YLp1q 9iDwpyTwIKzNcuJ6LJkKSVFwNetSzdesV+umhgsRTmmgNAyOHD1dbqdBfguqAwuZol+MH5lFfxt QunSeZntJuWK6DJfPi3LImOUNeEsk1S3VkfjaOUjHuoDs4EJbeZGIsmcFZ2infreq16XUooWs+9 Nz4EX6SHgCCIjkQAclR/HGDt5MqrRQGDIEPb/KloBr13cxKrKvodmFqpz8YSOQd9Hj8N31uuNwF ikztf1Uz/Ug6N56vSG+w== X-Received: by 2002:a05:6a00:368c:b0:81f:4abd:f15c with SMTP id d2e1a72fcca58-81fa03b4312mr1453373b3a.70.1768534534105; Thu, 15 Jan 2026 19:35:34 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 36/58] tcg: Drop TCG_TARGET_REG_BITS tests in tcg-internal.h Date: Fri, 16 Jan 2026 14:32:42 +1100 Message-ID: <20260116033305.51162-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534621800158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/tcg-internal.h | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h index d6a12afe06..2cbfb5d5ca 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -54,31 +54,14 @@ static inline unsigned tcg_call_flags(TCGOp *op) return tcg_call_info(op)->flags; } =20 -#if TCG_TARGET_REG_BITS =3D=3D 32 -static inline TCGv_i32 TCGV_LOW(TCGv_i64 t) -{ - return temp_tcgv_i32(tcgv_i64_temp(t) + HOST_BIG_ENDIAN); -} -static inline TCGv_i32 TCGV_HIGH(TCGv_i64 t) -{ - return temp_tcgv_i32(tcgv_i64_temp(t) + !HOST_BIG_ENDIAN); -} -#else -TCGv_i32 TCGV_LOW(TCGv_i64) QEMU_ERROR("32-bit code path is reachable"); -TCGv_i32 TCGV_HIGH(TCGv_i64) QEMU_ERROR("32-bit code path is reachable"); -#endif - static inline TCGv_i64 TCGV128_LOW(TCGv_i128 t) { - /* For 32-bit, offset by 2, which may then have TCGV_{LOW,HIGH} applie= d. */ - int o =3D HOST_BIG_ENDIAN ? 64 / TCG_TARGET_REG_BITS : 0; - return temp_tcgv_i64(tcgv_i128_temp(t) + o); + return temp_tcgv_i64(tcgv_i128_temp(t) + HOST_BIG_ENDIAN); } =20 static inline TCGv_i64 TCGV128_HIGH(TCGv_i128 t) { - int o =3D HOST_BIG_ENDIAN ? 0 : 64 / TCG_TARGET_REG_BITS; - return temp_tcgv_i64(tcgv_i128_temp(t) + o); + return temp_tcgv_i64(tcgv_i128_temp(t) + !HOST_BIG_ENDIAN); } =20 bool tcg_target_has_memory_bswap(MemOp memop); --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534645; cv=none; d=zohomail.com; s=zohoarc; b=dqSk7SrIAYVu0sN/5c9DZw/RfAFzIY0onTY7c2eyWrxGjN24noExa+be0I3+WMIb72OMa8KailOuVsgZ7GFz7K9uGenbYFot5cXwzoVEf0uw0sszC01KeKvcEFoUbaYQ9pvmJKw2UpY6+8zUZnhPSwxmKW9WTaQN7S3L+fm1yek= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534645; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1nYgK0g6eEdhcQX8r1Op2+JuLhyO76+gPoRJlKgReBU=; b=bNi45mcdcoCbfaTmayLCJXYutDJaquvC4uKjgcRdz/FuGa+V6Rij9bt5QQgZsf96P+KozxhuC+wUgzybRUfkSg0IULu7oDNihwYgSwRSC2COupfInW/oqHvnff/dWhsEkKvftPY5uR/sk66XtE1kYl9D25OvGkqVMen5NWJw8Qw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534645539655.0550963035917; Thu, 15 Jan 2026 19:37:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacg-00031T-5W; Thu, 15 Jan 2026 22:35:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgace-0002vs-Vc for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:41 -0500 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgacd-0006Ot-EV for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:40 -0500 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-81df6a302b1so1443126b3a.2 for ; Thu, 15 Jan 2026 19:35:39 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534538; x=1769139338; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1nYgK0g6eEdhcQX8r1Op2+JuLhyO76+gPoRJlKgReBU=; b=K30XdxEW14xKWdYz/tlCzpMopWm7ZU6n34WOgrYYxN6mK91D39ujh9j+owotDzaIc/ GF5q5nSChUyJiDbL0BmrM9beGcwCX7mJeQkojDGMDaVRx1BwwSxRNkCWZiCofdVV9Rbi +i7CrdGzDz6QOGm5ql3V7nqxT3Yzn/RqNRpnzycVS0VK72+nRVsEO3oKOsVYqteFtdZP fUpzg83d/620zj0RMYie/fWiaoBamVu6T3kUAdduJrUOtkpgsZSqu6z52JrVH6eFCqq6 sPsMrLasfukwmewf0gaqc3An+tuNgPCzVAm5UHrscqyzu6hHTcO5ZmMoc95SS2VAYUdo BVxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534538; x=1769139338; 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; bh=1nYgK0g6eEdhcQX8r1Op2+JuLhyO76+gPoRJlKgReBU=; b=bg0GJCVoSkZuD4SKngSQn/0CaCMdHpSO2svT0c2I30Iu/Gf4668XZ/0dEAEAoPphlk JDqcKSTNYVKbuuvabOQztU2yceuk5CQn9NkZDYOx1cnbO0tliyFwHdbL5yoIxfLjSLx/ 0vnAfw6AL5HqXEFaMPkPsCb94jio9MjoVqGN1iMoMT2mV22MJb56fbFHVpvtBiXySlc4 3FwWMwnTGjaZ9yRwdn3o1TpkFTO9VS7jUXbXlgA/ROPho5d8qboG5cP5zAx52W3uDXaI spmvYz3P060goVnPxlGhExHRWSNk4qOC6KeUPk1CXOkmGuDG+380IY8isIc5LoCg4kBB ZkIA== X-Gm-Message-State: AOJu0Yzw7Glvjgf+YXK3TArtq0AjrFYWibaDnhRli/VSxmkhVL0zSWcQ UC6jNzZG4wZOEzGAOISj1upqeKCx6Qyw6DcBdZUq/I7ABPb2W7ESP4/YdubDOOyynQjsEPs3yVM OgvVe2oX0hQ== X-Gm-Gg: AY/fxX71lyVQrjp2SxzC+Kxlr/B0BY16+gpnzGVbWmTK3emkpfQxSP1uj7UNV0+gces 19H4HZVimsiARamWy7+V6/7xgWckTu7ZtJ/ht3srZtQJd/Jzis+HfWN5vexA3N1siJUJFZAapwm /RIABNQlsHJ0an46+1Z19TiXRuMkVc+ndu3zesJvz7QxvtdFvxbDfo1ov4HOTnvbnkq8Ru5/NjK DklII2Xwy7Y3Hy8qviU3wSapRlAPGOwTHyNrZ2CeZCkSgIKCrA6yZjuTd8QzEQvU9FyHzXRLqRt pEPRyw+1Es4k3AKnp7bv/iGnzXuJkHe4bchLkiRBf0RjrslXafXPdH9TID9SYmQFv8MZc+DmkHs KDVoj7q7kMcXf46OtRHIx3p4CZ0FyxG12gPeFjPaXUWxAnexKPm28chhzaNXLUEU9rQoJMs0FGb 9bknOqp8gAlOJnA563bA== X-Received: by 2002:a05:6a00:1ad2:b0:81f:3b74:5812 with SMTP id d2e1a72fcca58-81fa17bedd4mr1110502b3a.31.1768534537823; Thu, 15 Jan 2026 19:35:37 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 37/58] tcg: Drop TCG_TARGET_REG_BITS test in tcg-has.h Date: Fri, 16 Jan 2026 14:32:43 +1100 Message-ID: <20260116033305.51162-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534645876158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tcg/tcg-has.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tcg/tcg-has.h b/tcg/tcg-has.h index 2fc0e50d20..27771dc7f0 100644 --- a/tcg/tcg-has.h +++ b/tcg/tcg-has.h @@ -9,11 +9,6 @@ =20 #include "tcg-target-has.h" =20 -#if TCG_TARGET_REG_BITS =3D=3D 32 -/* Turn some undef macros into false macros. */ -#define TCG_TARGET_HAS_extr_i64_i32 0 -#endif - #if !defined(TCG_TARGET_HAS_v64) \ && !defined(TCG_TARGET_HAS_v128) \ && !defined(TCG_TARGET_HAS_v256) --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534653; cv=none; d=zohomail.com; s=zohoarc; b=lA+LxNJjmMlgminYUW+nbMtAt43BNK8RbRdLM1g6F5Xo75+dku8zCs7QhtrVSJ2Cz7/XPhZ22tZSe2pXPkingALshJuVHXq6XeKEq+aOIeWqmcVOY5MbwUXIgCiBAy+VzeQMZPr8ui2IXbVCQ7N8lsKLQgbXaGQmf/svzCKdd80= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534653; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SRTKY77Q5AGOWWtgWUqll/eZ5kBhHSvVz6RI7rqXw3s=; b=Sg/dd1SzzspVTTUY0f77ypqdR94i+22ShAe7fiIm10x1Dkv+oYG5vaSWvctDioYMtPdoxQ8Pep4Dt9Ilp76+Q63LQNOR3XVEmVa5OkGHRy41sT9kTP4ssCImA3pZIvHCEj6bIr6U60Njg5IyRfLkWnSGX568tUn0X3Nx5cGt43s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534653799798.5498388066248; Thu, 15 Jan 2026 19:37:33 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgack-0003HU-FF; Thu, 15 Jan 2026 22:35:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgaci-0003CI-Tr for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:44 -0500 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgach-0006QN-4d for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:44 -0500 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2a1388cdac3so11202715ad.0 for ; Thu, 15 Jan 2026 19:35:42 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534542; x=1769139342; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SRTKY77Q5AGOWWtgWUqll/eZ5kBhHSvVz6RI7rqXw3s=; b=zigX0eIgNveDzhZA26qPxpKjHpwpFmnt4XrwwZwWyblywpRNBFfDuDoDO9X/jMvf7E ZX+hWNbJ1iScnUHSIfqtld22SqoH8euqiFUbyg+GT9/9SARj47/daSJnjSdkki1qMUIa ce6ZcHD00DzWfd0qk4bY2bA6aXktRu0pcKjjmZFmsV7A7MbP169KtZiky7uT1X7oWgsn hZIVaEN+49Q0zZK2aBHcPbe5Fz225etFLf8w9k+GsLM7McHx7Rj79J336tFj6bjvpadf 3zigDk7Nwa8Yr10EnplKvKjbhctTfwTS04IR7LXAPSmxmeEzfDP7Sz6+h2s4iL72aaQ2 f4sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534542; x=1769139342; 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; bh=SRTKY77Q5AGOWWtgWUqll/eZ5kBhHSvVz6RI7rqXw3s=; b=MXPiNkorGB0042tPFLSur+x27fVKOD/QDcCdTSmzdo+JQ4TGrKpelkZrrYjFkaCvAk fF0BMbfNLjjO5SLcsa2/HNb4H49L2fwyuZNNQK1ng9g+RMuEg2Ya5/7lSUA3kY/Y04f8 wWuNin+ccyEm/hMb4OiP/NGik+8WDmv221RzhbeaH5X41PEDTigUyzziaSuL6MMBPVi+ Busg7cLDe3kkK1e5wMbdb/oPOStvnBj/K5uFpOMVvyyVO7R7NkQ+W0aE7LU3f4AWMhOn e/Ej6y+0454x2oUNbmzhwdXg3x5SO2d1sQvo9FU2AibN7ySiytSSRf2wzrj49T43Y8OL UlDQ== X-Gm-Message-State: AOJu0YyQJvXNExvTtRIM8tX7YsHpdhZy4cpTizCmzNPZwyD2Q1bZlX60 9oH3G1BEEGZIsleiWz9SN5gKrUAFEY2/LT2lE/AxuyZNIyNXHiu8BebXkCiSNbzfzf2OfoIEFB+ QakAOVUZx2Q== X-Gm-Gg: AY/fxX4wH+Vpe+F4A4A3dqlJkxZjOxTQPtWGeF5uIiG3l0kXo7o9i8oDvYCVlavfPSL QOG+8rjkl9CnRXpQVGFffAxBvd4fmTiAOaH3EODdmTQJh9Qz8FLD12yKdYIOMcvDvVthFVhjknE PpHpq8Jvr8yoHQro5Rgxs1A7RiPyTZICP8yGRD86Q9gllr7Pu77OSVlWjfmMlbURn8crm4vDIoK y8JrqJVkpaWp4XBPAc+gIGfajB+Ufk2/0UoA3gaksZTqi+9j328/r/7KwxW8l0RVHXCG1hWetul unYrVgV9APQvPZWNKGDluFU+JKZW4z879CEi7JER/D2S1/tcWaDNYLGdDDZzrTl44PdZUYBdL31 r3mayV4KIZNtG90sgb9rDKIKZU+YXXChCd8NFRogMOtieTRy1vhorO+tRBokaZus3lg+04VRpGE SJZRdKDVYp2RaW8dfYKQ== X-Received: by 2002:a17:903:120c:b0:2a0:b44e:9ab6 with SMTP id d9443c01a7336-2a7174f0bacmr18280295ad.7.1768534541574; Thu, 15 Jan 2026 19:35:41 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 38/58] include/tcg: Drop TCG_TARGET_REG_BITS tests Date: Fri, 16 Jan 2026 14:32:44 +1100 Message-ID: <20260116033305.51162-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534655960158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/tcg/tcg-op.h | 9 +++------ include/tcg/tcg-opc.h | 5 +---- include/tcg/tcg.h | 27 ++------------------------- 3 files changed, 6 insertions(+), 35 deletions(-) diff --git a/include/tcg/tcg-op.h b/include/tcg/tcg-op.h index 232733cb71..ee379994e7 100644 --- a/include/tcg/tcg-op.h +++ b/include/tcg/tcg-op.h @@ -31,8 +31,7 @@ #if TARGET_INSN_START_EXTRA_WORDS =3D=3D 0 static inline void tcg_gen_insn_start(target_ulong pc) { - TCGOp *op =3D tcg_emit_op(INDEX_op_insn_start, - INSN_START_WORDS * 64 / TCG_TARGET_REG_BITS); + TCGOp *op =3D tcg_emit_op(INDEX_op_insn_start, INSN_START_WORDS); tcg_set_insn_start_param(op, 0, pc); tcg_set_insn_start_param(op, 1, 0); tcg_set_insn_start_param(op, 2, 0); @@ -40,8 +39,7 @@ static inline void tcg_gen_insn_start(target_ulong pc) #elif TARGET_INSN_START_EXTRA_WORDS =3D=3D 1 static inline void tcg_gen_insn_start(target_ulong pc, target_ulong a1) { - TCGOp *op =3D tcg_emit_op(INDEX_op_insn_start, - INSN_START_WORDS * 64 / TCG_TARGET_REG_BITS); + TCGOp *op =3D tcg_emit_op(INDEX_op_insn_start, INSN_START_WORDS); tcg_set_insn_start_param(op, 0, pc); tcg_set_insn_start_param(op, 1, a1); tcg_set_insn_start_param(op, 2, 0); @@ -50,8 +48,7 @@ static inline void tcg_gen_insn_start(target_ulong pc, ta= rget_ulong a1) static inline void tcg_gen_insn_start(target_ulong pc, target_ulong a1, target_ulong a2) { - TCGOp *op =3D tcg_emit_op(INDEX_op_insn_start, - INSN_START_WORDS * 64 / TCG_TARGET_REG_BITS); + TCGOp *op =3D tcg_emit_op(INDEX_op_insn_start, INSN_START_WORDS); tcg_set_insn_start_param(op, 0, pc); tcg_set_insn_start_param(op, 1, a1); tcg_set_insn_start_param(op, 2, a2); diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index 28806057c5..61f1c28858 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -109,9 +109,7 @@ DEF(extu_i32_i64, 1, 1, 0, 0) DEF(extrl_i64_i32, 1, 1, 0, 0) DEF(extrh_i64_i32, 1, 1, 0, 0) =20 -#define DATA64_ARGS (TCG_TARGET_REG_BITS =3D=3D 64 ? 1 : 2) - -DEF(insn_start, 0, 0, DATA64_ARGS * INSN_START_WORDS, TCG_OPF_NOT_PRESENT) +DEF(insn_start, 0, 0, INSN_START_WORDS, TCG_OPF_NOT_PRESENT) =20 DEF(exit_tb, 0, 0, 1, TCG_OPF_BB_EXIT | TCG_OPF_BB_END | TCG_OPF_NOT_PRESE= NT) DEF(goto_tb, 0, 0, 1, TCG_OPF_BB_EXIT | TCG_OPF_BB_END | TCG_OPF_NOT_PRESE= NT) @@ -184,5 +182,4 @@ DEF(last_generic, 0, 0, 0, TCG_OPF_NOT_PRESENT) =20 #include "tcg-target-opc.h.inc" =20 -#undef DATA64_ARGS #undef DEF diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 067150c542..60942ce05c 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -43,19 +43,10 @@ #define CPU_TEMP_BUF_NLONGS 128 #define TCG_STATIC_FRAME_SIZE (CPU_TEMP_BUF_NLONGS * sizeof(long)) =20 -#if TCG_TARGET_REG_BITS =3D=3D 32 -typedef int32_t tcg_target_long; -typedef uint32_t tcg_target_ulong; -#define TCG_PRIlx PRIx32 -#define TCG_PRIld PRId32 -#elif TCG_TARGET_REG_BITS =3D=3D 64 typedef int64_t tcg_target_long; typedef uint64_t tcg_target_ulong; #define TCG_PRIlx PRIx64 #define TCG_PRIld PRId64 -#else -#error unsupported -#endif =20 #if TCG_TARGET_NB_REGS <=3D 32 typedef uint32_t TCGRegSet; @@ -147,11 +138,7 @@ typedef enum TCGType { #define TCG_TYPE_COUNT (TCG_TYPE_V256 + 1) =20 /* An alias for the size of the host register. */ -#if TCG_TARGET_REG_BITS =3D=3D 32 - TCG_TYPE_REG =3D TCG_TYPE_I32, -#else TCG_TYPE_REG =3D TCG_TYPE_I64, -#endif =20 /* An alias for the size of the native pointer. */ #if UINTPTR_MAX =3D=3D UINT32_MAX @@ -605,23 +592,13 @@ static inline void tcg_set_insn_param(TCGOp *op, unsi= gned arg, TCGArg v) static inline uint64_t tcg_get_insn_start_param(TCGOp *op, unsigned arg) { tcg_debug_assert(arg < INSN_START_WORDS); - if (TCG_TARGET_REG_BITS =3D=3D 64) { - return tcg_get_insn_param(op, arg); - } else { - return deposit64(tcg_get_insn_param(op, arg * 2), 32, 32, - tcg_get_insn_param(op, arg * 2 + 1)); - } + return tcg_get_insn_param(op, arg); } =20 static inline void tcg_set_insn_start_param(TCGOp *op, unsigned arg, uint6= 4_t v) { tcg_debug_assert(arg < INSN_START_WORDS); - if (TCG_TARGET_REG_BITS =3D=3D 64) { - tcg_set_insn_param(op, arg, v); - } else { - tcg_set_insn_param(op, arg * 2, v); - tcg_set_insn_param(op, arg * 2 + 1, v >> 32); - } + tcg_set_insn_param(op, arg, v); } =20 /* The last op that was emitted. */ --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534635; cv=none; d=zohomail.com; s=zohoarc; b=ONi/081q9/cVv1wVyyp10gD9vs/uTSiK8aExAJp8qXO1MWXbZ70UIQAjBOqHvmp1fQYljpKV0mNgKJ4skbypY6vrawcLKW58+RBnipmPujsY73GxAMINN12/QaRVz16/Una36lQ8L3+UDDF4r5dlD6FeA7nC49Ua3UxhVjsQt5M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534635; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pUs/qizOln6k9oFq1nxTBHzlXvp7JuDaMx2406hQaG0=; b=g6EsRgAF2CdUJtWHCNa1Ym/vhfQcCdI+tJXcNEZq5s/drdD2U+MbKHR2tneP0HxkQE+IkSQ3Mcd2UBABCuH9yegOuB2K4nGGoChVNcHT1LXddJ60UG20XtPkGTCgO1fURmG1kkz5EtNdO1zvXDYTt/S1ESdbyMNDiCM98DrUnkY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534635317532.356193105163; Thu, 15 Jan 2026 19:37:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgacn-0003L7-Dx; Thu, 15 Jan 2026 22:35:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgacm-0003KO-B0 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:48 -0500 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgack-0006SH-Pe for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:35:48 -0500 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-81e93c5961cso1305831b3a.0 for ; Thu, 15 Jan 2026 19:35:46 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-81fa12b5c67sm683372b3a.69.2026.01.15.19.35.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:35:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534545; x=1769139345; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pUs/qizOln6k9oFq1nxTBHzlXvp7JuDaMx2406hQaG0=; b=FyWR5ZOr+7TnN5kojPdFKaSpc1ukKRns72mlhgutjuepZEQRB535P93k/DJIwtvcw3 SIeK8SBfcJkfpKURqaZpq/vnX/H5WmCNDzEnAG52oFURZq8J8J+XZFmN8by7dVd7+vbx 0d7T5C+S3vOsoPltJezJ34YlcuL93AdrtsijzzOYuCUXtZjq1JEXz5GdLtnJuwTETZ4+ vFkGJhkLqaaEHH1tWYHLWKicK2appiLO+EKR04qDKT34s7SREQYRx7UMeNEz7QlmnyR3 Nvo2kEywoGw9qBaSnZIf7HK8j89lRzRDt8tN94YkU0s0ZWCafJ61a/zJmpHWPDgdCyKe nzAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534545; x=1769139345; 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; bh=pUs/qizOln6k9oFq1nxTBHzlXvp7JuDaMx2406hQaG0=; b=R/dKOQ1wSBUWcWrQVG9nu/Z1VhmypELYrw2gsel9djP9bl0HcqaNc5EMUV1jKbvASC KqubwHaY6H7bAfG3N8wTnkb1unpjUQ7M/QE9qKzMzCAz5RHJ3On99ZkbshGJbnQ0Kixe jwtQ5iBwz1drQJoqaYRER3p3tOVGDuLgKMz+1Q5pjAbvrwlaz/gRkIrdhu5Tm3NunVFN E/9SnlIrmkiTWnGxV3JYr5jKuJxgfQ9t7QTWSsSEuLveFBG+sowS0siRDfqpxdYrMGHo 0KaXMm0hOiYAFWIk5gvgW9ONwUD/07Rw2e4pHfeIIspor19dJa2So5n+0JWW7Vn/85Ct omdw== X-Gm-Message-State: AOJu0YzOeNCTU80GUiVWCzOSIuzN8SuJOJqFWOKVW1CZwsnlLirUmlk7 zdrOEG9+X1Hf0VcHAOAjwgQc+d77CeWZQESJ4e3DEG3rdcLML/SHw4XbiivZi5qmxfVD6nJiEKw HzmRCD778IA== X-Gm-Gg: AY/fxX6q36Yb7G6W3ve2jhPCVqqQc6nxOmiLU+ZCHmEdt3+9/WtHUtYlNNIWaU+JNW7 9YgnxNIWGpFRk3wSDigx6vF7Gakub0J9mjQRq3yf5lknRLSorqYYwh/HfhLl8Q1D6kcurNyVZgi k9GtvnozKnZKQzZKbFtp/1cRtCQdxM/Z0joMrH61pC+sYAG3/YeE4BO8MANpQSyc0Rz23Xsd3wo xsj8v+F7TDsfusEPa/xNt702hzgTMTKoMZ4laS+M1SR0052x+mAqCiUpEaKWQ491c1g0JihNsHZ khlK4upt/ziHxhLsIvGQQazRYXEPo/DPPbHLz0nJqDrKqs39ESDHyLn6P8ektWjHNhxBxBHbSC5 P3YG+rO7Te7jetPCsrPhnSCmOdOVyPqy/cBcEMz2lYYbQRiFR4vN7yYYc9m/7msEcocn+FwLuG1 wk9/ZOe58d5qcXxq+NYA== X-Received: by 2002:a05:6a00:1d0f:b0:7e8:450c:61a4 with SMTP id d2e1a72fcca58-81fa02fd38cmr1574137b3a.59.1768534545260; Thu, 15 Jan 2026 19:35:45 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 39/58] target/i386/tcg: Drop TCG_TARGET_REG_BITS test Date: Fri, 16 Jan 2026 14:32:45 +1100 Message-ID: <20260116033305.51162-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534635858158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/i386/tcg/emit.c.inc | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 41bf047b8d..639a1eb638 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -2094,34 +2094,15 @@ static void gen_IMUL3(DisasContext *s, X86DecodedIn= sn *decode) =20 case MO_32: #ifdef TARGET_X86_64 - if (TCG_TARGET_REG_BITS =3D=3D 64) { - /* - * This produces fewer TCG ops, and better code if flags are n= eeded, - * but it requires a 64-bit multiply even if they are not. Us= e it - * only if the target has 64-bits registers. - * - * s->T0 is already sign-extended. - */ - tcg_gen_ext32s_tl(s->T1, s->T1); - tcg_gen_mul_tl(s->T0, s->T0, s->T1); - /* Compare the full result to the extension of the truncated r= esult. */ - tcg_gen_ext32s_tl(s->T1, s->T0); - cc_src_rhs =3D s->T0; - } else { - /* Variant that only needs a 32-bit widening multiply. */ - TCGv_i32 hi =3D tcg_temp_new_i32(); - TCGv_i32 lo =3D tcg_temp_new_i32(); - tcg_gen_trunc_tl_i32(lo, s->T0); - tcg_gen_trunc_tl_i32(hi, s->T1); - tcg_gen_muls2_i32(lo, hi, lo, hi); - tcg_gen_extu_i32_tl(s->T0, lo); - - cc_src_rhs =3D tcg_temp_new(); - tcg_gen_extu_i32_tl(cc_src_rhs, hi); - /* Compare the high part to the sign bit of the truncated resu= lt */ - tcg_gen_sari_i32(lo, lo, 31); - tcg_gen_extu_i32_tl(s->T1, lo); - } + /* + * This produces fewer TCG ops, and better code if flags are neede= d. + * s->T0 is already sign-extended. + */ + tcg_gen_ext32s_tl(s->T1, s->T1); + tcg_gen_mul_tl(s->T0, s->T0, s->T1); + /* Compare the full result to the extension of the truncated resul= t. */ + tcg_gen_ext32s_tl(s->T1, s->T0); + cc_src_rhs =3D s->T0; break; =20 case MO_64: --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535318; cv=none; d=zohomail.com; s=zohoarc; b=ZxE4Hzpfp+IKPr7zyhr8lyawEAAIK2ZkseHnGhSK21NEZz3Uk2Tl5mwB8gqqKrz4uJ/oH62+HQA9DaNqdXRzFEByg/RwLNYyFnccUDE5mUQRPuKdm1qhK79vW2FmZTwAdksm0G82MLDRKKEvdfb1hLcbBUuGYrfbOyjC4TmAkx8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535318; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=85REHlkWJDtWsilQDfbxqyO96MGCDiDn4G3cKbUWWrA=; b=Sb27n5AQvSn634bVkxTLIJlbvVEMJ9PRRJIUI/NVE1klVDxKHkS3g2d06C7vZz4AaC9I9hgDGYBjbIsy9D80rtmXU6h8MCKDMvrieW4+eyqOed6UyBFks0Dd+4H4wXWYNMNHneR/TuiTEzUZleRqziuSSNJXqHweYiMorNB1CVM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535318875999.0946263873265; Thu, 15 Jan 2026 19:48:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgag6-00051e-R5; Thu, 15 Jan 2026 22:39:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgafo-0004wT-Qp for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:38:57 -0500 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgafl-0008Ey-Ur for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:38:55 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2a09a3bd9c5so11449185ad.3 for ; Thu, 15 Jan 2026 19:38:53 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.38.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:38:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534732; x=1769139532; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=85REHlkWJDtWsilQDfbxqyO96MGCDiDn4G3cKbUWWrA=; b=yBLJ+y7+hSv/RNO0+L4Jk9+NS2bgnSLV8VjDgLnL2YCWxV2Usl/tBrqX/D82FlXH/m Th8V5hGeSToDjCnZAU+WLbE88+fiPaJES0VAV2vRDiCtfODmx7RYa26PcNOKjAfAFF7X ZB9kOnmVTgSw+uSUxRAeeG7rdewLju34mm3x2/sh92tNosxXw3qfmS1vp5jXYjK3DI78 qsZfEoO3vc39zS4Iez4Cns/Uwul8wVcKmFr6ultXokHdFcSq38PIn9N19Nnp7LIAvBc/ LKqMs2ikDM+FvnJLDq2rhfX4DMjwaQpUT3vuQuTTGXeCKyh1vJ3VSU/ZXMrdvBjFGJXG EwGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534732; x=1769139532; 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; bh=85REHlkWJDtWsilQDfbxqyO96MGCDiDn4G3cKbUWWrA=; b=KZScFrWMaFv5kaKYdBhwO5zmLjHakXN7BDex9l/Ow61w19pXJEhWbe3w2o9KQgc9QC Rg686qeJL667x56I901wCzhBfh5PRyl2Q+NyKlBhzRGEUSdajku0FrcSo66b1SX/Q6AV DdNqAq8PCX0OP00+9K3aToN+NRQGzfphjPU7D+8BATNiMeJqOsOAPaTb4n1iXlSvN2d7 gu4Y2XBYO+0kBQEb981B1H4JZE/sajpznEcnK7czoDQoFsZZ8bianfrQK0uVl3ey5iHO iLpORt6WGYryw3sv6fdXjYmf2hfSkJOC4I8+fwrY85P153hXTkeyj7UhnVMPe+Jrh5p8 uRDg== X-Gm-Message-State: AOJu0YyAI1ccs79R10IEw5qHe32wlDSd86Csz1eYvYcOFUXUUUPzqOi7 yrgEPbPMAwveXySvPUw9UL9thyrk33ZxbGQWhweshwLpwvpuODN/5/a/cT6Eqw51dvPChLN982c ZysQhX+mZLw== X-Gm-Gg: AY/fxX6paFcXYiyAiCa0cESpLoE00p0fKArQJbdgONrkuPY1Siq2e4vV3QKkjE483HK HxdPctfILmhtl97RVmj/e8y8bfVhGxA27k0a3Nsr18ouldXS9I1E6r1otrWU8xCesXe90p1vsjR QyTavySS2BBEKchuUVeqOndH7KW4LA+aVK1e/MM41kZEnkG4Yn298PAYPlo2bzjSpDZAg/XNURI oRVOXOrZqivqKwyL9hrTa2Iq1Eyej2hant5M766o4eORO+yKL4cVae0DXN3F8odz9frcxAkmfYS UJ5miZEb4/B3CJoBPcrrQxhUPe58ZclDNLCfUod93rJXKsC2x3m0YmgIyvu3e61EaFmdVHjs4Xy lriQJVLABP/KA88y9kxZf53Ijit14yJL0Rork5IRQ7nMhBmyG149pbhPFkD+7X14nk5E6SdQ4f2 Hwo58TJEHyHlGQg+Ks+Q== X-Received: by 2002:a17:903:2443:b0:2a0:c35c:572e with SMTP id d9443c01a7336-2a7188f91c2mr17216255ad.30.1768534732404; Thu, 15 Jan 2026 19:38:52 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 40/58] target/riscv: Drop TCG_TARGET_REG_BITS test Date: Fri, 16 Jan 2026 14:32:46 +1100 Message-ID: <20260116033305.51162-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768535320265158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/riscv/insn_trans/trans_rvv.c.inc | 54 ++++++------------------- 1 file changed, 13 insertions(+), 41 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index caefd38216..4df9a40b44 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -1181,60 +1181,32 @@ static bool ldst_whole_trans(uint32_t vd, uint32_t = rs1, uint32_t nf, * Update vstart with the number of processed elements. * Use the helper function if either: * - vstart is not 0. - * - the target has 32 bit registers and we are loading/storing 64 bit= long - * elements. This is to ensure that we process every element with a = single - * memory instruction. */ =20 - bool use_helper_fn =3D !(s->vstart_eq_zero) || - (TCG_TARGET_REG_BITS =3D=3D 32 && log2_esz =3D= =3D 3); + bool use_helper_fn =3D !s->vstart_eq_zero; =20 if (!use_helper_fn) { - TCGv addr =3D tcg_temp_new(); uint32_t size =3D s->cfg_ptr->vlenb * nf; TCGv_i64 t8 =3D tcg_temp_new_i64(); - TCGv_i32 t4 =3D tcg_temp_new_i32(); MemOp atomicity =3D MO_ATOM_NONE; if (log2_esz =3D=3D 0) { atomicity =3D MO_ATOM_NONE; } else { atomicity =3D MO_ATOM_IFALIGN_PAIR; } - if (TCG_TARGET_REG_BITS =3D=3D 64) { - for (int i =3D 0; i < size; i +=3D 8) { - addr =3D get_address(s, rs1, i); - if (is_load) { - tcg_gen_qemu_ld_i64(t8, addr, s->mem_idx, - MO_LE | MO_64 | atomicity); - tcg_gen_st_i64(t8, tcg_env, vreg_ofs(s, vd) + i); - } else { - tcg_gen_ld_i64(t8, tcg_env, vreg_ofs(s, vd) + i); - tcg_gen_qemu_st_i64(t8, addr, s->mem_idx, - MO_LE | MO_64 | atomicity); - } - if (i =3D=3D size - 8) { - tcg_gen_movi_tl(cpu_vstart, 0); - } else { - tcg_gen_addi_tl(cpu_vstart, cpu_vstart, 8 >> log2_esz); - } + for (int i =3D 0; i < size; i +=3D 8) { + TCGv addr =3D get_address(s, rs1, i); + if (is_load) { + tcg_gen_qemu_ld_i64(t8, addr, s->mem_idx, MO_LEUQ | atomic= ity); + tcg_gen_st_i64(t8, tcg_env, vreg_ofs(s, vd) + i); + } else { + tcg_gen_ld_i64(t8, tcg_env, vreg_ofs(s, vd) + i); + tcg_gen_qemu_st_i64(t8, addr, s->mem_idx, MO_LEUQ | atomic= ity); } - } else { - for (int i =3D 0; i < size; i +=3D 4) { - addr =3D get_address(s, rs1, i); - if (is_load) { - tcg_gen_qemu_ld_i32(t4, addr, s->mem_idx, - MO_LE | MO_32 | atomicity); - tcg_gen_st_i32(t4, tcg_env, vreg_ofs(s, vd) + i); - } else { - tcg_gen_ld_i32(t4, tcg_env, vreg_ofs(s, vd) + i); - tcg_gen_qemu_st_i32(t4, addr, s->mem_idx, - MO_LE | MO_32 | atomicity); - } - if (i =3D=3D size - 4) { - tcg_gen_movi_tl(cpu_vstart, 0); - } else { - tcg_gen_addi_tl(cpu_vstart, cpu_vstart, 4 >> log2_esz); - } + if (i =3D=3D size - 8) { + tcg_gen_movi_tl(cpu_vstart, 0); + } else { + tcg_gen_addi_tl(cpu_vstart, cpu_vstart, 8 >> log2_esz); } } } else { --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534943; cv=none; d=zohomail.com; s=zohoarc; b=XqCORVWsmO0XyQcSCvLDt/CTtGhhmxAtZbSOa59axKHYWKnyFWTJBv4YoP7IT0181rUB9Im68Y17Uq2cioSe4i60hVllosDEre5YJstvjpUBk+BKgcKujLpkz7/WWoZWQYWwih9kyrsiaL/lPsm8JzsxTSFjuIHcZ75orNifigs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534943; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dIX8M3PeuiegMB+HRi2DRYnSj2Vd5HpfS+cGE/3s+Sk=; b=Qingn7EmoNzrMKYEFiH6RJbIVO8eM0jsaFxilULgbUnXDrt1wwUdWMO/qX9i1bkJmHWlSVHGgXAjiEI347nuo/9xBdUTBSxpRlAUWU7dT3+NJktNcX+Leg11bJt8FycE9+rUSranUUZkqmem0kxEFRU5qlRZQPR7gRqipdDsWZ0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534943665538.7577740131788; Thu, 15 Jan 2026 19:42:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagJ-00055l-N4; Thu, 15 Jan 2026 22:39:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgafs-0004xK-Lw for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:07 -0500 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgafp-0008G9-DD for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:38:58 -0500 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2a102494058so12857995ad.0 for ; Thu, 15 Jan 2026 19:38:57 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.38.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:38:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534736; x=1769139536; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dIX8M3PeuiegMB+HRi2DRYnSj2Vd5HpfS+cGE/3s+Sk=; b=oGGvkb8pZWfud1EdWtaFvycUoHpORCM43iLGz0yoFBMopIzvhwwSzUIgdoynn/itKw wxpF2h4qaPyc+URJ9SPNdzsek5dKedy2BBWrOSF9l3w5CCb4ZdiBMedpprgC8qZ9YDLZ +LooI6SpE9Xg5QLUTE2+h/l5zZFYnWcD8LHxLj3j2a4u8dgIjM+tT+mxUlWx7A8A7NFZ Ft2OokDLjGAeXRN+SR83yZhuYVj297fT5z8LxUT7tlhzM53bhcM1qP/XqGFcapPxRERg ebV28/KyCPeNBOZEeISncI3Zc3C0NYY6/IqaI4FXjaIqhROPvXIBjs1ySegPMnO2DwHg SXzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534736; x=1769139536; 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; bh=dIX8M3PeuiegMB+HRi2DRYnSj2Vd5HpfS+cGE/3s+Sk=; b=meM3QCOhofCQCkr7Z+PM73UZlcY5iazdabQio/SSTMQMht9/N9DdU31ROiXoWIoUuP S7HLfuppRkOgvJLWThhkvPsWIjwUDNJr1Dxvm0vt7o0gnxu5UzX36BSbd1ywj0GTFFMl 77hbQ7zHNO/Q1Ly9Ees940X1WSZdc0oR72Kc0eE6V3oqntZyfBWtHLa//WeR0Y5JdQJT CJBGDcTpvzeSVMhK0SfwC/FvIi/ywTiiP2B5+VEfGLcqekh6xD85HGHpHQ3A9baR4btF P+sMg1R8oEhylbud7uFRSAVd/SyAJVwjVG0IPpU6TboRc6lrasxDCFjhf46RIiXCE+2b 8cug== X-Gm-Message-State: AOJu0YzwNkv7/EZYqhHDi9AMwyH1FXsTmYc0gHmpWTuWTuDRC5H00s6j pMG4yA3uGXA+57FyHsaon1n65mkiyI1COvZEBwU6c0rTPVsGEsKk2QKX1SgFXk16C1/Xpgiuszu A5O1Wh81/4w== X-Gm-Gg: AY/fxX7ZF8iu7Ru/QYDV7we0gHz9CNdjTxjCfCLU2wrLYqIwOcpyfDkikOBXRUbMrfU 6GnFUePCp9xuWuoWk2CT60J4yQaOaJ/IZPqQv/5qWKLqMIwk3sU9aOzlEo05UDwTiY0vlpWvqX2 eMIAacjaYyOe2KbaH/ZBMbQvwT6qSSEVubfdtL2fnbSbItNi/H6yR3srA22LzkNuGKT+gI5ZGUt pwoyQ4fOVE+2hrfLJFfxZXbkV+8pz8qJm9dKQwYZR23xj6emhDL5n3N731sxcspiakWoDh4s3lE DJmwGjCz8852nAvMZLoAbrUOaeAq2jRMke+i1SlmDknTk/3HQJHMPl7SqLOsgAnZjZ5KLnkGe1y jmCnxH9h9NP6GYYuqHuzjl3394JikNPd4WO2kdox3CXH3bRZIWNRgRlxPD4KCefGPkMyyFyvj0T A8RGM2qPHWH4PiCwX0Vw== X-Received: by 2002:a17:902:f689:b0:29e:e5e6:247c with SMTP id d9443c01a7336-2a700a1abc8mr48501055ad.14.1768534735905; Thu, 15 Jan 2026 19:38:55 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 41/58] accel/tcg/runtime: Remove 64-bit shift helpers Date: Fri, 16 Jan 2026 14:32:47 +1100 Message-ID: <20260116033305.51162-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534945040158500 Content-Type: text/plain; charset="utf-8" These were only required for some 32-bit hosts. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- accel/tcg/tcg-runtime.h | 4 ---- accel/tcg/tcg-runtime.c | 15 --------------- 2 files changed, 19 deletions(-) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index 8436599b9f..698e9baa29 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -8,10 +8,6 @@ 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) =20 -DEF_HELPER_FLAGS_2(shl_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_2(shr_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_2(sar_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) - 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 fa7ed9739c..f483c9c2ba 100644 --- a/accel/tcg/tcg-runtime.c +++ b/accel/tcg/tcg-runtime.c @@ -55,21 +55,6 @@ uint32_t HELPER(remu_i32)(uint32_t arg1, uint32_t arg2) =20 /* 64-bit helpers */ =20 -uint64_t HELPER(shl_i64)(uint64_t arg1, uint64_t arg2) -{ - return arg1 << arg2; -} - -uint64_t HELPER(shr_i64)(uint64_t arg1, uint64_t arg2) -{ - return arg1 >> arg2; -} - -int64_t HELPER(sar_i64)(int64_t arg1, int64_t arg2) -{ - return arg1 >> arg2; -} - int64_t HELPER(div_i64)(int64_t arg1, int64_t arg2) { return arg1 / arg2; --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535284; cv=none; d=zohomail.com; s=zohoarc; b=OcILQugHZCuA9hPxLy5LCC3hj8guuKkAXj0E+qJAL7z8+kGn28k2ziURPYehunLJOJmLnYZrx6Ss+U0Pl3cX62aP/D+uOS61QK5PGzyLCqCwwm+R93y1xSHGIW6tvu2sauFR0/pCYKU2f7jxGc42drYxgDNhauWMepx/ue4i3so= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535284; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=joRi6369pVbDsKfJdtidvp6zyQujsSJuuqqcthZ9YJA=; b=l0sdBIXwqFxskxIMCexbT2G5QL4SDLaoDV9ab5qOoXsEhWRKWlIoPNMfRZ38uYC8M9Z+zCejQ6ElqpCw8fhSxrN7tkkGQp9S9Y5jrc109r0ZkBnki4etaRnZ/cCe3sD+5elYiRF/GsspTmm8OMt1v+e4GTXtKdmXnDIPam9FCFw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176853528416539.01591329151188; Thu, 15 Jan 2026 19:48:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagL-00056z-7Z; Thu, 15 Jan 2026 22:39:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgafu-0004xU-8v for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:07 -0500 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgafs-0008HP-PB for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:02 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2a09d981507so11113505ad.1 for ; Thu, 15 Jan 2026 19:39:00 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.38.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:38:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534739; x=1769139539; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=joRi6369pVbDsKfJdtidvp6zyQujsSJuuqqcthZ9YJA=; b=pPRfhSPBzBVJ9Va1y4uwHlamj59KAKd5VCp1R5JtT7SyVpjWMAR7I1quc4PeMJ1Ii2 Blhdx1wy43rbQDNax4w+KPaFcSyLgU9KpRRkOndRLOQmtEkXWrxRTd1QNyKUra/hPzjB onWF+753Ue3jaZS4nRoKxYh2sljMqRi8D4A1sOaNrVc4ZUIyOhbfHAfzd+beIs7/ouRY 12pmPOPYPlXckpJBEYzv4bNKvU3JCWH1c075CeOO3d5oTxK9x9KMn3z0tD5zcuD44cUt tf6Y0VzCnZVKqdvk+YuxbtoFzd3EDr6q2oQOA6mWsgjPN7mpeesQ9DZt89+WTwpEvH+B PXMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534739; x=1769139539; 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; bh=joRi6369pVbDsKfJdtidvp6zyQujsSJuuqqcthZ9YJA=; b=PUklkT/HNPcRJtBBBKmOZ5q9gFXbEKxOJf0JVR+DOIlcq4ndc+C4iF6hUnXUdw/yH+ ZSD0k6ZhlgkfIrIwLN2qFj6Bra8e6wsxSIqbABJznOHPhzmcyO9FwnNAsxuEeX+IKe8c l+9NpHLGjsaQBdMJHW17zCiGKRv/IjU1AvPaGbTsgDtxrC99PYroSuXIH22aMDtCsgt4 05rqeYb3i/U/JQe8zyQmwuvPRu08U29mBdDx+H8C677EWdufcJ4CO9UnkrA+2hifMiLw RmaqtyNbIYbsNLAZAg0sYPpsz8+Xn4D4t9hp0hUAmY17WJFS+7I92grmAFIu57+lidy+ gEsQ== X-Gm-Message-State: AOJu0Yxuhi9+XsAmAAxNF+EZkJwDeq8Fl10VWvPi9Vdm50CkKYBp8jTg MPLkU3Gj7/Y+Xxf2XBsRj7+wvws4EyW3CuvcAn+OZM5HmEYKBjLw/BIqkP8WAIqHJtq6I6OiItg RTpkCKUY+lA== X-Gm-Gg: AY/fxX5g2sYyju3kSmpgbMo62pYG6fZpc4ByjjanfKMz7v4nVgsplMkBjh1XSsg197G K3YHPRVa7u/S6e/HTC+VaYtg09S+Ub8f5ZgswhpRneCeiouIOyoP/VmKlqo46tAqjBaeCTVf8DG veQPxco7mYahHRV4oyRkzzTRPbqd6plbIpZ6JG7oGAHSq60T79Q1DvchhaksFQSYDPqwcZt/Cia kONN7rtiwE83j3XuzPzyy9c/EtXJv4NlPVmccrytDKkZjyeHxdF8jTYJswBefA2QH2GvaqwdQr1 SZam9SGabTIfEH7fz3S/i5NULpbEA3o0EfbUWWKtz5gesAJjW3+Vj4jnVmGs2CYkLXl4xOnOcA9 pI4jLCVeWCZMmAfzutZLRRTZvvDcXUAgjrLFdnNlSxpuQ+fa9/i485R5dwcHu0zRqbQZta89RY/ QecyjnREEGYToDU2tA+g== X-Received: by 2002:a17:902:ea06:b0:295:28a4:f0c6 with SMTP id d9443c01a7336-2a71744bd09mr17126365ad.0.1768534739406; Thu, 15 Jan 2026 19:38:59 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 42/58] accel/tcg/runtime: Remove helper_nonatomic_cmpxchgo Date: Fri, 16 Jan 2026 14:32:48 +1100 Message-ID: <20260116033305.51162-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768535286148158500 This were only required for some 32-bit hosts. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- accel/tcg/tcg-runtime.h | 3 --- accel/tcg/atomic_common.c.inc | 20 -------------------- 2 files changed, 23 deletions(-) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index 698e9baa29..dc89155c0f 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -73,9 +73,6 @@ DEF_HELPER_FLAGS_4(atomic_fetch_oro_le, TCG_CALL_NO_WG, i128, env, i64, i128, i32) #endif =20 -DEF_HELPER_FLAGS_5(nonatomic_cmpxchgo, TCG_CALL_NO_WG, - i128, env, i64, i128, i128, i32) - #ifdef CONFIG_ATOMIC64 #define GEN_ATOMIC_HELPERS(NAME) \ DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \ diff --git a/accel/tcg/atomic_common.c.inc b/accel/tcg/atomic_common.c.inc index bca93a0ac4..1ff80d19fe 100644 --- a/accel/tcg/atomic_common.c.inc +++ b/accel/tcg/atomic_common.c.inc @@ -59,26 +59,6 @@ CMPXCHG_HELPER(cmpxchgo_le, Int128) =20 #undef CMPXCHG_HELPER =20 -Int128 HELPER(nonatomic_cmpxchgo)(CPUArchState *env, uint64_t addr, - Int128 cmpv, Int128 newv, uint32_t oi) -{ -#if TCG_TARGET_REG_BITS =3D=3D 32 - uintptr_t ra =3D GETPC(); - Int128 oldv; - - oldv =3D cpu_ld16_mmu(env, addr, oi, ra); - if (int128_eq(oldv, cmpv)) { - cpu_st16_mmu(env, addr, newv, oi, ra); - } else { - /* Even with comparison failure, still need a write cycle. */ - probe_write(env, addr, 16, get_mmuidx(oi), ra); - } - return oldv; -#else - g_assert_not_reached(); -#endif -} - #define ATOMIC_HELPER(OP, TYPE) \ TYPE HELPER(glue(atomic_,OP))(CPUArchState *env, uint64_t addr, \ TYPE val, uint32_t oi) \ --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535234; cv=none; d=zohomail.com; s=zohoarc; b=dSJuHHkUMMgIbGRh/qwKODYkdQoo1ev/+w0j5M10xWzZlF11e/9VX2XM9yF4Z8hhydlZ+ExPPh+plrcC+fxRIyMSgOFGm5j8faCMDe//HWRAVonO4WQjZORPW+AOtGqqy3iehvpcTy49f2O41BbB8bOCtlCKNRpYi5EhHI7StXQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535234; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0laMDFdu0GCNRz+fuF/L/mWxDMERFitEw5PSc+47rq0=; b=UEexQOMDpDgqzt5Kh1/mevb68vQmAt98GlfvbqDwk8hkAMFJqy2gjxaHOEjMeyAs+xHip19RlTUkyYgUQYguWSNPcrym98n28tmueT26+Cqsq92q4Uvg3fkdt2gCx6ZDLvGX2L8RFNELWUoyk/fdJ7icNuwwuLCO1tcZV41QGJw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535234113907.5950651774185; Thu, 15 Jan 2026 19:47:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagK-00056S-4w; Thu, 15 Jan 2026 22:39:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgafy-0004xx-Cm for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:08 -0500 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgafw-0008Im-J3 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:06 -0500 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-29f2676bb21so15492445ad.0 for ; Thu, 15 Jan 2026 19:39:04 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.38.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534743; x=1769139543; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0laMDFdu0GCNRz+fuF/L/mWxDMERFitEw5PSc+47rq0=; b=slbiI6NaU5XeWOWBkXlbLHC+Z8Ru3d6M98ajsYXF4EL8c9bvp0pWepg1k2XIFIh4om V+9WZDDbnQV/uActgqwLtNOz1SPv25jg1/C/4TFasfe+5gqL0QKbx/6/AZNJnzPbtpJ2 SB3deC2ZWXTlH1yyk02iuZhhHvCwW+QgcY1vIxuGShIfabXajLERH7/tn6c7cvjExg8P D63SI/uU4H++O6m0R+Eat8GLir6/6xjZcPRd1iu0zya6x63lsKsLiuk9fvLNmOwNULqi rS/LeR2WQi71lGm7SgOHt4umY2TjUDLQogWTHBRxwDAKQugstEv0MXGoRoRqMHwomwFk X+Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534743; x=1769139543; 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; bh=0laMDFdu0GCNRz+fuF/L/mWxDMERFitEw5PSc+47rq0=; b=O4k+sn3tXB8ZLEhaju+Iz8IwweE3JL+tT2Nja8bIHKTZOtBAY1gCRrqantYzWWxJBo QLGzDKMCwZ/fpKZkxDfW4BTIJD4kdsfhswYXweLri5mm2lCMLwikNQ2UEDdOSpbgHHh0 Ba35zJOCpto306GgUCoRQ+39MRisGBLqSw4DFkzL0BRNHPNV/bbtXyyLRyX6u/v8RU3q WvQr2bETsVCtcEBa9mu/2b/Lkux2scQWRxAZmsjCHz1us4Ea2VG2zHnNsjPrJ0ENNhkL XCeGSEgqNjn0CjvMb7LuXqq9NaUZdSyOcbHPlbx5w+nIw0Up91q2szwJcSyi1JofxXIk ON3A== X-Gm-Message-State: AOJu0YyR7XS1o3MPQ+/Wdb65o0DAgezi34EUzcQOF/E0/zEY4u6W7MJQ DpB5IZKHgcfbGAkQ2VS1anIWtGj04R+Fs2Fq4HhRB9rDdNjbF23vHaikhfCeRcZTeyPexi8tQ8U IwBJ6vgt6Qw== X-Gm-Gg: AY/fxX5PO0ZtFFXwuskfJ+KAtQBn/mTcXBELSfAHbJbwqwM2mqnIP2YnILMhUwDQFq1 sStPp80AFNeVyd/qWZobZYYx87MHqLYE3h3+bE194JPTDXIovQAqCItPtFyfcFEyd5Q16HhW7Lc c597Y7MXkCAVDr8P5DrPE0VtZ+9W2Q38xMHmu/uRfmVv+DjJ2bda5izwhyuO2JqVQtWs33NHDjH sp4F4CvVu6Znv/+f2ecS6mXBIxVlgsQwvTgHU+/+PVpAhAABrsE4E0e+jRKTnoJZnnJskbzf94v y/U6X7jLX05UNV9aQEJayj4J2KUARqTKflMwd7Es/fDBgT2MQBES+59Kf5Xqif5zkbuVYs2A56F loUNDX4udeHnUPHj1ay36hI6pMIN16hwrKpb78N+Z3swq3YLeNX2OjNem5TeOY61zu61vgXo2Mn VrUAoBTbRMM3+p/QsgVe+LUnDiZxu5 X-Received: by 2002:a17:902:d549:b0:297:e69d:86ac with SMTP id d9443c01a7336-2a718914867mr13940765ad.39.1768534743201; Thu, 15 Jan 2026 19:39:03 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 43/58] tcg: Unconditionally define atomic64 helpers Date: Fri, 16 Jan 2026 14:32:49 +1100 Message-ID: <20260116033305.51162-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768535236285158500 Content-Type: text/plain; charset="utf-8" CONFIG_ATOMIC64 is a configuration knob for 32-bit hosts. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- accel/tcg/tcg-runtime.h | 16 ---------------- include/accel/tcg/cpu-ldst-common.h | 9 --------- accel/tcg/cputlb.c | 2 -- accel/tcg/user-exec.c | 2 -- tcg/tcg-op-ldst.c | 17 ++++++----------- accel/tcg/atomic_common.c.inc | 12 ------------ 6 files changed, 6 insertions(+), 52 deletions(-) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index dc89155c0f..0b832176b3 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -48,12 +48,10 @@ DEF_HELPER_FLAGS_5(atomic_cmpxchgl_be, TCG_CALL_NO_WG, i32, env, i64, i32, i32, i32) DEF_HELPER_FLAGS_5(atomic_cmpxchgl_le, TCG_CALL_NO_WG, i32, env, i64, i32, i32, i32) -#ifdef CONFIG_ATOMIC64 DEF_HELPER_FLAGS_5(atomic_cmpxchgq_be, TCG_CALL_NO_WG, i64, env, i64, i64, i64, i32) DEF_HELPER_FLAGS_5(atomic_cmpxchgq_le, TCG_CALL_NO_WG, i64, env, i64, i64, i64, i32) -#endif #if HAVE_CMPXCHG128 DEF_HELPER_FLAGS_5(atomic_cmpxchgo_be, TCG_CALL_NO_WG, i128, env, i64, i128, i128, i32) @@ -73,7 +71,6 @@ DEF_HELPER_FLAGS_4(atomic_fetch_oro_le, TCG_CALL_NO_WG, i128, env, i64, i128, i32) #endif =20 -#ifdef CONFIG_ATOMIC64 #define GEN_ATOMIC_HELPERS(NAME) \ DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \ TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ @@ -89,19 +86,6 @@ DEF_HELPER_FLAGS_4(atomic_fetch_oro_le, TCG_CALL_NO_WG, TCG_CALL_NO_WG, i64, env, i64, i64, i32) \ DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_be), \ TCG_CALL_NO_WG, i64, env, i64, i64, i32) -#else -#define GEN_ATOMIC_HELPERS(NAME) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) -#endif /* CONFIG_ATOMIC64 */ =20 GEN_ATOMIC_HELPERS(fetch_add) GEN_ATOMIC_HELPERS(fetch_and) diff --git a/include/accel/tcg/cpu-ldst-common.h b/include/accel/tcg/cpu-ld= st-common.h index 17a3250ded..f12be8cfb7 100644 --- a/include/accel/tcg/cpu-ldst-common.h +++ b/include/accel/tcg/cpu-ldst-common.h @@ -60,7 +60,6 @@ TYPE cpu_atomic_ ## NAME ## SUFFIX ## _mmu \ (CPUArchState *env, vaddr addr, TYPE val, \ MemOpIdx oi, uintptr_t retaddr); =20 -#ifdef CONFIG_ATOMIC64 #define GEN_ATOMIC_HELPER_ALL(NAME) \ GEN_ATOMIC_HELPER(NAME, uint32_t, b) \ GEN_ATOMIC_HELPER(NAME, uint32_t, w_le) \ @@ -69,14 +68,6 @@ TYPE cpu_atomic_ ## NAME ## SUFFIX ## _mmu \ GEN_ATOMIC_HELPER(NAME, uint32_t, l_be) \ GEN_ATOMIC_HELPER(NAME, uint64_t, q_le) \ GEN_ATOMIC_HELPER(NAME, uint64_t, q_be) -#else -#define GEN_ATOMIC_HELPER_ALL(NAME) \ - GEN_ATOMIC_HELPER(NAME, uint32_t, b) \ - GEN_ATOMIC_HELPER(NAME, uint32_t, w_le) \ - GEN_ATOMIC_HELPER(NAME, uint32_t, w_be) \ - GEN_ATOMIC_HELPER(NAME, uint32_t, l_le) \ - GEN_ATOMIC_HELPER(NAME, uint32_t, l_be) -#endif =20 GEN_ATOMIC_HELPER_ALL(fetch_add) GEN_ATOMIC_HELPER_ALL(fetch_sub) diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index c30073326a..a6774083b0 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -2886,10 +2886,8 @@ static void do_st16_mmu(CPUState *cpu, vaddr addr, I= nt128 val, #define DATA_SIZE 4 #include "atomic_template.h" =20 -#ifdef CONFIG_ATOMIC64 #define DATA_SIZE 8 #include "atomic_template.h" -#endif =20 #if defined(CONFIG_ATOMIC128) || HAVE_CMPXCHG128 #define DATA_SIZE 16 diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 1800dffa63..ddbdc0432d 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -1258,10 +1258,8 @@ static void *atomic_mmu_lookup(CPUState *cpu, vaddr = addr, MemOpIdx oi, #define DATA_SIZE 4 #include "atomic_template.h" =20 -#ifdef CONFIG_ATOMIC64 #define DATA_SIZE 8 #include "atomic_template.h" -#endif =20 #if defined(CONFIG_ATOMIC128) || HAVE_CMPXCHG128 #define DATA_SIZE 16 diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index 55bfbf3a20..354d9968f9 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -825,11 +825,6 @@ typedef void (*gen_atomic_op_i64)(TCGv_i64, TCGv_env, = TCGv_i64, typedef void (*gen_atomic_op_i128)(TCGv_i128, TCGv_env, TCGv_i64, TCGv_i128, TCGv_i32); =20 -#ifdef CONFIG_ATOMIC64 -# define WITH_ATOMIC64(X) X, -#else -# define WITH_ATOMIC64(X) -#endif #if HAVE_CMPXCHG128 # define WITH_ATOMIC128(X) X, #else @@ -842,8 +837,8 @@ static void * const table_cmpxchg[(MO_SIZE | MO_BSWAP) = + 1] =3D { [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, - WITH_ATOMIC64([MO_64 | MO_LE] =3D gen_helper_atomic_cmpxchgq_le) - WITH_ATOMIC64([MO_64 | MO_BE] =3D gen_helper_atomic_cmpxchgq_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) }; @@ -1235,8 +1230,8 @@ static void * const table_##NAME[(MO_SIZE | MO_BSWAP)= + 1] =3D { \ [MO_16 | MO_BE] =3D gen_helper_atomic_##NAME##w_be, \ [MO_32 | MO_LE] =3D gen_helper_atomic_##NAME##l_le, \ [MO_32 | MO_BE] =3D gen_helper_atomic_##NAME##l_be, \ - WITH_ATOMIC64([MO_64 | MO_LE] =3D gen_helper_atomic_##NAME##q_le) \ - WITH_ATOMIC64([MO_64 | MO_BE] =3D gen_helper_atomic_##NAME##q_be) \ + [MO_64 | MO_LE] =3D gen_helper_atomic_##NAME##q_le, \ + [MO_64 | MO_BE] =3D gen_helper_atomic_##NAME##q_be, \ 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) \ }; \ @@ -1287,8 +1282,8 @@ static void * const table_##NAME[(MO_SIZE | MO_BSWAP)= + 1] =3D { \ [MO_16 | MO_BE] =3D gen_helper_atomic_##NAME##w_be, \ [MO_32 | MO_LE] =3D gen_helper_atomic_##NAME##l_le, \ [MO_32 | MO_BE] =3D gen_helper_atomic_##NAME##l_be, \ - WITH_ATOMIC64([MO_64 | MO_LE] =3D gen_helper_atomic_##NAME##q_le) \ - WITH_ATOMIC64([MO_64 | MO_BE] =3D gen_helper_atomic_##NAME##q_be) \ + [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, \ diff --git a/accel/tcg/atomic_common.c.inc b/accel/tcg/atomic_common.c.inc index 1ff80d19fe..7d779dd51d 100644 --- a/accel/tcg/atomic_common.c.inc +++ b/accel/tcg/atomic_common.c.inc @@ -46,11 +46,8 @@ CMPXCHG_HELPER(cmpxchgw_be, uint32_t) CMPXCHG_HELPER(cmpxchgw_le, uint32_t) CMPXCHG_HELPER(cmpxchgl_be, uint32_t) CMPXCHG_HELPER(cmpxchgl_le, uint32_t) - -#ifdef CONFIG_ATOMIC64 CMPXCHG_HELPER(cmpxchgq_be, uint64_t) CMPXCHG_HELPER(cmpxchgq_le, uint64_t) -#endif =20 #if HAVE_CMPXCHG128 CMPXCHG_HELPER(cmpxchgo_be, Int128) @@ -64,7 +61,6 @@ CMPXCHG_HELPER(cmpxchgo_le, Int128) TYPE val, uint32_t oi) \ { return glue(glue(cpu_atomic_,OP),_mmu)(env, addr, val, oi, GETPC());= } =20 -#ifdef CONFIG_ATOMIC64 #define GEN_ATOMIC_HELPERS(OP) \ ATOMIC_HELPER(glue(OP,b), uint32_t) \ ATOMIC_HELPER(glue(OP,w_be), uint32_t) \ @@ -73,14 +69,6 @@ CMPXCHG_HELPER(cmpxchgo_le, Int128) ATOMIC_HELPER(glue(OP,l_le), uint32_t) \ ATOMIC_HELPER(glue(OP,q_be), uint64_t) \ ATOMIC_HELPER(glue(OP,q_le), uint64_t) -#else -#define GEN_ATOMIC_HELPERS(OP) \ - ATOMIC_HELPER(glue(OP,b), uint32_t) \ - ATOMIC_HELPER(glue(OP,w_be), uint32_t) \ - ATOMIC_HELPER(glue(OP,w_le), uint32_t) \ - ATOMIC_HELPER(glue(OP,l_be), uint32_t) \ - ATOMIC_HELPER(glue(OP,l_le), uint32_t) -#endif =20 GEN_ATOMIC_HELPERS(fetch_add) GEN_ATOMIC_HELPERS(fetch_and) --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535288; cv=none; d=zohomail.com; s=zohoarc; b=ILub3f3rsGGNTtNFG2pFOTD554pGgMzv3DypNHTzzqGlxdjoozIhe1BnkG6ef3th8UQwqCjd+6FmimUEeHNzAfe1dIOiXagj5bOCZ0HpuVzn1ly/3Ey8o9YXqVXNO0ZF1x9O6oQsALrvQZpBX/diK9iWaBHHyvP0leAMEKJpmys= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535288; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rE9SCEsfxqLkJO7HvWLWosr5Ikr+Oai+wZCJ1H9Hel0=; b=jQoSOvwz5InsTiYZMWvI45MBVHhzf3VwSu1IBA+W3agNZXELIm7AV8Oyef2u/L8FTkTqjy7gNYB8HTNil5Dp/oPNAcWF01QBfWypiyba1F/XjrU2lHKQB+a7n5HEBTZCv0A4SD6ADzAdQrH7TKSTsvCGbc/dm74e5ptx9I/60Wg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535288553655.2639250951735; Thu, 15 Jan 2026 19:48:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagM-00058M-AU; Thu, 15 Jan 2026 22:39:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgag2-0004zY-Kd for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:12 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgag0-0008K6-Dn for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:10 -0500 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2a0f3f74587so10549335ad.2 for ; Thu, 15 Jan 2026 19:39:08 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534747; x=1769139547; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rE9SCEsfxqLkJO7HvWLWosr5Ikr+Oai+wZCJ1H9Hel0=; b=SY3mMigdQheB+1Geup1tkzWggIal8kWoh4kIEsP6G+PgwRwbRRyyqFP57/hEYxT3yQ jPR2nZfXywOnIbMGUor7krZYzi16ueapwflFvN0MhFaZy7/JwHWenPcmSL/F0KG0Q62q 8yooXRgdbEZFse4bXKQeRz6VJ+eT/kwtdjKdzB/No4GJh489FWTzlqckBr02zzev03/y iZowz6eDiXVYpf6R8c2//QYfh2sjKWuHjNDjlCe9hfiRn4Y6fRONwe4Yu4e5d144SwZ/ /yzp82C+3+0qKtBDc5A5hyckHZjHiCLmXqyxWyD4XYKJTGgyyYnTQJ+MCK1HVNV5pcmU AC4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534747; x=1769139547; 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; bh=rE9SCEsfxqLkJO7HvWLWosr5Ikr+Oai+wZCJ1H9Hel0=; b=XU9KqL20I9DKPi0ZXDE7zpCc8ZbnVP5tcmmPt5vejsxHuYBY27E0lImkwuKjLGguxl utOwyApVENgDAH21eqfl5WULHsu9K2NvIqNeBLRnogB+6JiY3yBWQxYElUuFjGQIpi4F fXto2Vtwj32+49DiilA6eZiZLjZITAttU/XX6YT2IlCfr/GydolNuBpZTdMOyfxiNTHi kjEhggaUGXRX0dgla2Y2bHxhn/0ELWa5VM9OL93x1a6Sx2kZNXqIu5YNQXdw/LHkNL61 KhcR54ugJBOrck6GQArbQUfXiIe4IkgAAbu0RwoOtAt1pH1vKmcC7QqmHaTCEK354NMn nRFQ== X-Gm-Message-State: AOJu0YyHNeNvfzlU0sEk7M5U7xluLG7N81R16WOG+6P4idXlfSNpNKWq NIVRcxVbpNX+9uTijRgZUaKN6Ix7Es34LVTADcCuXANXXgosVv2eQFyQBJXfTxd0yNMIA5y9oD7 XnAUAI1c36g== X-Gm-Gg: AY/fxX6ppmMfAJyQm3GS+Ar8IGLpu61y2kYZl6qd+dLvcUJ/93WqaxOpPHHC2RWsFYK xrLEiwY6MjYJYSQcDpK4t6aHRQneYBIxREn7Kqn5z2rRQdYYKJ8YMOY6mCXao8T6K5hPzIiu46l MW/tJ6Qx63rTck4M5tKEiin3MqENVAflykym8LNJeEr3oW648wn0LdR5g4P7cwUDN5WJjh7jcm5 37jXkwSexbYaQhM96xHTV/EX0sKUrLUzjoBWrdrvpjGR2V4H4yMq8tPZpINig3kQ1uLCVcHInY4 yz711sckmABOPwTLW60GeCXQxibMBXOzy6R5AvIcwkj20D0n/NaNcRLpuQY1xhKv9GGby8kuD2u 9q9csMAeKd3U8zWdOx13vS5QjMmf8bEMeKQdbShlcz69X+nNIYod1pnTxUDX9PTYv9C9i/mD12I r3MmFCETgVLxZbANl7uA== X-Received: by 2002:a17:903:40ca:b0:295:290d:4afa with SMTP id d9443c01a7336-2a71753755cmr16001485ad.23.1768534746802; Thu, 15 Jan 2026 19:39:06 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 44/58] accel/tcg: Drop CONFIG_ATOMIC64 checks from ldst_atomicicy.c.inc Date: Fri, 16 Jan 2026 14:32:50 +1100 Message-ID: <20260116033305.51162-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768535290271158501 Content-Type: text/plain; charset="utf-8" CONFIG_ATOMIC64 is a configuration knob for 32-bit hosts. This allows removal of functions like load_atomic8_or_exit and simplification of load_atom_extract_al8_or_exit to load_atom_extract_al8. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- accel/tcg/cputlb.c | 35 +------- accel/tcg/ldst_atomicity.c.inc | 149 +++++---------------------------- 2 files changed, 24 insertions(+), 160 deletions(-) diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index a6774083b0..6900a12682 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -2080,25 +2080,6 @@ static uint64_t do_ld_parts_beN(MMULookupPageData *p= , uint64_t ret_be) return ret_be; } =20 -/** - * do_ld_parts_be4 - * @p: translation parameters - * @ret_be: accumulated data - * - * As do_ld_bytes_beN, but with one atomic load. - * Four aligned bytes are guaranteed to cover the load. - */ -static uint64_t do_ld_whole_be4(MMULookupPageData *p, uint64_t ret_be) -{ - int o =3D p->addr & 3; - uint32_t x =3D load_atomic4(p->haddr - o); - - x =3D cpu_to_be32(x); - x <<=3D o * 8; - x >>=3D (4 - p->size) * 8; - return (ret_be << (p->size * 8)) | x; -} - /** * do_ld_parts_be8 * @p: translation parameters @@ -2111,7 +2092,7 @@ static uint64_t do_ld_whole_be8(CPUState *cpu, uintpt= r_t ra, MMULookupPageData *p, uint64_t ret_be) { int o =3D p->addr & 7; - uint64_t x =3D load_atomic8_or_exit(cpu, ra, p->haddr - o); + uint64_t x =3D load_atomic8(p->haddr - o); =20 x =3D cpu_to_be64(x); x <<=3D o * 8; @@ -2176,11 +2157,7 @@ static uint64_t do_ld_beN(CPUState *cpu, MMULookupPa= geData *p, if (atom =3D=3D MO_ATOM_IFALIGN_PAIR ? p->size =3D=3D half_size : p->size >=3D half_size) { - if (!HAVE_al8_fast && p->size < 4) { - return do_ld_whole_be4(p, ret_be); - } else { - return do_ld_whole_be8(cpu, ra, p, ret_be); - } + return do_ld_whole_be8(cpu, ra, p, ret_be); } /* fall through */ =20 @@ -2586,13 +2563,7 @@ static uint64_t do_st_leN(CPUState *cpu, MMULookupPa= geData *p, if (atom =3D=3D MO_ATOM_IFALIGN_PAIR ? p->size =3D=3D half_size : p->size >=3D half_size) { - if (!HAVE_al8_fast && p->size <=3D 4) { - return store_whole_le4(p->haddr, p->size, val_le); - } else if (HAVE_al8) { - return store_whole_le8(p->haddr, p->size, val_le); - } else { - cpu_loop_exit_atomic(cpu, ra); - } + return store_whole_le8(p->haddr, p->size, val_le); } /* fall through */ =20 diff --git a/accel/tcg/ldst_atomicity.c.inc b/accel/tcg/ldst_atomicity.c.inc index c735add261..f5b8289009 100644 --- a/accel/tcg/ldst_atomicity.c.inc +++ b/accel/tcg/ldst_atomicity.c.inc @@ -12,13 +12,6 @@ #include "host/load-extract-al16-al8.h.inc" #include "host/store-insert-al16.h.inc" =20 -#ifdef CONFIG_ATOMIC64 -# define HAVE_al8 true -#else -# define HAVE_al8 false -#endif -#define HAVE_al8_fast (ATOMIC_REG_SIZE >=3D 8) - /** * required_atomicity: * @@ -132,44 +125,7 @@ static inline uint32_t load_atomic4(void *pv) static inline uint64_t load_atomic8(void *pv) { uint64_t *p =3D __builtin_assume_aligned(pv, 8); - - qemu_build_assert(HAVE_al8); - return qatomic_read__nocheck(p); -} - -/** - * load_atomic8_or_exit: - * @cpu: generic cpu state - * @ra: host unwind address - * @pv: host address - * - * Atomically load 8 aligned bytes from @pv. - * If this is not possible, longjmp out to restart serially. - */ -static uint64_t load_atomic8_or_exit(CPUState *cpu, uintptr_t ra, void *pv) -{ - if (HAVE_al8) { - return load_atomic8(pv); - } - -#ifdef CONFIG_USER_ONLY - /* - * If the page is not writable, then assume the value is immutable - * and requires no locking. This ignores the case of MAP_SHARED with - * another process, because the fallback start_exclusive solution - * provides no protection across processes. - */ - WITH_MMAP_LOCK_GUARD() { - if (!page_check_range(h2g(pv), 8, PAGE_WRITE_ORG)) { - uint64_t *p =3D __builtin_assume_aligned(pv, 8); - return *p; - } - } -#endif - - /* Ultimate fallback: re-execute in serial context. */ - trace_load_atom8_or_exit_fallback(ra); - cpu_loop_exit_atomic(cpu, ra); + return qatomic_read(p); } =20 /** @@ -264,9 +220,7 @@ static uint64_t load_atom_extract_al8x2(void *pv) } =20 /** - * load_atom_extract_al8_or_exit: - * @cpu: generic cpu state - * @ra: host unwind address + * load_atom_extract_al8 * @pv: host address * @s: object size in bytes, @s <=3D 4. * @@ -275,15 +229,14 @@ static uint64_t load_atom_extract_al8x2(void *pv) * 8-byte load and extract. * The value is returned in the low bits of a uint32_t. */ -static uint32_t load_atom_extract_al8_or_exit(CPUState *cpu, uintptr_t ra, - void *pv, int s) +static uint32_t load_atom_extract_al8(void *pv, int s) { uintptr_t pi =3D (uintptr_t)pv; int o =3D pi & 7; int shr =3D (HOST_BIG_ENDIAN ? 8 - s - o : o) * 8; =20 pv =3D (void *)(pi & ~7); - return load_atomic8_or_exit(cpu, ra, pv) >> shr; + return load_atomic8(pv) >> shr; } =20 /** @@ -297,7 +250,7 @@ static uint32_t load_atom_extract_al8_or_exit(CPUState = *cpu, uintptr_t ra, * and p % 16 + s > 8. I.e. does not cross a 16-byte * boundary, but *does* cross an 8-byte boundary. * This is the slow version, so we must have eliminated - * any faster load_atom_extract_al8_or_exit case. + * any faster load_atom_extract_al8 case. * * If this is not possible, longjmp out to restart serially. */ @@ -374,21 +327,6 @@ static inline uint64_t load_atom_8_by_4(void *pv) } } =20 -/** - * load_atom_8_by_8_or_4: - * @pv: host address - * - * Load 8 bytes from aligned @pv, with at least 4-byte atomicity. - */ -static inline uint64_t load_atom_8_by_8_or_4(void *pv) -{ - if (HAVE_al8_fast) { - return load_atomic8(pv); - } else { - return load_atom_8_by_4(pv); - } -} - /** * load_atom_2: * @p: host address @@ -418,12 +356,8 @@ static uint16_t load_atom_2(CPUState *cpu, uintptr_t r= a, return lduw_he_p(pv); case MO_16: /* The only case remaining is MO_ATOM_WITHIN16. */ - if (!HAVE_al8_fast && (pi & 3) =3D=3D 1) { - /* Big or little endian, we want the middle two bytes. */ - return load_atomic4(pv - 1) >> 8; - } if ((pi & 15) !=3D 7) { - return load_atom_extract_al8_or_exit(cpu, ra, pv, 2); + return load_atom_extract_al8(pv, 2); } return load_atom_extract_al16_or_exit(cpu, ra, pv, 2); default: @@ -468,7 +402,7 @@ static uint32_t load_atom_4(CPUState *cpu, uintptr_t ra, return load_atom_extract_al4x2(pv); case MO_32: if (!(pi & 4)) { - return load_atom_extract_al8_or_exit(cpu, ra, pv, 4); + return load_atom_extract_al8(pv, 4); } return load_atom_extract_al16_or_exit(cpu, ra, pv, 4); default: @@ -493,7 +427,7 @@ static uint64_t load_atom_8(CPUState *cpu, uintptr_t ra, * If the host does not support 8-byte atomics, wait until we have * examined the atomicity parameters below. */ - if (HAVE_al8 && likely((pi & 7) =3D=3D 0)) { + if (likely((pi & 7) =3D=3D 0)) { return load_atomic8(pv); } if (HAVE_ATOMIC128_RO) { @@ -502,30 +436,9 @@ static uint64_t load_atom_8(CPUState *cpu, uintptr_t r= a, =20 atmax =3D required_atomicity(cpu, pi, memop); if (atmax =3D=3D MO_64) { - if (!HAVE_al8 && (pi & 7) =3D=3D 0) { - load_atomic8_or_exit(cpu, ra, pv); - } return load_atom_extract_al16_or_exit(cpu, ra, pv, 8); } - if (HAVE_al8_fast) { - return load_atom_extract_al8x2(pv); - } - switch (atmax) { - case MO_8: - return ldq_he_p(pv); - case MO_16: - return load_atom_8_by_2(pv); - case MO_32: - return load_atom_8_by_4(pv); - case -MO_32: - if (HAVE_al8) { - return load_atom_extract_al8x2(pv); - } - trace_load_atom8_fallback(memop, ra); - cpu_loop_exit_atomic(cpu, ra); - default: - g_assert_not_reached(); - } + return load_atom_extract_al8x2(pv); } =20 /** @@ -565,18 +478,10 @@ static Int128 load_atom_16(CPUState *cpu, uintptr_t r= a, b =3D load_atom_8_by_4(pv + 8); break; case MO_64: - if (!HAVE_al8) { - trace_load_atom16_fallback(memop, ra); - cpu_loop_exit_atomic(cpu, ra); - } a =3D load_atomic8(pv); b =3D load_atomic8(pv + 8); break; case -MO_64: - if (!HAVE_al8) { - trace_load_atom16_fallback(memop, ra); - cpu_loop_exit_atomic(cpu, ra); - } a =3D load_atom_extract_al8x2(pv); b =3D load_atom_extract_al8x2(pv + 8); break; @@ -624,9 +529,7 @@ static inline void store_atomic4(void *pv, uint32_t val) static inline void store_atomic8(void *pv, uint64_t val) { uint64_t *p =3D __builtin_assume_aligned(pv, 8); - - qemu_build_assert(HAVE_al8); - qatomic_set__nocheck(p, val); + qatomic_set(p, val); } =20 /** @@ -688,9 +591,8 @@ static void store_atom_insert_al8(uint64_t *p, uint64_t= val, uint64_t msk) { uint64_t old, new; =20 - qemu_build_assert(HAVE_al8); p =3D __builtin_assume_aligned(p, 8); - old =3D qatomic_read__nocheck(p); + old =3D qatomic_read(p); do { new =3D (old & ~msk) | val; } while (!__atomic_compare_exchange_n(p, &old, new, true, @@ -802,7 +704,6 @@ static uint64_t store_whole_le8(void *pv, int size, uin= t64_t val_le) uint64_t m =3D MAKE_64BIT_MASK(0, sz); uint64_t v; =20 - qemu_build_assert(HAVE_al8); if (HOST_BIG_ENDIAN) { v =3D bswap64(val_le) >> sh; m =3D bswap64(m) >> sh; @@ -887,10 +788,8 @@ static void store_atom_2(CPUState *cpu, uintptr_t ra, store_atom_insert_al4(pv - 1, (uint32_t)val << 8, MAKE_64BIT_MASK(= 8, 16)); return; } else if ((pi & 7) =3D=3D 3) { - if (HAVE_al8) { - store_atom_insert_al8(pv - 3, (uint64_t)val << 24, MAKE_64BIT_= MASK(24, 16)); - return; - } + store_atom_insert_al8(pv - 3, (uint64_t)val << 24, MAKE_64BIT_MASK= (24, 16)); + return; } else if ((pi & 15) =3D=3D 7) { if (HAVE_CMPXCHG128) { Int128 v =3D int128_lshift(int128_make64(val), 56); @@ -957,10 +856,8 @@ static void store_atom_4(CPUState *cpu, uintptr_t ra, return; case MO_32: if ((pi & 7) < 4) { - if (HAVE_al8) { - store_whole_le8(pv, 4, cpu_to_le32(val)); - return; - } + store_whole_le8(pv, 4, cpu_to_le32(val)); + return; } else { if (HAVE_CMPXCHG128) { store_whole_le16(pv, 4, int128_make64(cpu_to_le32(val))); @@ -988,7 +885,7 @@ static void store_atom_8(CPUState *cpu, uintptr_t ra, uintptr_t pi =3D (uintptr_t)pv; int atmax; =20 - if (HAVE_al8 && likely((pi & 7) =3D=3D 0)) { + if (likely((pi & 7) =3D=3D 0)) { store_atomic8(pv, val); return; } @@ -1005,7 +902,7 @@ static void store_atom_8(CPUState *cpu, uintptr_t ra, store_atom_8_by_4(pv, val); return; case -MO_32: - if (HAVE_al8) { + { uint64_t val_le =3D cpu_to_le64(val); int s2 =3D pi & 7; int s1 =3D 8 - s2; @@ -1024,9 +921,8 @@ static void store_atom_8(CPUState *cpu, uintptr_t ra, default: g_assert_not_reached(); } - return; } - break; + return; case MO_64: if (HAVE_CMPXCHG128) { store_whole_le16(pv, 8, int128_make64(cpu_to_le64(val))); @@ -1077,12 +973,9 @@ static void store_atom_16(CPUState *cpu, uintptr_t ra, store_atom_8_by_4(pv + 8, b); return; case MO_64: - if (HAVE_al8) { - store_atomic8(pv, a); - store_atomic8(pv + 8, b); - return; - } - break; + store_atomic8(pv, a); + store_atomic8(pv + 8, b); + return; case -MO_64: if (HAVE_CMPXCHG128) { uint64_t val_le; --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534790; cv=none; d=zohomail.com; s=zohoarc; b=GqrG6aLMgwFUmaBb663eRJWjkNqUQf2zSeF4fDeY7qUW7UoVUG11YYVGQlLTe+u6PPoY2e0eOlDSY/ln02sZH2Ef7FFk0kZgPjlvfFPXxmIWYaqzIUxU3z1sE+Ut/t6JW2U6NMCQKloCBPCgFyoXdbzuGqDj59MrAneoSnLLU9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534790; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Q7SIDQmcUGJxe8HENT1y7sz0lq6rggxli56KTnwm55A=; b=NzzruNL/RbJBI8bvgSHy+ieopaOTql45iGqvhxOcEaB86/CDX12mKAp1qmzyNrOZn74XZPwsdgM61RRF0z4ePv66xjkYTJlqogLVJhwjZGJwl5TCQOLZ9mjXhnCDPG8oRFWi6Qe3bGtuOaQDt6kPaEXGWSpj7ODwKNBJnWFsYOQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534790292230.27129623446513; Thu, 15 Jan 2026 19:39:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagL-00057I-CW; Thu, 15 Jan 2026 22:39:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgag4-00050J-Vg for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:14 -0500 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgag3-0008LQ-KP for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:12 -0500 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2a2ea96930cso10045315ad.2 for ; Thu, 15 Jan 2026 19:39:11 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534750; x=1769139550; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q7SIDQmcUGJxe8HENT1y7sz0lq6rggxli56KTnwm55A=; b=QY4Gr3efSzKLqnb/MA53wGDgy89VXzTFbGd9BF3W8xpu+SvE3dFotM6C3NAM0lfMr2 DyGktjdH1mmk4zCq07lIycGfgbdbv2by/mz1ZZT8PUr4ftLxre1WBCxFmmUwyWMU8QfR ioCsz3Evy8V3CmgTzgPTP/Z8EFBDlJT2URuDF0JJk3x3LiMVkIrF9HasNq6Rl29iig9i sW1QFpM8C2HIZ3Hh+KVJU4RPo9J9osmBViAgI8tsVVrh2boJuKgt18EHYfDD9mzisA44 B80YXlCLNcMQPWzQb2arxdNZSQb8yC59/gWL0rnWXiQ8fYd1LdpVXzBffKFUutWzRuVk QedQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534750; x=1769139550; 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; bh=Q7SIDQmcUGJxe8HENT1y7sz0lq6rggxli56KTnwm55A=; b=sXlohSrHMIVU6UPlsrT/DboD2LIcCuZHDZY6YLmYI0yY2GPOaEEF8lxGdjl1H1dJgd 2XnNhoHyLWQSSnezbpyDExv2DlU3Abtc7sSP3K2C4VVQihCycafcJvcA7vV7xaC6XAyl qtLvNC5n+rsoe3sztRFx5f/X2IV8mCW9NPlKBLnOy0Xf0u1Fo1nUksoXLu9+ueT+VSvG Ta25R2PLrGrtOdlkfDMIIC5XvnQCT6HFtHDbjj7TPsvPJRYdBp1e126GbobmJC8xgfFO uVsSsAr4zSZsDelxFjMPrHBpHDSLmht2hBzzc+sLhUU/hBI9VHX/zMZbgUMl8cE2PRT3 qNRQ== X-Gm-Message-State: AOJu0YyGTgH8UzUBy9pnDzPfJ2r4JsS/dc4SYPaymlAI+8D2KsRqTjVb w/E3P6aL/1Jjf5wLp8K67US9WN4quGllQ3lsXD3nH2L46GW5Rq2s8SwenPmbo5PAyQ4uCLb5rJ9 NRsD3XPx8vg== X-Gm-Gg: AY/fxX4qLTKFVMrKmF52aiuxigUEwoSoeeYwtOFDk/4DO0EaX33PRzYLraNrOVvT0sw LcMgSCPZXJc3tWiwsV18BQ0E5Kf2+TAVws9K6Zcozjx8zaKRBGYwfeXz3QQe+KNAiuwYDrl2YnV jR04a8ImVoyOcEi7i1yqQrLWG9XIhAZc0uRsub57rvNDa7vCyekPJvF3YYhGVuJBy3jHOMP9Y7t 2DKJ6HgrZRsyt1tFVI3Zh7uOIH/Viu4wb3/K/S3ciauxNqRKNxl/UuN2z//wyLYj/UhjoRCz+g1 ok86B0H7Ze2bRLvvc4s3Ea1RNTz1h5eDJZuAv0pFslspdrvXrX50qxpsA4CTV4HCVu39fuQDOZR 4AZA//rSaB9+PiZbx9X6V6KKU6jiQINahD0BEJBklGe//9NG2R5FAYpP7UY5YgsuMeaFiIBU+h3 6MTDILPhg2dfzEr5cKQg== X-Received: by 2002:a17:903:1a0f:b0:2a0:b467:a7cf with SMTP id d9443c01a7336-2a71740af3fmr14504505ad.0.1768534750083; Thu, 15 Jan 2026 19:39:10 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 45/58] accel/tcg: Drop CONFIG_ATOMIC64 test from translator.c Date: Fri, 16 Jan 2026 14:32:51 +1100 Message-ID: <20260116033305.51162-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534792415158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- accel/tcg/translator.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c index 034f2f359e..f3eddcbb2e 100644 --- a/accel/tcg/translator.c +++ b/accel/tcg/translator.c @@ -352,15 +352,13 @@ static bool translator_ld(CPUArchState *env, DisasCon= textBase *db, return true; } break; -#ifdef CONFIG_ATOMIC64 case 8: if (QEMU_IS_ALIGNED(pc, 8)) { - uint64_t t =3D qatomic_read__nocheck((uint64_t *)host); + uint64_t t =3D qatomic_read((uint64_t *)host); stq_he_p(dest, t); return true; } break; -#endif } /* Unaligned or partial read from the second page is not atomic. */ memcpy(dest, host, len); --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534785; cv=none; d=zohomail.com; s=zohoarc; b=GAQWI+cWVM7ugewlP8LfGFW8hw89NBYRqjuoUN+rgLWPI30Qs/Hmj5MnZf6r36MPWxx/bW/+FL+R3Sv68dz6EAy1RumKfLERDjUxf5IXbP+rbn+4asc7ZGeMYu2aQzRSt6PWi1KOVYcezTs0gt3UP5rbkhHM1v+Ir6UrPH/Gn7Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534785; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=F9u0Q1JjyvUW9YFkrSrLxZdxPG6FLLM0OzXcJAGsPT8=; b=fFOeur3Cs2sCrN6gWO/tH/fIH9VkqkDecAJy/Y0roE+0GILnDxvhgdC6vnGnG7PIc/01ArHJ0ViWxEMknpX+CFQmSZU09i2kuTpRQs3Aidn9AUBEcFRGgKoGifIOa0+L4DuiQqrgxtAX/nG9OLoGTKgcbknmmMRV6wsFNbUW7GE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534785088447.59008128420794; Thu, 15 Jan 2026 19:39:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagN-00059S-R4; Thu, 15 Jan 2026 22:39:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagJ-000568-Pt for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:27 -0500 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgag7-0008My-BH for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:24 -0500 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2a0ac29fca1so10954765ad.2 for ; Thu, 15 Jan 2026 19:39:14 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534754; x=1769139554; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=F9u0Q1JjyvUW9YFkrSrLxZdxPG6FLLM0OzXcJAGsPT8=; b=Ax6hB5pbAO6GFreTlbKBIbd9kCW5W07375yqZJ9MiTxtlwKEgcSow9a3/kzCwru7bL dKZSheu4KrDPoiHKG3Nlv+5mh9tzSl9jCl4sKhCg+/uuFFYsMVWsLBDYqG4tjzdznG9X 9lTZXtDYODPkZCKmKEN0OCUD5zD3J9m/Di0P/jmiRtCcvihKzwcwu44rd43kp2FTgORA oZThKIciq1Oojjh2DR+9/laXDLb+0kWF++5Ln6pjZeLpoRV+cCz+hHdzUXIxGL5DQcD4 80k9EyeDhXiryRphR2S54LosEiaT0UhxNXE3V7g2HrfvDSHNMsJG3vdPME9a0hAxlKpv qtgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534754; x=1769139554; 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; bh=F9u0Q1JjyvUW9YFkrSrLxZdxPG6FLLM0OzXcJAGsPT8=; b=PTU5cgEAO7ZZ51HaHlYMnWp8OM0wk1yblgXmSgMtyzqOIV3zpK4QKvqjdJLeVN1WDG 6rVop938bJ2Nj3CIYc8YD9/QzmFLLsawYVBlgOPK+WznNQnuo8HbQkptYfC+lBYf7/hC 4pJJljNPITnMVK2gWxfvq/BD+pZWnyV/BEuYpFLtbsc7VmGK7QcduZ+QAAxUDTzmhTOC ArHRGPCGmVGoJcOuZLTxn0hvQAjCsCMsqXWKaP6HQTnM3tl2VsMMWLAgE4ySDEvxXDkS /QOlx3ZBFwpS9tsMsK6vWaKdD44UHlFe3oSSD7vyo3NqJe54vvaO/0+CJnE2Vv5poTpr 4FuQ== X-Gm-Message-State: AOJu0Yx3jmlFpPUP5h7C5hgNu2V/VCRPIl3ZyIh/TGmwznRdqGLP45vd 1K/rzglBAl3dRA8eFOetsFMlbHWbD6/Ihpl3Cujkc7UZTMgfe1vfYQJsr1q6ElB4pA29dw5v+tl 5GQ8DieJgmQ== X-Gm-Gg: AY/fxX7gtigU9QymN0ezqAMs1ZNNIxyFXrOzUuXnowKr9ibynvtF9BF6K3z6hvJqFHq WjLaD1xC/OGgTKORu4jcaA86Uc8zynSCf6ByUxlBPNzaIu8YGf9Nxs9bLGgKqp43gj13q/LJ8XJ 1yBXEmesAr2jY2n1uzeDp1sZ/i63y6iaeayes9BB6Z9wkFmY/yMdgpRIf5ISedqf9Q17Cx0Bxhd DjbBa5DCRILR2Xuis0o8EOuePMPxDhvsMLbbsh1olJpZgqvg7uCX02ynu1uOuhfcVyL/1i5uVh8 ULZW7NoGYVJbcCkd6RNCmpWpeQgAeyfdqoMydsAJRvf3fAQDWoxP9J5+d6HcxSDml7SPqHKU0Wa JXODp+RJF8tFC9msHj2FsUezdb4SNSjqmTM2WV6nxKLLk6+28M2gHya+2TP0fOrI0lcwO3GTViy 5Qp7QSETi0frecGL9b7w== X-Received: by 2002:a17:903:1a8b:b0:29e:9387:f2b9 with SMTP id d9443c01a7336-2a71751c69emr15910255ad.24.1768534753799; Thu, 15 Jan 2026 19:39:13 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 46/58] linux-user/arm: Drop CONFIG_ATOMIC64 test Date: Fri, 16 Jan 2026 14:32:52 +1100 Message-ID: <20260116033305.51162-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534786408158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/arm/cpu_loop.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c index cd89b7d6f5..40aefc4c1d 100644 --- a/linux-user/arm/cpu_loop.c +++ b/linux-user/arm/cpu_loop.c @@ -146,25 +146,8 @@ static void arm_kernel_cmpxchg64_helper(CPUARMState *e= nv) /* Swap if host !=3D guest endianness, for the host cmpxchg below */ oldval =3D tswap64(oldval); newval =3D tswap64(newval); - -#ifdef CONFIG_ATOMIC64 - val =3D qatomic_cmpxchg__nocheck(host_addr, oldval, newval); + val =3D qatomic_cmpxchg(host_addr, oldval, newval); cpsr =3D (val =3D=3D oldval) * CPSR_C; -#else - /* - * This only works between threads, not between processes, but since - * the host has no 64-bit cmpxchg, it is the best that we can do. - */ - start_exclusive(); - val =3D *host_addr; - if (val =3D=3D oldval) { - *host_addr =3D newval; - cpsr =3D CPSR_C; - } else { - cpsr =3D 0; - } - end_exclusive(); -#endif mmap_unlock(); =20 cpsr_write(env, cpsr, CPSR_C, CPSRWriteByInstr); --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534835; cv=none; d=zohomail.com; s=zohoarc; b=RfkDjnLdsRooJoPnL/VjHT/jpbnRlpqfX59l35E02vYiuYIQ3DA/Ku7/Dnmjk4cnbZjyKnmaRAtQ8AXGLx1KX0vCR8TrJcbywiTPYXjNJVP7eJVvRPb+VlapV3pBDDZy2MHEkhjN00KApucLA3ccCM7/xqhDgZFJ2oe/Us/fdQs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534835; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7cyYL4DVaKa33AbZpjE1YQS7WRtchLKWVUrU1QN8V2g=; b=BTNSglNS54KfO8SMRCiildm3Mqig+0qLXvA+XJcEIh0U95u3N7GUietWiERas2mVJAwE3GOBqJ1J9aGbk1mPk0UrZtNsaUSulrxX1qEle3H3wYIVES5GeDumPNvBlskXLb7TlfS5ziClktD4Pq9JXrCbVk5h0mpIkQxyWW4+71c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534835587154.94260228204212; Thu, 15 Jan 2026 19:40:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagO-0005AJ-Ch; Thu, 15 Jan 2026 22:39:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagM-00058O-CU for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:30 -0500 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgagJ-0008OL-I2 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:30 -0500 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c46d68f2b4eso990563a12.2 for ; Thu, 15 Jan 2026 19:39:18 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534757; x=1769139557; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7cyYL4DVaKa33AbZpjE1YQS7WRtchLKWVUrU1QN8V2g=; b=R4RExKIzf0ritcDA9bcq1VKwEhi+nBYwOByNRTHwI2TkswdXms792Vuk7+XM2JpiJc LEiL5/L3zDt2nlwhRkVgR3oSzI+C9Pi1i2yIyOSxMcE6yEyxi045FsvaZ9zh5GHIEVB0 zcU9gX8ELh61yyeDecNTa9SsdrDFM3LBZiatyP/5B6pspQvOm8En4/1JZmzBhZMSHa3X 8p93R6HgY93NoDyu+iSJcdW2iFYgr2rgPdOCGg7e14jpnmexgQDd9MSxinL7cKeDOlNc qsdUtTlqrQSnJqze2QvbNCbvos7UoMgYjFgZuJGOrHdsC3myQOWzjdI16onBaeCEJf/C OEOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534757; x=1769139557; 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; bh=7cyYL4DVaKa33AbZpjE1YQS7WRtchLKWVUrU1QN8V2g=; b=Ojn9XnsYE3x6pqlhND22yVOZaThOYpFZ8tPiM9Wt70tWSeQi8zzOEdlbHtZ+X5axvk sj/jZV1HWLDGOhfNPxl7qeklP5P8D1/UOGv9lASCh6zZJKlAwtLj9b0wb93KIMjQkFdP yHs1PxgeO8EkxwyVio231WJRJW7RRcZKtH0xasxyI7lwv++rVgdKnjdrcEo6b+Pcn6nf If+5qKeg1Xk5jl3Wph7sZv2NFrx11IAEH+NOdg5OMieIWm38GR04smyATfiaR85kQIkm y1coHS7GJhMpe1iCIN7KC4FFy4MiCQMrJTovp11hIzYzh4F6IHfDrnixcdXD2PEN8d7t eqEg== X-Gm-Message-State: AOJu0YxpGuVSB+uwOw//m4eX4yBvo1xKfKkb9AAPUR1UDn6zH6IgsKcB 5Zsp51CGUme+UF9tF6YywdrPScAMNeik3Dq/v0H3u4C3qGW9pzHB0jaPYqc8cYILs++OhoVjM2s E0sGBJo0vMQ== X-Gm-Gg: AY/fxX5868eGILnQw1qhtK8UobWvhDsaYZ13yrs3mYFIsNIZAEs+weCRXlwIzkce4PD UUeExv/8ToBW2rsKQEb/5N36CDiQNXAnIk820NSi0FXob187SGDA8bHXLXVS9jEqxES4H1pg4LZ 48YviWBdKlYIPoI5ru4xY6oGOz0G/IyrJUhuTAGsb936Ej6PRzU5yGz8CuymSplFQVSDmCYr5jc 0Ok+ygXWuzdEEDdpwUhubjJ5k5bINerfkW7GxiAkMK1GSfHeIlyVXbIl41fo8JJ0HMAyAj1TmUw 5Stjjlnrn91y0b++Rwc9FpSeuzLD/Z6Qa8eu+SzIrGwe2xL25sX+PG99hlubPwn0LQ0xY95FaC3 fA4uaWPe+ecmX9Fj6l5jl4dOz4Xwm1XNcPtVuFGa0TUYl9hh+FUWOlHT1vVnQiRcQPWWwoLu8j1 wyx9o4N5ieQV69aZmMTQ== X-Received: by 2002:a05:6a21:2d4a:b0:35b:b97f:7471 with SMTP id adf61e73a8af0-38dfe62a16cmr1815926637.4.1768534757306; Thu, 15 Jan 2026 19:39:17 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 47/58] linux-user/hppa: Drop CONFIG_ATOMIC64 test Date: Fri, 16 Jan 2026 14:32:53 +1100 Message-ID: <20260116033305.51162-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768534836528158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- linux-user/hppa/cpu_loop.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c index 356cb48acc..e5c0f52d94 100644 --- a/linux-user/hppa/cpu_loop.c +++ b/linux-user/hppa/cpu_loop.c @@ -83,20 +83,8 @@ static abi_ulong hppa_lws(CPUHPPAState *env) uint64_t o64, n64, r64; o64 =3D *(uint64_t *)g2h(cs, old); n64 =3D *(uint64_t *)g2h(cs, new); -#ifdef CONFIG_ATOMIC64 - r64 =3D qatomic_cmpxchg__nocheck((aligned_uint64_t *)g2h(c= s, addr), - o64, n64); + r64 =3D qatomic_cmpxchg((aligned_uint64_t *)g2h(cs, addr),= o64, n64); ret =3D r64 !=3D o64; -#else - start_exclusive(); - r64 =3D *(uint64_t *)g2h(cs, addr); - ret =3D 1; - if (r64 =3D=3D o64) { - *(uint64_t *)g2h(cs, addr) =3D n64; - ret =3D 0; - } - end_exclusive(); -#endif } break; default: --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535254; cv=none; d=zohomail.com; s=zohoarc; b=Zlzwk5Rv4IjhfrLH13theofwjwuBQegLOuZrBiao9Tb2oT6jsYs7r+VWg3NRrEIKMxj54e5RW3CBZftPz4LxqM3Cn8fNS81No+EEnUCigB1zeU+R5iYHp+jA6ucLZ1MYHU/jCBOlwCS5K1ecZCWHuhYnCWyvu13omWqME9mJIus= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535254; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mY8SF4Lgdoetp90UFxDHJbg0kRe28ldzal692R5R0k0=; b=gqWjx3R7pxKatpLb+6oBRKISIhtVtSW27C2qgMEVBlvIBvFR584lEHo+cikx1UDfhWT0/+nuEqvsxoF2wtEDVzKb1aHeOrIllnUYnHop0hmu2hVI2z2AdhIc9dRdEK0Kxkszt/qh9WRnzeZ/YHI0E+awzY1H/S6mltOHyyhfTQA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535254392825.2695204237256; Thu, 15 Jan 2026 19:47:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagQ-0005BZ-Ff; Thu, 15 Jan 2026 22:39:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagM-00058m-Ob for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:30 -0500 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgagJ-0008Pf-Id for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:30 -0500 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-29f2676bb21so15494325ad.0 for ; Thu, 15 Jan 2026 19:39:21 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534761; x=1769139561; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mY8SF4Lgdoetp90UFxDHJbg0kRe28ldzal692R5R0k0=; b=rG3ESfC282dhsaymJd7TwLxVkpw+G76IniuPgTWDrcQizPH9f7/0DDzSu1EuDEtvKm 7j8/uY7wtTyLgcv1JkWyx5/EAMUrQXrl0szhdXmK0sz8c7NdD2bCQjqTEfAVRv8i8xZV 2/S+DwU549MRct2zOxdipklPbL6CFgHVKx1PYUPka7YY3XYUYmStBy+Ywez8v7w+Da6a tF6YHwIqVA0d3cnkExgICB+EGNiRm3SbtNGlpuOQqL68dik1KwkS2ZknbUZeaCdRzqKd Az3YbQfBMq3o3LFrT1ikcdU5NRP9YoqBdlgzL1GAgI5nBS3wlFMbLWlC5umB61c8iUmb 0d0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534761; x=1769139561; 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; bh=mY8SF4Lgdoetp90UFxDHJbg0kRe28ldzal692R5R0k0=; b=NZHq3K+j2VOZmtfgb8+3Np8LfpCIO8VcqMqpWej+tc+kD/LpWB7fsvcv2dI5MspRe/ WkNjNNIh72zoTqiV+nkEpEgLhdNiPm0JvvkSeXpkfzqLVHEozyEBhYzk0AHA6rSxF9Im pfIkwxoQ2ovVXkNFmtEjm4KgD5iVLT+5EcAfvx4TPZm/WhjcX8cvXAtQscxCWTCtbuS4 iqEuIPGcjdnQljf02MsmjPwuwdhksRwaEtlMfgR1Bonvv/Nh7AkQDLSKtISzNkgbwFq6 gILDfilEhC+yopMESOUTGQRAomYtt0b8lCPjq/r0LPze+0S9GrT26wIDFbaVWUj3Ak6F n1bA== X-Gm-Message-State: AOJu0Yw0S9bTq62Izqjha6acka7Pqg68CLQo0ysIUgAN9KJK7QEFMYpn +ELhn84Hn2HMmu/9gw2kSekI6IIHqyvl6Oqzz14tlJmqFnTpPaaIXyRN9hZ2cKavhhnFP6lAdlo 15siqCeIKxA== X-Gm-Gg: AY/fxX7rMo/9hqw3N6xG/qlgNAvO7R+rmQDh12Em6pX95XfHfeHsfWQtvTUx0WT3/wk oSOA5u3toHT69t5NghlpozLqR8is/b/j+pa/6jx1DbARMepxwlpX72Ofg8mWGA7pAXij1EM2Mk5 OdRac2glsywx5XV8OFyC4eOmUX3cgKKkxu+VHFIgMbUG0QmKXGw+KuF+WfRAhiohCiAAQ0Z0eOo K3Ww3SfEaNcp379rVQ0bLv+aeS9clJr8j3pmQJ6LZOXUenqDRF3qUMJzjwBdPOWp4lpar8AT36c 94imqVVgR96bghBjbmdey1KAEYyU4PVMdtDKvWN4toMx7D1cBg+Wp3DWbMLQ06YPhHLqZ+wt7f9 F9QVQOyDup/fNKPLyB5rleLUeE2ZI3KfOWtrYhgqhjWbpIruo6K08VHY8F9LBagGuyLzJNpXIv5 rm6pO8sYkAApFOntcnQw== X-Received: by 2002:a17:902:e54d:b0:24e:3cf2:2453 with SMTP id d9443c01a7336-2a718965566mr12515535ad.61.1768534760907; Thu, 15 Jan 2026 19:39:20 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 48/58] target/arm: Drop CONFIG_ATOMIC64 tests Date: Fri, 16 Jan 2026 14:32:54 +1100 Message-ID: <20260116033305.51162-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768535256139158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/arm/ptw.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index a986dc66f6..8b8dc09e72 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -757,20 +757,12 @@ static uint64_t arm_ldq_ptw(CPUARMState *env, S1Trans= late *ptw, =20 if (likely(host)) { /* Page tables are in RAM, and we have the host address. */ -#ifdef CONFIG_ATOMIC64 - data =3D qatomic_read__nocheck((uint64_t *)host); + data =3D qatomic_read((uint64_t *)host); if (ptw->out_be) { data =3D be64_to_cpu(data); } else { data =3D le64_to_cpu(data); } -#else - if (ptw->out_be) { - data =3D ldq_be_p(host); - } else { - data =3D ldq_le_p(host); - } -#endif } else { /* Page tables are in MMIO. */ MemTxAttrs attrs =3D { @@ -798,7 +790,7 @@ static uint64_t arm_casq_ptw(CPUARMState *env, uint64_t= old_val, uint64_t new_val, S1Translate *ptw, ARMMMUFaultInfo *fi) { -#if defined(CONFIG_ATOMIC64) && defined(CONFIG_TCG) +#ifdef CONFIG_TCG uint64_t cur_val; void *host =3D ptw->out_host; =20 @@ -903,17 +895,17 @@ static uint64_t arm_casq_ptw(CPUARMState *env, uint64= _t old_val, if (ptw->out_be) { old_val =3D cpu_to_be64(old_val); new_val =3D cpu_to_be64(new_val); - cur_val =3D qatomic_cmpxchg__nocheck((uint64_t *)host, old_val, ne= w_val); + cur_val =3D qatomic_cmpxchg((uint64_t *)host, old_val, new_val); cur_val =3D be64_to_cpu(cur_val); } else { old_val =3D cpu_to_le64(old_val); new_val =3D cpu_to_le64(new_val); - cur_val =3D qatomic_cmpxchg__nocheck((uint64_t *)host, old_val, ne= w_val); + cur_val =3D qatomic_cmpxchg((uint64_t *)host, old_val, new_val); cur_val =3D le64_to_cpu(cur_val); } return cur_val; #else - /* AArch32 does not have FEAT_HADFS; non-TCG guests only use debug-mod= e. */ + /* Non-TCG guests only use debug-mode. */ g_assert_not_reached(); #endif } --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535245; cv=none; d=zohomail.com; s=zohoarc; b=kjH8GPT5EVPlxEdijbvxIcuBd9EuVw1fRFZkhvdf9+KnKfb3UBlEQ03GnzRA8fYYi6aU0o11WA39JvCE0fR2YrKsgqCofg40XLchbghwqX9pIrUAJvDuuK/Iu3MA4YlTZEyxwA6nW55j+R39Ew8/R4OaMMzMStJLAEzxfT9UMwc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535245; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rU1RTCNNq4TKsOcqp8cLlT2o5D/A3g+nlZpIvpHSpXU=; b=ddp19m69B2u1SgPtSuymxFIVwaswz/DmdGI6VXKzfbunfRryOu9Ew5UVRP09waLjsbFQ5TENTNIxHqfqv3myGQCI0RDxXqO8stXgInZ2jxjHo3MXXpEK5EhUZXKaaDOWfXrrVYO7rclsyFfENhp6PSR+YHXWPPht9F29RkVdPmo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535245286523.9764073008602; Thu, 15 Jan 2026 19:47:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagQ-0005BV-2G; Thu, 15 Jan 2026 22:39:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagM-00058W-I8 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:30 -0500 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgagJ-0008QX-Hs for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:30 -0500 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-29f2676bb21so15494725ad.0 for ; Thu, 15 Jan 2026 19:39:25 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534765; x=1769139565; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rU1RTCNNq4TKsOcqp8cLlT2o5D/A3g+nlZpIvpHSpXU=; b=T4oGY/unEW2fcS2yoDuRKctAjo2SvIXwAHWQ2Rx9veDSX/B+uADJIJJ0xiY2I9scPG vG53HU/zZEMkfcrRnIDQ0Lci67rv/3suO15BWkrSISdaPvaEJjUVAMlUHQ6rpaE+q5ty QY5QqA9uo8wYndc8sMh2UBSR+lJqx8HGsjeWrRLaPVzSe9vJ5LZJwv2fIIkxW2T9o0up cehYauW5OrHqZ+Wu5l0RRtugYa4nGm+Z1ZW3vd10WrH1SPRSaiswswzePpgUQWvJ+G9H rZxjYHY0tJYOrLw+uAt1tlQ8oobTjCmxmRvUL3Gb9Mea1YaiIkQsJPnhgpu9RtO4Rzln bCaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534765; x=1769139565; 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; bh=rU1RTCNNq4TKsOcqp8cLlT2o5D/A3g+nlZpIvpHSpXU=; b=Qv33H2Ei0tnF6A5rY0XooNvP6NeSjpXNzBYlC2xUjY66L4wrixi2fh7SMDcKBRDzO1 jMnQxq7RsZccuv8gaDVEJZGFMNcqSAb+DPhMdZu2a4RmLr4iVeQw1qthAVtSmCWLrZVh GFp3/nAWc7MbrFHj/OgdyGh0rTFOoNyLPdDw3b+nIF3utdblF6ewQ6c4hlqyobRYqmmG zylJIDs/V/oB0NjOCs5nV9g+UpYQ27tlQTBvz9AUAUNorW75lU1D0eAlcuFPjUufcOiS E0ciHwiPB2YIt0xZ3719hbJwG9r1VkpjDX22L8Er/q8PnZfI8uCOhv+v5qylyVchBkT2 djEA== X-Gm-Message-State: AOJu0Yz5fR+NDTMyJBSut1Jbe80j3gSA1RyjESdvND6rkcvSgmXpJQ6B xpNwJctw6gWhXqGsU10iVhcCl95WbHYpmgiKq4K2vHTcuDI3EivszetII7bBNHVW7zUTc81Oqzq crmprzr4nEw== X-Gm-Gg: AY/fxX4CJB/TiFcLNjl6W6dkTrjnOKIKwQf1FEOvzV+jSqdyzOvWsyGOqLv2ALw+69R OybtqyOgWUiUIJFfMPqbTPMo7NLtPIG73ce9bwB6NfGrz3AsQGA6y4qHODlcS8gLlqddPYZlZes 8zkKzkgp4DNpLun231cGd8kfnZJp+LiS4Sq52wjTv1wwVBmFQTcDxtseti6NuYPRx0fhvNeJY4j f5S+FmXP5ra80XGVQCh7XA8z1c9hspbhaQzzcyDM658Bm//Tzq0QnisndlTY39xh257MyVZpQiF KyKcAug1YWfwA3+ALVfi3l/4G0CwOZ6DI0qwkEGlmujXx3U48bBeEvv18SUtawamPvOmn/ofIjp aqqocN29YZMj9IcItI3OjqA0SLACq/OWSRGu2GlcK7LQYo/8s7kPqDtLRYz8tqfI6G8iTGFPbZt hiwdw1Df9fqiQ7a+G5JA== X-Received: by 2002:a17:903:1104:b0:29e:9c82:a920 with SMTP id d9443c01a7336-2a7188589bcmr13575545ad.6.1768534764667; Thu, 15 Jan 2026 19:39:24 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 49/58] target/hppa: Drop CONFIG_ATOMIC64 test Date: Fri, 16 Jan 2026 14:32:55 +1100 Message-ID: <20260116033305.51162-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768535245995158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/hppa/op_helper.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/target/hppa/op_helper.c b/target/hppa/op_helper.c index 65faf03cd0..f961046e4c 100644 --- a/target/hppa/op_helper.c +++ b/target/hppa/op_helper.c @@ -74,7 +74,6 @@ static void atomic_store_mask64(CPUHPPAState *env, target= _ulong addr, uint64_t val, uint64_t mask, int size, uintptr_t ra) { -#ifdef CONFIG_ATOMIC64 int mmu_idx =3D cpu_mmu_index(env_cpu(env), 0); uint64_t old, new, cmp, *haddr; void *vaddr; @@ -88,15 +87,12 @@ static void atomic_store_mask64(CPUHPPAState *env, targ= et_ulong addr, old =3D *haddr; while (1) { new =3D be32_to_cpu((cpu_to_be32(old) & ~mask) | (val & mask)); - cmp =3D qatomic_cmpxchg__nocheck(haddr, old, new); + cmp =3D qatomic_cmpxchg(haddr, old, new); if (cmp =3D=3D old) { return; } old =3D cmp; } -#else - cpu_loop_exit_atomic(env_cpu(env), ra); -#endif } =20 static void do_stby_b(CPUHPPAState *env, target_ulong addr, target_ulong v= al, --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535297; cv=none; d=zohomail.com; s=zohoarc; b=g/ATbGKX37WYzE6f6p/cFIuWgy8+GKAGoJnS+BsRHFT5ACv3f6hyJGKrdK2hRffCxjknCV6VezOLz+ZXGDf5X+0wqZ076wYLwgiV3zVEFd2LeM5jKwP4N1/R01ciIxXTw0/AoHuCXOBSrUQnu/Hi31ZQgPMCvAGt2yKI32KxxF0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535297; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RqHIEExBUi66KFxM/MRoC2fNgQMXmj+1KcwcA/FBGKk=; b=j9ZgVR3GpIqYmyYsVkQwCAiAg3jBY09pqnzUxsR9zbgiwcQlzYzUH5Pv8mx6OTKdQwYPMLOyeiBlCY0FfFgWiEHAfPniSaLvygFUAFYJlsIiw3+F/WpP3feM3aqcQJOY7lMHcOhd8pbBb+xNLKvcqKQraDGp/oQmHe5t6wgrKxU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535297856892.8489904241735; Thu, 15 Jan 2026 19:48:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagQ-0005C3-VD; Thu, 15 Jan 2026 22:39:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagN-00059T-QD for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:31 -0500 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgagL-0008S3-Rf for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:31 -0500 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-29f2676bb21so15495015ad.0 for ; Thu, 15 Jan 2026 19:39:29 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534768; x=1769139568; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RqHIEExBUi66KFxM/MRoC2fNgQMXmj+1KcwcA/FBGKk=; b=OTt8hAdEq86ijjGYbOq5KhhPhyiaOH02WmjJlXZ6jCuHyJ+7a+P0ntEQcakHHXAzuT d+qYYHQM/IVfftu3HvrpN8+Ej/REpqQ0xEr7icTlOjDoi+8trIOxD8US3IeSb9qcLMnu aaK69GXGQdnGUctLPd0aV2CLibwhaEJb5pUjnpmW99PsinVZpPBfMslU2FgcjbSqOPvc 6cQjZfsR24z5JniizYsa931sn3y3XH1jqGzRVDroUPgHDbW0+LoPQeLDy2ludMaTkeiW oEAWBYWU0zlUIER9n0MyrpF5HUvl+L8ghXRDnxQV34K03diD0Syf1nPTDAry9k88lUhS 35nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534768; x=1769139568; 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; bh=RqHIEExBUi66KFxM/MRoC2fNgQMXmj+1KcwcA/FBGKk=; b=DVwcxVzDSmF96X4pmIoaDnmBeGvRw9aQbAbAD7jtkM7j7Ruh1ojkt5L1ceRyBe2fkR aHrin4c44SrbJ7A+KC7rVnbp4BSgSPYq1YWF5f5AhEezJqr/wzyoc0aarggLmaJWsL/N 28snwPM4CT6xdgJ57hmjfZQ/Ku0sg5mgZZPWbQQbQ1rIbWmfx42rbhD6zs0RKnbmAwlC xOiqZarx+UfmmBzwCR8rDNkJtpG2318zb4HR5tX68nv5/ALeV45/bl7cLLD4FV11OsXK TuRsqXVBrjpbyBPh8OacTFpqZh6uKFOHStQtMmZE+N8ayFImTk3IN8WaZzXLS4TGBEhK pYVA== X-Gm-Message-State: AOJu0YxUB+JPWsSDie2gyyjbiRkt/ivL5omtvSW0J/i/E0D7mPEpybR/ ATMH14UAgi9Vyth4U+pd69fyQLSPfHC9VSQD04udCzeIzuM25N22gvGvbfhkOoojwhUGybLKARt YnZOYXqdCYQ== X-Gm-Gg: AY/fxX41pl0Fnz4exD/PrMPZilikAdj/XivVTiiqdzBC+P7nVVit9GM5nMlMMEfRk2V lDr3W9AxUFEh13yRRzFeJ/Dw/gHz8xsF36BVkc7DG6C9SjTvtEp0nxdEaDhIK1bKJMyi85qb2zH LVZZ0+SFEG2yEmKhsnWBWneHAIZy+jgOGlDB9in0CLqmKccarfxR1SciCY2YHW74Kv19apGWSpS CnWp8FZSLnEMe+wRL40QxSWBAexHejH6MVF2P4pPLyRd3okpvoMb6ubTY9RjRrlMoheSWOjLe0s gLKczUicYIR+knwEwsWxOuqB31ENt0wHuirZnqXFAKNvn74Rfakwd9RDsCvYm0K1y+E6YPqKydS sirusDwGRkbiP2et14cDDFucDWDrUBKUbtwJmJ70WN2uWOcSsaYnapT+Heh2vBFIt6CuNejDZ+8 AzVoevQfZuz/m5/WtfUg== X-Received: by 2002:a17:902:f64c:b0:297:e3c4:b2b0 with SMTP id d9443c01a7336-2a71894325amr15315125ad.54.1768534768273; Thu, 15 Jan 2026 19:39:28 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 50/58] target/m68k: Drop CONFIG_ATOMIC64 tests Date: Fri, 16 Jan 2026 14:32:56 +1100 Message-ID: <20260116033305.51162-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768535298339158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/m68k/op_helper.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index a27e2bcfbc..f7df83c850 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -816,14 +816,11 @@ static void do_cas2l(CPUM68KState *env, uint32_t regs= , uint32_t a1, uint32_t a2, uint32_t u2 =3D env->dregs[Du2]; uint32_t l1, l2; uintptr_t ra =3D GETPC(); -#if defined(CONFIG_ATOMIC64) int mmu_idx =3D cpu_mmu_index(env_cpu(env), 0); MemOpIdx oi =3D make_memop_idx(MO_BEUQ, mmu_idx); -#endif =20 if (parallel) { /* We're executing in a parallel context -- must be atomic. */ -#ifdef CONFIG_ATOMIC64 uint64_t c, u, l; if ((a1 & 7) =3D=3D 0 && a2 =3D=3D a1 + 4) { c =3D deposit64(c2, 32, 32, c1); @@ -837,9 +834,7 @@ static void do_cas2l(CPUM68KState *env, uint32_t regs, = uint32_t a1, uint32_t a2, l =3D cpu_atomic_cmpxchgq_be_mmu(env, a2, c, u, oi, ra); l2 =3D l >> 32; l1 =3D l; - } else -#endif - { + } else { /* Tell the main loop we need to serialize this insn. */ cpu_loop_exit_atomic(env_cpu(env), ra); } --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534820; cv=none; d=zohomail.com; s=zohoarc; b=ZCny7vomNeu/6l+q/8LWxcpmDRILaVXy9H/+ueuR6sOHuYjFPCtmML2y5gJC5tTvvDG8nTdasLyeRZ7uG9xpqQm25U9DDbqk6+N80Y2s1jjBQ7PpaeXm95DygyOEqzdfSypbivmBgu0fdjW520FH/A70eWd6KPbZkzBNOPkXZlM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534820; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=nqPM6MHn7AUegnXKkA5IATnkWJcY3AmpmfrRokR9q1Q=; b=ghYXJJfLY572vi53WHDTYmAuQmrEvPZ3rr7VUMwGKSDc0CxAPfs4G68gFO/2/i4XMmnlsyXOx8Rz8zW1uY+ZTf7Q/3yfw8dEY8KIca0j4vcWj9rrMnTNjlmEWHR+sHEEmrSizi0gDPE9oog78aqPK5fNdelgJFyRDkeBlfOLKBk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534819973496.7364325648763; Thu, 15 Jan 2026 19:40:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagS-0005CW-Ad; Thu, 15 Jan 2026 22:39:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagQ-0005Bx-Ru for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:34 -0500 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgagP-0008Ug-Di for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:34 -0500 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2a0d5c365ceso11980245ad.3 for ; Thu, 15 Jan 2026 19:39:33 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534772; x=1769139572; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nqPM6MHn7AUegnXKkA5IATnkWJcY3AmpmfrRokR9q1Q=; b=g6NuW71/rzbCVQM5g3bsjoXo1Z1epTj0bnVZXn3CJOVtsoNK1DzW2XE4uHr0/bNaR4 IasBgitmgENEp5fGh7MVwLbHgOi8NKtHFnaRPVtP0Wh8+L7wEzypWhfmC3EtGctXBrGv kwQnf/eiasHNVm+NRId4YbokQy85KgZqwvwF81GfvGGNr88udBSGABBWK4Jn5r0rHa5F KUj1VhRYonO2G1m5mpD7u31eb1vf/Dfdz5xevMDG7Iu0sboBaxGqmZFD5Eiuq6R1vpoO qfbQNvKgVBcokgdooQieOcmrJCJNlGgQiklSgqGOhBna+7UdDHQfxyTTr2ptxSfrS8/8 /p5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534772; x=1769139572; 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; bh=nqPM6MHn7AUegnXKkA5IATnkWJcY3AmpmfrRokR9q1Q=; b=wtArrBrh8qPiFMU/JjnZO5pOOU7K9UC2e+uZjDk18vVIQefGGEniJvcVGO1NqxaChG TY9ju8SlXu7+X5lcrAVz7VXo6AYehbJ3IGyT8T53BBFlexhCa1fXhwkQOm3nadrl5xBb bE/LwwdK/H8Z5RTSTHE2rNpFwbzUScWJDaiGMmb5xmgTaXiRNdOtD+tg136Ia9BEHpZW 5t1UlskMUsmoqxHSnGAcSRHuzzFkSdX+x0PL+E2L/C2y/VsdFj78jE/tuw3nsY59qVyE qZM1wAFKr2BQUQM8c3LLNT7Tk6H2fM0Au60ARBrW0uw5DWppcJmC2AD9SEhVtudxO3CU Xinw== X-Gm-Message-State: AOJu0YzbfR5rUwNisWvyWB3/Ejz62n+t/wvNmJnWamkBZkZA8/VHOVn+ 4Uj4j9d27+E1zSGfukrdsjw/4MZiXpL7srZ79274bi/F37uPtUpIzGqnakMLeShyQ5jSHhci8H9 Puuw65FQ3HA== X-Gm-Gg: AY/fxX4kEnSOaL+vYwf6/hjn62pMkIKeNaCUq+XiS1/Q8IDJhvTFwES64TBHqa4pHOm aXxzhmnjV3BavxQdJw9YcFa7zjm6CAGXhhZT7KyaoVeVj5t2zppndO7N910pGM13xBfmekOvstd Bes8Q5n42LBH8pGQyraRJdCtSABYra1Wm9+BCavCl1pUETQUPWjplGWioIptqOMPCybSwRJKNcU +38VBf3QgP7u8ld0Rl3fVCskvPX2sFN+iDdAZNL59UqP38RFR4TSwIK4hQKU2QWL1U+ylvmtNss ml3tGGwLL6B4LHNJSu22Q9A+FKhljDcfHkyD5zklNh6z74KPmxfvmKw4ITTr+qwibS12d/l1PVR v4jbjlMAz784NpXaPoShKy0TKzIGBdpqjCH7j2tR4M/jPtpVOkeQ23VZ66cTVKtmiQ8cw3n+7M0 HyJOlXtBBWEGrzmPG5tw== X-Received: by 2002:a17:902:db0f:b0:2a1:4293:beb9 with SMTP id d9443c01a7336-2a7189739c2mr13655545ad.58.1768534771948; Thu, 15 Jan 2026 19:39:31 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 51/58] target/s390x: Drop CONFIG_ATOMIC64 tests Date: Fri, 16 Jan 2026 14:32:57 +1100 Message-ID: <20260116033305.51162-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534820509158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Thomas Huth Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- target/s390x/tcg/mem_helper.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/target/s390x/tcg/mem_helper.c b/target/s390x/tcg/mem_helper.c index 2972b7ddb9..0b8b6d3bbb 100644 --- a/target/s390x/tcg/mem_helper.c +++ b/target/s390x/tcg/mem_helper.c @@ -1815,9 +1815,7 @@ static uint32_t do_csst(CPUS390XState *env, uint32_t = r3, uint64_t a1, */ if (parallel) { uint32_t max =3D 2; -#ifdef CONFIG_ATOMIC64 max =3D 3; -#endif if ((HAVE_CMPXCHG128 ? 0 : fc + 2 > max) || (HAVE_ATOMIC128_RW ? 0 : sc > max)) { cpu_loop_exit_atomic(env_cpu(env), ra); @@ -1856,12 +1854,7 @@ static uint32_t do_csst(CPUS390XState *env, uint32_t= r3, uint64_t a1, uint64_t ov; =20 if (parallel) { -#ifdef CONFIG_ATOMIC64 ov =3D cpu_atomic_cmpxchgq_be_mmu(env, a1, cv, nv, oi8, ra= ); -#else - /* Note that we asserted !parallel above. */ - g_assert_not_reached(); -#endif } else { ov =3D cpu_ldq_mmu(env, a1, oi8, ra); cpu_stq_mmu(env, a1, (ov =3D=3D cv ? nv : ov), oi8, ra); --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535328; cv=none; d=zohomail.com; s=zohoarc; b=BFGBXt1++csD86ubYzXw+pS/jdY+5nLMoFfY7IDW/mOfqephNsSYarAirbkZQ9aege442jjiNT5Rs7yYIfc9IQpaej6l8VWDpXdamqRvrUMJPG+o+f1WBL9TaAAVeZWHKJpzWHnRSq7OrrY0Hnm5I5vnoo3qD75R0TlIz5j7sd8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535328; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vnW0mF2lM84XyAIXdpTSBn+2equ8zZi4b8HlvUKuVvM=; b=Lg9CgC/mq9k6lm+bO479n7zCkw0BMiWjMHNEmpnmv2avnLAzcGA+PLj9Ta+QqilSZy5CKPq3ADvw2WMbVEumhef7wXMsQ3eOuOJsWnK0ycT10SFhxk4F5UOMg6CR/ZklP2+qo6iLANxM8z5dsI396oBzAqO3ArdJN1csjEdHjsM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535328138968.8433779351027; Thu, 15 Jan 2026 19:48:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagX-0005Eg-7s; Thu, 15 Jan 2026 22:39:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagU-0005Dc-KA for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:38 -0500 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgagT-0008Vv-2Y for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:38 -0500 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2a0d67f1877so10568795ad.2 for ; Thu, 15 Jan 2026 19:39:36 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534775; x=1769139575; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vnW0mF2lM84XyAIXdpTSBn+2equ8zZi4b8HlvUKuVvM=; b=tuxrs/+iR8LRza4HpDlkvHIf4MR+OiaprBwPB/pHYbGT4gdotOXWOPbYsOexeCgIrP Yi+JMAK5sbyoNai0CVM3h73VaCDqCqfeh8qARwW3zV+nBg8uAxiVMPxNNcCv/0ak/Wnc NKeB8KrILhEeS5sbBdrCFN4+WaDEGYFl1/wHHOyB1L6mq/eQTCoeS4P3vaupp8wqVVU9 82W+k4snvm7tN/VyRagjSeMH3ljrJ4PCJ3Q+RuUrGg/wyJcjxoK5WDUv8wk6vvP6LX97 X1jMkeEX65dO6wglMWmWbhRbLtbUvaYwS0nbdDLLFWBs5yN8nQelCxrYXA47ENCV0bzQ VxqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534775; x=1769139575; 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; bh=vnW0mF2lM84XyAIXdpTSBn+2equ8zZi4b8HlvUKuVvM=; b=GAMnlYd0zF6r0QcuzKQ9ySErKQe/9L0MixWi57bwoRCZzMo75fJ9mgI1Xak5UgO086 XYxWrAVR1cn6mxlNnhZV9fVqgVo+pVgimUuOWkbIFHBTf+OPoQQLLC1awj4TEvLGj2DE iB1Dp8db+h5Ezp1nn9DhHMKh3eacG2dPoU0n22LksojCdM8gEt0QKZDrsH0nGly4RJzD saQlmH1Wl7x7Ytu5bTWNRjTJK2YiYFAQecjRoPCTxjvoh8WTy91CReqwH1jZTQS0yAuX ge3TX0Nwxk16n2AIvZ/2SmwFkkc10WPd4YmuajiyeZYC1oMShCO9Rs7YvUzmH/6R0x52 C9mQ== X-Gm-Message-State: AOJu0Yy4gz2bI4kaibfiNWK40J6d4i6Va7Kat0oWP2dSoq8EEnkFONY5 UcHAf+qYoDwkNt/LHE7nkX3L9RgqCjWX3wAGshzYQ5lpcWKRrMaF1jO65aJwPrSTRYymcTLRQ9e IfSwMyarPEA== X-Gm-Gg: AY/fxX6bk2SUYdvg9FJRBComputmzFVGW9bb1X9t20cYyE4Ks9ebcgQ0SWcMDPdEwL6 S14P70trebjEvteORkkVmE28tf2FuTKQOd0foiO404oAAEhfKL0VzWNKZ6v+AfDvr8ap9JW+3qd Jo3sp8iDTThp9RRFsMA2XDmpXnai4fvTjAuVmgyolaX5qdl0E3iBOd6O/0ISHho3yPlDAOeRqXQ e32msyb5Pdzg+FBmO9S7GioSolwQvJEsc8O7+159yAltj6PYVOo0+686tyjIzJGhOI0x+tr9+7p 9KhqQ/VMfnha6DNTbJSVMNb9IqcQz10uVedYcoksryFBkrrd6rnXMfsEFfX7i+bGPLueyvtWMKI 9c2XlScpDA88qvJCGHIeP79B5HL2SaTyvyOfoR0zRcZdwc/ZQB+1ZVa1Z5Ug7cmGNKLVWr88WHu HHzLwdQRfdqwQzZRXHMQ== X-Received: by 2002:a17:902:da82:b0:297:f09a:51cd with SMTP id d9443c01a7336-2a7188a590emr14079875ad.14.1768534775507; Thu, 15 Jan 2026 19:39:35 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 52/58] target/s390x: Simplify atomicity check in do_csst Date: Fri, 16 Jan 2026 14:32:58 +1100 Message-ID: <20260116033305.51162-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768535330322158500 Content-Type: text/plain; charset="utf-8" We should have used MO_{32,64} from the start, rather than raw integer constants. However, now that the CONFIG_ATOMIC64 test has been removed, we can remove the 'max' variable and simplify the two blocks. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- target/s390x/tcg/mem_helper.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/target/s390x/tcg/mem_helper.c b/target/s390x/tcg/mem_helper.c index 0b8b6d3bbb..2a79a789f6 100644 --- a/target/s390x/tcg/mem_helper.c +++ b/target/s390x/tcg/mem_helper.c @@ -1813,13 +1813,10 @@ static uint32_t do_csst(CPUS390XState *env, uint32_= t r3, uint64_t a1, * restart early if we can't support either operation that is supposed * to be atomic. */ - if (parallel) { - uint32_t max =3D 2; - max =3D 3; - if ((HAVE_CMPXCHG128 ? 0 : fc + 2 > max) || - (HAVE_ATOMIC128_RW ? 0 : sc > max)) { - cpu_loop_exit_atomic(env_cpu(env), ra); - } + if (parallel && + ((!HAVE_CMPXCHG128 && fc + 2 > MO_64) || + (!HAVE_ATOMIC128_RW && sc > MO_64))) { + cpu_loop_exit_atomic(env_cpu(env), ra); } =20 /* --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535227; cv=none; d=zohomail.com; s=zohoarc; b=TUL/duAcyj3dryMr1R6AxQl1E/TAlI7AFBq8/R5s7Xl0IokrmNlqR/xSltaDN/PXO6VmEmJm9GbcTn9oyabjF1NNZ5q8TsZ8q/imuzr6NgJch9x0uIYK9Mh2VHlkasBggvKIVK48TlVB+R1at95fHbKKLVujDUxnZgdedvhpi6U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535227; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ub91UhZKFBIAg2VzAb1rWE9bViNfsMn6m+Mycdb+wOk=; b=fYolX5nJcSZ0dzOqqBWSfDsKXazuo1EwBvOxDlk3Q71+Q+lT66hiZ8Z9M4c8H0Ykal+Yu7XsYJW2SaqTiRGotHqnjLWuE4UiSfysICbn2F5+diQXsXSRQkCNfollcjudUWpddg9j5lXGhpF1fV/tAH7oia3vnZtcw5V57SVhS6w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535227092206.57201510480513; Thu, 15 Jan 2026 19:47:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagf-0005Oo-97; Thu, 15 Jan 2026 22:39:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagd-0005NW-Gi for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:47 -0500 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaga-00005x-M3 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:47 -0500 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2a0ac29fca1so10955765ad.2 for ; Thu, 15 Jan 2026 19:39:40 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534779; x=1769139579; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ub91UhZKFBIAg2VzAb1rWE9bViNfsMn6m+Mycdb+wOk=; b=m6VVg++XKXjmsPCExg3xwIKyniAXJf7hiyRoXB62WyaPNb1+P4s9/jbRdxuJVdyWEj 6hwM+bAHnvIAJhplTuEGaVkqRf5SLb87hewjJFcOzwiGoPmVgm+1xf0LJaDUw43l6tsa 1nvI3g7G2Phy4TZZn/seDWkDI04Lwzwsa4RoWUq2+ee+hpgEGdpkpA3Q+R6afdjP1gt9 unj2yh6kkjIiyqV1iRIFId0ckJDJloVYwdPMxbJhSKGoYkIIb5qkfEDBB2mjqnzUcDDQ XrBpD5EaWY/PZDPZ6JRylzKvAKvDgFeNvCT3RUejfdislLOzwQMa5VK/ybapAABC0aRN UPCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534779; x=1769139579; 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; bh=Ub91UhZKFBIAg2VzAb1rWE9bViNfsMn6m+Mycdb+wOk=; b=r587IKHKsNi3zspNnMbBwKt7rN0RDlPWNw0Gqfc4xsKHiKaEveBL4et/U5L2LPBOpC i11XWIzGmIuPm63HiheCw+RdZlt4GR+jNwfhGpwIfi9QNrHOZLZFiVEQWpA5c2aEINBA FLUDtsKdidlbAHpVFLI++34oSmrwTNgoQW7YYa01cIl5I01N6HHTB6jDgpP9zZhLBPFX 3EZfCKOXgr5XLEho91Q8HJBczo8oj5zIqKQTWDxeCzCNmtx1ng/ILt8tcHDIWTqNO6Hb aH/smE70fvjdyjHr27gVgu6ORy5sCOm/EIHcxFdbKqQRFsJJwOI0XoRB9U2rbTxuPGVe d64w== X-Gm-Message-State: AOJu0Yyk07P7BatqtB3trCSQ7mkm5pGCl1EzeOAvLFXcrJY4nbEPHe1h JJklyh0mV44MF1NftuLehPrYx/rMlxOrH43gs0MeFPP1jvWrRR1q/kN1nltNfg0Uodb1cz89uTp mN4NFEyKhwg== X-Gm-Gg: AY/fxX6D2BLoMPgKhB2HRa8hL9JQoT9mThd8+utg6oK0INlEOqgOfM/J4Q9/i0dl3f+ lw5lmttCmaeyuezVS8V57lw7IQf0gkbnOh55gIDJ9KP6/VvyzXv1mHyvM5oF5HR3IU1Xd7Uc3sI LpSW608crpukinMFsJO8Xp+tNEUljBwlbr9jteK+7lTLn63O2zn+FiQkQmiJZdUW39XLhly3sla QbtF+J4URSyOjIb46SER3mXeT5kKXu5cKIy9Kwgrc5yQj7ZbAxeX7jpfZUWmnRJja19BuycooFK E3l2xCizHxoqCmXCitNmaqSaCtSC+GkjaNKyd4ZGFNNAbl//zk+xWmZIZrXobnntU2vmBmrUCxY IfmniisaotWdgKrOEfKSKXqshXqLkK+DehPHDaQ3GolrtVGxfJbzg+xba6CL0kNaFqzwwbn9UbL H/WAlS14ICWV/6fAYQfw== X-Received: by 2002:a17:902:d492:b0:2a0:8859:3722 with SMTP id d9443c01a7336-2a717532f61mr14928695ad.25.1768534779293; Thu, 15 Jan 2026 19:39:39 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 53/58] migration: Drop use of Stat64 Date: Fri, 16 Jan 2026 14:32:59 +1100 Message-ID: <20260116033305.51162-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768535242049158500 Content-Type: text/plain; charset="utf-8" The Stat64 structure is an aid for 32-bit hosts, and is no longer required. Use plain 64-bit types. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- migration/migration-stats.h | 36 ++++++++++++++++------------------- migration/cpu-throttle.c | 4 ++-- migration/migration-stats.c | 16 ++++++++-------- migration/migration.c | 24 +++++++++++------------ migration/multifd-nocomp.c | 2 +- migration/multifd-zero-page.c | 4 ++-- migration/multifd.c | 12 ++++-------- migration/qemu-file.c | 6 +++--- migration/ram.c | 30 ++++++++++++++--------------- migration/rdma.c | 8 ++++---- 10 files changed, 67 insertions(+), 75 deletions(-) diff --git a/migration/migration-stats.h b/migration/migration-stats.h index 05290ade76..c0f50144c9 100644 --- a/migration/migration-stats.h +++ b/migration/migration-stats.h @@ -13,8 +13,6 @@ #ifndef QEMU_MIGRATION_STATS_H #define QEMU_MIGRATION_STATS_H =20 -#include "qemu/stats64.h" - /* * Amount of time to allocate to each "chunk" of bandwidth-throttled * data. @@ -29,9 +27,7 @@ =20 /* * These are the ram migration statistic counters. It is loosely - * based on MigrationStats. We change to Stat64 any counter that - * needs to be updated using atomic ops (can be accessed by more than - * one thread). + * based on MigrationStats. */ typedef struct { /* @@ -41,66 +37,66 @@ typedef struct { * since last iteration, not counting what the guest has dirtied * since we synchronized bitmaps. */ - Stat64 dirty_bytes_last_sync; + uint64_t dirty_bytes_last_sync; /* * Number of pages dirtied per second. */ - Stat64 dirty_pages_rate; + uint64_t dirty_pages_rate; /* * Number of times we have synchronized guest bitmaps. */ - Stat64 dirty_sync_count; + uint64_t dirty_sync_count; /* * Number of times zero copy failed to send any page using zero * copy. */ - Stat64 dirty_sync_missed_zero_copy; + uint64_t dirty_sync_missed_zero_copy; /* * Number of bytes sent at migration completion stage while the * guest is stopped. */ - Stat64 downtime_bytes; + uint64_t downtime_bytes; /* * Number of bytes sent through multifd channels. */ - Stat64 multifd_bytes; + uint64_t multifd_bytes; /* * Number of pages transferred that were not full of zeros. */ - Stat64 normal_pages; + uint64_t normal_pages; /* * Number of bytes sent during postcopy. */ - Stat64 postcopy_bytes; + uint64_t postcopy_bytes; /* * Number of postcopy page faults that we have handled during * postcopy stage. */ - Stat64 postcopy_requests; + uint64_t postcopy_requests; /* * Number of bytes sent during precopy stage. */ - Stat64 precopy_bytes; + uint64_t precopy_bytes; /* * Number of bytes transferred with QEMUFile. */ - Stat64 qemu_file_transferred; + uint64_t qemu_file_transferred; /* * Amount of transferred data at the start of current cycle. */ - Stat64 rate_limit_start; + uint64_t rate_limit_start; /* * Maximum amount of data we can send in a cycle. */ - Stat64 rate_limit_max; + uint64_t rate_limit_max; /* * Number of bytes sent through RDMA. */ - Stat64 rdma_bytes; + uint64_t rdma_bytes; /* * Number of pages transferred that were full of zeros. */ - Stat64 zero_pages; + uint64_t zero_pages; } MigrationAtomicStats; =20 extern MigrationAtomicStats mig_stats; diff --git a/migration/cpu-throttle.c b/migration/cpu-throttle.c index 0642e6bdea..3b4d4aea52 100644 --- a/migration/cpu-throttle.c +++ b/migration/cpu-throttle.c @@ -134,7 +134,7 @@ int cpu_throttle_get_percentage(void) =20 void cpu_throttle_dirty_sync_timer_tick(void *opaque) { - uint64_t sync_cnt =3D stat64_get(&mig_stats.dirty_sync_count); + uint64_t sync_cnt =3D qatomic_read(&mig_stats.dirty_sync_count); =20 /* * The first iteration copies all memory anyhow and has no @@ -153,7 +153,7 @@ void cpu_throttle_dirty_sync_timer_tick(void *opaque) } =20 end: - throttle_dirty_sync_count_prev =3D stat64_get(&mig_stats.dirty_sync_co= unt); + throttle_dirty_sync_count_prev =3D qatomic_read(&mig_stats.dirty_sync_= count); =20 timer_mod(throttle_dirty_sync_timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL_RT) + diff --git a/migration/migration-stats.c b/migration/migration-stats.c index f690b98a03..3f17b6ac5c 100644 --- a/migration/migration-stats.c +++ b/migration/migration-stats.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "qemu/stats64.h" +#include "qemu/atomic.h" #include "qemu-file.h" #include "trace.h" #include "migration-stats.h" @@ -29,7 +29,7 @@ bool migration_rate_exceeded(QEMUFile *f) return false; } =20 - uint64_t rate_limit_start =3D stat64_get(&mig_stats.rate_limit_start); + uint64_t rate_limit_start =3D qatomic_read(&mig_stats.rate_limit_start= ); uint64_t rate_limit_current =3D migration_transferred_bytes(); uint64_t rate_limit_used =3D rate_limit_current - rate_limit_start; =20 @@ -41,7 +41,7 @@ bool migration_rate_exceeded(QEMUFile *f) =20 uint64_t migration_rate_get(void) { - return stat64_get(&mig_stats.rate_limit_max); + return qatomic_read(&mig_stats.rate_limit_max); } =20 #define XFER_LIMIT_RATIO (1000 / BUFFER_DELAY) @@ -51,19 +51,19 @@ void migration_rate_set(uint64_t limit) /* * 'limit' is per second. But we check it each BUFFER_DELAY milliseco= nds. */ - stat64_set(&mig_stats.rate_limit_max, limit / XFER_LIMIT_RATIO); + qatomic_set(&mig_stats.rate_limit_max, limit / XFER_LIMIT_RATIO); } =20 void migration_rate_reset(void) { - stat64_set(&mig_stats.rate_limit_start, migration_transferred_bytes()); + qatomic_set(&mig_stats.rate_limit_start, migration_transferred_bytes()= ); } =20 uint64_t migration_transferred_bytes(void) { - uint64_t multifd =3D stat64_get(&mig_stats.multifd_bytes); - uint64_t rdma =3D stat64_get(&mig_stats.rdma_bytes); - uint64_t qemu_file =3D stat64_get(&mig_stats.qemu_file_transferred); + uint64_t multifd =3D qatomic_read(&mig_stats.multifd_bytes); + uint64_t rdma =3D qatomic_read(&mig_stats.rdma_bytes); + uint64_t qemu_file =3D qatomic_read(&mig_stats.qemu_file_transferred); =20 trace_migration_transferred_bytes(qemu_file, multifd, rdma); return qemu_file + multifd + rdma; diff --git a/migration/migration.c b/migration/migration.c index 1c34d8d432..1bcde301f7 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1266,22 +1266,22 @@ static void populate_ram_info(MigrationInfo *info, = MigrationState *s) info->ram =3D g_malloc0(sizeof(*info->ram)); info->ram->transferred =3D migration_transferred_bytes(); info->ram->total =3D ram_bytes_total(); - info->ram->duplicate =3D stat64_get(&mig_stats.zero_pages); - info->ram->normal =3D stat64_get(&mig_stats.normal_pages); + info->ram->duplicate =3D qatomic_read(&mig_stats.zero_pages); + info->ram->normal =3D qatomic_read(&mig_stats.normal_pages); info->ram->normal_bytes =3D info->ram->normal * page_size; info->ram->mbps =3D s->mbps; info->ram->dirty_sync_count =3D - stat64_get(&mig_stats.dirty_sync_count); + qatomic_read(&mig_stats.dirty_sync_count); info->ram->dirty_sync_missed_zero_copy =3D - stat64_get(&mig_stats.dirty_sync_missed_zero_copy); + qatomic_read(&mig_stats.dirty_sync_missed_zero_copy); info->ram->postcopy_requests =3D - stat64_get(&mig_stats.postcopy_requests); + qatomic_read(&mig_stats.postcopy_requests); info->ram->page_size =3D page_size; - info->ram->multifd_bytes =3D stat64_get(&mig_stats.multifd_bytes); + info->ram->multifd_bytes =3D qatomic_read(&mig_stats.multifd_bytes); info->ram->pages_per_second =3D s->pages_per_second; - info->ram->precopy_bytes =3D stat64_get(&mig_stats.precopy_bytes); - info->ram->downtime_bytes =3D stat64_get(&mig_stats.downtime_bytes); - info->ram->postcopy_bytes =3D stat64_get(&mig_stats.postcopy_bytes); + info->ram->precopy_bytes =3D qatomic_read(&mig_stats.precopy_bytes); + info->ram->downtime_bytes =3D qatomic_read(&mig_stats.downtime_bytes); + info->ram->postcopy_bytes =3D qatomic_read(&mig_stats.postcopy_bytes); =20 if (migrate_xbzrle()) { info->xbzrle_cache =3D g_malloc0(sizeof(*info->xbzrle_cache)); @@ -1302,7 +1302,7 @@ static void populate_ram_info(MigrationInfo *info, Mi= grationState *s) if (s->state !=3D MIGRATION_STATUS_COMPLETED) { info->ram->remaining =3D ram_bytes_remaining(); info->ram->dirty_pages_rate =3D - stat64_get(&mig_stats.dirty_pages_rate); + qatomic_read(&mig_stats.dirty_pages_rate); } =20 if (migrate_dirty_limit() && dirtylimit_in_service()) { @@ -3420,10 +3420,10 @@ static void migration_update_counters(MigrationStat= e *s, * if we haven't sent anything, we don't want to * recalculate. 10000 is a small enough number for our purposes */ - if (stat64_get(&mig_stats.dirty_pages_rate) && + if (qatomic_read(&mig_stats.dirty_pages_rate) && transferred > 10000) { s->expected_downtime =3D - stat64_get(&mig_stats.dirty_bytes_last_sync) / expected_bw_per= _ms; + qatomic_read(&mig_stats.dirty_bytes_last_sync) / expected_bw_p= er_ms; } =20 migration_rate_reset(); diff --git a/migration/multifd-nocomp.c b/migration/multifd-nocomp.c index b48eae3d86..9be79b3b8e 100644 --- a/migration/multifd-nocomp.c +++ b/migration/multifd-nocomp.c @@ -141,7 +141,7 @@ static int multifd_nocomp_send_prepare(MultiFDSendParam= s *p, Error **errp) return -1; } =20 - stat64_add(&mig_stats.multifd_bytes, p->packet_len); + qatomic_add(&mig_stats.multifd_bytes, p->packet_len); } =20 return 0; diff --git a/migration/multifd-zero-page.c b/migration/multifd-zero-page.c index 4cde868159..00c330416a 100644 --- a/migration/multifd-zero-page.c +++ b/migration/multifd-zero-page.c @@ -77,8 +77,8 @@ void multifd_send_zero_page_detect(MultiFDSendParams *p) pages->normal_num =3D i; =20 out: - stat64_add(&mig_stats.normal_pages, pages->normal_num); - stat64_add(&mig_stats.zero_pages, pages->num - pages->normal_num); + qatomic_add(&mig_stats.normal_pages, pages->normal_num); + qatomic_add(&mig_stats.zero_pages, pages->num - pages->normal_num); } =20 void multifd_recv_zero_page_process(MultiFDRecvParams *p) diff --git a/migration/multifd.c b/migration/multifd.c index bf6da85af8..c9d4a67a46 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -58,10 +58,6 @@ struct { * operations on both 32bit / 64 bits hosts. It means on 32bit systems * multifd will overflow the packet_num easier, but that should be * fine. - * - * Another option is to use QEMU's Stat64 then it'll be 64 bits on all - * hosts, however so far it does not support atomic fetch_add() yet. - * Make it easy for now. */ uintptr_t packet_num; /* @@ -174,7 +170,7 @@ static int multifd_send_initial_packet(MultiFDSendParam= s *p, Error **errp) if (ret !=3D 0) { return -1; } - stat64_add(&mig_stats.multifd_bytes, size); + qatomic_add(&mig_stats.multifd_bytes, size); return 0; } =20 @@ -607,7 +603,7 @@ static int multifd_zero_copy_flush(QIOChannel *c) return -1; } if (ret =3D=3D 1) { - stat64_add(&mig_stats.dirty_sync_missed_zero_copy, 1); + qatomic_add(&mig_stats.dirty_sync_missed_zero_copy, 1); } =20 return ret; @@ -735,7 +731,7 @@ static void *multifd_send_thread(void *opaque) break; } =20 - stat64_add(&mig_stats.multifd_bytes, total_size); + qatomic_add(&mig_stats.multifd_bytes, total_size); =20 p->next_packet_size =3D 0; multifd_send_data_clear(p->data); @@ -766,7 +762,7 @@ static void *multifd_send_thread(void *opaque) break; } /* p->next_packet_size will always be zero for a SYNC pack= et */ - stat64_add(&mig_stats.multifd_bytes, p->packet_len); + qatomic_add(&mig_stats.multifd_bytes, p->packet_len); } =20 qatomic_set(&p->pending_sync, MULTIFD_SYNC_NONE); diff --git a/migration/qemu-file.c b/migration/qemu-file.c index 4b5a409a80..8d82d94416 100644 --- a/migration/qemu-file.c +++ b/migration/qemu-file.c @@ -295,7 +295,7 @@ int qemu_fflush(QEMUFile *f) qemu_file_set_error_obj(f, -EIO, local_error); } else { uint64_t size =3D iov_size(f->iov, f->iovcnt); - stat64_add(&mig_stats.qemu_file_transferred, size); + qatomic_add(&mig_stats.qemu_file_transferred, size); } =20 qemu_iovec_release_ram(f); @@ -552,7 +552,7 @@ void qemu_put_buffer_at(QEMUFile *f, const uint8_t *buf= , size_t buflen, return; } =20 - stat64_add(&mig_stats.qemu_file_transferred, buflen); + qatomic_add(&mig_stats.qemu_file_transferred, buflen); } =20 =20 @@ -785,7 +785,7 @@ int coroutine_mixed_fn qemu_get_byte(QEMUFile *f) =20 uint64_t qemu_file_transferred(QEMUFile *f) { - uint64_t ret =3D stat64_get(&mig_stats.qemu_file_transferred); + uint64_t ret =3D qatomic_read(&mig_stats.qemu_file_transferred); int i; =20 g_assert(qemu_file_is_writable(f)); diff --git a/migration/ram.c b/migration/ram.c index 04958c5603..fc7ece2c1a 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -479,11 +479,11 @@ uint64_t ram_bytes_remaining(void) void ram_transferred_add(uint64_t bytes) { if (runstate_is_running()) { - stat64_add(&mig_stats.precopy_bytes, bytes); + qatomic_add(&mig_stats.precopy_bytes, bytes); } else if (migration_in_postcopy()) { - stat64_add(&mig_stats.postcopy_bytes, bytes); + qatomic_add(&mig_stats.postcopy_bytes, bytes); } else { - stat64_add(&mig_stats.downtime_bytes, bytes); + qatomic_add(&mig_stats.downtime_bytes, bytes); } } =20 @@ -605,7 +605,7 @@ static void xbzrle_cache_zero_page(ram_addr_t current_a= ddr) /* We don't care if this fails to allocate a new cache page * as long as it updated an old one */ cache_insert(XBZRLE.cache, current_addr, XBZRLE.zero_target_page, - stat64_get(&mig_stats.dirty_sync_count)); + qatomic_read(&mig_stats.dirty_sync_count)); } =20 #define ENCODING_FLAG_XBZRLE 0x1 @@ -631,7 +631,7 @@ static int save_xbzrle_page(RAMState *rs, PageSearchSta= tus *pss, int encoded_len =3D 0, bytes_xbzrle; uint8_t *prev_cached_page; QEMUFile *file =3D pss->pss_channel; - uint64_t generation =3D stat64_get(&mig_stats.dirty_sync_count); + uint64_t generation =3D qatomic_read(&mig_stats.dirty_sync_count); =20 if (!cache_is_cached(XBZRLE.cache, current_addr, generation)) { xbzrle_counters.cache_miss++; @@ -1035,9 +1035,9 @@ uint64_t ram_pagesize_summary(void) =20 uint64_t ram_get_total_transferred_pages(void) { - return stat64_get(&mig_stats.normal_pages) + - stat64_get(&mig_stats.zero_pages) + - xbzrle_counters.pages; + return (qatomic_read(&mig_stats.normal_pages) + + qatomic_read(&mig_stats.zero_pages) + + xbzrle_counters.pages); } =20 static void migration_update_rates(RAMState *rs, int64_t end_time) @@ -1045,7 +1045,7 @@ static void migration_update_rates(RAMState *rs, int6= 4_t end_time) uint64_t page_count =3D rs->target_page_count - rs->target_page_count_= prev; =20 /* calculate period counters */ - stat64_set(&mig_stats.dirty_pages_rate, + qatomic_set(&mig_stats.dirty_pages_rate, rs->num_dirty_pages_period * 1000 / (end_time - rs->time_last_bitmap_sync)); =20 @@ -1136,7 +1136,7 @@ static void migration_bitmap_sync(RAMState *rs, bool = last_stage) RAMBlock *block; int64_t end_time; =20 - stat64_add(&mig_stats.dirty_sync_count, 1); + qatomic_add(&mig_stats.dirty_sync_count, 1); =20 if (!rs->time_last_bitmap_sync) { rs->time_last_bitmap_sync =3D qemu_clock_get_ms(QEMU_CLOCK_REALTIM= E); @@ -1150,7 +1150,7 @@ static void migration_bitmap_sync(RAMState *rs, bool = last_stage) RAMBLOCK_FOREACH_NOT_IGNORED(block) { ramblock_sync_dirty_bitmap(rs, block); } - stat64_set(&mig_stats.dirty_bytes_last_sync, ram_bytes_remaini= ng()); + qatomic_set(&mig_stats.dirty_bytes_last_sync, ram_bytes_remain= ing()); } } =20 @@ -1173,7 +1173,7 @@ static void migration_bitmap_sync(RAMState *rs, bool = last_stage) rs->bytes_xfer_prev =3D migration_transferred_bytes(); } if (migrate_events()) { - uint64_t generation =3D stat64_get(&mig_stats.dirty_sync_count); + uint64_t generation =3D qatomic_read(&mig_stats.dirty_sync_count); qapi_event_send_migration_pass(generation); } } @@ -1232,7 +1232,7 @@ static int save_zero_page(RAMState *rs, PageSearchSta= tus *pss, return 0; } =20 - stat64_add(&mig_stats.zero_pages, 1); + qatomic_add(&mig_stats.zero_pages, 1); =20 if (migrate_mapped_ram()) { /* zero pages are not transferred with mapped-ram */ @@ -1291,7 +1291,7 @@ static int save_normal_page(PageSearchStatus *pss, RA= MBlock *block, } } ram_transferred_add(TARGET_PAGE_SIZE); - stat64_add(&mig_stats.normal_pages, 1); + qatomic_add(&mig_stats.normal_pages, 1); return 1; } =20 @@ -1943,7 +1943,7 @@ int ram_save_queue_pages(const char *rbname, ram_addr= _t start, ram_addr_t len, RAMBlock *ramblock; RAMState *rs =3D ram_state; =20 - stat64_add(&mig_stats.postcopy_requests, 1); + qatomic_add(&mig_stats.postcopy_requests, 1); RCU_READ_LOCK_GUARD(); =20 if (!rbname) { diff --git a/migration/rdma.c b/migration/rdma.c index 9e301cf917..cced173379 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -1936,8 +1936,8 @@ retry: * would think that head.len would be the more similar * thing to a correct value. */ - stat64_add(&mig_stats.zero_pages, - sge.length / qemu_target_page_size()); + qatomic_add(&mig_stats.zero_pages, + sge.length / qemu_target_page_size()); return 1; } =20 @@ -2045,7 +2045,7 @@ retry: } =20 set_bit(chunk, block->transit_bitmap); - stat64_add(&mig_stats.normal_pages, sge.length / qemu_target_page_size= ()); + qatomic_add(&mig_stats.normal_pages, sge.length / qemu_target_page_siz= e()); /* * We are adding to transferred the amount of data written, but no * overhead at all. I will assume that RDMA is magicaly and don't @@ -2055,7 +2055,7 @@ retry: * sizeof(send_wr) + sge.length * but this being RDMA, who knows. */ - stat64_add(&mig_stats.rdma_bytes, sge.length); + qatomic_add(&mig_stats.rdma_bytes, sge.length); ram_transferred_add(sge.length); rdma->total_writes++; =20 --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535246; cv=none; d=zohomail.com; s=zohoarc; b=cDG2bGjNo49GoMw7DOJGuk3UxBDklRi1Qa2ujT8NiFGEC3MhDLKdI7Pgi6EssMc6afHQpAarcoT0rJaeFqbHFH/CbbXbf7uMU6ooLb+0S22CPKWgCtPMub2Ok4aErixIp4Mtwpuzt3WxAYTR8WspLWy5FIvTZizbOftgQgYmGV8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535246; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0b6Gm0w9KlLs51qj052MnIFfJ9dUHou4Uw1pKozVZqU=; b=iwS7S8IeGR3cQ9B6GABYCMPMt53oHYRYF6zx04PbvaW+ys4nVTklwrAhgqzJig/lmy8f8Jh1IGznvvV9hXRrVNwK2IbdgTQLklmabcx4LfAKjrlCJHNyKjCA3F/xbwxWRBEcRRP+sMYaz5Yp7QiusJwdNuWP6/Cp2KZwWY1Ei0M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176853524669555.066390169942906; Thu, 15 Jan 2026 19:47:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagd-0005NX-I9; Thu, 15 Jan 2026 22:39:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagc-0005Mp-90 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:46 -0500 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgaga-00007Y-LZ for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:46 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2a0fe77d141so11771165ad.1 for ; Thu, 15 Jan 2026 19:39:43 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534783; x=1769139583; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0b6Gm0w9KlLs51qj052MnIFfJ9dUHou4Uw1pKozVZqU=; b=NC2WntN65OQnLkzi34BqurICNgIjyFMo/UB/dGww/Ig6Le+Jn3/J3q841CXuB3tqUY mqgq2d4lo3ukHNWYZXchBA6IHzZc+A6J0Bnh/dNfa8/5rv3tDUMdYAkzSHmUC9SVW8bY wAKAkATWm7j4d226Yz0p14PXdxvXikNTP1IloTVGJyXtQqEyPAjIjjIYGti3wpWh1LOV zrjiKQnlYOeS3GD9MQRjdLdnUu0NgFNQUu3HHJjGQftp8lf2YjU8m4eRBTs8x8YNjKJH VlZVAnZpaOr+fRXDZWhdyMuUtW+NQNfVhUjLJbWOJG2+UJ6FmOXSXv3TZIEsGGfzDYdv bNNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534783; x=1769139583; 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; bh=0b6Gm0w9KlLs51qj052MnIFfJ9dUHou4Uw1pKozVZqU=; b=NQNWJQ403ORk+YWOhBixx54ruGSAFUVxYk6H9DJ87sJ6ePNUW6Qg8KWbMdm7SO7uH4 om/AWIvjB6sA8B4+OgAYmEWl3pUNGvNmgbah3Uimsbf0PcfqEi64hwB+HmKKgiltqtkH 7DO0qsx7Df0pkra4ANqzTu3eBOuk8gwow/e2eu7fFVBqy4eW7jFq4vlfnNyuORFZdJpL hLZcXqC3i5yzX6PKIr71E/Y09supVNx7y5lac0lizMEomDjP3M3j9lrV7PtntiOJOker a9Kj4W1hs/C9NSWe2rLLUEA4aCAYm2OIjTccUyhgVsV7GLlSOct4zarN4c2SvjojcW2l m/RQ== X-Gm-Message-State: AOJu0YzM7gmYcgsuk4UprFEvDA2FM8z4DotmXmiTgfxxl0Io+Ar0T4ms PUFpoLac+dLw+PwdFTkk5gfyMe1lXz/bvHZytnK0NpPjY9noMAXmyiyMMXh1uymNh+2Xt9Yqqp5 T99mFbXWHzg== X-Gm-Gg: AY/fxX4kuk6VfwMjGkwaPhbJPflxGbZlpCtiqcthKGf9xUHl97efK3vcvbgAUKRCl2d umqIb2wU+POMPhIFEkgL/s0T7jCuusyhvAC5sTPT+fkmp3pVQJAuoLceXaWqqQnZjofW4yo5XDH 9X+ZiYXe/oOZ3La3JlbEXxsLlnR2For8C2tAt031U4gpq+X+0k8HRV0TPZskXZRUdGDde48ltWz swWNf6ela1K8IxC4pvxsQ0QgktJa7k1YAUXJiHvKAKOkOU5ahVsa+8wz2b7yJvh7x+YcMdn5kis d9N7LtEsWu8tmVY9ZB74/+hrqM4p+3SjBD1icSvOY9LUrZDsGE0yYTx5ANNKz6emeZJnUFWD6c0 5zjp618+pCCs3h44uiqBEgiwhbHwYhqZsipeL07mcelZclIIKxQ5WNGRSCAn6QNGrwRDptEsge8 b5/IT1iFItCmb1r4xI8A== X-Received: by 2002:a17:903:40cb:b0:2a0:bb3b:4193 with SMTP id d9443c01a7336-2a7176cc6c7mr15699485ad.40.1768534782829; Thu, 15 Jan 2026 19:39:42 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 54/58] block: Drop use of Stat64 Date: Fri, 16 Jan 2026 14:33:00 +1100 Message-ID: <20260116033305.51162-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768535248029158500 Content-Type: text/plain; charset="utf-8" The Stat64 structure is an aid for 32-bit hosts, and is no longer required. Use plain 64-bit types. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/block/block_int-common.h | 3 +-- block/io.c | 10 +++++++++- block/qapi.c | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index 6d0898e53d..9324af903d 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -30,7 +30,6 @@ #include "qemu/aiocb.h" #include "qemu/iov.h" #include "qemu/rcu.h" -#include "qemu/stats64.h" =20 #define BLOCK_FLAG_LAZY_REFCOUNTS 8 =20 @@ -1246,7 +1245,7 @@ struct BlockDriverState { QLIST_HEAD(, BdrvDirtyBitmap) dirty_bitmaps; =20 /* Offset after the highest byte written to */ - Stat64 wr_highest_offset; + uint64_t wr_highest_offset; =20 /* * If true, copy read backing sectors into image. Can be >1 if more diff --git a/block/io.c b/block/io.c index cace297f22..e8fb4ede4d 100644 --- a/block/io.c +++ b/block/io.c @@ -39,6 +39,7 @@ #include "qemu/main-loop.h" #include "system/replay.h" #include "qemu/units.h" +#include "qemu/atomic.h" =20 /* Maximum bounce buffer for copy-on-read and write zeroes, in bytes */ #define MAX_BOUNCE_BUFFER (32768 << BDRV_SECTOR_BITS) @@ -2044,7 +2045,14 @@ bdrv_co_write_req_finish(BdrvChild *child, int64_t o= ffset, int64_t bytes, if (req->bytes) { switch (req->type) { case BDRV_TRACKED_WRITE: - stat64_max(&bs->wr_highest_offset, offset + bytes); + { + uint64_t new =3D offset + bytes; + uint64_t old =3D qatomic_read(&bs->wr_highest_offset); + + while (old < new) { + old =3D qatomic_cmpxchg(&bs->wr_highest_offset, old, n= ew); + } + } /* fall through, to set dirty bits */ case BDRV_TRACKED_DISCARD: bdrv_set_dirty(bs, offset, bytes); diff --git a/block/qapi.c b/block/qapi.c index 9f5771e019..27e0ac6a32 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -651,7 +651,7 @@ bdrv_query_bds_stats(BlockDriverState *bs, bool blk_lev= el) s->node_name =3D g_strdup(bdrv_get_node_name(bs)); } =20 - s->stats->wr_highest_offset =3D stat64_get(&bs->wr_highest_offset); + s->stats->wr_highest_offset =3D qatomic_read(&bs->wr_highest_offset); =20 s->driver_specific =3D bdrv_get_specific_stats(bs); =20 --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535310; cv=none; d=zohomail.com; s=zohoarc; b=jQ9v+zaKUD9xBdJfChTTzyWXheLE5FxOGcogRM7+PsuG945VA7eCgPjfZL5r+ZQyLRvjKMBxvSUvpnOHAryo2r4EfPBaHxg2qbMHb+kmIocyo5+3v1A3WImUxLyfBBbfJhRFBFWRnDfRerY07bw6hVAJLuQEpWSQpUT/vyT0JuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535310; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pWKD7qvJhqwZTehtXTMdJknW4/xJt4QHquzuA5hb+vE=; b=BuBG6zvkJoi3wn9wnmghD05/nptuFAtuuYMj/eCuy55TOm5PJb2+WAxCp0gZK71vSgOnDyJJJ11mPkpylbrPKD2maHOPhFaYLKNuvWknZ76QtIrh/s4o/hcYqJzefox18WRkCLpyVpPwy4LF6FqmEAk9xp3yK2Ya8l71+Ipf8ps= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535310656911.3765158084607; Thu, 15 Jan 2026 19:48:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagg-0005SV-Vq; Thu, 15 Jan 2026 22:39:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagg-0005RT-9c for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:50 -0500 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 1vgagd-00009M-Vx for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:50 -0500 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2a110548cdeso11508655ad.0 for ; Thu, 15 Jan 2026 19:39:47 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534786; x=1769139586; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pWKD7qvJhqwZTehtXTMdJknW4/xJt4QHquzuA5hb+vE=; b=FyLm3Tj9sHJdUlcnZomeQqsDTzRybT3i42QWRoQYj7+EUi3l9JKumKpqUiCfFLMQ7G UXG3z3Y/a60rG9Bx50rRKoMD81kadbCo7CsNUGagJMVxR6idqiVaJpB5AfTVwaRHZx9x 3heqKeuzTcs/KKNGgGfFZtchoBOQvZrS6Of5Gtmfp9+69Pv8RLZH8qZwgIMU3KXhfuGe VTfw91hijgB17zXP9b+TETy9CYr/UO3oKoFq4FeKThxMdVC4OZCamtNLw6ngAa8zPMbP zcTFa1lK0LaOPbwPGuZy9eM4kEQfonL9anWRBEM7MaOQkgzXp3jhJe4bqJI9D16tVftQ xl+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534786; x=1769139586; 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; bh=pWKD7qvJhqwZTehtXTMdJknW4/xJt4QHquzuA5hb+vE=; b=E/KrYqgSiyha7Ay5bhk3MR1GcUZlbZR0Ns48XEssy1OiyZwwb41ZtnVXObFB63OPFd YiREwyOrctgrNuHggdTIIrBZfVhmMHMXTQFEA9x0/JySNiQc3npSVvQTbJZ8kjbFyrzw xfUnHKjZ3sSBiIj7UAjWUhRqJaKSXYi8PFGiz7IJmCPeEI0I45OLny7I6jyiWFMZQKh2 6PUgqeUMX2Dso375+olahsuqobKpNJD+n+NizANVDsnz5/oSUyeh1dlpUqBwQXNpgaXF eHb3hx1KLWpkQOs8GtRW3h28fGC0TscZuMhBRqTFWzcertrYiLp8riMlqLxPd4Eu4ivc PTaA== X-Gm-Message-State: AOJu0Yx9WEHQBpa/AtcmLyHLnC5mDSx0PX2UsfHYaTFEn6uDqWMx0z4e h1A9qAlQr304p1Slgf/9xj66nXsmO74YK8msBoo6CXLNHYhGLTaV8Ylwyc1kev7ZFHv5iA/KGoo l1q7xCYooww== X-Gm-Gg: AY/fxX6NiAR0DhXQymWOM96OjIsxdQ3KHp8v7Dax2qXE9ZikgAd7oGfz9LR6vbxh9zs Lm9+eMweXBUqEhBxOFQuZTzGgy7cYuKDmL4DTGYSE0DywLrQYbjslEMsXNoWjtiGeiORD0PJKnD BNfYSIRvEUJpx1SHwcH/PsxMMQikgnDnivYQX7qYPXziL7f6SrAkrlksf4KadQ6RGowP90wB/aN J8D6FTBAzL6XEM5dvYS950GAOBPBLH54SOFuTSmxW1o71Uyvf6rwPSKMSeJkaB/zWGqSxHYe4ta SsaEG/gXOHxL/ElrrtMWRqX/chYB4woWcIafSpLc3iq7D8k6K+9WNv/JChENCA3b6hRqrv90GL0 Nr6bW3he1aKiaxmoSe4goakISJvuhKqr5KTX7x3zPR5djdbJdNa2gmRDAxzXced9D+ajVIyTEZf p4RcHDQDoOmJ050mgfsw== X-Received: by 2002:a17:903:120b:b0:297:cf96:45bd with SMTP id d9443c01a7336-2a717537567mr15097245ad.19.1768534786441; Thu, 15 Jan 2026 19:39:46 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 55/58] util: Remove stats64 Date: Fri, 16 Jan 2026 14:33:01 +1100 Message-ID: <20260116033305.51162-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.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: 1768535312455158500 Content-Type: text/plain; charset="utf-8" This API is no longer used. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/qemu/stats64.h | 199 ----------------------------------------- util/stats64.c | 148 ------------------------------ util/meson.build | 1 - 3 files changed, 348 deletions(-) delete mode 100644 include/qemu/stats64.h delete mode 100644 util/stats64.c diff --git a/include/qemu/stats64.h b/include/qemu/stats64.h deleted file mode 100644 index 99b5cb724a..0000000000 --- a/include/qemu/stats64.h +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Atomic operations on 64-bit quantities. - * - * Copyright (C) 2017 Red Hat, Inc. - * - * Author: Paolo Bonzini - * - * This work is licensed under the terms of the GNU GPL, version 2 or late= r. - * See the COPYING file in the top-level directory. - */ - -#ifndef QEMU_STATS64_H -#define QEMU_STATS64_H - -#include "qemu/atomic.h" - -/* This provides atomic operations on 64-bit type, using a reader-writer - * spinlock on architectures that do not have 64-bit accesses. Even on - * those architectures, it tries hard not to take the lock. - */ - -typedef struct Stat64 { -#ifdef CONFIG_ATOMIC64 - aligned_uint64_t value; -#else - uint32_t low, high; - uint32_t lock; -#endif -} Stat64; - -#ifdef CONFIG_ATOMIC64 -static inline void stat64_init(Stat64 *s, uint64_t value) -{ - /* This is not guaranteed to be atomic! */ - *s =3D (Stat64) { value }; -} - -static inline uint64_t stat64_get(const Stat64 *s) -{ - return qatomic_read__nocheck(&s->value); -} - -static inline void stat64_set(Stat64 *s, uint64_t value) -{ - qatomic_set__nocheck(&s->value, value); -} - -static inline void stat64_add(Stat64 *s, uint64_t value) -{ - qatomic_add(&s->value, value); -} - -static inline void stat64_min(Stat64 *s, uint64_t value) -{ - uint64_t orig =3D qatomic_read__nocheck(&s->value); - while (orig > value) { - orig =3D qatomic_cmpxchg__nocheck(&s->value, orig, value); - } -} - -static inline void stat64_max(Stat64 *s, uint64_t value) -{ - uint64_t orig =3D qatomic_read__nocheck(&s->value); - while (orig < value) { - orig =3D qatomic_cmpxchg__nocheck(&s->value, orig, value); - } -} -#else -uint64_t stat64_get(const Stat64 *s); -void stat64_set(Stat64 *s, uint64_t value); -bool stat64_min_slow(Stat64 *s, uint64_t value); -bool stat64_max_slow(Stat64 *s, uint64_t value); -bool stat64_add32_carry(Stat64 *s, uint32_t low, uint32_t high); - -static inline void stat64_init(Stat64 *s, uint64_t value) -{ - /* This is not guaranteed to be atomic! */ - *s =3D (Stat64) { .low =3D value, .high =3D value >> 32, .lock =3D 0 }; -} - -static inline void stat64_add(Stat64 *s, uint64_t value) -{ - uint32_t low, high; - high =3D value >> 32; - low =3D (uint32_t) value; - if (!low) { - if (high) { - qatomic_add(&s->high, high); - } - return; - } - - for (;;) { - uint32_t orig =3D s->low; - uint32_t result =3D orig + low; - uint32_t old; - - if (result < low || high) { - /* If the high part is affected, take the lock. */ - if (stat64_add32_carry(s, low, high)) { - return; - } - continue; - } - - /* No carry, try with a 32-bit cmpxchg. The result is independent= of - * the high 32 bits, so it can race just fine with stat64_add32_ca= rry - * and even stat64_get! - */ - old =3D qatomic_cmpxchg(&s->low, orig, result); - if (orig =3D=3D old) { - return; - } - } -} - -static inline void stat64_min(Stat64 *s, uint64_t value) -{ - uint32_t low, high; - uint32_t orig_low, orig_high; - - high =3D value >> 32; - low =3D (uint32_t) value; - do { - orig_high =3D qatomic_read(&s->high); - if (orig_high < high) { - return; - } - - if (orig_high =3D=3D high) { - /* High 32 bits are equal. Read low after high, otherwise we - * can get a false positive (e.g. 0x1235,0x0000 changes to - * 0x1234,0x8000 and we read it as 0x1234,0x0000). Pairs with - * the write barrier in stat64_min_slow. - */ - smp_rmb(); - orig_low =3D qatomic_read(&s->low); - if (orig_low <=3D low) { - return; - } - - /* See if we were lucky and a writer raced against us. The - * barrier is theoretically unnecessary, but if we remove it - * we may miss being lucky. - */ - smp_rmb(); - orig_high =3D qatomic_read(&s->high); - if (orig_high < high) { - return; - } - } - - /* If the value changes in any way, we have to take the lock. */ - } while (!stat64_min_slow(s, value)); -} - -static inline void stat64_max(Stat64 *s, uint64_t value) -{ - uint32_t low, high; - uint32_t orig_low, orig_high; - - high =3D value >> 32; - low =3D (uint32_t) value; - do { - orig_high =3D qatomic_read(&s->high); - if (orig_high > high) { - return; - } - - if (orig_high =3D=3D high) { - /* High 32 bits are equal. Read low after high, otherwise we - * can get a false positive (e.g. 0x1234,0x8000 changes to - * 0x1235,0x0000 and we read it as 0x1235,0x8000). Pairs with - * the write barrier in stat64_max_slow. - */ - smp_rmb(); - orig_low =3D qatomic_read(&s->low); - if (orig_low >=3D low) { - return; - } - - /* See if we were lucky and a writer raced against us. The - * barrier is theoretically unnecessary, but if we remove it - * we may miss being lucky. - */ - smp_rmb(); - orig_high =3D qatomic_read(&s->high); - if (orig_high > high) { - return; - } - } - - /* If the value changes in any way, we have to take the lock. */ - } while (!stat64_max_slow(s, value)); -} - -#endif - -#endif diff --git a/util/stats64.c b/util/stats64.c deleted file mode 100644 index 09736014ec..0000000000 --- a/util/stats64.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Atomic operations on 64-bit quantities. - * - * Copyright (C) 2017 Red Hat, Inc. - * - * Author: Paolo Bonzini - * - * This work is licensed under the terms of the GNU GPL, version 2 or late= r. - * See the COPYING file in the top-level directory. - */ - -#include "qemu/osdep.h" -#include "qemu/atomic.h" -#include "qemu/stats64.h" -#include "qemu/processor.h" - -#ifndef CONFIG_ATOMIC64 -static inline void stat64_rdlock(Stat64 *s) -{ - /* Keep out incoming writers to avoid them starving us. */ - qatomic_add(&s->lock, 2); - - /* If there is a concurrent writer, wait for it. */ - while (qatomic_read(&s->lock) & 1) { - cpu_relax(); - } -} - -static inline void stat64_rdunlock(Stat64 *s) -{ - qatomic_sub(&s->lock, 2); -} - -static inline bool stat64_wrtrylock(Stat64 *s) -{ - return qatomic_cmpxchg(&s->lock, 0, 1) =3D=3D 0; -} - -static inline void stat64_wrunlock(Stat64 *s) -{ - qatomic_dec(&s->lock); -} - -uint64_t stat64_get(const Stat64 *s) -{ - uint32_t high, low; - - stat64_rdlock((Stat64 *)s); - - /* 64-bit writes always take the lock, so we can read in - * any order. - */ - high =3D qatomic_read(&s->high); - low =3D qatomic_read(&s->low); - stat64_rdunlock((Stat64 *)s); - - return ((uint64_t)high << 32) | low; -} - -void stat64_set(Stat64 *s, uint64_t val) -{ - while (!stat64_wrtrylock(s)) { - cpu_relax(); - } - - qatomic_set(&s->high, val >> 32); - qatomic_set(&s->low, val); - stat64_wrunlock(s); -} - -bool stat64_add32_carry(Stat64 *s, uint32_t low, uint32_t high) -{ - uint32_t old; - - if (!stat64_wrtrylock(s)) { - cpu_relax(); - return false; - } - - /* 64-bit reads always take the lock, so they don't care about the - * order of our update. By updating s->low first, we can check - * whether we have to carry into s->high. - */ - old =3D qatomic_fetch_add(&s->low, low); - high +=3D (old + low) < old; - qatomic_add(&s->high, high); - stat64_wrunlock(s); - return true; -} - -bool stat64_min_slow(Stat64 *s, uint64_t value) -{ - uint32_t high, low; - uint64_t orig; - - if (!stat64_wrtrylock(s)) { - cpu_relax(); - return false; - } - - high =3D qatomic_read(&s->high); - low =3D qatomic_read(&s->low); - - orig =3D ((uint64_t)high << 32) | low; - if (value < orig) { - /* We have to set low before high, just like stat64_min reads - * high before low. The value may become higher temporarily, but - * stat64_get does not notice (it takes the lock) and the only ill - * effect on stat64_min is that the slow path may be triggered - * unnecessarily. - */ - qatomic_set(&s->low, (uint32_t)value); - smp_wmb(); - qatomic_set(&s->high, value >> 32); - } - stat64_wrunlock(s); - return true; -} - -bool stat64_max_slow(Stat64 *s, uint64_t value) -{ - uint32_t high, low; - uint64_t orig; - - if (!stat64_wrtrylock(s)) { - cpu_relax(); - return false; - } - - high =3D qatomic_read(&s->high); - low =3D qatomic_read(&s->low); - - orig =3D ((uint64_t)high << 32) | low; - if (value > orig) { - /* We have to set low before high, just like stat64_max reads - * high before low. The value may become lower temporarily, but - * stat64_get does not notice (it takes the lock) and the only ill - * effect on stat64_max is that the slow path may be triggered - * unnecessarily. - */ - qatomic_set(&s->low, (uint32_t)value); - smp_wmb(); - qatomic_set(&s->high, value >> 32); - } - stat64_wrunlock(s); - return true; -} -#endif diff --git a/util/meson.build b/util/meson.build index 35029380a3..d7d6b213f6 100644 --- a/util/meson.build +++ b/util/meson.build @@ -59,7 +59,6 @@ util_ss.add(files('qht.c')) util_ss.add(files('qsp.c')) util_ss.add(files('range.c')) util_ss.add(files('reserved-region.c')) -util_ss.add(files('stats64.c')) util_ss.add(files('systemd.c')) util_ss.add(files('transactions.c')) util_ss.add(files('guest-random.c')) --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768535306; cv=none; d=zohomail.com; s=zohoarc; b=PEsVsvba8j1Gh8kCPt1QHDkuBJGlB3jQWjIz9nreDOkRBSKApAADQQZFJSXiEoUlU1K4EiyU/vCQlET0LCecP4wtzRBBApIoVd5nqdu955WzhGUbZcJW/GrU2Gdu7sEgACZkJeUtxGdj7bjXUiqzsGqHtf1+ND72yr1HPekBk6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768535306; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mEULzlPw6xjPe+4/C4phqMCxelohiweTDlicKl24zKE=; b=bgj4YiLhaG37cDvALFTVlXMBSsKLLLdw0Nj/KfVJ9yKGwtHf3ehrCXCLYQ+hgaLIwDUe7ZAf1cIVJOfkJDnuPpPlQ2MTotYu352dzDVrwb+ieze4AwY02ANt/qBAPElkR1Al37HTecmMV4E1blM9KnzTxJzMCL1InvtPJfz0+fE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768535306544100.40106030438722; Thu, 15 Jan 2026 19:48:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagm-0005Ul-4y; Thu, 15 Jan 2026 22:39:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagj-0005Tr-SB for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:53 -0500 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgagh-0000BA-JU for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:53 -0500 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-29f1bc40b35so16546085ad.2 for ; Thu, 15 Jan 2026 19:39:51 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534790; x=1769139590; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mEULzlPw6xjPe+4/C4phqMCxelohiweTDlicKl24zKE=; b=Y+bCDKqsWVvI/9z3YlYjtgAp7uPciW9LwtdihhXAlG8Y+6nq+mFjHjHieNvWemw0gj 0Yek3hsLNSO55FYqFJFBb3R2sZ9Gz8gfCTN5faGAz6UotlJ6r8ar+C5PVtN1c+76wsdX jC04VupSrzi0N9lKBildWlDz5VhRQo0/7gMmrM2W3s4xr3IcHWzLBIYbQSHw8CF9/Nhd TjKN9+UtC7oJjAbguhLapN33NunW2zMeVidSKvTPoImHNdILKu93Xj7/vLVP6Avi9i6A ungc5pXLn/c0B4oRhaz2dcI0gVVXjDZFJhLt68I1Ijn0ssIJAUbpVyHVJpdOOShq0BFH jdQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534790; x=1769139590; 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; bh=mEULzlPw6xjPe+4/C4phqMCxelohiweTDlicKl24zKE=; b=SOtkZtxHlStIwJCoTKfBEqWl54kDzv7FgG8hVaRzJiH8usxZ9/TcDFJONkMQdaXj1I m2cufoxETJhIVYjh65YjhDT6hnF5+MqpnN/RO/+wodYOoYj6qhQvcysawuZtVAoWONwu 1QpCTFfcpE4/i+Qitvr8kV3ZjFbfEN6jFbeLtf39rPdl4pWhWcqx7tBIlMzh03iVQ9+C 5/NTvim9Sze2ox1l3rGPBM5c7p9tnxjPWC5qEVLFf4W6rmxpsIb/e2/h2WaVtSq0WNbu l72evmMvN4Qp/AltuCaTSeZwbN6dYg0QbtpRGmIvnRROJK0HBaYDp45RYTIJlm3sQE2d +hkg== X-Gm-Message-State: AOJu0Yz6INPlL5lY43hD59krWIs8MPPhRUM+404ULZJWajPURZ4LJtep humE0JXR3eX1uyKASlBDuIoCdKra+7hgKtnu+e6iOEYhitS0wjJZT1lQxrvOKgYNYetEKNxyeCP 7K/uq4FN7MQ== X-Gm-Gg: AY/fxX6eOYIeVxslg2TqW4h/xoisC0f+yGKdigXSD14tK91Zg8r6KomSvfmvoylIMUK uDKUWvEynoBNLJfa5FfNeYsdTP70RTuy/GpRtZaqN0AzU3239zNQHkJdkzXBQIXykQdtUHYAC67 pxOQ4CXm1bqMb10mEjWQx9JrqKNoj0TTM0KayUn28+qXCuLDEYmbxVOuhwKTRntf9SspaA6Yn2O J8PrI4Et9xMPxzDbD7GrtFsBUnQjTZKdarTDQwbrVgMyBrUHZcvVOLLfFDZC4/8fJfSWFVs3TZN iRBiKbGqEqAr3riIGe10K5fG4n18dByeGEGgjfauUDAdeNLcsG73ejnG9z2uGYOOnm/U/ijtyHT WhsaDtI8Uh7IyXcAkObHZ6oekFo+pV79dS71L19yf7G1TakM9/adAk8tFRDPZYb4mkjt0EJQtZU k03qVhRpwO6tgpsEHr0w== X-Received: by 2002:a17:903:124f:b0:2a0:c84f:4124 with SMTP id d9443c01a7336-2a7177e2b6fmr15884955ad.52.1768534790136; Thu, 15 Jan 2026 19:39:50 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 56/58] include/qemu/atomic: Drop qatomic_{read,set}_[iu]64 Date: Fri, 16 Jan 2026 14:33:02 +1100 Message-ID: <20260116033305.51162-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: 1768535308365158500 Content-Type: text/plain; charset="utf-8" Replace all uses with the normal qatomic_{read,set}. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/qemu/atomic.h | 22 ---------- accel/qtest/qtest.c | 4 +- accel/tcg/icount-common.c | 25 ++++++----- system/dirtylimit.c | 2 +- tests/unit/test-rcu-list.c | 17 ++++---- util/atomic64.c | 85 -------------------------------------- util/cacheflush.c | 2 - util/qsp.c | 8 ++-- util/meson.build | 3 -- 9 files changed, 27 insertions(+), 141 deletions(-) delete mode 100644 util/atomic64.c diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h index c39dc99f2f..27d98014d4 100644 --- a/include/qemu/atomic.h +++ b/include/qemu/atomic.h @@ -247,26 +247,4 @@ typedef int64_t aligned_int64_t __attribute__((aligned(8))); typedef uint64_t aligned_uint64_t __attribute__((aligned(8))); =20 -#ifdef CONFIG_ATOMIC64 -/* Use __nocheck because sizeof(void *) might be < sizeof(u64) */ -#define qatomic_read_i64(P) \ - _Generic(*(P), int64_t: qatomic_read__nocheck(P)) -#define qatomic_read_u64(P) \ - _Generic(*(P), uint64_t: qatomic_read__nocheck(P)) -#define qatomic_set_i64(P, V) \ - _Generic(*(P), int64_t: qatomic_set__nocheck(P, V)) -#define qatomic_set_u64(P, V) \ - _Generic(*(P), uint64_t: qatomic_set__nocheck(P, V)) - -static inline void qatomic64_init(void) -{ -} -#else /* !CONFIG_ATOMIC64 */ -int64_t qatomic_read_i64(const int64_t *ptr); -uint64_t qatomic_read_u64(const uint64_t *ptr); -void qatomic_set_i64(int64_t *ptr, int64_t val); -void qatomic_set_u64(uint64_t *ptr, uint64_t val); -void qatomic64_init(void); -#endif /* !CONFIG_ATOMIC64 */ - #endif /* QEMU_ATOMIC_H */ diff --git a/accel/qtest/qtest.c b/accel/qtest/qtest.c index 1d4337d698..bb1491d93b 100644 --- a/accel/qtest/qtest.c +++ b/accel/qtest/qtest.c @@ -31,12 +31,12 @@ static int64_t qtest_clock_counter; =20 static int64_t qtest_get_virtual_clock(void) { - return qatomic_read_i64(&qtest_clock_counter); + return qatomic_read(&qtest_clock_counter); } =20 static void qtest_set_virtual_clock(int64_t count) { - qatomic_set_i64(&qtest_clock_counter, count); + qatomic_set(&qtest_clock_counter, count); } =20 static int qtest_init_accel(AccelState *as, MachineState *ms) diff --git a/accel/tcg/icount-common.c b/accel/tcg/icount-common.c index d6471174a3..b1b6c005fe 100644 --- a/accel/tcg/icount-common.c +++ b/accel/tcg/icount-common.c @@ -86,8 +86,8 @@ static void icount_update_locked(CPUState *cpu) int64_t executed =3D icount_get_executed(cpu); cpu->icount_budget -=3D executed; =20 - qatomic_set_i64(&timers_state.qemu_icount, - timers_state.qemu_icount + executed); + qatomic_set(&timers_state.qemu_icount, + timers_state.qemu_icount + executed); } =20 /* @@ -116,15 +116,14 @@ static int64_t icount_get_raw_locked(void) /* Take into account what has run */ icount_update_locked(cpu); } - /* The read is protected by the seqlock, but needs atomic64 to avoid U= B */ - return qatomic_read_i64(&timers_state.qemu_icount); + /* The read is protected by the seqlock, but needs atomic to avoid UB = */ + return qatomic_read(&timers_state.qemu_icount); } =20 static int64_t icount_get_locked(void) { int64_t icount =3D icount_get_raw_locked(); - return qatomic_read_i64(&timers_state.qemu_icount_bias) + - icount_to_ns(icount); + return qatomic_read(&timers_state.qemu_icount_bias) + icount_to_ns(ico= unt); } =20 int64_t icount_get_raw(void) @@ -201,9 +200,9 @@ static void icount_adjust(void) timers_state.icount_time_shift + 1); } timers_state.last_delta =3D delta; - qatomic_set_i64(&timers_state.qemu_icount_bias, - cur_icount - (timers_state.qemu_icount - << timers_state.icount_time_shift)); + qatomic_set(&timers_state.qemu_icount_bias, + cur_icount - (timers_state.qemu_icount + << timers_state.icount_time_shift)); seqlock_write_unlock(&timers_state.vm_clock_seqlock, &timers_state.vm_clock_lock); } @@ -269,8 +268,8 @@ static void icount_warp_rt(void) } warp_delta =3D MIN(warp_delta, delta); } - qatomic_set_i64(&timers_state.qemu_icount_bias, - timers_state.qemu_icount_bias + warp_delta); + qatomic_set(&timers_state.qemu_icount_bias, + timers_state.qemu_icount_bias + warp_delta); } timers_state.vm_clock_warp_start =3D -1; seqlock_write_unlock(&timers_state.vm_clock_seqlock, @@ -361,8 +360,8 @@ void icount_start_warp_timer(void) */ seqlock_write_lock(&timers_state.vm_clock_seqlock, &timers_state.vm_clock_lock); - qatomic_set_i64(&timers_state.qemu_icount_bias, - timers_state.qemu_icount_bias + deadline); + qatomic_set(&timers_state.qemu_icount_bias, + timers_state.qemu_icount_bias + deadline); seqlock_write_unlock(&timers_state.vm_clock_seqlock, &timers_state.vm_clock_lock); qemu_clock_notify(QEMU_CLOCK_VIRTUAL); diff --git a/system/dirtylimit.c b/system/dirtylimit.c index a0c327533c..50fa67f3d6 100644 --- a/system/dirtylimit.c +++ b/system/dirtylimit.c @@ -123,7 +123,7 @@ static void *vcpu_dirty_rate_stat_thread(void *opaque) int64_t vcpu_dirty_rate_get(int cpu_index) { DirtyRateVcpu *rates =3D vcpu_dirty_rate_stat->stat.rates; - return qatomic_read_i64(&rates[cpu_index].dirty_rate); + return qatomic_read(&rates[cpu_index].dirty_rate); } =20 void vcpu_dirty_rate_stat_start(void) diff --git a/tests/unit/test-rcu-list.c b/tests/unit/test-rcu-list.c index 8f0adb8b00..8dde3e61a8 100644 --- a/tests/unit/test-rcu-list.c +++ b/tests/unit/test-rcu-list.c @@ -105,7 +105,7 @@ static void reclaim_list_el(struct rcu_head *prcu) struct list_element *el =3D container_of(prcu, struct list_element, rc= u); g_free(el); /* Accessed only from call_rcu thread. */ - qatomic_set_i64(&n_reclaims, n_reclaims + 1); + qatomic_set(&n_reclaims, n_reclaims + 1); } =20 #if TEST_LIST_TYPE =3D=3D 1 @@ -247,7 +247,7 @@ static void *rcu_q_updater(void *arg) qemu_mutex_lock(&counts_mutex); n_nodes +=3D n_nodes_local; n_updates +=3D n_updates_local; - qatomic_set_i64(&n_nodes_removed, n_nodes_removed + n_removed_local); + qatomic_set(&n_nodes_removed, n_nodes_removed + n_removed_local); qemu_mutex_unlock(&counts_mutex); return NULL; } @@ -301,23 +301,22 @@ static void rcu_qtest(const char *test, int duration,= int nreaders) n_removed_local++; } qemu_mutex_lock(&counts_mutex); - qatomic_set_i64(&n_nodes_removed, n_nodes_removed + n_removed_local); + qatomic_set(&n_nodes_removed, n_nodes_removed + n_removed_local); qemu_mutex_unlock(&counts_mutex); synchronize_rcu(); - while (qatomic_read_i64(&n_nodes_removed) > - qatomic_read_i64(&n_reclaims)) { + while (qatomic_read(&n_nodes_removed) > qatomic_read(&n_reclaims)) { g_usleep(100); synchronize_rcu(); } if (g_test_in_charge) { - g_assert_cmpint(qatomic_read_i64(&n_nodes_removed), =3D=3D, - qatomic_read_i64(&n_reclaims)); + g_assert_cmpint(qatomic_read(&n_nodes_removed), =3D=3D, + qatomic_read(&n_reclaims)); } else { printf("%s: %d readers; 1 updater; nodes read: " \ "%lld, nodes removed: %"PRIi64"; nodes reclaimed: %"PRIi64"= \n", test, nthreadsrunning - 1, n_reads, - qatomic_read_i64(&n_nodes_removed), - qatomic_read_i64(&n_reclaims)); + qatomic_read(&n_nodes_removed), + qatomic_read(&n_reclaims)); exit(0); } } diff --git a/util/atomic64.c b/util/atomic64.c deleted file mode 100644 index c20d071d8e..0000000000 --- a/util/atomic64.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2018, Emilio G. Cota - * - * License: GNU GPL, version 2 or later. - * See the COPYING file in the top-level directory. - */ -#include "qemu/osdep.h" -#include "qemu/atomic.h" -#include "qemu/thread.h" -#include "qemu/cacheinfo.h" -#include "qemu/memalign.h" - -#ifdef CONFIG_ATOMIC64 -#error This file must only be compiled if !CONFIG_ATOMIC64 -#endif - -/* - * When !CONFIG_ATOMIC64, we serialize both reads and writes with spinlock= s. - * We use an array of spinlocks, with padding computed at run-time based on - * the host's dcache line size. - * We point to the array with a void * to simplify the padding's computati= on. - * Each spinlock is located every lock_size bytes. - */ -static void *lock_array; -static size_t lock_size; - -/* - * Systems without CONFIG_ATOMIC64 are unlikely to have many cores, so we = use a - * small array of locks. - */ -#define NR_LOCKS 16 - -static QemuSpin *addr_to_lock(const void *addr) -{ - uintptr_t a =3D (uintptr_t)addr; - uintptr_t idx; - - idx =3D a >> qemu_dcache_linesize_log; - idx ^=3D (idx >> 8) ^ (idx >> 16); - idx &=3D NR_LOCKS - 1; - return lock_array + idx * lock_size; -} - -#define GEN_READ(name, type) \ - type name(const type *ptr) \ - { \ - QemuSpin *lock =3D addr_to_lock(ptr); \ - type ret; \ - \ - qemu_spin_lock(lock); \ - ret =3D *ptr; \ - qemu_spin_unlock(lock); \ - return ret; \ - } - -GEN_READ(qatomic_read_i64, int64_t) -GEN_READ(qatomic_read_u64, uint64_t) -#undef GEN_READ - -#define GEN_SET(name, type) \ - void name(type *ptr, type val) \ - { \ - QemuSpin *lock =3D addr_to_lock(ptr); \ - \ - qemu_spin_lock(lock); \ - *ptr =3D val; \ - qemu_spin_unlock(lock); \ - } - -GEN_SET(qatomic_set_i64, int64_t) -GEN_SET(qatomic_set_u64, uint64_t) -#undef GEN_SET - -void qatomic64_init(void) -{ - int i; - - lock_size =3D ROUND_UP(sizeof(QemuSpin), qemu_dcache_linesize); - lock_array =3D qemu_memalign(qemu_dcache_linesize, lock_size * NR_LOCK= S); - for (i =3D 0; i < NR_LOCKS; i++) { - QemuSpin *lock =3D lock_array + i * lock_size; - - qemu_spin_init(lock); - } -} diff --git a/util/cacheflush.c b/util/cacheflush.c index 99221a409f..c043c5f881 100644 --- a/util/cacheflush.c +++ b/util/cacheflush.c @@ -216,8 +216,6 @@ static void __attribute__((constructor)) init_cache_inf= o(void) qemu_icache_linesize_log =3D ctz32(isize); qemu_dcache_linesize =3D dsize; qemu_dcache_linesize_log =3D ctz32(dsize); - - qatomic64_init(); } =20 =20 diff --git a/util/qsp.c b/util/qsp.c index 6b783e2e7f..382e4397e2 100644 --- a/util/qsp.c +++ b/util/qsp.c @@ -346,9 +346,9 @@ static QSPEntry *qsp_entry_get(const void *obj, const c= har *file, int line, */ static inline void do_qsp_entry_record(QSPEntry *e, int64_t delta, bool ac= q) { - qatomic_set_u64(&e->ns, e->ns + delta); + qatomic_set(&e->ns, e->ns + delta); if (acq) { - qatomic_set_u64(&e->n_acqs, e->n_acqs + 1); + qatomic_set(&e->n_acqs, e->n_acqs + 1); } } =20 @@ -538,8 +538,8 @@ static void qsp_aggregate(void *p, uint32_t h, void *up) * The entry is in the global hash table; read from it atomically (as = in * "read once"). */ - agg->ns +=3D qatomic_read_u64(&e->ns); - agg->n_acqs +=3D qatomic_read_u64(&e->n_acqs); + agg->ns +=3D qatomic_read(&e->ns); + agg->n_acqs +=3D qatomic_read(&e->n_acqs); } =20 static void qsp_iter_diff(void *p, uint32_t hash, void *htp) diff --git a/util/meson.build b/util/meson.build index d7d6b213f6..59e835a8d3 100644 --- a/util/meson.build +++ b/util/meson.build @@ -1,8 +1,5 @@ util_ss.add(files('osdep.c', 'cutils.c', 'unicode.c', 'qemu-timer-common.c= ')) util_ss.add(files('thread-context.c'), numa) -if not config_host_data.get('CONFIG_ATOMIC64') - util_ss.add(files('atomic64.c')) -endif if host_os !=3D 'windows' util_ss.add(files('aio-posix.c')) util_ss.add(files('fdmon-poll.c')) --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534826; cv=none; d=zohomail.com; s=zohoarc; b=fszEZ8e5cS+98BAHKAj+fclGSxJDuTSY9n63fG0cBvJc+MhbWxmCgKurAMJdHpp5qJyrZDN/BgJTvIceArLFDHuafIgSNK6DhpGWPGRVYMkTCbtPerGp3KD7NTSvbs9XrJH+xYp7t1/YBu/RrVb+VNFFor63Gzb6ULdfImFV4O8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534826; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YwA+XxyWFDkORFNBlQmOw9xYRUenABDhu5WGq8pWY6s=; b=efgcfwViXeKwjtokqmNQokcLEsKSOKvxUNeemiIEidHZSYoBy985SKZPGG6ehDro7IaU6OO+cOjNcKVugXMId4FBEACoTwE3INcwSk1u9QbooThS7CLeQg9tN80RTbl0XWzgxCivix1gbdRVRuhC/HPOx/Rj3FllvRTS8mMy6FQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534826129862.8551242614693; Thu, 15 Jan 2026 19:40:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgagp-0005Wf-PW; Thu, 15 Jan 2026 22:39:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgago-0005Vn-9Y for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:58 -0500 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgagl-0000D7-Et for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:39:58 -0500 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2a0a95200e8so10596435ad.0 for ; Thu, 15 Jan 2026 19:39:55 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534794; x=1769139594; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YwA+XxyWFDkORFNBlQmOw9xYRUenABDhu5WGq8pWY6s=; b=StR4WfOftKgtJGzUI1Q/4DD1DoUHCcsy0rDVm13H9JLXz5B7QNAmZP4AnceOeNdpBa ACjYyuztSv76F5n1WFky4xj2i2q1mrGSyH+vCWW1m4VetQy10jr0D748Nxg8QxleBLLV RaaSUWkrfXHsKGx6Cj29CdboTWKAHpUHTEP+FTpifHBwjmDwixeGKZgL64H9mp9JtSfu /k7P6OiqedunOpGFFyJ8MiNAJ0mAfUunm3mINOZ//s7tDj8LaMRX3Syu6/qPzm4pLFvg o3I4Kn5IlJUW6+WvnV4yhs/1A3zNY2d54QdoV3tFymZEgReurXG/VEQu9EVyNA9ezX8X NVXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534794; x=1769139594; 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; bh=YwA+XxyWFDkORFNBlQmOw9xYRUenABDhu5WGq8pWY6s=; b=FxApeF4Ir8C6iScbmPyfFC4T+gsOsH+JdDp/YF69Qu9ndoE0z5242BALbaH7S64liw ej8gD3QyhjGKIB0yEqhwPVhx4Y9NLVohvYPQ/yLbWoAqJyA3K9ls9Gcdor0Id/IuOTqM caaLb5QK6CRcjBPYEjynOm7muEPNpiaT3ZGW5r/g+FovozBQOVuUEtX93V6p09RzL5T1 81h/PzKaQ7e6qlWftS/B+Yckwwb6HbNrDnd14yERSn+0hi37bNRxFR6mtlWXUO9JoIxY nEL6SplBG+O1mNd3cuzsLOOD0UeUmBqnay/ROcWHTRD8OcbRVdR9fYvDv65J0ebIno0P /M6A== X-Gm-Message-State: AOJu0Yz5KufAsp608u2RdbmLqAwsLcjA8iegdYYx/L6Nahn5e+TEbUmg Ym0qbqdkDwCFtJXcGQsQ1YQvBHN8Arq/fRcbYDqY9gwos4ZCEj4fEQt6oYSynPbTQY/okPSPotd wLQB4hSiUZA== X-Gm-Gg: AY/fxX74jAQIuQ1smXa0WpxEsgAvOa8ivJ6TDL1+WhtfK4RIVdWIH0B4LTE9/kB//Rg pHq2i6p+/zhmWmwmmVMhIFHaNB3kiAWGYCCoqIDhxpQzBI5QQoMAezmUUSJaaAh2FM9xMrSSA9H Gzx06Ngr+RUcgeBu5xEVKlMnu5W1jD34MbgTtwzQKhWEZRdI1urlou5I2c10HUgbNlSqczF8fmP kTGjs6capKYabKdBGLGBlGUdWEFlLlpCvFi0HiIUGOkhOmbx4rwa9D3cir+DTbZhnOWNTnxMk9j STZ0Z94Hdam6TU4DSeQ77v+d8/yh+PAQaViEpozvcrrEm1DEiELJ0FKpHgXIigmsX/rSFDQt02E uLy6bYHTbC6zJPTSr1m1XO8czyBKIiN1iRQd2w0uDdQ1XX1vMdAzmFugwe69tyQiaRTNdjVjlGC KSuYF6Iq4ZxKE4mUxfcg== X-Received: by 2002:a17:902:c952:b0:2a0:945d:a195 with SMTP id d9443c01a7336-2a7176c5ce8mr16872725ad.45.1768534794006; Thu, 15 Jan 2026 19:39:54 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 57/58] meson: Remove CONFIG_ATOMIC64 Date: Fri, 16 Jan 2026 14:33:03 +1100 Message-ID: <20260116033305.51162-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534826482158500 Content-Type: text/plain; charset="utf-8" This config is no longer used. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- meson.build | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/meson.build b/meson.build index 0189d8fd44..3108f01e88 100644 --- a/meson.build +++ b/meson.build @@ -2939,22 +2939,6 @@ config_host_data.set('HAVE_BROKEN_SIZE_MAX', not cc.= compiles(''' return printf("%zu", SIZE_MAX); }''', args: ['-Werror'])) =20 -# See if 64-bit atomic operations are supported. -# Note that without __atomic builtins, we can only -# assume atomic loads/stores max at pointer size. -config_host_data.set('CONFIG_ATOMIC64', cc.links(''' - #include - int main(void) - { - uint64_t x =3D 0, y =3D 0; - y =3D __atomic_load_n(&x, __ATOMIC_RELAXED); - __atomic_store_n(&x, y, __ATOMIC_RELAXED); - __atomic_compare_exchange_n(&x, &y, x, 0, __ATOMIC_RELAXED, __ATOMIC_R= ELAXED); - __atomic_exchange_n(&x, y, __ATOMIC_RELAXED); - __atomic_fetch_add(&x, y, __ATOMIC_RELAXED); - return 0; - }''', args: qemu_isa_flags)) - # has_int128_type is set to false on Emscripten to avoid errors by libffi # during runtime. has_int128_type =3D host_os !=3D 'emscripten' and cc.compiles(''' --=20 2.43.0 From nobody Mon Feb 9 10:43:10 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1768534989; cv=none; d=zohomail.com; s=zohoarc; b=FGBdok8haevLq5NW+r45Ob6Loj/XCSzYRpvXkMnG2Pc2Mqf8/S1+wtE0Us9tapZtNXBtHDapaxWb+UOupCsYGp6aolkq8nkbSsPYRCeJIunru+JlXGe5qdXpmwHB+0c6/sQZqtxk+gvYdiPDhNxtknlC57iGNBdr7p+/tD6E/mo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768534989; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VnCVV9AnEgawNA+fiIe+uEXCZKJSFhPJndsOefTu71g=; b=DsmPILT2T5BXXJf4BR0DPSLlowm+LtmoZn4xjo96UDVJ9LR1UKhBB4UvD66QYBFTtkKo9KnOr5rfaRvJGJeKs3ZUKs1r6bRdyRCmMxxmlbX7T0cWq+RCe84e315a1Ou/RZ1pXB2A2QLwbbLK+e8wJRHU1BO+Ipf9N4Utf5EdqB4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768534989463515.8788411806099; Thu, 15 Jan 2026 19:43:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vgags-0005Xv-Fk; Thu, 15 Jan 2026 22:40:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vgagq-0005X0-S8 for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:40:00 -0500 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vgagp-0000Ej-7l for qemu-devel@nongnu.org; Thu, 15 Jan 2026 22:40:00 -0500 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2a0d5c365ceso11982245ad.3 for ; Thu, 15 Jan 2026 19:39:58 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190ca9d5sm6527975ad.25.2026.01.15.19.39.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jan 2026 19:39:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768534798; x=1769139598; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VnCVV9AnEgawNA+fiIe+uEXCZKJSFhPJndsOefTu71g=; b=ARall/9EWYqhvumnxJPfpz7ymBU+J1h7j+JQObPDGiZ4KE4ClMGoE8Bxvc37Trd4/j HuxvYzY9Vp8j62TlGAU5FKJpUWtAW+hdmxahyvfILyFNl0p7nadto/1aHAenk6BhdkbO Qo89Kl0JyPuS92BVdvr2JMnFbUPgYzsZE6ivHtUUf/bmt10lPlX648P3XRm/6PhGASw/ IVqpZWi1XvmuCCpbrJb6T9yGLKofbllSO75dMJg0SX2DSddRSgAILLOXuPDdGiCcnWWL b8wkbW2m+KfT8r1gNthwrOlyycHkMqpqibOgq0vfIvuvRQ/GobxB0IofW1iTZWbDsjXJ agRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534798; x=1769139598; 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; bh=VnCVV9AnEgawNA+fiIe+uEXCZKJSFhPJndsOefTu71g=; b=fFE6Ush58oMEeW/zId3XKxC9KWHP2amdWbRrmkNPrSxndG0QVF7uWmrCW9Y+AdUUL1 Xac8fuaauBt+5hJIATzXHNdcBe1KsEcq8zrl1bi3N49kl/V+oIz/s97vhhwxjfVyB/Bb SFULa+sAEFlTzBlqXva0AEow+YSRE6QSbyOVZBO8BiyVwFy+nObdzyGtTnJQzbeGYVtu zsCrSB/mK+NGn1vd47c37jQSChhr93MC7rOCJS29VZ9YKg6CLLbiV+fM6+p/ZiUkSL/r BWO1HDl/UziB5zE1X0zaaD0P8p/ouhKhd3GvpTdxvEsarIGpD4+6paOIx1MlAZd+T61A I7BA== X-Gm-Message-State: AOJu0YzLpAP47UK2FKKuu4GguqaLS2Mc5S8q3WQVBPehpZugaxnXLCOQ 4tYsxfP4mTwsJW+xapf0CzmUhvVyLIK8g9dvXKVXEGnCMVVQXirHc/yJnywbknxrciTk6z9aF7L 4YLQbd4gpDg== X-Gm-Gg: AY/fxX7EI15tjb3m4aBsLNoGe0tRMYe/JWM/2N4RSk3Zt8uDooxtKKRCReb8y9SaOoh ChUg9xqY/PPWB//mP0/bblXHX0kDF7sLt+rVh0SKE91fYK+KUNFi9GinbX2N8UNnMiW/64CWzSJ 0+B+o5GD27wcjfA/THYoMKh4fd8sE/6cX0ueukbjrQV8vhF2Dc2D+JFhRXxbphHAvBOYkHQRNUm epqve5s3eiQTFIUUOqwnq6RvSH0MNTXosIGLfONZ3xaLZx/IsfIKQMx006WN/Ln36DF+fKCsQd/ IxAbFBWEAXTU0TDE2FF1wlwrwGXmp6FQCae/MdzgFQp0LcGoQ90YCFAgMPJjp5clhKJJ/sj1jnf 1gNUpX6wFN9ouzpGKDeX50xiO97f+pITX6qq0OrbXfXplqR3U4GxEhQ3CTJXXz/fdUXsZqW8ZGI 77Eje7OXe4bi7ASNTh3Q== X-Received: by 2002:a17:903:1105:b0:2a3:e6fa:4a06 with SMTP id d9443c01a7336-2a7189295edmr13757415ad.39.1768534797598; Thu, 15 Jan 2026 19:39:57 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: ktokunaga.mail@gmail.com, berrange@redhat.com, pierrick.bouvier@linaro.org, thuth@redhat.com, pbonzini@redhat.com, philmd@linaro.org Subject: [PATCH v2 58/58] include/qemu/atomic: Drop aligned_{u}int64_t Date: Fri, 16 Jan 2026 14:33:04 +1100 Message-ID: <20260116033305.51162-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260116033305.51162-1-richard.henderson@linaro.org> References: <20260116033305.51162-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1768534991309158500 As we no longer support i386 as a host architecture, this abstraction is no longer required. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- accel/tcg/atomic_template.h | 4 ++-- include/qemu/atomic.h | 13 ------------- include/system/cpu-timers-internal.h | 2 +- linux-user/hppa/cpu_loop.c | 2 +- util/qsp.c | 4 ++-- 5 files changed, 6 insertions(+), 19 deletions(-) diff --git a/accel/tcg/atomic_template.h b/accel/tcg/atomic_template.h index ae5203b439..f7924078f7 100644 --- a/accel/tcg/atomic_template.h +++ b/accel/tcg/atomic_template.h @@ -27,8 +27,8 @@ # define SHIFT 4 #elif DATA_SIZE =3D=3D 8 # define SUFFIX q -# define DATA_TYPE aligned_uint64_t -# define SDATA_TYPE aligned_int64_t +# define DATA_TYPE uint64_t +# define SDATA_TYPE int64_t # define BSWAP bswap64 # define SHIFT 3 #elif DATA_SIZE =3D=3D 4 diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h index 27d98014d4..dc9290084b 100644 --- a/include/qemu/atomic.h +++ b/include/qemu/atomic.h @@ -234,17 +234,4 @@ _oldn; \ }) =20 -/* - * Abstractions to access atomically (i.e. "once") i64/u64 variables. - * - * The i386 abi is odd in that by default members are only aligned to - * 4 bytes, which means that 8-byte types can wind up mis-aligned. - * Clang will then warn about this, and emit a call into libatomic. - * - * Use of these types in structures when they will be used with atomic - * operations can avoid this. - */ -typedef int64_t aligned_int64_t __attribute__((aligned(8))); -typedef uint64_t aligned_uint64_t __attribute__((aligned(8))); - #endif /* QEMU_ATOMIC_H */ diff --git a/include/system/cpu-timers-internal.h b/include/system/cpu-time= rs-internal.h index 94bb7394c5..8c262ce139 100644 --- a/include/system/cpu-timers-internal.h +++ b/include/system/cpu-timers-internal.h @@ -47,7 +47,7 @@ typedef struct TimersState { int64_t last_delta; =20 /* Compensate for varying guest execution speed. */ - aligned_int64_t qemu_icount_bias; + int64_t qemu_icount_bias; =20 int64_t vm_clock_warp_start; int64_t cpu_clock_offset; diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c index e5c0f52d94..972e85c487 100644 --- a/linux-user/hppa/cpu_loop.c +++ b/linux-user/hppa/cpu_loop.c @@ -83,7 +83,7 @@ static abi_ulong hppa_lws(CPUHPPAState *env) uint64_t o64, n64, r64; o64 =3D *(uint64_t *)g2h(cs, old); n64 =3D *(uint64_t *)g2h(cs, new); - r64 =3D qatomic_cmpxchg((aligned_uint64_t *)g2h(cs, addr),= o64, n64); + r64 =3D qatomic_cmpxchg((uint64_t *)g2h(cs, addr), o64, n6= 4); ret =3D r64 !=3D o64; } break; diff --git a/util/qsp.c b/util/qsp.c index 382e4397e2..55477ae025 100644 --- a/util/qsp.c +++ b/util/qsp.c @@ -83,8 +83,8 @@ typedef struct QSPCallSite QSPCallSite; struct QSPEntry { void *thread_ptr; const QSPCallSite *callsite; - aligned_uint64_t n_acqs; - aligned_uint64_t ns; + uint64_t n_acqs; + uint64_t ns; unsigned int n_objs; /* count of coalesced objs; only used for reporti= ng */ }; typedef struct QSPEntry QSPEntry; --=20 2.43.0