From nobody Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850265; cv=none; d=zohomail.com; s=zohoarc; b=GmZv14Coaxt4809kGjpBRhgPlrffxHzNqSFIAOW83s1fjU9MDeI9M6rfldPycBK3mx7K9UpYPbyqY+MNlpykbiOg4LLDivTFQtEwxrt1pMcxgzzOA5Gwyc2wlWuk6pjphA9rdCdS32fA90dQxBP3KN2DSbnVSIWJKEz/vjtRbU4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850265; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=rVsBcnPsfvmZvQdij3NSQo+uhfcRf83AZzrXvhkPZQ4=; b=V0gR2nMILWxbMKr/kueYKoHmOoOIHHLBnruUQECojoT8UcxmmTQhrfiE8sR+3pdv/pCUyvPoUqKApsq6p7y7d4aPX4ftHyovsw0/reHY8FNTo3L8MfnY8PMUfq6czsnVfnH4kGAJ0lo8U6R3W1bOpUVWjR5Yl1Mz/hClOx7w6kM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 176785026590353.20078210645886; Wed, 7 Jan 2026 21:31:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibP-00050Z-4D; Thu, 08 Jan 2026 00:30: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 1vdibN-0004zl-CU for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:29 -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 1vdibL-0005Gu-IN for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:29 -0500 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-7f0da2dfeaeso2460957b3a.1 for ; Wed, 07 Jan 2026 21:30:27 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850226; x=1768455026; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=rVsBcnPsfvmZvQdij3NSQo+uhfcRf83AZzrXvhkPZQ4=; b=Fl/rbIS7gClwzJPXqC4kV49ShQ8LLxiand1uDuJNazjWPp6NZRYYgem7GTy9ccHsSj 3T3A/s29zgzWF0KRv15Vu1oaOkUj0L5wSuZkRjpZi/vPjxpiu0X58yuf9YnK/pGy7aJr IsYZageHnQdmuiyjUxYCy0fe+8I5jgJQ7pLMSqJvs2Rq0ZsrEtIpm+WV/1BObfMK9QGJ 6PPvYdkVjXfzbIufmHoKwjoqnrTyMZ0lgLN8Q78d0AW60uEn9sjFpsoIZ8OZzdvfPTQW 9byyej2aIta+jbhSCm8ldscfOESYRzUQXVJa5KANRuYIRIag7Kdv9kg9ceqLrijOy5O5 wyFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850226; x=1768455026; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rVsBcnPsfvmZvQdij3NSQo+uhfcRf83AZzrXvhkPZQ4=; b=OsH4gqQAKPtLe9/9pBRR1oVuX1mJJEOkwFUSsm2fG6qMn1rXPqAnJVqWRfbZKp7JgS H24xofC3uRTlEtVxlbhSpzyWO6iqWFHoGX6k19KxuGvCNZx4oc+jbTl2fR/H54Z0mqBg NxmD+XdUNniWQs9cpax0n1ek7KIp95uX/suil1CZ2yeUI5fcpZFcu4kgByi9VFzJYOs1 rFJXzheh4kAUfa1ocJNac8lrftB0zYyYMb4/op5o9AKapdgpmnWDW8G6bkW8+2FWr5PL qvkGgP0TLUUoeKukS4C4KhFoWmATuAMajvFgUs3Stsctlpx+N82aTq9JZffVzfS7AYM2 lJQw== X-Gm-Message-State: AOJu0Yxxf07CsAqO6fVqYjjUB1tPo0RQGK+5Az0eQNKfWU03USIB/Ezf tdFF6hC/uvdEN6p43HKeYwFcnrUu1U3M8sEFZLgpedcm8E3/ImS8Hw/24+tTaEaafo1x78QTKDb T7oZHVb8= X-Gm-Gg: AY/fxX7Zv/J8D0TgqWjXVuKyXhlPb4HgIGsYFcjmwyZd6iVUxldT+NRGIoOlx/IskMn 9Nvvrt3TE9UauhkkkkuXiEjd3sACq+7j+xpT0iQy8L8Ba6F/OefI5m5KsU3SzVDYloxu1UhnqF/ R20mApQB/UT4DITI2sF2CZAddPhKQqJC7dO8Ea4+Dco7SOLrYHu1JX0jhJk2CDDyCA4Va/VGWRa YMYKE6DIuGymkQRdnHmftsDkSqeJ5yAWDqxlE2FNvB9g8tGgWQL5lzqGEHn3250iw0VK7VcVV2Q 3JJpwhDJ4vvsxHF879V/kg2oBgEyjsW8IZ4chfscZJrEcSK7S/IYu3fEYjNk+hk4339EE5zfJko JiatIfPUbKJsUt82CqYdfRRYqrX7yP9/CH9xz4kIQxaPv6mmFBkfyD1KPoKlPBj74Nzv6WWiVAw o4rBtqsNcIH0maOKeuiQ== X-Google-Smtp-Source: AGHT+IGYEvbXQjjeOaWhwde2tqnDDR1eqrV2JkhTPk6CCGLAAnjFhk+Qf0D+NXWgQkb727VRojjm6Q== X-Received: by 2002:a05:6a20:6a2b:b0:366:14ac:e1dc with SMTP id adf61e73a8af0-3898f9db6f7mr5113319637.66.1767850225673; Wed, 07 Jan 2026 21:30:25 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 01/50] gitlab: Remove 32-bit host testing Date: Thu, 8 Jan 2026 16:29:29 +1100 Message-ID: <20260108053018.626690-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850268816158500 Content-Type: text/plain; charset="utf-8" These deprecated builds will be disabled. Remove testing of armhf, i686, and wasm32. Signed-off-by: Richard Henderson --- .gitlab-ci.d/buildtest-template.yml | 27 ----------------- .gitlab-ci.d/buildtest.yml | 9 ------ .gitlab-ci.d/container-cross.yml | 17 ----------- .gitlab-ci.d/containers.yml | 3 -- .gitlab-ci.d/crossbuilds.yml | 45 ----------------------------- 5 files changed, 101 deletions(-) diff --git a/.gitlab-ci.d/buildtest-template.yml b/.gitlab-ci.d/buildtest-t= emplate.yml index d866cb12bb..9c2ae39ddd 100644 --- a/.gitlab-ci.d/buildtest-template.yml +++ b/.gitlab-ci.d/buildtest-template.yml @@ -123,30 +123,3 @@ - du -chs ${CI_PROJECT_DIR}/*-cache variables: QEMU_JOB_FUNCTIONAL: 1 - -.wasm_build_job_template: - extends: .base_job_template - stage: build - image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG - before_script: - - source scripts/ci/gitlab-ci-section - - section_start setup "Pre-script setup" - - JOBS=3D$(expr $(nproc) + 1) - - section_end setup - script: - - du -sh .git - - mkdir build - - cd build - - section_start configure "Running configure" - - emconfigure ../configure --disable-docs - ${TARGETS:+--target-list=3D"$TARGETS"} - $CONFIGURE_ARGS || - { cat config.log meson-logs/meson-log.txt && exit 1; } - - if test -n "$LD_JOBS"; - then - pyvenv/bin/meson configure . -Dbackend_max_links=3D"$LD_JOBS" ; - fi || exit 1; - - section_end configure - - section_start build "Building QEMU" - - emmake make -j"$JOBS" - - section_end build diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index dfe954fe3c..1d4b8a030a 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -784,12 +784,3 @@ coverity: when: never # Always manual on forks even if $QEMU_CI =3D=3D "2" - when: manual - -build-wasm: - extends: .wasm_build_job_template - timeout: 2h - needs: - - job: wasm-emsdk-cross-container - variables: - IMAGE: emsdk-wasm32-cross - CONFIGURE_ARGS: --static --disable-tools --enable-debug --enable-tcg-i= nterpreter diff --git a/.gitlab-ci.d/container-cross.yml b/.gitlab-ci.d/container-cros= s.yml index 0fd7341afa..044795d9ff 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 @@ -85,8 +73,3 @@ win64-fedora-cross-container: extends: .container_job_template variables: NAME: fedora-win64-cross - -wasm-emsdk-cross-container: - extends: .container_job_template - variables: - NAME: emsdk-wasm32-cross diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml index f7d3e7205d..222522ca16 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 @@ -58,7 +56,6 @@ weekly-container-builds: - tricore-debian-cross-container - xtensa-debian-cross-container - win64-fedora-cross-container - - wasm-emsdk-cross-container # containers - amd64-alpine-container - amd64-debian-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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850249; cv=none; d=zohomail.com; s=zohoarc; b=g/Q6gsG4V1KBW5WUzayhhLaqmIhmnnMvmhdkcZp2onpJ2bLbTikBdUsoWRLPb4O+FeMqzdJcYe7OwjxfrsrXMrM3+5HZx9dPb4QwLgg5h990e17PXx3se+5AO9jidagRYg7zHHejR7bz6TBqSfzTD0jLXphFMzqthLPvSlvQPuE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850249; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ZYS91EBDsQ/sdLMv8/i4RIFQxRMypQMw9CTeUZvycUY=; b=faee5SAQpnVqjaNj8j4R8ldJorlKFNdX27H6uaaH4GSUnIumch4w6WzTy6IRMPBAtKhB5NGlM3TyyYFjNE5+8EcsAE45B6+FbGRmfPfrMYM8bHYZxlOen2qEss1ZH61NIgJ03eVmjma9Z4EkA8LdqKSV8JW8Kxvio3sLRavuuGo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850249350777.5351135067332; Wed, 7 Jan 2026 21:30:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibP-00051a-VX; Thu, 08 Jan 2026 00:30: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 1vdibP-00050l-6p for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:31 -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 1vdibN-0005HF-Ek for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:30 -0500 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-7b9387df58cso3136485b3a.3 for ; Wed, 07 Jan 2026 21:30:29 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850228; x=1768455028; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ZYS91EBDsQ/sdLMv8/i4RIFQxRMypQMw9CTeUZvycUY=; b=Kcrde59eoh7Anv9eDJ9U/+hmeJXUGePUsAs6DLjYJ7YSYY25Y6Tufbi53xygXPM5w6 dh+v8r3rAF5DGx8THZNYYK7m273bwotkA5UJWbNwZar2KgrpF5a1329//WHpp45BP5pX ZiDlm7i1Gj41xZjjWRJaGg+UuZabpotFobxgY7QA1sbgOh+DBk7MnlEna4q9KqiY9Ybr gtDL7bfhlimA6hfg9mQkqv52c7sKOoII/GozSc9z6Fe23DqirEFTytd1ZORzy4eoR0VH xSLRYj3Ug70Rf1gJJrbgDt/0j7Z87SQhWwal4X7z0PdJkmr9UYrt2XtvCqyJUGFnBI6q PF0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850228; x=1768455028; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ZYS91EBDsQ/sdLMv8/i4RIFQxRMypQMw9CTeUZvycUY=; b=kty60QbqWTxTEU26D6Ceyi0N2OIfdNcxm0XI+hcqo0yKzCKvi30zy8dJoJc+6AVi57 hoDpGUVD7vI8tRnYPYukKGnx95tOyFWssrvQ7zbjnw7UkfxWzE1LA8BbgqGR+VhDdcSs lBJ5aLDvK4ilXdY6rCzVNLkq5E4ZGF4wbb5kRLxkzFu2Jyz519ZscXcpvxEAdFdtA5Hx GTVmZiHyfsQXp3xUF6fqE2F3lR3W8IUI7NNrbAWj6v1vgx4enfpDTA/27F+KhXUxG9hi mPxJql4An75Bhof5ueALmCIMNrPw5j5cBiSVbykOv72rDVXkwvKFwi3kfXmYdU5YsG+T kNPg== X-Gm-Message-State: AOJu0YwVlz3BWaRngmMs8Oo6TxmYCS06BOXZ00B55kpVlrqXiT5QKWaM +bZUIP2JFDOFVY6qsQjyJDxLAUWjxCsQormCc/MRU1y3kq/OQNI2VlJbRavyaRVyZ5NXx0vjgcY XsFSooG0= X-Gm-Gg: AY/fxX7rvryPOIJ1aALfLFm1I0bFoqrymUtI6VraOIEmPM9YNGJEkL+2hX5PN8c5jUG /pWYzn78DQD/vmTktOHSJMWn5BtVnuaiIG3na7UEeRBmBk3leP2DlBZpwKt7bHsTVFlaM8JlBmp jSRu6DWTA5SK3fUW+UHB5RC1+c1mMTzbMuSUK6OX7JbMtuo57x0Fm072OXYwQ3bI9YXyP7TUxfG WzrQS1TCnxVd2qxYSC6av0OMFiC+WDuJqBfP0hYCOWyVQClIJguaQiOvSjk3g3bjAd9NS5hmzy2 zmseK48sQSVmhbSRLcV88djM25DaKN4Vxt9uyO3w7oeQB54o1Mwt8hw450Qdp8SrIpgiy7/7hlq yIXuev4tFvlUr9OUepbDEGbwLt2BG3NEN2U56KeiokQfZT/RLrnxCKTCqT1o5OeL2IihhaNjBHz iQA9NcAQyKpWof3iGqm0MO1A+4HWh7 X-Google-Smtp-Source: AGHT+IE0otYtJf1ChrJHfKfKUkQ6JCTsh9Z0+ZvPtwWpBv48kP+3A0nmjebXnCsAPEh3TjQntdhnew== X-Received: by 2002:a05:6a21:328e:b0:34e:959d:e144 with SMTP id adf61e73a8af0-3898f9c5d2cmr4552938637.54.1767850227577; Wed, 07 Jan 2026 21:30:27 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 02/50] meson: Reject 32-bit hosts Date: Thu, 8 Jan 2026 16:29:30 +1100 Message-ID: <20260108053018.626690-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850250901158500 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. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 db87358d62..0852c30aa5 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') @@ -3238,9 +3242,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(''' @@ -3351,10 +3352,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' } @@ -5025,12 +5022,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850459; cv=none; d=zohomail.com; s=zohoarc; b=hrG9smknOn3Cq5DChFos8sq5RrZ/L1wRRWEcNa5F+k3KCNNgBPw+TyextuHo/vVtx83fWl8DkLLDotTo4MZ9QiED3hyyyj1Jzpispb9n8q2doOp5XG2RRoVlLWHpAHtfpBjz9ciS/rIV0Tvim/n9RpArFrjyCm4CQ2revxGIcHk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850459; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=EU0cja+JPJkXglgxieoFnO/sgGalrGstpWr/7BHbhWs=; b=WsHOwUEhOB6ffikMg7UvV1v9/fC5Bkp8iGVFMS3NaX6sHVRviltAoZ6rBHv0OhuCb4/AsKoL6KFkElVuCraXEcfZjnzcH4Rc7y1mpEr7S+nOu3vRhfJ59ARnoPic1n4m+x28pjGkaL9cmExDmGvipZp++EtAoQT93rwNIppAoIg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850459490804.8446708088613; Wed, 7 Jan 2026 21:34:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibk-0005CK-9v; Thu, 08 Jan 2026 00:30: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 1vdibX-00054T-4Z for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:41 -0500 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibQ-0005Hy-Id for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:37 -0500 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-34c84dc332cso1791159a91.0 for ; Wed, 07 Jan 2026 21:30:32 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850231; x=1768455031; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=EU0cja+JPJkXglgxieoFnO/sgGalrGstpWr/7BHbhWs=; b=C7y478XRWW9Ow8HP8DEZ+wbpiOznWQ53mF67MnGP4WL1YZo6wk2BgNFY2zzKLs6RsY Xvb90o3SEhm9q+5pOlm1BocDMnQeazJ3LmOMsn2rQsBGnrWvXDUKB7q+wNUVB862auqo guUhkUyPEhtGDEzrdSqjsgc39BCfJGHQDEEmlwSHd6FCWGITZfWdfmwcDvp4JU2uKFFb t7SbXzDukCRY2Bumjm+wCPu+TbIydddDuq/TtrO3fkqwzgz2jAHhtq9W2jAdDhV+57sR RaZDoO7YsWSMwFx8zG8XdCTpcCgvrwd+fc582PlSitHJzHynxkE5bZc8Wwr8E/dFC4Fq Kj9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850231; x=1768455031; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=EU0cja+JPJkXglgxieoFnO/sgGalrGstpWr/7BHbhWs=; b=FEpXEXK3zYa12JjMkJBgrYzywSrLhpFjRqGvy19K4mOa9hpqyq/BCcdBg8GVKgoqG8 X9va+3uR1pX4kor8DNItNDdxm0RHB22TroCJiN8pR5S+GxamBW/TYr6FKG9/QDxvDruy ghg77VUy4LOcbj5Y1Z+xBElXGClorgrDXPL5ETB8sAE73V7I4K8ic7kjhYR6KZnfsKiv HQHRzDTtVPFup/NWh5g58MWwQlNZYvcZJWDKH6vyhysVivfcs4b2js96roUYWOVzy3YH v8swgmX0of7vnj1LZcpmHVmKvB53WVMhG+fSygDeqpErpOjfzOb/6MoP18oM4nmuZ9Eu 5aNQ== X-Gm-Message-State: AOJu0YyNQv67Ma3evGejSoEGkXoDVhryQsYhq6rA9rDPEMkMRUaqxwvC kfI5cwGtzWo4xLAW3n4MhOQBEmAVnRNHKZrb3nM1zwJsZV0nVjaE2axwPFcUPr31FieOEmv6zVH bR8acASk= X-Gm-Gg: AY/fxX5zUJoxcJ3XBlBaLIrYXPSwJRm8KoAWWdxMUPXicQCPtCYYTICaE/gcIhqiGVh u9A0TKGz+izlWbrlquoni71o3kMB/9J9Ka1sP0IO1IugGYlpbz/btjh7nu9ysX/86rE6Iz4deay lpXd/Up/5caNI4h8WssxoZean0EMml1Fjrt9cL/DN93PbfI+MK0W3oeClePYhKt1gpDX23dkG6O GwEIf6Af5qF6gitkOfHloGp4gLmrjo2UFQUlv7Az6aMEPgcuzbj2m/M+A3LLldQutVBKu01flkq SpHNgGiMu3hVY7Jwd/duC4225fKuoXTaVV4020q22QURY6sXgvxT6Fm+IgOM47BgdR6kmE+h0Y2 ZcPNxIsw0hjxGZaDTYCtI9Rt8xu4L92MXikEiJ6PNRxUjWJSf8sDETKF0QYdtuYwmPGW7RyYLio N5XeMaEEo4QfQ0q5zo5A== X-Google-Smtp-Source: AGHT+IE96ijDIjFxJc3VjNP35PPu++lbhQvrXfSR/tvYCoWwVriC/qNM6zAkuXx6v9pqDg0dBuq2jA== X-Received: by 2002:a17:90a:e7cd:b0:341:8ac6:2244 with SMTP id 98e67ed59e1d1-34f68c280c8mr4287939a91.9.1767850230275; Wed, 07 Jan 2026 21:30:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 03/50] *: Remove arm host support Date: Thu, 8 Jan 2026 16:29:31 +1100 Message-ID: <20260108053018.626690-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850461719158500 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. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 423c77856a..0866ef8f99 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -1292,7 +1292,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 cca9b57c02..82a974aa6a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4025,12 +4025,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 55e0bd3425..2016062492 100755 --- a/configure +++ b/configure @@ -413,8 +413,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 @@ -444,11 +442,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 0852c30aa5..e53bc1e643 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'] + 'aarch64', 'loongarch64', 'mips64', 'sparc64', 'wasm32'] =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'] @@ -3147,7 +3144,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850290; cv=none; d=zohomail.com; s=zohoarc; b=KDpdMvjXXzk4Lv7oRHGnTRcaGvVM3safLwkRHI1PKvaQmg+FQp5q2OSy7VD3BtZIbYTfCM3EUyd0b4ngj0zdKceZaKcuvYPVA1QErlb9tvZ0H9nc1AipLTlFdxrv3FuXcb++GnTJGtHFUKNp1RyCx0tBjB2E06FAf/0S/xoySPU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850290; 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=K8JFvRyTGsIm37RE+ch+aJE+dWrR4w50VyQUQYaR88k=; b=dF465c/L6VcTyqX8K2l8kzN9ARKXNoXYE+dga6A1dIfF7kd1h1qike/fNCwIQWzhGfoPvJtWh+riTCvxoTQMEa0hkAoHbX9LExulgQsVOYAJjFkEOjnKrqFlU5TLoXmt52Qft6m5fUXAxxw0kw7L6Cd7YPUdP68mZrc2Qq0BqfQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850290403356.9140103996216; Wed, 7 Jan 2026 21:31:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdiba-000550-5d; Thu, 08 Jan 2026 00:30: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 1vdibU-00053u-G4 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:36 -0500 Received: from mail-pj1-x1041.google.com ([2607:f8b0:4864:20::1041]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibS-0005IG-97 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:36 -0500 Received: by mail-pj1-x1041.google.com with SMTP id 98e67ed59e1d1-34ccdcbe520so756209a91.1 for ; Wed, 07 Jan 2026 21:30:33 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850233; x=1768455033; 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=K8JFvRyTGsIm37RE+ch+aJE+dWrR4w50VyQUQYaR88k=; b=mfo0vti324du4eyeeygBSFsNYPo7QQkhWPr4I/lexUKQFxmDgrGNzZ4hVR7g+GhAU/ d4OAGEObuyswhO0P5Pv29yaHz9nL32pVdtBS9dkBnx/6o+07rQJk1lJc6qoZRyJG8n6u sS0q4BfWiYLh8In6jjvpPw2i/Zyw39dHIy6EQ6dGkufqKCfJcg87t9jRl+jtvi/jvEBC bv45kCIOY+uSJarutgfuwn+Ew8fJCKwMdCzHWfZ9G8+Uh19UVVVRnp5V5J/VD1x1vkUv kt+HyQf92Te4f+UOWZptqBFe8v0OHW+VbIPsXz1c92CL/YcGVbRvF5keO9DgE0G1d98f Iaxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850233; x=1768455033; 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=K8JFvRyTGsIm37RE+ch+aJE+dWrR4w50VyQUQYaR88k=; b=n84AyKuh3VWishrVc9jxV3SAAQYmql/J7V0DN8jrqweKUoZ2iHabXdLAzcZbCR8xYS LAx5fK5adXKsijDQtnmC27qlUVHvhHlMNJJkV+83hQFGhVWjRYeGGCnGHTq7mdDYWQ7E /CfB+j/IwOhPo99DJ+5haYOhzxIrOvmzD6otigH2mJ3QM0uOb6eoBUaJGpTdQGlaBsmd UoSrSyMMDRBg87EZXpVfMTxHMpk8wA+tHeRUaStLhHjsReUz0w8My0z2wPA4W8Du84k3 aS/LOOWcWmZUdV+ea2etJqeRGKLtI1OUXZWW2ZRhYwo4WCAxINBESWAyxcrZcIza1K0D Ldyw== X-Gm-Message-State: AOJu0YzvKWkLYJ7Frj8T1eMdtUDO+3px5Lb53/fGq0XADt9GUCJYdVm7 ZIyVqPZFjtDA8tgf7FJh6/E2+NtXQIfNkCbepuARhCuBYFdS+RcCMl474I64aCYExRrCAv7zIDC EpL2rJOeQzw== X-Gm-Gg: AY/fxX5D8ftbBmEQ04qGBJxaC4DQrdkVcZW6b41+gpB6zR6cP0Tsn313us/GLlmyXcJ BcdmvDjPJG2WALzbfsNfoH+CE2LtyKks55VyMYQkhF1zsyrjnPKsHfn8uoYnEXJvTMduVOnyPB9 pMnkUSeYt/B0gC7HRx9H92nu8u3HyOBpCASqEyrjaVIpiLWsculQOGq9ObWUckNZw9aRab71Quc 0A6UgxGkqyNbMyE7ARvZrxd8+5mPtrX0AugfbPyyyjKPD1ouAeZktDD6bF7qLQencxfqPzwQCqo /zjyn4ClF+Twqcvk+ZaHXVhI1zhZLncFdQcXR8ECAzujV6DLfOMYolB2zFC+7pWip/RNvnFqAeC MYNTPdxJBk1FFqi3NVLTzgOUm4tTR5+ye6UlnlJ0sqCHeDh+I8C+UHdaSEqPpSJXNBjF8MLmyrc NMcS5XmkKPsWgKWCkIIg== X-Google-Smtp-Source: AGHT+IFtrim5kmuCa9Zhwv+hzv9FGAf165gRaEBYJq7yv7ZJc6Yn7UBo1TXwglB1Y1AvQxzmWd6lKw== X-Received: by 2002:a17:90b:2704:b0:34c:718c:5448 with SMTP id 98e67ed59e1d1-34f5f831c8bmr7970057a91.4.1767850232759; Wed, 07 Jan 2026 21:30:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Warner Losh , Kyle Evans Subject: [PATCH 04/50] bsd-user: Fix __i386__ test for TARGET_HAS_STAT_TIME_T_EXT Date: Thu, 8 Jan 2026 16:29:32 +1100 Message-ID: <20260108053018.626690-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::1041; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1041.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850291222158500 Content-Type: text/plain; charset="utf-8" The target test is TARGET_I386, not __i386__. Cc: Warner Losh Cc: Kyle Evans Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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..68b7860e30 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 TARGET_I386 #define TARGET_HAS_STAT_TIME_T_EXT 1 #endif =20 --=20 2.43.0 From nobody Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850768; cv=none; d=zohomail.com; s=zohoarc; b=mieFwymR4UTlnf9be/wwlD+8Kvwdk5Lco0opXaSV1mAU2YJEi3R8PGtNdBneiZsdUaBqPmhJKYd4D+PVW1nFluY1GDK8oFXOeTBtRFWon9UnnPZu7jH4IIMui1r8PsiOV/nLqTn5G1hZiCmLFMjXrq7gGksQB/+tgwx30JYtjlY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850768; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=uCFnZTBtXiYfE2GsTuOjtEBWiqrAh6+U/6CfMo8kNmo=; b=Mu8CH/5L/Whm+HDfzgh0p0rl8lhgLEcCiqqw7JulFrfXSLyiGvUcx0BCQ4dvBM9JV4jyltviSKi+TAw5R1vAZ8r5trbBvY2Li8UNSzDqRPELTP9sO9b3SpZ+7fXjnbO0sUisInrt9OJhAOkmryK4vqB0lVtvKJ4XrR6jvmv8Zak= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850768786106.81578351031965; Wed, 7 Jan 2026 21:39:28 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibl-0005FD-9L; Thu, 08 Jan 2026 00:30:53 -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 1vdibX-00054Y-S6 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:41 -0500 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibU-0005If-1f for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:37 -0500 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-bc274b8b15bso1867998a12.1 for ; Wed, 07 Jan 2026 21:30:35 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850235; x=1768455035; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=uCFnZTBtXiYfE2GsTuOjtEBWiqrAh6+U/6CfMo8kNmo=; b=cTwrSZmzr6D5cqPIWrW7/aT7Zgowa2brHqoG/8Lmffb/XuY49T2H2fdZOw6IF138jT g50A9Ocht9iaZcp0KDL0B6gxTaFUSTM7DhyoI4JBOI80SDyoZhTukTMQNK/hyoAGskzK 1jy0veMT1+g4BuqEU3De/65w6bZf1UkOLbctTUmfKOl0hq6l2aGxuYZOCruspIKuz/pD 0rfSTZ0Vqu0uAuy3fNGJ3As8rIcnIOefL0ZePlw9t+E/ofxPWsX+9m5KbiMHjJuDsQzy wcNd1NCsXO3juWDFzncxIlqHZnU/rBjSRZ76XL6D2NvZenajEU7EqGJBcENUSAjWpXzU 6eEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850235; x=1768455035; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uCFnZTBtXiYfE2GsTuOjtEBWiqrAh6+U/6CfMo8kNmo=; b=v7Y3B3lZOGk/WmHM5rtz//JhnpSOmET7qpKvB748wgXm70GOZ/1BEPpbr8JJFRTN+c RlJZPlUKA3u5HYBxwRzKjyxtAQJqeioaNy5UbRLWTa01N3PcouzDsElEJr4nLmkoor8U 1xcCz3wubcOLCNalUH/srjUpsGHJmcw06bDSh5BAxZ2SebZtQQnOlTyr4iHo88kzmGt1 tUOUbxUCsrwDatJcKBup5/k0zHXWiKLme0ELBaDYMCjG4zLIQHPjoFpDfaZ6OjEhEVtj 5AruW1l35P8mbD29rEwPM3wX/GGRvn3kPFLdsqlP54W0qp8LCTMuLBUpR2sFv3qsqZRl SHaQ== X-Gm-Message-State: AOJu0Yz4gLSsjXkxtuv4oeROksiwM1cl3Z3XtNDBnHzgbuZFlrYGGS/T O6crD6RweBiop6I96nzeGPvJ7rlFQXD36dLUZTLc/AMsdYq8yB0YsBI5/0QlGyfpcp7NKr4Wb0j KnmHqdoI= X-Gm-Gg: AY/fxX6dLPU7d0MbkuKO2an+Lz7qOwG7THOftbx/Z1M58OFhXyfln5L/44UEPd583CM u3lmpk5e6A2ywNY5YWAo5jVWX/OyFv1CDEM/N4ekDYDMBodeIWDfOWdwrZcjrsEQmaO3221RlCZ qo4gIsh6MlZ+Ob4RS/zecsfEOZrVNQOs/5EQkoJOGm6XsYXWem9usoJBdFPBnfHdHicsUb3G8Pf /VmfnGWCiB/W8ulBkXunqtBZhlkfzhTdwH+JPHgc3it/Zb3uj77npMHkXp/eq2RKa5dAIZoTVKx qtupf2Ot+zj6dNlE+ShEH+Y32ecOcRAMXsXNdS4ATsYHTHyba397iG4vM3F0++bXDQRcTn6+qLH nEd1NiElQnaTG6OSE4a6F7sEsHFqUh0QZVTQAznRPMHZLZlD232upgVG+eOftTKUacYkxNXhEuS QAG1KwdYPYi27uwNLWFw== X-Google-Smtp-Source: AGHT+IHsAXltPcYhYjTqohEN/rsHWrhDm1u2Hw+Rahgcpi+cIGEssiuVtO9jWYSOuBlj8E0Rn+89Gw== X-Received: by 2002:a05:6a20:939d:b0:384:f573:42b9 with SMTP id adf61e73a8af0-3898f9dd0a2mr4537683637.67.1767850234603; Wed, 07 Jan 2026 21:30:34 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 05/50] *: Remove __i386__ tests Date: Thu, 8 Jan 2026 16:29:33 +1100 Message-ID: <20260108053018.626690-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850770658158500 Content-Type: text/plain; charset="utf-8" Remove instances of __i386__, except from tests and imported headers. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 2060e561a2..63713f1992 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7449,15 +7449,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 2016062492..00e455be57 100755 --- a/configure +++ b/configure @@ -377,8 +377,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850714; cv=none; d=zohomail.com; s=zohoarc; b=jGqU5B9G1+cLrwjy89fA8ezts5gZyheiqgkbnK1A7B09VHOt1ZiPtVrPfVOTRzLHxhvwJ4izKpJ6nSBdA32qRADDMOwnjPkUM54n13hpN/qklly120lU09sFAjZkhW0489p099tdXzmpmNfaFzNv8j+EYihCrqCoT5VdWyTl5Ww= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850714; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=sio0sPTwm8SZWW8xUuOuvoZjmMp3BooKmkrPUh029to=; b=XHL9F9fKt/O8sFfeizaxzCBFU429ARVJDDWUlE+IkaUc7eOKqrFXm715sW3gMLh3lun07QKI9PwalT8LVSUYzFRnwT/gGedAVt9MzX6Nfpvx+8HbkejA5EzyYCl7e//0Bg8EzJ78fScotIP7w/2wYQmutsZdtCLGWebAOJKHe6o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 17678507148991003.3883492837417; Wed, 7 Jan 2026 21:38:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibm-0005Ho-VG; Thu, 08 Jan 2026 00:30:55 -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 1vdibc-00057R-CA for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:46 -0500 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibW-0005JG-IQ for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:42 -0500 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-ba599137cf8so595881a12.0 for ; Wed, 07 Jan 2026 21:30:38 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850237; x=1768455037; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=sio0sPTwm8SZWW8xUuOuvoZjmMp3BooKmkrPUh029to=; b=WsfF2b/LwhSYuO2xtXbnesSS1oLdnvTUn9cU2Kuo5NZZOgAn7YQ+l2Ilt7g44ZTzff wlRdf2tPLpAPCp/PHaHucpDTD48DM6/qUQk1dxMEiF+p6Ad4dXD+0W6SKfgJFd4aysMt w+zkNp3u72mcDxq5qi7H2T/JuEa4FUILdao95kJ3BSHm/RpzQQO0Kw9ZLRspX+PqA/jC 9me1gKJ+lSriMcWbPKX+oUEl0/E3TdFIv7OhQSjJiPdEqqezJWmn2XS7l0+C0fCoqVqZ a15uQJuuP4ARrXtnMGrOfj7ZjBzOqvt0Mt/m1nrZmvJp7q6pL8d9n0J/4NlHm7lh2nIQ D5Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850237; x=1768455037; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=sio0sPTwm8SZWW8xUuOuvoZjmMp3BooKmkrPUh029to=; b=McvdJ8Ku00cXjtUcsItLJuNzZTsrPLPje7EKMbYEqdtuerMQ68FnoxyrQihGs4IfZ2 6NG73JRqowsrfJwMNV1ZzuXdGGpDCWM65okhLOTnAzqDUYVsEN9AT5AW2lcNNsZVMBoD 5/+cdAE3lvPo8K2JgzuJsqHV3nwzC9+YT1BkatsDzM8L8Gu1F7hUpziktRFewx0YWH23 3bNOSUPjK/aaPNrcE6hRgp2Pl8uZA9HyMUAhmLLQ3S7oHT16PHZ/NurMekdtAyWWCqzN nUBUIb6UXyeDdW0SeEE8caKVmln6YuJ13FS5LxsFmkmp0rGn0EmCp72hr4AdpOPj2Lpk jv2Q== X-Gm-Message-State: AOJu0YwWoDN9pqMlQ7B/4oO+MfArfTDXSrUPvTdbAVJFEnEVMu/yyYfF oe1fnpC7v5RWmDRk+SFNet/R2uO3aD6hN/wkpQWRioBEp0oI0dA2LXEdVIfnKg7/lX5gOY/MzRc ahwPiFXo= X-Gm-Gg: AY/fxX6N6oSiBbt1uTGEtd2eGSXj3WCL9r+tTaToNTrVEc+Z68R42kU8J73LaxTp3sa 1ZEbuS7vV1nNNDxFh1ASQs4yFjdFpPlgek8Jb/wnLibT3fXSshbtMjH8ydeVqC2+9ZWrCKt9j+6 N69WaaZHG2EgXH888/2WVBzhPMbsFbb2g2LZKmJvrl5DsyuFwhiNhGw+iedsRI9nw8hygRp1Hsz fYsMQk+f46PZI62k23dCFWsQY9rsCLcpJGkDO/HBncLXNO90NAc31+HWOpRcZcePVljM6F71Zhr 8O9aPLSld3D5QLm9wLGuiRKLHW6H6JnNJnP0wZcqPqxUvNYrgx9HyV6Bs7qXi9YVCTDztMSbbpc 4zKQXZstKxte8Ur+lzEMrN9c0W+awNrFBJqMcoq1sC8zbH8ol2244Lwd9iATbmJBRDzbNKHvNbQ o7qBdSk1DXfhtJ1NaIOItjH4uGvB+x X-Google-Smtp-Source: AGHT+IHWGk3Gzm3xrX8VtV8aIZnjZvnw97HzGyt4QgIyEw5TPH3kdDT8UWmp9amdKODzxDT62drV3A== X-Received: by 2002:a05:6a21:62ca:b0:37d:e26a:bff2 with SMTP id adf61e73a8af0-38982b1ffbbmr8406301637.20.1767850236466; Wed, 07 Jan 2026 21:30:36 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 06/50] *: Remove i386 host support Date: Thu, 8 Jan 2026 16:29:34 +1100 Message-ID: <20260108053018.626690-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850716662158500 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. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850772; cv=none; d=zohomail.com; s=zohoarc; b=bcv3kwSSxLkumFWGt7K6Fef2cUa1MXuiLRb8zEEfrnDVhAJX7lWS6pXi2MjJwQ5kfCeW+96lS5bN/YiRtsLF4nLmC14EEZE+ObeHwAuCQ6tJJbQskK4ItROOj25S3wXn9sX2g8wfZx/zFHCjz9rhHAgDHdQVqON0/jt+LgJuQDk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850772; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Jx3+JmsW/FzhhflfU5FCyyF06GpTtbOzQWX6MVGifb4=; b=HyscZfwGG5+T7lQbHg05rnIW6U8tr1LRbwOCqhmVsPnJ/HwiLAeemtXotoG3noSTtK0idT91W1kh8z2Pcddx09ptWiF2Fj4M96+kyMyS0yS5mFSTEmoXQS4ddT2ZgWd8WsAmdzUI/h4lZGK6MIbjqZMHYW8ZlUasfmfG8xBHTgY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850772457100.78649224124354; Wed, 7 Jan 2026 21:39:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibl-0005FJ-AU; Thu, 08 Jan 2026 00:30:53 -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 1vdibe-00057d-8v for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:47 -0500 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdiba-0005Jb-8r for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:45 -0500 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-bd1ce1b35e7so1778383a12.0 for ; Wed, 07 Jan 2026 21:30:39 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850238; x=1768455038; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Jx3+JmsW/FzhhflfU5FCyyF06GpTtbOzQWX6MVGifb4=; b=S2ABaItuoC25uDuoT14c7CHeRXWlxEBkgXM58OQ0PO9rMjGk9h7BCemXINFWoxNoKx rQroQPJtdk+ZkNqTfvPQL+sXTmwumvjArgMzpAT6Xdk8i5RkurhtMvSUKsNfwAJop9WQ /szZ9zSEv/5AovSdR7m25ihmU4QEkJ0aGPnNy786MmgWPK+ya7Q3VKc944j+YAMoB1YD DwEcgC2gSVXy5iCpMzE6YmONHV2DpNyOS+vlwKw9N1MAaQ6iNwncsChCcJ0WFG5XsEpu xpw6DX6j/M8lVCffbHLhX4/wIlIolPMcMQQQvzqBrJvN7UOv7u5aBF6YBR7tDtvAEZxR HWQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850238; x=1768455038; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Jx3+JmsW/FzhhflfU5FCyyF06GpTtbOzQWX6MVGifb4=; b=w2mdSo+doecTYdnx0MLdaikMskT5zP/kC4LGll4eLUsFpQ3OG8XyYI/vRYWdVOJdNJ GZr13V0cecoig8m6LrF3exjSOd7CHnho9D4dbFDtr2LtpX2VsDjCHgHoAb7WeNtoiiNm X/PCfibwUo/3zZBrzSTlat2GPfDl3msjIvit5ksR124qP6lPZWsoWmUmiskEHKvCcZ/V DVnDGYuhTpB927bFu3mk3RfHMZ4FrZMjRl4Qt4edZaQRLPQMMJ0LLyOxxyxnoHD/90eo LyMrbr5rgpXk13mDOO/z3ugcm8KODnrTROxldyyfpwQOD2jEXN2R7Sb/Ko6QDHWZgxOC pwrg== X-Gm-Message-State: AOJu0YykX/ve6Fs1Q4fhUdJIugWxed4n6ADn830r0CV9q/J72c0lWX42 IJm5nmCoaSLjIvA5hNVRy7XS/g5RoB12mIePw56qqIrQhkZFdsqhrjoDz6QfMXcqNaq5iZz/MDQ J4jAEDg0= X-Gm-Gg: AY/fxX7+DkYN5Wg+EZWsAZUhRGJtP8CM3i0JKjpjWhEm8FQUzsBdVchPExtMWUNXfXf tjJL7wM1DpVw7vFnNRJrKg50OWqY5Wo1+jpwdyDZajJd2qSN2p8RzzjL35OwsJOyiz8jpcC4DTS QXUYHNozzGh+77y/Bt8tPQzMwmNJg7U9q5Y8EOj8KObfsOMIsgdShwwYgVeKKGrpA8JoGZcd0vN uDISYILo4GhoTfOVv5RHUbRaBBSZI2t5dRG2xpu6Co2XTJJBlMGpRpR85cI3ltFaW/7HjE02nAP KL+n7r0pqsnlFXa7G+NugUwg1MCYL6cogUM93i0p4vp1rydGYx62j3AAqK+RVRZ5RC+U84CwfVR c1XpnArv0X5Lc51qwm5VfEWRPnluwWMYgscTPCmGbJpFnX0J9i5P1PXvnmuoCoZ5uuUVcE0s45H 3cUz/vcZsO7MOJ35LeTw== X-Google-Smtp-Source: AGHT+IGssL652wY39js2GzoyZoJS6e2axyPZvY/IeSlC5K6wnhFOPosNC3akmaX8aACcwyC6ldgwPA== X-Received: by 2002:a05:6a20:72a0:b0:364:13aa:a526 with SMTP id adf61e73a8af0-3898f9bde7emr4605035637.60.1767850238268; Wed, 07 Jan 2026 21:30:38 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 07/50] host/include/x86_64/bufferiszero: Remove no SSE2 fallback Date: Thu, 8 Jan 2026 16:29:35 +1100 Message-ID: <20260108053018.626690-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850772654158500 Content-Type: text/plain; charset="utf-8" Since x86_64 always has SSE2, we can remove the fallback that was present for i686. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850710; cv=none; d=zohomail.com; s=zohoarc; b=bIMEIcY05l+sJyDzR70I1LDdkXlcCTXOPUno7mpehkC4NX48Ipl2UX7jU0PYtgZqrCAT4+rn+xP6BdhKZLoK007Nu+tT5vVmvO97H/f3V3dR/gHGQ6UhYEdaDYe3AqyFH3ri5zjSbNNbBxVMkiY1xUW81CUtekR/XgT8+FD8p6I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850710; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=jBZFhd3mroDQaEMxtTd2Hevbbgwe0OuSzrCp3aQ80K8=; b=gHbIwL3BYlC2aMouaOouvJF68hmTAkPH796lja0MOGwPAfqw36/uZ6O2TZF+v9JiJFu4Ia0RZ9jlhH3nA638l95EIbCc9qQJBQuJhfjjCu+YnoGAo3ary9b61H6FIaixHOOaiC4igfEGLz9gz/OlP+A2sqMyEHElXiECWAbDbOw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850710143570.688151886194; Wed, 7 Jan 2026 21:38:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibo-0005It-Lv; Thu, 08 Jan 2026 00:30: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 1vdibh-0005BW-WF for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:51 -0500 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibc-0005K4-5V for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:46 -0500 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-bbf2c3eccc9so631821a12.0 for ; Wed, 07 Jan 2026 21:30:41 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850240; x=1768455040; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=jBZFhd3mroDQaEMxtTd2Hevbbgwe0OuSzrCp3aQ80K8=; b=wVaLGGSKXQlJOR5n2sAODIDoBeC1Xik3gbvZojqkFaFuQbtqbXK/E6w2n9FHH4nJtm HF7mFhcDx93UYHXlB0lyP8OBjSCCRSqiiQ3iLncU8y1cYbwVujFFWzDUs4hjMsLWZp/I KReP26SAcD9O2vtKf2evZq71765ClXi7pHIiRSXAfL7Ec0oimQERb72pYRcg1/bumd2C ebXuyLY2AlFTONWYrT5PWylIelxfX7c31eQCS+wGq6ufUIeF61kPt4Jm8u5LAwSW2HCS RwJqJmXK8GdsmTXEeSIUzqrpZdOExuRhUmguLPP4L2Mj/30idENfQaz6J0UCjyGFzS5y 2Gaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850240; x=1768455040; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=jBZFhd3mroDQaEMxtTd2Hevbbgwe0OuSzrCp3aQ80K8=; b=N8REuydYoRLBTVfLW46wgFV2RhMfKrgt5yrdByVoqVOsyYfnOb21IyBeey7pycEonE 4VQp+NNZ+9FkxCvZP8I+8ItgdigXsDSmhfsyLOCSYS7qJ1fMQYceidNsUaFn8H8+DPfe R9NdGjipjfWPmHhqQSEQk8Izt/0GCQqtNoIoCCsWNCiNOW07F3I5ipm6OhZAzdjj2+HT NNY8tGJA441oJisvNo+PpTVv0vu8E9AjKL98ASNBMJqxuVs5p/vSaQKUAuV9JnXAmGao KOE4o1iGoZepuMWvmDgncqzFsgoB1FOZdGC0pGsbo1qHN+SE2PrNYBRsIyO+OwqrJYQm KLjA== X-Gm-Message-State: AOJu0Yw3UW20SU+U7/uY6/u3bCKOw0NLIsPd2D/l0eI+uBQDm+uzEmAy qJZaqOhOAOpJmEkv6yu8FQsyWDT5hMnZIzAuxbrCcLRCPAQXFa45IOKSyShun7YaCqsFMAVWtAj 0UnV4kQw= X-Gm-Gg: AY/fxX4wDcp0GhlgrLmRFd6lo0r/ZH8PXhh9JpWVFk5/hGdD9cqmdb7UT9l5IlcYi9i v2xG2sRKORE6j9asF2XaZtcqQlKaeBNff/YWbpsh5Xb0DScB27msXAocXeWBXAdHwwVg9/Cmqt8 iNoo72+zHjnFwBcy29ezhMA868aT4dLGCGOisd4czH3A6c0Q0NQSmxfCViJICYUUBlImdXEvFxA Qfi2SpaFZQpz7CsuRab58s55ZISpVIFO0Cd1Vg+a1o1a/Uuh+BV+kSu73Pg2BdDEpuGPdJ41Ozo 0tnmcfOn/AATn0tqrsYmKt6UrzLmW9/wIkTWjEmPLVtwuwrixCcAO4g9CCVAan9qHGdvqz4WzvU PNJMIj1p0U6Zk87wbkmwBw5YYIHyfb750LB0A40DP1+uCbCvFV3ZTNmDHWNBr5ZX8kGyup/MDvH bzN4WguIVvLEhJryAfyA== X-Google-Smtp-Source: AGHT+IEeezcXoEWbPvSkpSCDmB56mdGryQAIhjARM/AMF387OFnv6UoGen9VXKf4w5THjzlCw49K0A== X-Received: by 2002:a05:6a20:c702:b0:366:14b0:4afb with SMTP id adf61e73a8af0-38982b715acmr7878954637.34.1767850240117; Wed, 07 Jan 2026 21:30:40 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 08/50] meson: Remove cpu == x86 tests Date: Thu, 8 Jan 2026 16:29:36 +1100 Message-ID: <20260108053018.626690-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850712541158500 Content-Type: text/plain; charset="utf-8" The 32-bit x86 host is no longer supported. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- configure | 16 +--------------- meson.build | 49 ++++++++++--------------------------------------- 2 files changed, 11 insertions(+), 54 deletions(-) diff --git a/configure b/configure index 00e455be57..846fab904e 100755 --- a/configure +++ b/configure @@ -440,13 +440,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 @@ -1933,14 +1926,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 e53bc1e643..e5bdcf651d 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', 'wasm32'] =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'] @@ -1031,7 +1002,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 @@ -4553,7 +4524,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850399; cv=none; d=zohomail.com; s=zohoarc; b=GSV8bcsu45arFxRtl68C0Ln/eDfIK2U7bdztmhf7UB5NcUIRkLdhblcHojnBlITCXgrcNSDai1PqRnM2EGQkpFszuqiITLy/1QY9GGROYgp782xd5jOLwRVi+xJC3RTmpihbwgN5/ztfDeqppdysfbNfHf+9aWYsGbbUhzg2Qn4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850399; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ZaPshFkOehiy4SfJsOubQBhblv7XOM5ZxOMG065s9PI=; b=mISSD4FDB09/bVcTyVp16So9Ez8DttayUNI9InDVyo/khkeODVBhyRlTyin1SSSziU/EIYlQmsHTgvByuxCOOr2FfeFxcacSqsxymp1Y3D2a6Ul/LV5Ql0CO35eY/FMVOZB6b8MhbGpygqSVCq5PKb4DrGJjIV4V4oeemCAO5Fo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850399683994.8634436972445; Wed, 7 Jan 2026 21:33:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibm-0005HU-Al; Thu, 08 Jan 2026 00:30:54 -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 1vdibi-0005BX-1T for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:51 -0500 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibc-0005KL-4l for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:48 -0500 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-c2af7d09533so1778445a12.1 for ; Wed, 07 Jan 2026 21:30:43 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850242; x=1768455042; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ZaPshFkOehiy4SfJsOubQBhblv7XOM5ZxOMG065s9PI=; b=AK4wYParDan5fctboxa21Pb+6xi/zfcROZMB0ztbSVuGR/t4fguQn4xr/4zALNp8KN NAqmiDnqU5mT/wIhrRo0OwfDUV4MKkcVO4krv8lQAVZiUViUMMAAKWUCfmJAisEuIHxJ MRj05/Dr114g6IdUjqDoki26uc7xJWiY+q2zKL+v7Q52APgVNns5qXZ2wN7NJFlVmWF7 IygLy39aBkekdC0Patw/p17/JX4CbcDYRR+JOXgz4LnVtPZmeZ3bjnoSc0W05N9Zd7P6 V5qg3RMHWHPAO6c74NBvs9MgXNtYALr6rKTupPIdfsFXzusf7RUsVzp+wRUuORr42iSV Gnvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850242; x=1768455042; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ZaPshFkOehiy4SfJsOubQBhblv7XOM5ZxOMG065s9PI=; b=f5223X9g6Ao/Q8aBEe6KXR5ayR6gDkRQxRo91cnLyTCCqro4il+A46adjQffqZJ9a0 /fM8rzlcZmKwTyEfLWpSj/81CC/4w20EiW0YMvi4fwmoivyVeRQptVqDEZd214Eo7q17 8OAXxTfAStQKvDqfGS+9K1rDUM/y6OWJvt0d0EmG3Th4w85wFlYdffng4kKHWclnxKgx GCoQDPLDtgyfjk8JHuHpmhi0KZRfjblNz0G7M91/RLPF5trHj97K2TBdPFKguUprTGfe JDQOF09dwAHvjISyOoWGOSWCUaAQQ2OHWUW0Y99B2kcl5kGSXgqDKkugfiNCvpk57NlF 8AIw== X-Gm-Message-State: AOJu0YxW4v5Piai2byv0XFucqlHJr9B1Kj9SkmI4+7ddY0n4F5VzOxIz V07/QqM7vPbX2AOjK1TMM5TlvvX+TnEXwMr/bW8wJxyBaGeBD8OQEx0HPdMF4gvkSnAQgTqWETj 2UgSdsDA= X-Gm-Gg: AY/fxX6g/cHW5AplfLwt9UITawKj2YbJ+YbwMXLoMSwiuwltoe+MmQb962uHIct1bCR aN9sMIe5qppnr38gIjWKVWgJ2S2oK+Q0qP/Ksr0G2kZqVDi+xYWgePE0PZeoCQunomddrtNSqh2 zqWFBWuIZgLc1InrYGPlOG0ulbceLfOSDnRFJOiDt5TRvOa8tAVz6DsV8zxKUgL7qzmdCt/tc3U skdxHxXyHOvkBmnxUX6hZ8ZxEaSUTR8yBW2PHiJXic83ph+yXy6oRk2Ju1P8LBfJf5Z7dwOXIPd 1QvAfHLONq+7kt5hWi61j975bXcgYQzUtTzERuQPMzW5L8J6KE4Ty+B/nkl3C+L84gHDFsNC0M5 Ue0DicFPA97F756klGby0A9c0Z2MPkzEM96lSkBQOVHYGScb3llPMG3HORFI8QYKDiahin2z7lU gykLxHKx0vzEo0+C5JJA== X-Google-Smtp-Source: AGHT+IEFK2HdTgIgT1w+B75b27Ogw6cdE/ZCFsG23v0qpyQ5dE8okzwYDP3Bt0FPCYWdAdGZNzeRZQ== X-Received: by 2002:a05:6a20:3956:b0:35d:cc9a:8bbb with SMTP id adf61e73a8af0-3898f992296mr4562445637.47.1767850241908; Wed, 07 Jan 2026 21:30:41 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 09/50] *: Remove ppc host support Date: Thu, 8 Jan 2026 16:29:37 +1100 Message-ID: <20260108053018.626690-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850401373158500 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. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 e5bdcf651d..f93447123b 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', 'wasm32'] =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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850411; cv=none; d=zohomail.com; s=zohoarc; b=JxpVlcY9cbcsUVlcbPD2JGxj5kCc0g+Pg2uGHcFzmqN9fJXEwd9zdG1aOUVNoJMgj1oH7T/ebXsxHRxUHtCGir3e8yGBgS1KkR9vLBDG8k2Q8VpWP4dIAY7jmJkpu9zU63XGxFir71rTflz4Sykw9M+R5JUAv+g0e64Xo/Dc0fs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850411; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=F5T5xu7IrS+jKag4mlHsiDwSXto5kTvTaCHXNBEcE8g=; b=K5kWVbRNkrU/OgcCy1WCVcRvLWUb7mjJll43U5z1+j0zv1qwS03kNfwXt5iz6nQL6XpT07ME9DGI+y+0B7WMow0D42VWYXUT6NrobpPp7br4TweCMA+ViOo6F1VEnU8NT85o1ZdLhqHZfKrF7cxWqaXlr3CVEQ5QDsOMuq/CpWs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850411850553.5428449392089; Wed, 7 Jan 2026 21:33:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibp-0005Jc-D6; Thu, 08 Jan 2026 00:30:57 -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 1vdibj-0005CP-Ue for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:52 -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 1vdibe-0005Kq-1j for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:50 -0500 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c05d66dbab2so1850069a12.0 for ; Wed, 07 Jan 2026 21:30:45 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850244; x=1768455044; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=F5T5xu7IrS+jKag4mlHsiDwSXto5kTvTaCHXNBEcE8g=; b=rS7ugBbl+QgWZUBEFxB83oa0HKn+v6v6erOisEbKSp6qzSistOV6LcGwWCRbiZSCXY CN5dQrjpcs234DBQjhd59bLHrrjIRpcz9H33R/mWwqH+gpzjpwZCM+XDlHucZzKHpq3f Iw1WZ+NHNkx/YyYjvmTo3DrWLkcEy1MAMKJMeYkGA97cGTxgTPOMUy35f/CMWJYBGq2W rTU7x1cEOQFRTmfz4+x5N03Z0xS9DWM9vdK7F7aJ4NxDw4bpVO/aQMPBLTkd/iKmwZ5S 2Zlqm02g74IfvtI81uJDYQRpxvxHOfqlPOrEEIghR+bEsiLyJeBUcOSGSm0E87T4lhV0 BBNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850244; x=1768455044; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=F5T5xu7IrS+jKag4mlHsiDwSXto5kTvTaCHXNBEcE8g=; b=Uyfoxobb2DqxOVLCp6vMZJ0DuMAz7HNoEL/p9wWYhh1T2tdE+tcYQuDcXA9yzfZ9Bo LFNACHHtPz+Vp8KVOR5g4tqNUMlXhxFQEDCDflgSj4BTUPy+SeoP8tIDHPovdczO6096 wFh3zrmeyZEAUwTyuQnGwi88aacUlxjFXMFHm5ZHEVs/7wfFVR/puTDeMnpzdvLwXSwV wVEziH0ouM6PM2ZxRr34n0EzUDZfUscyXAa/5yTnj5mcjK/2lvQdO4bXoNHyBhCSIz6P me8fVOzuf9S0nld8AxYFZAjzHH86PCwX1Sz3pmi3NpIMp1o+HkhW35DsDLAPsDYhoKTQ oADw== X-Gm-Message-State: AOJu0Yx6BzANhEsACICd3l3t54AZXuWv4aola6g4UkdjJ0RbGZZ6ZIAN 3Cqwg1N8Mk7KkGuBVhZSmb2nnlx/QQZBIyPSrNwQUYsOYEw/phb/BwuNqPtYMna+DQc35JGzrRu KajAESMs= X-Gm-Gg: AY/fxX4uAgdFZooxHUspabumg/0GqMPielZ4Bo/I6+OhoVofg/rOsd2o8d8uhG2G92h zPHHEAniPMRfdiWZ6EV8TaoTSJcl/Wr6ehZOaGnwCD/q/Xkv2jLLQcyUqGbvaa/nUpgTiw6u4vK MVJxxa+AknnASL3UT/tmAhtP5R+dNpRkEQw8veMiqkFH0iVZeOEavmvcHSkyB+msKBPBd5fTp7I T5x+SGDI9OSiUYaHqSPcv+GT7QeRm2yzI2hNeQIb9zpODwwsm/GMxKLeJdYFccgOgmlrCXi4khv 3wCeTWyct8mS95GM+gJWw6NcbEK9f3XWNT0M+VEtLRyy5PBlDstX8qyZrYnaawy9gezmnDx4ilR XFAU+BF1YbTs8iq8gU6QqDzuxhn6VFdlJXhmVr9LYi+fmIORFiTLvvhT4Y3vKOz1K3cOL+ooZIg mG02e8IW1p3yBcJD+fIw== X-Google-Smtp-Source: AGHT+IHi+7jfDl1qDVR5Rb/zVfokV3jlnpEOlhpqCHzhESrHZPdLHF0C1bOmt6FS9uMx7ONLg55nQg== X-Received: by 2002:a05:6a20:3ca7:b0:364:1425:8099 with SMTP id adf61e73a8af0-3898f905cccmr4490843637.24.1767850243867; Wed, 07 Jan 2026 21:30:43 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 10/50] tcg/i386: Remove TCG_TARGET_REG_BITS tests Date: Thu, 8 Jan 2026 16:29:38 +1100 Message-ID: <20260108053018.626690-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850413480158500 Content-Type: text/plain; charset="utf-8" We now only support 64-bit code generation. Signed-off-by: Richard Henderson --- 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..5d5debd6aa 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_REG_EAX +#define TCG_REG_L1 TCG_REG_EDX =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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850542; cv=none; d=zohomail.com; s=zohoarc; b=hfp8P0ECRWjjjBtwzITWCJo+B4nSGCLqXOKNjY+facTidZ6yARNQWtIQJfhCQlGTdHMjjkBNVEF54J7qSAyLjSnii5GHCKa9sIwhOKIIeH4V/6/E7O1tz1049gBenR/i/vy/NPJwJwosyB9cs2eLnpHTMEPlS69sKE5i3fwuz9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850542; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=bSY4ASB8TWytr0VCEt+fHQs6O0YS3hmS4Im2JKimIBw=; b=E4cxDAaCgRKxfaS9aPw6KT5UewPPSJYUouLtdtDGXzyJyxU9aufoAJrRtWXO55DnCIAmeLGu3MTd+H2t3puytiIa+ujYCNtlg/fytDyye06XwL8/y4Xwfpy9OPYML91xIsglurbmHflQxAbmALtTNICCGj4DaXKHCC1jbnCcKpI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850542778355.7688036524697; Wed, 7 Jan 2026 21: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 1vdibm-0005Hn-Um; Thu, 08 Jan 2026 00:30:55 -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 1vdibj-0005CM-Tr for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:52 -0500 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibf-0005LD-VN for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:51 -0500 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-34e90f7b49cso1791509a91.3 for ; Wed, 07 Jan 2026 21:30:46 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850246; x=1768455046; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=bSY4ASB8TWytr0VCEt+fHQs6O0YS3hmS4Im2JKimIBw=; b=Q63xeGrSj3uFhvzWFOZDACIEc2KePZ90COMpF1O4/QytW1YQEFOFVLCemwSDzWXjnf DzW9qdozEZrf8rA1g3vEFCCiE6abz5kusMD4dNapvJtQ+QFgcswdZ6tgN0i0khNL5+4n jm/aF48/Fu7uhiqYlYX4gy5tJb+KaC9pHl4iA9OdD1BIeC6QDNjt2v7a4Hhz1le8I3MN bVaoqgZaAGSLrvs8Nd2FrzRR6DYe2cG/YiAQzivFEKAEHXU/9HAKFtbq4jEi5eXVXxL+ nqHfjjeWXXbwL4IFM5M2gqX6yT+TEAX3GeqRSuPNPGNTHOA8ca3W+tL4tHYQkrHbaF3J q+Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850246; x=1768455046; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=bSY4ASB8TWytr0VCEt+fHQs6O0YS3hmS4Im2JKimIBw=; b=ZdSWzW9xL0LLZu8IBdtvkLSJJ601Rg7bwzN1mNg7KrKFOS1JPFtx/jA36vKxvcalpY WMfLVe8W0M/ZsbjTeQuqrVJSCMx8r7QDCx0u/C6F2WdPZjA1RyQuowLkXAtOJh9TMxCn xLXuF12a4cGixRnQ1F7BsrChXVb2NDZB8KFJ2Dhpk+nE6uLNY+oyOXOYIEUMK644ilY9 1eTnfllYeYmTSM1lOHfxUjydL2rT9ag6Dao6m8rKbDQPSn+lnsuNmWlJEostUfNN2WbQ lUCSwwFQSDdxHEvOeP6kFd8lVLVmqn98Td4QeX2dp1E5DpLvLuyRdpH13ZxGPTmYj1B5 O+qQ== X-Gm-Message-State: AOJu0YytmBIQhvTQDKGDoubSllkAzDxwdkZ31OhUh5SBoXr+ZSLLZNuW 76PmgzlJStLin91qJ2wMFNEY0pJDw6EMLkI8q5PEbdLc5GqtEPIjFAIZsh1tuAVZBPpNIiIy2qV zmhM1TJU= X-Gm-Gg: AY/fxX4ipxoI/1Mwz+msoko3yR9oayWsX3mYSXvOefCG0Ipsl41y0xlzkpYOwBjEaT8 0oU6ZTSh8tI3vDP/ZFLfFbn9qzFeZNwAK9ls2yT8VFDlL/z6IPvK524LsnEiR73UM1piPkN35mS 9RQi52K2M638NCoq7kZNDsfvxwHKzbz9US4hQkUglf5on+RmjT+DWzFGWsZUL0BqBaKsS32ed/i pnI+ZG8YK2EU7kbgI/5c6wiUhiNc13MmgHPap6RuA0c/vmkPMdjTsk+zepjqShPZZ0tCpcWtR06 p6BFRj0gQiMvHnO+Fv3HOYTj+geerczXP7OPY3RK/2exdJAEwfhi4J2pO7Gj9trDuicWBcXKQzn PB3ckdEpjyjWpr2yYx8+3SN0TZTrzgvb2xsqzrtLLNArfc8P38JUfkWLpOJn081SCELXc4oEPB+ B4gWFyaNFezinIrhbwFw== X-Google-Smtp-Source: AGHT+IEnFE2z2Rn+o65yqUQwiOZi8cu2qC3Y9YSF8q7Hp6oWBmh7vKB/28PBzo5YHZWfwFabG7d2nA== X-Received: by 2002:a17:90b:5708:b0:34a:b459:bd10 with SMTP id 98e67ed59e1d1-34f68cc2ab3mr4472332a91.24.1767850245740; Wed, 07 Jan 2026 21:30:45 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 11/50] tcg/x86_64: Rename from i386 Date: Thu, 8 Jan 2026 16:29:39 +1100 Message-ID: <20260108053018.626690-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850543822158500 Content-Type: text/plain; charset="utf-8" Emphasize that we're generating 64-bit code. Drop the explicit rename from meson's cpu. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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 82a974aa6a..c860a3b61f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4025,10 +4025,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 f93447123b..7c8cf08ad2 100644 --- a/meson.build +++ b/meson.build @@ -898,8 +898,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850262; cv=none; d=zohomail.com; s=zohoarc; b=Cttzu2ZUtcbaFQBcdCjyf6X9jFJQQeIWGB8EgqvOb6qUNAs8UawditB7u85aQX4/xuXNZh9zjfVRleIrNoiZ3GZYiweRG0EmteO1TNoPo63hI6579qljnFmk7z8s9PD1q7nEfQrb8JCQBMmZj74ta+BeGgn6U9oi81d2L2mZ5lo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850262; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=iR23AdMUntYuGtO0A2og2OYh7o9rVIfnr1jwtxBvY28=; b=giqvlC9ZoSOxJy00vIPSGKCGuE3HPDvey4wcid0P2CBZwydGMDuw7ET+ATVk4pCYAzE1tZclRNKXXi5NxgWAVQoLAnjd3X47504vANhOwdB1Oc9EshXoB9dCJLvuKnPzs47hLLjsIwvmgq2AI92vUBcrPQzuoqIckpMOlH6KHOM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 176785026258075.67077888781478; Wed, 7 Jan 2026 21:31:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibn-0005IN-TU; Thu, 08 Jan 2026 00:30:55 -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 1vdibj-0005CU-V1 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:52 -0500 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibh-0005Lg-FF for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:51 -0500 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c0bccb8037eso1422505a12.1 for ; Wed, 07 Jan 2026 21:30:48 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850248; x=1768455048; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=iR23AdMUntYuGtO0A2og2OYh7o9rVIfnr1jwtxBvY28=; b=ThaU9mWOsc0pwYYT7XQpH0UyljD4PwMVni9vp0apjZ1O4H8fVaJv2pmMftSVY5UZ+E Ekv5sy5OkNPUrCRdgxjMRJ8thPj2MUSxoOY5RHXFNV6kN1w+VtP0SrBlTKswU7OV9bs4 vbthDFal1Fkgq1MFgNop1OLkPl/cgOwAMBqoP8aBAYVmRWmZ1PKzYHLaftUBnBW4H4oJ cpzypcoK+j8tPW0tt2v3ze+ovYtsl9Dhb+lyKl9jRax6UfpPGlpRn/Nez4fN/5z+8wX6 vFF+l34pBM8MEpS9YNsFUXR5lcMJF6Jt0FfuzE1vxBWzz/GL5hPvsedCdk3EPHd1hldJ SXMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850248; x=1768455048; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=iR23AdMUntYuGtO0A2og2OYh7o9rVIfnr1jwtxBvY28=; b=pycWyUS7BnJvYKRaERgwm1nejHYptb2M0m397BbD84oR1AfMNp2UNimjt4c7EyKWRF oqV+XvUi/ZKBQzni1Y8zKYehFLx6ZvERcW5nuWkPzHkzBnE3YhHpXX9l5lm76CRTEVki 3x5yDE+5JsKuEF5yYLCfVRwYC850FIj9NViPBV0PrTm9KSyzdkl1c45cq1Maamz3ZUU+ I7WyIm1wmFvg+K3KI8Hw0Sv2wlsJ5StAVI7EdKrvwoLKlPJnvm6TludK83v9/IC0YcaD +2iazIghSXaImh1FmgOdigGVDQlBEbhfq1doZi5dXjJPcTMNSEEiFsfTQNFd4fANFmre 0XYw== X-Gm-Message-State: AOJu0YxnxkWRLQSExKk1Y/5IZeunvuWkH1+RQN0Ts5psM9al1kYVEBPQ PrNuoeLknvmsIfj6qENboFf2a8/TgOAWMfFZtVnDJ4ocXpoqUAOfhKy7Pkr6ZN5Xg7v/pg7myAe u8XW2H/g= X-Gm-Gg: AY/fxX6Ej6l4hFK7MLKvvM/yZxhnYjDISPE3WYbuk+cNfTPE/NMm82ub+5K0v1GHBwx AOzvtfyob74KtQgQC7o90kOfSAWeoKe4t6K3J2lOTIOEcbL9PVp6nfXp75gErYDesn/4VOVOL31 YeBeSzCrivFkJawE6SQSBHZWdKGs0FJoZ9qnq+Ui/dEBum7zN3Pbafsz9kUD7+zqyk6IwzJ7SpI Dym0K8vzA7LAdIKoJ+6fksV3XBUzxOu2mz3nOgj1ege4MKaNZ0QvZ9fQ9oE0Vbnwbb3OoB4BGuN O9Qql/iJ8sCG2oLCQsoPSY/cFsz1Lj0O3FVEswKzZtbXltjJUd8vb0Qbt4MS5Kvm53EXeZ0Fxkt Ds32yR7w+2DHxbg5SAFYomte2eHTYMfoEpj7MnpEShsyWq7stpqDZQTFhnn85oftFDkAARlqZhC PpBRbabBK885o1P4qdRg== X-Google-Smtp-Source: AGHT+IGI/713iTR4T08316KYpZr+iF/1eFzhBlqqmFvU+igiQKMpHkbsBYqsNM6eNT1k6GR2KLzGdg== X-Received: by 2002:a05:6a20:3948:b0:366:14ac:e20a with SMTP id adf61e73a8af0-3898fa65ebamr5022793637.72.1767850247600; Wed, 07 Jan 2026 21:30:47 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 12/50] tcg/ppc64: Rename from ppc Date: Thu, 8 Jan 2026 16:29:40 +1100 Message-ID: <20260108053018.626690-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850264819158500 Content-Type: text/plain; charset="utf-8" Emphasize that we're generating 64-bit code. Drop the explicit rename from meson's cpu. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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 c860a3b61f..cf7d2fba2f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4047,7 +4047,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 7c8cf08ad2..f9fb76ece3 100644 --- a/meson.build +++ b/meson.build @@ -898,8 +898,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850382; cv=none; d=zohomail.com; s=zohoarc; b=fSiKGKaSYJ7UYkoKbWoejynWkcxqDwjecjmgZz9xeZwd0F946NQCH8GaQIPCDw8z1jBNBSVsUpPhmnItJFCuDNYsqorEPvMV2jYUBBEN3f7ri3Y1k5upOOZWsAd2bqtQ+gdxQr1KUarbxtNE30+lQ3aYj2Z4OnwNJ1Me/XX0rzY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850382; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=oq6C1ngTyRjWGR4ozu5wSZGz3mAgcjt24Mtp3jaLWhw=; b=NTvzuRXaWs3DGCAOIAtCDveuxg+Pr64tmSWK0aV0wklO4uMM6j7bvIPJyTuSMRSagPHruSSbclDbaOaekt6l4JPHCL3BIch8AdewpMQzKpFgRfumlKuUI7Gm7fG5vSmhHxn79eJ9cv51uJ4MaXHo3USqnLqOsgMoM34EzmKoirw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 17678503827081001.5281636533585; Wed, 7 Jan 2026 21:33:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibt-0005Vv-LM; Thu, 08 Jan 2026 00:31:01 -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 1vdibl-0005GB-HQ for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:53 -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 1vdibj-0005MM-Lh for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:53 -0500 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-7f0db5700b2so1621007b3a.0 for ; Wed, 07 Jan 2026 21:30:50 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850249; x=1768455049; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=oq6C1ngTyRjWGR4ozu5wSZGz3mAgcjt24Mtp3jaLWhw=; b=z7Q1vjpVVHMCzkqbraPiYkxNeNiC4SQkAlNkDM0C98QUhKgmmCjTNQ/UlwAuRNh32v cyVIvT01NepBlS2zR5ZgV82zZZvCYdFCYykeWz4bkCemHbUNwUgQq4RhPQZ6P+UHFG/S cMBk7/DqLqPorjRZrDw/60c89w4vMylDJySstbNVPKIKJ1Wp1nmmRPwMVGKJ3bKfzJl3 RgfOke4z+dO9ra02lFBzppG71zWBZdTx2c1rtX2ZrhGBb+UJuMnpuAa7cZAWWlDBGYNC GwP296bK0NWj+mAUfaBxJIGZev+W2YIw2Z4hJ+ik0lOfnQ9lYNXOPyU+AAHQ1b+I9jzm OWLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850249; x=1768455049; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oq6C1ngTyRjWGR4ozu5wSZGz3mAgcjt24Mtp3jaLWhw=; b=Gyk4SvhmdZSNdCfirX5DnIoNQOicdKTBfQVjIb2S4lJVAAZDhttGEQUTTpItGrRAAD F3/ALPj2TG+J3J9jBO5urVxOzWrIwNtzXaJlQZNEfdkDSuLtUqKBgJx2DuU2fIQmtC4s 3uAPe/823WNBeXI0KIWbBhizEV/4xqfsQAx25kZ9sUr+JPuZ19e/pZ19QPHarbS+GvCO OvjKhGUlVoDEsTyUTsH/nT5IX20x7GJoCCXrWZYuvQWjPMLjLJK+YDsh/bH7bcIkhl9i reNpzbFh2NeGEgCwBpydEqx3rjr7sColMjwjo3OvfofoRSrdGdUfPzQRdonYNftXM8uc dLOg== X-Gm-Message-State: AOJu0Yw0KM1LAGqLq2mN8QBWPmNx1R0iP0Y6qq+rRFJtV6OsMGJcxCCu ZLz87FgG6qSIAk8DshGtCEx5y+vyjxhHk9SK19I9CawTLi2avIRiFJ8L7j1d6o78HcojWlntUC6 g0jak6BU= X-Gm-Gg: AY/fxX4dVzFPmG+rT2wX2g4OWNf6xr0SyhEkWsjM3Lj1mg2Kj96mLCJQf3967uRb1oY kI9951VVT1UAuqCHZ86ikiGq2vJ/XDfyH8pFiJmRFQgYjIqJ2k1639iF1yS0pVMJD8w35eLwEhl lA80VcZZc/9k81aHF98WWGdXpwwPSFMlEpr2JZJidOPODpXLi+b//0nsV00eU76iml85USoPd+M TVzgXPGQ+l++wgNBZP6DJOl66YhFvC0+2GkquKCGaoK1KgwWKZXe0b3e+vie3Itw3hNcnbsvS1P DqEvaakWSvc4u6uwuuQ7YX4EoCzcvRavtQXUwYYYxnb4GLpb6pUVGhGbixNz2nU3vs4rGyhDgK5 UotVLAL6FijgooKoip6NrVZ8qEW4WlPupAhJtCapPBqTKsJyzd/sdfUwuW7hGHSvUFhhGGf/kHB E1SqEv+DkkGvcQ2+WWxQ== X-Google-Smtp-Source: AGHT+IH09+2oc9jWUIYiucmJGoKDsUkI0TjD0+TRqJE0uiiDslrJbdn/6GSYVMuJD687V+4AqJklDQ== X-Received: by 2002:a05:6a21:32a2:b0:366:14af:9bb7 with SMTP id adf61e73a8af0-3898fa087b6mr4469929637.65.1767850249226; Wed, 07 Jan 2026 21:30:49 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 13/50] meson: Drop host_arch rename for mips64 Date: Thu, 8 Jan 2026 16:29:41 +1100 Message-ID: <20260108053018.626690-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850383303158500 Content-Type: text/plain; charset="utf-8" This requires renaming several directories: tcg/mips, linux-user/include/host/mips, and common-user/host/mips. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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 cf7d2fba2f..4a79947ba3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4042,7 +4042,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 846fab904e..fab9a45531 100755 --- a/configure +++ b/configure @@ -395,10 +395,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" @@ -448,7 +446,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 f9fb76ece3..6896c7a64f 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850459; cv=none; d=zohomail.com; s=zohoarc; b=AV4PHDexrZXqXblpS9Wu5Du51BuiYGI5V4nm3M1q2o05EaumzWST5JPuMQRVWAlOFXhzdtUhVbK+qxUxIDbkPtqMSi7saDfNHY/j+KE1mY3GaCy7geOzAIyqrDY4+2/ROJ6KKT0C2u4cX4zH7Mbm527SZ95Le9aAluStAMrxuOc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850459; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=zEhE/QDquATFicjc9bVbC0uSox54fmfzVQ70vflQr6E=; b=LZrHVt0tTqkDFD/knkNh4kyTs29MiXw5NRZFkQ2TeowtxRxonKM7o3C39Nq6Yf+2YFEuXRdFH/TnONHgQ7sS1z9ngWX638FcaC2f5gg/ENicHljQekbHfDjFn7gds2mAjvmpb5mLw5FStmk1+unproKKBdNf6yEfFpB39F+LGv8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 17678504594181003.6962144093742; Wed, 7 Jan 2026 21:34:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibo-0005Iq-Gh; Thu, 08 Jan 2026 00:30: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 1vdibn-0005Hz-3x for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:55 -0500 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibl-0005N1-5x for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:54 -0500 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-34c708702dfso1923505a91.1 for ; Wed, 07 Jan 2026 21:30:52 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850251; x=1768455051; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=zEhE/QDquATFicjc9bVbC0uSox54fmfzVQ70vflQr6E=; b=XV+paVssuO4lS4gVwKuZZflyhdo5H+YRJfJ5vKUsnTOwfDjR4M1fKDiN6SbACZT5y+ LfG5ZVPe4iId27HB8hjH6KPiom+y+Oxh6FM17DVvuqDw0bXOEY1oDMO2gq69EihKUTGW cJQqdAINtIsUAyRzTCY3jsRNsBGxiBg24QfdB8S5hFF7+Dn+yIXxrC8dNk/8wFzUUEaO Dp7/33ntD65dvu/cj8t3nxs5BClDFsmEDx21wbIoxo7der1B5M1BL/rsYCEDqw10XCEd Q5kFfDdbhSHkbg47+L/0/siZyS2UwVlta8UTeicwpXXE1gy51L1vO1DVHbRCXIxnlgoX +iIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850251; x=1768455051; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=zEhE/QDquATFicjc9bVbC0uSox54fmfzVQ70vflQr6E=; b=ns+G0kmjP/gYVXV/PUu6TdKs9r92ERZRveeW5mTbCfAgE0f7VwS/9vbYyVKnlVdgZ8 1jUeJ83NZTk1eIlFCTJaAQfhdZmDbeTrVzlep8+mjpU4u44PYJwyxFb2SlbOpuvlMaia 1H4tzYQTBajqu0zG+vvn3WK0Y/vbSi0e8ne90hyjqfgq0Sy8B+AbHLbeY5+tRrxpQ8vX sND5MwRiQ4chIU+ZFklAfSBZdFj2Ac4fZ7OUBxKGP4wSkPihxbz+1I/oS3jMtmLfYDI+ WxwpSA9icPmFwf1I2PfpZBhhNJVCZUK6XzHwDOX4shhwKJdJ1tniTy5289fc8TOMgV4n Kw8g== X-Gm-Message-State: AOJu0YylJiYEaPCHOUQrFpziZ5sbeA/dJJgC1XruemdUh/490C035VCU 14pv9Dl+nd11NyV2FfmQEpKQpCjlzQEDnvHegmYx/3aWLi0xULOLPwnWGenldK3j1ETZ1ArZdPK BrmUejWs= X-Gm-Gg: AY/fxX6HH2AVgdxqQiD+I/2Dr2LWXMJsSHo6OU9YhGTGZJMdVWsiowwcwxIA3paQvDA sD6ERImRtxM44+Y5GEgrwqS3PAg8sxh3ciF1mGXIkcWuh64PzRZXsHjpUw5zS7k6kbhm84GhNKi u6HBAI4Yb+uJBHr18/8Gv8Zw5ECHHyvi9bgZry50CDerDFAzjJQeiIAI9sf/M5wX30QJ4hPWHDZ uVrn+s2wnrsaK76rUn/fuuGagJ6kLYQsKgDDoom/8GZ3YBOtScd9eur7tiMJmVGy7xSpr/QciUO EH3lnSFUO4+QVMD0iGikDUvho+6zoTIWwZXnVu3WckyRCdZChb0JLGu3vdBaY6Jt+SU80t9OmkG Kum7oLvj++UnqQoiqk4uyAzUwRBATATax0v+LA7DLzICx6C+IscFZ7pvrGHNHyueSjR2FHBJgRs HUBIbwNa8EMaap3kPmHNNncj50ffaL X-Google-Smtp-Source: AGHT+IECwd30O5w+7BTQWtRwzChNw7jHDSPvPj92USPEfzS1IAF3jNmsoYXG9WGQU5Vm78eoQU12tA== X-Received: by 2002:a17:90b:3c45:b0:339:eff5:ef26 with SMTP id 98e67ed59e1d1-34f68cb94f4mr4625233a91.30.1767850251165; Wed, 07 Jan 2026 21:30:51 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 14/50] meson: Drop host_arch rename for riscv64 Date: Thu, 8 Jan 2026 16:29:42 +1100 Message-ID: <20260108053018.626690-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850461632158500 Content-Type: text/plain; charset="utf-8" This requires renaming several directories: tcg/riscv, linux-user/include/host/riscv, and common-user/host/riscv. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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 4a79947ba3..2b9354757e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4054,7 +4054,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 fab9a45531..2d9a603ee8 100755 --- a/configure +++ b/configure @@ -462,8 +462,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 6896c7a64f..b0fe798ee2 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850464; cv=none; d=zohomail.com; s=zohoarc; b=kjR97dcJ2ryH7/ZbaFzgQKfzumi2pWZZYm0CoFPv9sKaVyJ+N3Asw0iuqJKqLbf/cLWXHM7pn+8u+iln84xiyI+fAiP+MI8GPv46lYCrxpCXv9km8fFlLxnvsb2DoWi/G9XJDJ97ICbGPF9ifqwbwE8xWOgECOJTb2nmTBKOgfE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850464; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=6d4jiRagzBQQHiEnfwjlRKGs6G39EMUaQpWILpAj3V8=; b=iawuSNf6/WbMglcSM918jT+1HddazfyB/L2PvJTYcGEcSP5lIcZK+WCSnDs9iXhaEkYSKEWDQ2tURyHRMznP4recsdoZ+o8Fbec9NyFKgE1y6AzHIdTeDUR2SJ6Cp2iy1hDYhTqgY2tvkEl5PFUChWXASYYoRh5rb7p8iQxsuEM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850464903379.3619230830009; Wed, 7 Jan 2026 21:34:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibs-0005Pg-UU; Thu, 08 Jan 2026 00:31:00 -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 1vdibo-0005If-5L for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:56 -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 1vdibm-0005Nb-Jh for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:55 -0500 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2a07fac8aa1so23292715ad.1 for ; Wed, 07 Jan 2026 21:30:54 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850253; x=1768455053; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=6d4jiRagzBQQHiEnfwjlRKGs6G39EMUaQpWILpAj3V8=; b=K6Ac1Ut3PDa5wRbQC+GnTM/QCPSDUzYUuwxKfYWCBsyWhSWrlYKeWeXdWYlFdhMOOY 373wnxlBl8siAw4QBweiz0hf7CJSGvRFaM2exCA4pQSXBmAA2QELsiQsJDxlZVgQIf0F KQPGEOoXdlQrBV4qP+ZbQYcX32uj944z25A5/iBEAnnKLK83v/rJxMH4ldxAgP4ZfUpF VJCbmdHsYH7uUd+Tu3x4lNuo+uYaH6HFjfyeTXQ+W+aJYYKuTeL3axczJcoKEZse8sjm 8nqjw19lcRXGFg7dHNSQAteePeO2kl1cojV53Fi+aYTGkcDr6ZbLgM3yVH1xM71A7IgM 4hLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850253; x=1768455053; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=6d4jiRagzBQQHiEnfwjlRKGs6G39EMUaQpWILpAj3V8=; b=CfT+o0fS5j6958teo0iBxZbZ6ou41d0As5a/iom9lX3ZF5i70i9SETmeh99ACn3ME/ ZaQgiQdCflak5/u19mLq5GO6nFIaBaw9X1L3iqmzFibxa2nkQUGsBpx4o6zgOpJUXmiC wydS1og6KXWLFL6EKpL+tWp9u4+FAMIQpPSEHu1+CJ25a0whj8qKYkrTfNVB0i46hS94 aPrK62iDlWGVgVgP5wP/u458gffHOXZsoRhNflJFJhhySWnYUghSgyqX9zTijdZSTqH8 zEOglzoxkbEGgUviB2YhjmQruK2Kz4K+BvFwd256nHJw+8rBqSPoinmhZd2loPQczjHU iEog== X-Gm-Message-State: AOJu0YzMiPBFGNffmZltY4Y4Tk3pWTP8MTQnAcC1Tb1FX/bWbvIUGz2b VTMZ0fIu8qscaWoWHGBWFaIPPCZEB0eyTO37PeCF4xn6G32RS7Sgbir7X8tc5DHsRAWoqrMHAe/ ByocXSJ8= X-Gm-Gg: AY/fxX4M6fa+gqWhkqSymnvmwAhKhLYq/9hGNc2ByOM0QnYu+wLRQ6nAZqWXjsN8f9u ZXuSGUHeIWYgrWnKva+66LMDbGBKCwfzok96qAhFqgypEzoGSwJFaW+QMcBhrKocvTICd0Qa1X1 6dPPzgEJBYJWk7UZfw1eCXOuVBkVO9t4W/k5P1apnldWt0roVYc+LEKis5D/RTb1MTx5tTa/S7G H17d5XmBybuTDIfetFdIKrPZb86T1l/X+oPLxhWk2Ckw4z8eHoNxdavbjC0M8/+CSSpFEqzueyt GhP0qWZOymK8bN8uDLVMukbhUE+P+hxlPok1eNZKAc03FWJ68tEBiA4k20/pk4hOIVTBrAvt8tS XW5KGjZiAoKcdad2Sj/3xNRp+OJn7xwimGbJQHVbdLMVqXRmm5YiESFktSfjQSyyn8AhoY6C3Vz g8P0wBYdWWwLxcDeaNYg== X-Google-Smtp-Source: AGHT+IEqJc+w3iumYWc8sS9dhg7P1xNSOt15iqnpql2U51Q1zGFE3LlhLURCcXygVkmTOSnsa7vbDw== X-Received: by 2002:a17:90b:3a8d:b0:34a:adf1:677d with SMTP id 98e67ed59e1d1-34f68b64d7cmr4144509a91.9.1767850252921; Wed, 07 Jan 2026 21:30:52 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 15/50] meson: Remove cpu == riscv32 tests Date: Thu, 8 Jan 2026 16:29:43 +1100 Message-ID: <20260108053018.626690-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850465610158500 Content-Type: text/plain; charset="utf-8" The 32-bit riscv host is no longer supported. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- configure | 10 +++------- meson.build | 4 +--- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/configure b/configure index 2d9a603ee8..06a1b441ff 100755 --- a/configure +++ b/configure @@ -403,12 +403,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 @@ -1269,7 +1265,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 b0fe798ee2..a18b3a5657 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', 'wasm32'] =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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850297; cv=none; d=zohomail.com; s=zohoarc; b=dZ+kd1JMwf+FtIUiAOpG4XBUudLn3f7iZCFIvTuNITNz5JhJSXFFDZLQ4alsJ8iP9f6kkoENIbFT9wjxZkHDI9k8k7+nW+ZfRk8nPukS0M9IqrV+9JPJZihClyis66xXA/Du3eKj+MNvdDHWB31s9ew9mlV13SHAzTHqXJFbycs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850297; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=dhACpDk9o6KEnsF8TAiInCR2PjerLRJOGnsSv7vL7Qg=; b=WHa4WHDniAxe1PHTzsbDSR6hyXXIwfY/y9BkZcZIkGKiwX3oQS/qGMivxV4kAyhSpxE309acvKjONvUzx0sB6fV75okn/g9lLmBZfXJrPudr1uJ6lPEYPwIxy9uuwjDBgAiI8x8T8Ki5TWuwI3luP/cZ1e6v3iaC0Pmd1/qx+eM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850297340972.8193569955499; Wed, 7 Jan 2026 21:31:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibs-0005LU-OF; Thu, 08 Jan 2026 00:31:00 -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 1vdibq-0005KZ-7l for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:58 -0500 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibo-0005Ny-9B for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:57 -0500 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-bc29d64b39dso1165366a12.3 for ; Wed, 07 Jan 2026 21:30:55 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850255; x=1768455055; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=dhACpDk9o6KEnsF8TAiInCR2PjerLRJOGnsSv7vL7Qg=; b=J/nl6qP7Cihg+tPR9e7gBonq8fMQuoevOzKsZXkgKpZxZikYvmpVJ04ljzGjjTJppi +PW6p7LpBLMr87xvnrBafGrwWisHAaIdREYJPjqWaXF1kyq5xWrvYPYz+0qqdETgJ/Xp yr7mejaVCNybp7XGe5q+OTZ68+nmkcljiy4KBnH1gNcf6p1qLcHUQ8uwyRvAU2h5bhl+ mb5AgVCAvyFIrUsolK5fcZLMbzKIKCGQIBrp/7A9/8BiIR7Eba8olLeuopTZhzcSquei h8O0dt6zbDAi7dc0UceiC6k9l/+yGxWqnaFpAbjse+0HEXDs6MNl6pp6sHbJbQu3K9Xo XyPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850255; x=1768455055; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dhACpDk9o6KEnsF8TAiInCR2PjerLRJOGnsSv7vL7Qg=; b=xTgkDWZAxlvGcFPMqiTSsTMeuU0HdhpUS85KzTnLMMSIodSxOIeC647wOUlM6G/X/Y j4xzh3+CdnrD/zlxR2Peua6/8eS8+QChrgF0liVQDg4lFbMyWFv9Ind7Az+ViZspucuf y2yTXnBcHhNVSe5WC+ZgH+REBCqngEj4Tp19NtGVBYCcvOMaAzLBatL6z8869tfxJiGo dTQvmNQpb1ZOXsGtpc7HhUir71mdWVJDp4UwRF8qA1aRPFRc/NCzJheyzIWUGGb9X3gF 8VmFEJS2rXPjsSFO6Qzq0daSqXkJFTQ+117YoA/eMeRrpjZaE48W+ryFESZW2AJvVjDZ Cx0g== X-Gm-Message-State: AOJu0YzhG9Se1XnlfQDOaJnCzaUGr5U18dLpG/8zXChqOHp+hJuTdSqg OE+4cI3I0jdQpUU0ihjzDrj4usigGaDfD4hR5xi5D9S8yUb/OY6FcBAJKKjWh03AdDAlPMw8CoE JaFTiCGo= X-Gm-Gg: AY/fxX6CfnArq06qNos/BEiLxh7WQ3GLETDG+vKpjAXhQ2PsVSKshKSo/FZUqILfg5b vJrXET/86/x5OBaP3XYAAXvcQmtjjpOFkjsEJHPhLbf4npMf2kAxmfwvHcmY1m9OczcJ4dcX6mX 3fo0abgvRQdpDpJx1vcSAZ4x6sRkdXBFm+DcDHCN2N+FZQXBCjNKopSXwiLjq1x5NjNy0c1Grsm G6Mycy66NUNOKEO/+L6pQbjQXazGAwHeCRcDVQmfvqVmbn8x0RmORxLwEyjWE9zeHv48jP/sCXs o8LJSFUBnK2SG+fW5bZfqUfVjoEr5CEBGr+IJmqRK22VKFNRcz2IIzSLDPydbRiHiW2IYAHv11r 6FiMBGZTdtt7OEsNH3FhM3xFHSPmLpaqZxdKTmnptDcNjn0fCcg82r34dY+YTEI1mWQDsdfMJEY oGoqNr+IUChIRDJaqltA== X-Google-Smtp-Source: AGHT+IHgD/gH7k0JBp8GxXsIwkFe0XY0fxBFODBu/2gcmiGifQ0a/GsUXkpXRfWdjl78oLYObQrwHQ== X-Received: by 2002:a05:6a20:7d9a:b0:34f:68e9:da94 with SMTP id adf61e73a8af0-3898f897402mr4549909637.30.1767850254716; Wed, 07 Jan 2026 21:30:54 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 16/50] tcg: Make TCG_TARGET_REG_BITS common Date: Thu, 8 Jan 2026 16:29:44 +1100 Message-ID: <20260108053018.626690-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850298948158500 Content-Type: text/plain; charset="utf-8" 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. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850639; cv=none; d=zohomail.com; s=zohoarc; b=gqn7LY9pCE6lb7zePQmgqmwlJSWT2EYcAUQu/Pzvs+BbGWWgPScuBO/4VU77Jh22FuGSWdHvWMHEJg0ykQzona9Q3go4wN8jdAeIUhFN/OSlHaqaFeNxbiboOqRJzPtSJJvJ1PLlXPJoS9YAfvABUZUNFruoWk+l0BCjUPn4oBk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850639; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=TukGEmMKpnvEasDlzBdFYNNO3/Mmmb//jnacHIC6uLY=; b=GDnryoTCdLE89C6FelG65YehT9Kya/s/1y8n8uOQOA/bqRasF2Zm1Cg1zKBDAM1aYjefYEToMzPuam98a/WGEA7t66tT7KZolTZohfaHN2j1xYKijxY9dzNn+0bN/EG5XlxAGp6n+bZdB04N2zYjl8i59QN1ELVYblOocwioDkI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 176785063940949.181844395024314; Wed, 7 Jan 2026 21:37:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibu-0005WC-A6; Thu, 08 Jan 2026 00:31: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 1vdibr-0005LM-L1 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:59 -0500 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibq-0005OU-0l for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:30:59 -0500 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-c1e4a9033abso1602523a12.3 for ; Wed, 07 Jan 2026 21:30:57 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850257; x=1768455057; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TukGEmMKpnvEasDlzBdFYNNO3/Mmmb//jnacHIC6uLY=; b=c2jcuIXxELAae7BmWUCViN8+1PUpg5PrAoc72kaWbUS83PQNjb44+KS5BPFgn34J+S Hfsir/k2AA9xxtfiVARd+5lPzYXHxh6VJ5iGTVrQoSpM+0qftA9gLfWyVMgjPzREXRc5 KCtw7/Zez8hgTKtNMaaASwA01+jLFuxJqmDwwM27pI0naMB1UI1X7TBx7+LjNk8SeIZt K7txSp93jRZtre6R3GCbUdoFh+5aSsgRa1tPeEf/ruT6jjPx7OY5xPuis/wIy99Ak2m2 6HIjcMDdHqEj5Bdwms+cfzvVkw3pzz0gQAoDnLV1adyPukfvMvLcjMaZRc7/x0trL7nW efUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850257; x=1768455057; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TukGEmMKpnvEasDlzBdFYNNO3/Mmmb//jnacHIC6uLY=; b=MbH6Xp1ifvCafkSIEw3z5MDjHASh+f2iMVudGwigR4BbN/ik335BxTRMSYmWEqOth3 jiXYklXlePDLLae8UtjQM/1KFdXYzAL+BKONGppZD3/67QmsL4P1JFy+8OvXOEC1Q+v3 7UmbX9H+Pycg6KT2adNMT2GF0WeRFsK7nNjlx24daZTOp38TztWFdIDQ8iEWpCpWazNo TSIh8Saz9sgtn52gyscKqx9Yka+kyNQSpg/oRCmNbeBvVrDpBe03Z/mDB6zGrD69szQk R1hkQ9DOfOMOZ4SvDOFJhmET7v5RAhZAkBHpo4B2+o81K5VP25dsA0lIsiifVuW9yhqm 5pzQ== X-Gm-Message-State: AOJu0YxBswCwAQ39gqzRMY6QzqcLsgrMkwqxhsczagAZsMRC7azGIsbo gC9t3VuG3ojo55Ddj5rvbMAkj0Dhd3JBPyQmwpatWUz0fuCXMiDydylIzQbeJgbDxc1j4X85y9Q eifCZ5ng= X-Gm-Gg: AY/fxX40NI3VQJSr2UI/y5TijD/cpHg4btfpgeLTeOZnOdToQBQHHPpCenMto2yWmNw ybWFGn50oUQEvGjFBdMo3T0wp9uUmvSLcaG2R9raVEFEC+Dw9SKP/83RgFoS+IcS7eNE4aR5Y/O d/2vXXUb01GdMgXxrQtukDbvCeprF/Rwmr2WVW/AHGjIEsoyZqt4tJ0FKVi1RdhgKSiP3ESReil 9CsGsFyeIWoCpA6Wm4hHIv5+nTeejy6VsuG/4ExFofo50i8tchLnD0KUpUg/3ETG6fLCRehSf5N j8GS3bSjHoz6YpkmrwLnw4NzpXdSf5IoyW6W/LNcOMGXUV5L0ua264ZBXxyTtzvLCpA2Ud93+P3 j5rQhQbikFVciG+5GuNgavOIkoDfM2t2ThkDR6+eAo22sWLZ13c85uBo3EBU0L82mZqbYB1CcxR uo1V0FZdi7IEfra2OEwA== X-Google-Smtp-Source: AGHT+IHFLY6NQ+02OWYAhpQPBlW3Gf91wTKmLotJarAPnU2zUXJLQ5fVYckxt2m9vxlSWOZwk7EzIA== X-Received: by 2002:a05:6300:218a:b0:352:4411:6785 with SMTP id adf61e73a8af0-3898f9977dbmr4647808637.44.1767850256605; Wed, 07 Jan 2026 21:30:56 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 17/50] tcg: Replace TCG_TARGET_REG_BITS / 8 Date: Thu, 8 Jan 2026 16:29:45 +1100 Message-ID: <20260108053018.626690-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850640271158500 Content-Type: text/plain; charset="utf-8" Use sizeof(tcg_target_long) instead of division. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 31b9f7d87a..9c4f1aba7f 100644 --- a/tcg/riscv64/tcg-target.c.inc +++ b/tcg/riscv64/tcg-target.c.inc @@ -2929,7 +2929,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 \ @@ -3109,7 +3109,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850600; cv=none; d=zohomail.com; s=zohoarc; b=eq5tMRnbBFImkqZUEPwMtQLp7pQkJCpxLlxnooBP9EpjzmuxxrmZCL//gmIIsnurkAl3NBnAoCh8D7VKEMnJA+K8FdK6jwigPumNIEKME/fb7AZXO5TgRUUuYyl2qGnBop7CxvQ+SgCVRmpV5zyqzeuka/Tix5LVQEW6a6hT1pY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850600; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=g71XoEgTnRrKlmLnqVlg/PQBSmJy8VValiVqdAtVf3U=; b=PqUOor1nLX8cGBSN8fmfX+K1/FYgaM351qSIt2Tf7Ru1itxN44U2gQVgNekryFJNzIwcePc8yQZCsQtlNM6is+wd/95Lut+kdbUKHgJCoytZM9HfNbh6Ggp1qaBB4aYt/9DOG6AA/aSd6Tx6hItjpOJjrgasLwq8T8a3UPEe5hM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 176785060007028.9783663863667; Wed, 7 Jan 2026 21:36:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdibx-0005pw-7k; Thu, 08 Jan 2026 00:31: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 1vdibv-0005dA-6d for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:03 -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 1vdibs-0005Oy-3M for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:02 -0500 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-7b8bbf16b71so1918560b3a.2 for ; Wed, 07 Jan 2026 21:30:59 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850258; x=1768455058; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=g71XoEgTnRrKlmLnqVlg/PQBSmJy8VValiVqdAtVf3U=; b=XbltOnW9dvey1E09s6TgCfMDAt1UtCUI24GhHIaKS9ZH1OGUYoFjOeWblaV4ifJxnS SLDm/r/dBlAUZnZYA1+ONq5t0AZSpFZxjYoi8VOwBmEAFEV9YMn2QH+6mfaJJ0KXontW Y+AP24fHO2wM51Z2aK3O4MikmygJgMWhntfDxDHqIJWC5qlGaEq+sjtiHEO9IYNGGRNL f4K06Wcx/ipf2smNa6y5Bd4K4S8QsvOxBMz0HuCjkB7PWeEJTNmdXWPLGHMZAiABsVae +HWT3GSjmBCB1B4q6uCJZZMLFcEspAGt3OCoLX/A5RsIppQzKp0p05mjKuzVJ8irthF3 GcOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850258; x=1768455058; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=g71XoEgTnRrKlmLnqVlg/PQBSmJy8VValiVqdAtVf3U=; b=gAuyeSpRc6sOl5X+2dBKqP47vzhtIAIN9t5uRKzET0FAlpBZpz/+uJ5UOdxHhfuaaP tZcxNEdwiHWn8V6r8qdUTHQrS1sYbAQUGfM4W6hihyKiFTtgDRE0G4QFwsLmr6EW2Tby nadXOi3KZwEsBcY/AYmjGk/SC9MTRDuJUJqm88DquGd0oXaVrw7Cy2Q9BxcyPX7xz8j4 RWy0twvuOYGCjXHH0YysfHaqkh1Nl2RmsCko1lZRbRDpX+zpm/OPvTEp5voepvPpOPkS xsUvuBP1ADDAAzydmg8wBt9b89/G3qCfPYmY5/W2qgnlDM1VetL7sx4qqBGwnkdZKWMp vLRg== X-Gm-Message-State: AOJu0YyCtgGzyP+qGMrSEY3lv3EpKIhxW38AGTMIpVrd9MPp+oNfZjJw 1sN4qNKtV6Civ6uqM1UzvbKKVU6Ic51BVZUXcYGR8NsKhqPLJsteSbk4eTQJ7ZmwYOOAE590TTM B8zaZXas= X-Gm-Gg: AY/fxX6bCBF9GfWjjGOwzzT2phvkoZFgdBrf2qMLUqVjX5NgErToZMAn8v0UrBlGIl2 GNV2dnQEVGs+VsJbbesmSS/iXzeG22D6LxJDgMmEErNr2D+LhajDpc0pV9NaR4N+PTdVP7HQmuF Hqb/qopaagpAgZH1ZjwFvUQvA/wYTgbf+wIyn6C5/4A/Hz+7Vpc6ArKWQo8j+MF23riIicSW79F ko0PU3Udjs01zOE1Hb4eqGme/4RJO3eyrIXvCdYtOIW2bq98tn9GAwWBbbqwD8NkXTNM90RL2+d nYhxdq7MDzmWztUewzOynTak8eSvpa+FuW/wLdkkKgFcAJGVCe384oGh3Ecf2LIlttPFh/W40S5 zR+SUizcmMZ1eR96uD+haFW1niZYkorIUyrKRDaf91uKT6FWs+UuPte7FKuecOgJQ//MPnrTqLL OMCWzGWEs5qyG6m/X93w== X-Google-Smtp-Source: AGHT+IFB+iY4W4o9ExtR6gKYTsubFhKRiEkXCUR1pyArMpucL0yptT+f5YBOciBP8HuaysVieWzODw== X-Received: by 2002:a05:6a21:3299:b0:366:18a7:88bd with SMTP id adf61e73a8af0-3898f92c9ccmr4187895637.2.1767850258357; Wed, 07 Jan 2026 21:30:58 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 18/50] *: Drop TCG_TARGET_REG_BITS test for prefer_i64 Date: Thu, 8 Jan 2026 16:29:46 +1100 Message-ID: <20260108053018.626690-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850602005158500 Content-Type: text/plain; charset="utf-8" Mechanically via sed -i. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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 0fde3d669d..535844dc09 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -3005,7 +3005,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850284; cv=none; d=zohomail.com; s=zohoarc; b=GwUnJIG8cKcyci6iDpQqktiWD88sfHhAPfE++qMHdALCYm/Xg9hTS0EMMVwdf2HPUNH+4X0f3sMC90K8ibAjdkPFfGTzyWLxgK6042LAten2cASu78L83YDP+QfhK3e7jQslBf2TWQ3YKKo2dMCJPCuthxKgTbHBPOkqfOLAD8M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850284; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=gtmv0XKofBnBUSMtkD8ZFmrMZXywN4gg18TPjM1aIDI=; b=VU1Z6XQMqIXH/bPy43ck7C0wXB/WcHGyF2Ik3mQrb5ON+9NBpRuJH0gwCCucIe/kJfBJc3Ocr+xDgihe2DmDZqkmYT+Wl5a8fgtP4AFA9Fi3GfZfNhfgTfuY8Pd/TFv+DudBJwYGcgal0b3gRgyaRzVnxrR7Csbs5We8dayQTsY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850284282896.340423218209; Wed, 7 Jan 2026 21:31:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdiby-0005yd-L5; Thu, 08 Jan 2026 00:31: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 1vdibx-0005p0-1E for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:05 -0500 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdibt-0005PO-Ue for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:04 -0500 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-b553412a19bso1490623a12.1 for ; Wed, 07 Jan 2026 21:31:01 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.30.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:30:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850260; x=1768455060; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=gtmv0XKofBnBUSMtkD8ZFmrMZXywN4gg18TPjM1aIDI=; b=TX4uggs5Ny1sL38bDJx0lrMqDp27dLqdmcRA6mRVNJN9p+T+dm4xTviFNEU0ygBtxK VlcG0dtWMFX3UYGjoBjs7HNh8BBXJZ2GTvveqQO1dYkyqShVelTrKjU86+Qk0bOjkNh9 e/U22VI1ZC5UI8gNygLNS+rqE1v13tg3JKlcJaaoDH7yxYr2a/oAzWRH8LXm+qgZ6RhW JpPaZYYPE2jj7hz9oR1Y2uPuoNH+LngeAJIrDuyjiH2y1i+vaB6uY0AClfBjKbVCYTvD 2qlAG++3/mrs6MBuwkADl9ipbMLw6rHBZac4ngftTjEecJ46GdUC3WixRpm0uv0j0f04 9OxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850260; x=1768455060; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gtmv0XKofBnBUSMtkD8ZFmrMZXywN4gg18TPjM1aIDI=; b=O+cavSQYYrq/a4/hkkAjokn9I2Txto86/2XpNIMl5zrQLpYw0I99b+9tkRUI6W/iCm XM5x6/aw/RXB+IZLNbwX61VnGa6XNitxXJO2EMepq4sa99SRqP1jASb7IYKt2czAN/cV evSwW2ENUGLjEMzW/Gw5NZSn62Eo105KJSDXvPtkr/X9GL2y0VLrm6YUism5zT/YSNwu xGE9DZMBMKhrOQeU0pLhOtYcnetuUJScTnxq6vAfp4oObRye2tsdN/dSKOmAhft0vahG pJID0XWSD9eV24qsn5ICepLgDAxjm4GKN2rcb2UAZd1v2UzlQ3wUsSYQhJQ06YVEMati PwjA== X-Gm-Message-State: AOJu0Yw1l2Hm6yOYewpjehvpXhb+kyula4JTu3wzxCazBQFB+KFMEpOm EYqEN2yden1TLekMEQCzJdzwxys+U6M5oQbg5/do66OC7tbaKBmsCEEmd45AMwNZvbRjpDsL7UO 683LfuEQ= X-Gm-Gg: AY/fxX5sHH8MJ70RZLp6R6lv7eYOirZ7Cl/QXUJHAlsQMrErKv/+bIfJeZs+5dr8B3d rjokernys6YNzQavY9BL11L4wHppM9BjRHlbfVhfzVzPsRrdD2xXw5eOTedhTGmWpq4AzmMaL59 y11+a7yuisGNFwkiE9egSxs+Xtw6s4SkYHN938RoVAMr6i23pyf6EMwogUyEA5VDtbJ9P9zA0yA Qg8ygrn1S+c5VxpCIY8rZwfhEcl+H8spKGSS11gdF1VbHKHlBzOpznC+5ho3HaREpWNQgO1pj1e qfiU/4pxbduHbI8qhZpLPL0S0hqGle3lMlCWK9nUk9Ks47Zp77IDBOiktnSvL0CrousEvzZIFV9 Yu5TrJ3umi+2brjI/AufVnfakwlDZoXpxTsliuHzDMPjFcpXjoU56pM3CxOEz1FPIn3ogeban0U aJac/PaT+WBvDPxOMsoA== X-Google-Smtp-Source: AGHT+IEBkraE8vFNj0b/YLPvKWfPN26stUfl9oLFq8yGaiVT43+ZC+iS2ETXZNb2oiDYJpmLmKkm5Q== X-Received: by 2002:a05:6a20:3d86:b0:35d:d477:a7d8 with SMTP id adf61e73a8af0-3898f9399f6mr4633004637.36.1767850260037; Wed, 07 Jan 2026 21:31:00 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 19/50] tcg: Remove INDEX_op_brcond2_i32 Date: Thu, 8 Jan 2026 16:29:47 +1100 Message-ID: <20260108053018.626690-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850284887158500 Content-Type: text/plain; charset="utf-8" This opcode was exclusively for 32-bit hosts. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 f69702b26e..61f729e5be 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -1596,102 +1596,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; @@ -3162,9 +3066,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850719; cv=none; d=zohomail.com; s=zohoarc; b=YFXKTxKHM71gBxpOZbB03iRY3lRv80WUt8AZbX7Pqnlq27PCcfHaXliTR1R1PZOdhhHBZIP1bYv7In3xA5n/iMZ3RauZTO5X9hzEJ34cmDnbFKNUX9jlgitUc6yXvAn7sagRSIvJ5iXloystm2sQo0tpQkACyuAPfYGBajocBLA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850719; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Ra+tq2dnV1r5tktTIuyThBKxcQyRuJw07u29XoBH9N8=; b=NzQTIl3gWCH1CTbNgPbQQ8nM2WlIM64AZ12513ElR/+FIq5YZWlhYPd0ZOLslaRfIP1+OlxaQwF1t0urztIL9WUIenvMWD68ISqPeMA0MootdxwD0PQ93p6Su8ECwjAl40sUHS7mM5jKOB3sETCn5N/HyauejAwztY10J+6qpEU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850719418626.6380859358718; Wed, 7 Jan 2026 21:38:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdic0-0006Ek-5U; Thu, 08 Jan 2026 00:31: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 1vdiby-00060I-PI for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:06 -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 1vdibv-0005Pj-LN for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:06 -0500 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2a07fac8aa1so23293885ad.1 for ; Wed, 07 Jan 2026 21:31:03 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850262; x=1768455062; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Ra+tq2dnV1r5tktTIuyThBKxcQyRuJw07u29XoBH9N8=; b=TCteDR97LoX3/Q77Ifpv2p+kNP7AXo5bO1AEXJw1H4ocEG/LaiWE5y06c/SpR1p9+a 65km07g86rrA3OoZ8VmLwzuW+4/HeKsurgbYE9jLUMASM094XXRzLaXJhOFzdr0dG0hY 87FNbMoR6x1qaeOfzBuXdiRe9FqyRXcRBiHPpA4UzD9CPaVceJjZl3wWYLZQx94OppyY ScunBo9xk6NGOsg3re1pyA/YdB3t0AF2l1N2V+DZ6XWGlhLUdQ3QyDQtjUSO3o39mnzw OUOUJj34hbrHS37zWDAiq8av4XodVB6uLStxVg7drt6n9yUUaUmstcdLZzvDcRv+ovc6 AWBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850262; x=1768455062; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Ra+tq2dnV1r5tktTIuyThBKxcQyRuJw07u29XoBH9N8=; b=BEwGU8ABHqle1m5Ysnmwi5ctpHpR4ko6pg3cb58stHEOHWHqpnvjz8uHZ+2DLCQN0q teqpiQm18LauEaYsA5mP6sQUQL+fW+naWHEat+gFRSNsp7IKpz4FAiy31jWrQu47BlyM G73ecBfyw4Ks3/QiSCpw99UkX/zs35xhW4bodUqhMQoFZfaEs+J9UfwIa2E3AxqXhiD2 7IgGiGERBR+9jSq5RwsA2S14rPX5eknE2GUmKyrUY+gIw7PReVEwUcreMc3kpjBmKuW3 w28/KRvOsQ/wyobowuXTuO7JGgspeN7xzygR8ur38GNLEg6imB50sFZ2nkI2pE1/vXWu tHqA== X-Gm-Message-State: AOJu0YyL4TKqlpibCbJ8XOCqqQYirwhk0OE4lSr89GK7N3HBeOnqek/1 uifHY3EjzKyAYu3xwyeS1oGzHdOp6mP6dvtWjo06E03Lme5IjFGI2R8OtwuQhAgfmcmX1EUu9uh anIUdsR4= X-Gm-Gg: AY/fxX4lBfoX5DbggX4IrRAxgNMBJ430JfUAeixGagpW9/ACT2qXeFDostM+zEGoHlq N2jqc5vk72nvLnGG8VfctG194qmZ0s6teXec+bE5RB+OVs/AFVtgTl50pbCBDz1zwe8AQbUHseF BIxGrUFExc4OMEVVNyCFabI+EzrRPC9PR65SQ9TzXviDLEAPqI4sDs9Zum808Hd7vzicddb4rMr HYt6RYtITOfwe0XpVh7G37Uh8Z36SGSougZdQems0+nF+nuAwoHac0jJhvqkPmr7i9udRr4lgnj nrvUqppaXwSgItgoAceuTFiED7AYKC/ltYeUsjYXKW5KtourBDQJYiGY/Er9mUjTLmcjv3Lwxi+ KDms/UN7tGDytrIf3RItthWN2wIibC+cmCLacUqrMRUZw0dObmTfU5Le/rN3hoQsAY2ttsbz0gj o4fy4lHiFlkU2H/CHrNg== X-Google-Smtp-Source: AGHT+IGtxEOH5KLRcwVmw2XUk5FnReSQqJ8jUqn8FqvU5L2/AETB85sOK9nKw5ZPLImMRxHqJ6vfqw== X-Received: by 2002:a17:90b:2251:b0:33e:30e8:81cb with SMTP id 98e67ed59e1d1-34f68b65ff0mr4555616a91.13.1767850261766; Wed, 07 Jan 2026 21:31:01 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 20/50] tcg: Remove INDEX_op_setcond2_i32 Date: Thu, 8 Jan 2026 16:29:48 +1100 Message-ID: <20260108053018.626690-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850720625158500 Content-Type: text/plain; charset="utf-8" This opcode was exclusively for 32-bit hosts. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 61f729e5be..995e26f0bb 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++) { @@ -2502,90 +2384,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; @@ -3201,9 +2999,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850724; cv=none; d=zohomail.com; s=zohoarc; b=hrOXcmqllZpPSSClF3y2MHmipcP29WexfYi/FhRKsX1udMp1ver/d0Gr0gcio9YFVQQ9y6DcyGyRKf3Fd06opjXjyxPe+JLpP6RepxDoYv4QthbzhBXQvyysXIRcJwPz58sR7RPsT4XPCeCK3L1nszLgqAjVSWUeJzLAa5I6dL8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850724; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=3UnZzZDPzGwvp5WqlrFjM7jqCEjXkZihzK0Bf36d8Ts=; b=fBDW/2Y9qM9IBAX8nlQfarFh7j9cFbdWhOMKQVJeB1O+Lfoxn7TbG0dhLI0AG3NVpSjBPPHKaxs7ikvxeTmpYENJnTOYcuK/xpHyYteKTKP3jMcj+FVOgls4ek5tUDYAEE/Hf0A9dFvb08n7f1LCF6ZpeGX5KEukf2ywdmkUk7k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850724010846.8694136816412; Wed, 7 Jan 2026 21:38:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdic0-0006IO-TU; Thu, 08 Jan 2026 00:31: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 1vdibz-00062r-5q for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:07 -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 1vdibx-0005Q4-9h for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:06 -0500 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-b4755f37c3eso1733570a12.3 for ; Wed, 07 Jan 2026 21:31:04 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850264; x=1768455064; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=3UnZzZDPzGwvp5WqlrFjM7jqCEjXkZihzK0Bf36d8Ts=; b=ec8cLiyvCRDGStOweMLSx/u/BmYqw0BlHHi/WLig294VrgCi0qnK6NTqdwRXNqqboP Cg4B4FZuVf9gKK77gRCgYACADow/iVQDKq6TB9YvpLuyPWhqA5BDgPHhmulhxcUfWAjH 4E/2j2kSV2E+EwssbsXLV6YiAocd+h1KTTMQ9vaAtth6zH5nb5XLQMd/ga6ll630ZWFo 3AjCYw1jodvjsLQ5OhoPlMoxtTYgbOzgHx0U3Lzwo6MkGhFgEGK8cuA4y/dH8qaAF1ZH nyTsphzE7fFpObSmxTuzlLQyBfk4M1btnpxTvWKo+TehDVd/cuZ7n86T+MLTebJy0r+O k5Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850264; x=1768455064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=3UnZzZDPzGwvp5WqlrFjM7jqCEjXkZihzK0Bf36d8Ts=; b=SsBBQvtDlnydvhhrU26WOUdpW3YW3GvUvlildhq4wDKSUizraB9zQdxi7krA7DPcOB OfoDsumfzugSElArXi69IByqxy7Sr26QIUCk3yjkBJjbw92aEfCMxV1X0icnW8QYqbh3 nPuEfnDeSPDKAo1UaJFt+eu+Vzh0Q9nm1q1gICQ4s0M43MsSY5FJjrCtqDO24KvF2Lhb NZp1BKw5TPVHvh2DJoFV4vmtDkDOfRv2Cbh5SQcb/3RuKmlU1AC+krjcBsP3rTdL2fx0 h+AP2AdVv5U0wwpFFeSsdQo33XrNVpHgBrStuUjK3z7hzHqBLQpNrtyub2PiIr8E2yI5 /G3w== X-Gm-Message-State: AOJu0YzRR7NB1XwwvqcqOZ2EIuaDJluUsFLS9hciObZFOZljpWbz1ZUz teN1Ued9YJkP82W2Yuj9aXBZiQzLnQFXbH6pH+FfrorhID5WmdesorhzuCXUPanEBPIfk7I2BVZ W492/JXI= X-Gm-Gg: AY/fxX487LNmsnEQEP3etTKqmcjRnlCCFMzAYsUBMyBvcWtN0tjoClIu++6BXTkxo9R om7A77RrbA1uFcu7BLZa+dHiZFzjp7neHBWP1GDNUGrTqs/Ry4nqgVMRXfh61T8SWBRMq1Su3St 52gXuo4rHA8a2hnrY74neiumM4X501pqlY6K85bks+uVZoPxSAyMqs2qMQhQodxLJs1tiYD+NnH 8JNuOBUK3uE3WbOjnUtwP1zCBeK6UICzPaaz5uXjHnwFjd+C5yzFEwFtxX/0SN+5Dr4PjCsasy0 fXI8yZuBnnGmtfJv8O1bg9+OE44MknL0LpVpL5kVjoVsD0H3BNyiG3kGRZymRfSttv7EdngmcTL DCvh1/jN7Ix9+KQLof5mJdkOz7M7Xd986YS6FQqLTEho5/5VTtk/YNFkCgwd87SbreSddM6XzIM csEQv/CcG5ZPAQ7ZeAvg== X-Google-Smtp-Source: AGHT+IFCQeW1x/RS8iNHeGFgJkrlyZ0XDEhavc6mHkZ326AqknPY6y9Z0ledrpgMC+wEhr1tUX/whg== X-Received: by 2002:a05:6a20:258e:b0:352:d5b:c427 with SMTP id adf61e73a8af0-3898f88f227mr4540330637.3.1767850263556; Wed, 07 Jan 2026 21:31:03 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 21/50] tcg: Remove INDEX_op_dup2_vec Date: Thu, 8 Jan 2026 16:29:49 +1100 Message-ID: <20260108053018.626690-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850724622158500 Content-Type: text/plain; charset="utf-8" This opcode was exclusively for 32-bit hosts. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 995e26f0bb..adc5be3379 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -1715,21 +1715,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; @@ -2886,9 +2871,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850411; cv=none; d=zohomail.com; s=zohoarc; b=EGFlDuFLKoaWiRJcojEbh4LEcEVQxK/rVddG4iGsqcQ8DWl+QyWwyzUwDrXm0NguOfJTUWlMwlWkwPZd+ZpQdZhnr+MLgyVUmopNR8C/vGpkgjMt9s51TdXAPtHFSVWlUCW5Wj7UwxOp2bNEcyWCgmxtmYLfVBwW+arBxRiIIco= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850411; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ieFwHdvk2pLlAuhdH8/3HWrqa2+mF2iGRN7r/uvBMw4=; b=KP8cKPjfLORMUdqEsW3B+rhIrYdtXUepW6GqFPKJT+T9l71Ajez7Ug5fvi9AMzaVm5m3m8/upsBtZ0HdPzYUZMm6U4OENcAK8OG5hxplDCtXXZ2HN6aTSnEMVKgOHIFR/lkU/R7F5sfPQeuEnZyNlNegIh1WKzLwLYcXpCg2XdU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850411519365.8415176960634; Wed, 7 Jan 2026 21:33:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdic4-0006bx-9o; Thu, 08 Jan 2026 00:31:12 -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 1vdic1-0006JM-4C for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:09 -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 1vdiby-0005QR-W8 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:08 -0500 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-7aab061e7cbso3079061b3a.1 for ; Wed, 07 Jan 2026 21:31:06 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850265; x=1768455065; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ieFwHdvk2pLlAuhdH8/3HWrqa2+mF2iGRN7r/uvBMw4=; b=kXzpjwlKfjejZst15YgtImZjxUY1V3RP8SDUvV7aIlnh/uefzwcZc2hY+0/fzdfGH+ unBHYdJCAAwkswcCWKgvAQtsuvissFIHZHl4xBHDRGKPdv3f4CTabcRO9SRzq5F9ak6B QO5dv3ZmmI6sxBTGUh1O6H8lxbd+d/tNUN/AVk3vS7lNx+hD67rcUtNmzlBl2wIdoC6h Is8YbRawIVYIsQ56pK2+mJkPWAUDO9mvdzwieU1dKUh9Lwrvq/JWTlPGGFzBzimmlReK DPm3xYZpboLquReOcu9XRcjlQXgrxXaOFMn3wWkWOnpvdoRavnpZkJwkStvYW+e8TTIM TjYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850265; x=1768455065; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ieFwHdvk2pLlAuhdH8/3HWrqa2+mF2iGRN7r/uvBMw4=; b=gxbLaQxGW/m87iaTlLzyYlLkMKsvYOXX9ib/OCJqfhW+gwVCN1hntT63YEnMicr3xX ajG4u6jH1NKVbbUyE3IvJiBs8mWsAIYvx1y4QWFqEQ9Gk/I95ukC+zMXNz8vJsOpXzOe qhN9Lcxf0KaG46jRBsWJkTHIeeQ4X/OnW2WZL8UMvgN5CkeRY1LzxN4XwR59aUpv/mPl 5ZjQc2NYVWeoeRU4Vn6F3k1Ji+TgXFepPPSzOeZ46lOg/dEnE6PF4cQfRYqByTBumjxZ a8SeKlRFuO0CJ24+li9wxmN82gh1zjJ4olcRTy5NbYPPTEZdfcQs0uvxbCDVgYR8I3mC iQsw== X-Gm-Message-State: AOJu0Yy+V+H7zHS9/L1X2HL+G7OBN0n5mlX08Q1DoUKfSjBsp0EWgohZ aswb7HiYnUMIpByGvChEXenSjA2vh9lqFmqQ2wb3+tjj7cv2g+6ZHZ7n0Lptt/IdURPpdfMw6bP 8btt+8VQ= X-Gm-Gg: AY/fxX6fkvJ9j9viDJHkemFHbiNNVIxhVc2ABDEERX7ezWEUYgGEbyOUY6a+52CWXWC qRMO9Vmm/Jzp4GB1Xqo06rVJGtuvY+MSAqetU2fVhCqZ7shku4n67f+CJyOYpAgWNx3CF3VIGo/ 28RG/6HVyFvPVFjMG54c8dhoNQPLxlI6a4lk+QValpmXAgVHGN8nLzn1WWIb61CMl9P+sk70Q6S Oh7/i7ry61TENH/oyPk+KeI7wIo/Yjs7F16MDy3skn6DuVUIkcTRgjzH0iNHahNQa914GN3g5g7 e3m7m62dwk7V/A9HHQZlG7KeT1Lw/kG+HvMuGn5iUtjz21AfGKMzKgbW2Mg/9PWRotgupMqzUpi 1CC0nCiVW5jt/7wTrA8WGEeBZbPsEsRdJ1ccvgPjjQDGwgKxQXtyj213+2EHlXglEUmDYeaMJ0b V+gUiJAJMHAXClApQt3Li3ZVx7r1GG X-Google-Smtp-Source: AGHT+IGtKpbDXbVylv2/LJcSYKkQXGtLKP18fO9PBZo1q2TrLauZWJ1hc+M51NSM9bqWUSBmW8t8Ow== X-Received: by 2002:a05:6a20:12ca:b0:361:2f3e:cac2 with SMTP id adf61e73a8af0-3898f9237f5mr4821376637.33.1767850265299; Wed, 07 Jan 2026 21:31:05 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 22/50] tcg/tci: Drop TCG_TARGET_REG_BITS tests Date: Thu, 8 Jan 2026 16:29:50 +1100 Message-ID: <20260108053018.626690-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850413456158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850459; cv=none; d=zohomail.com; s=zohoarc; b=O13GBf/XZznc9Xt2P0rGquqJfU9yPM+psYcb8qe9iabxVdRK8fLvJmogad+kaaU/nMDYZRflUsU2Lo16u3r2OkKXXvkLRje7JlfPssdtH5gBbOdFvD1SSpffoB6snE+YY9gI/2EgJrskgupKFf7W8uvD51hhoTfprcTv/cS8zR0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850459; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ufmR0dPfCVZ18+gpdaZ+da9JlZlcYMHfZUgCR+6mxMo=; b=T3+agKgdPtwU3L3EpYnmtJkiKogT4LCCnQNtE4OPzwnnHeL8H1ApeS1zRxHGbf6ynNk/KfqX/WviCdXva9mHuQuv1QKs4odurHZIouaKDBYUL8qsWICgbgwTC3neh6HhBnavbuqncAw96Z1cb+Bc+83rX9GrdrwlYFtQ2v84O5k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850459134689.1578783120724; Wed, 7 Jan 2026 21:34:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdic5-0006pA-Bh; Thu, 08 Jan 2026 00:31:13 -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 1vdic3-0006Y1-7g for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:11 -0500 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdic1-0005R5-A1 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:10 -0500 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c0224fd2a92so1511474a12.2 for ; Wed, 07 Jan 2026 21:31:08 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850268; x=1768455068; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ufmR0dPfCVZ18+gpdaZ+da9JlZlcYMHfZUgCR+6mxMo=; b=nvGkf8sJRdOWwgJFeS2R8sP6KF4YXiQLh591tuuCBM8Gk33x7hIiTXI/SNmPHvc3Wc uN+NyrDeXpNTPPux+P3SNdiWNrC7X6DljnSU3632Xw+b2XF7drFkEVjHhjJ7H7JeiMYu lTwU6tRo5ZQ1aJHtKFHYOQQU8iHHbDEHi1RgHsz7HiIe0ieRN1+MBIavo6+B9wFY5YXG entXuXKiwq6q+7Qp7p5emQFAG3Ar3ASjlJasB0mVZfFPot0EGHlUuhOF8K9e+10frSOL WZE0VxfYwxWBC9p+yu1E7xfuDLv+ECUcEp/JWxhjm1qY/sSIw7PYKSc13KZIaZ1rS/tC 9BIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850268; x=1768455068; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ufmR0dPfCVZ18+gpdaZ+da9JlZlcYMHfZUgCR+6mxMo=; b=dKM6S5A709Rfdq4VKYHj6HMuJjVIGqGmNn9iAX9zWSOVyEFg2Uk3R2rSAfa9utUZrw RUxiKQ9wCZu4Z3VXIY/nPc/uL98uGm28TVYOi6BUiQSMkhMwD+KPiA9nCLf6+p5rkjWt WQ7f5A1c41Jd4HV/qARKhTuTOIMUTUQ0QbxHbtyAapx+HRg/TMm9fgensm6MVH001UsJ bnPDeowXn/fLtVB/mnIh0Z2yvKkIuZ5Rkb247Bm5SKyrERNVtfx1NK3UJUQOi2YWBCSL /BgdBdsGeGZc1014Y52I/VxUZIjGpQoj8CovnAAlpkQYAArwVuomkU7qSmEvKY8v+BTS hxQw== X-Gm-Message-State: AOJu0YwCztQ0OvlkVQOWE+CPYo//zhSXK4FEWlTNQ8zR9y/Nux+2p22y 3cp2We1K1L2O7AK754l/LJlbV0sTn6Y//OlAAHy+0PbW1+/XuSPerSBmv0h9Fru0XJYCmUDv9g7 gfLzJQ6g= X-Gm-Gg: AY/fxX5WIKw+0QRyaEOFi3jHYEtYQb1Gb7eYqmm2eECzI/PrvUqBRSfKZhcIujwLog1 Q0DkptsRx9/Es2Wvc7dK8/zxwWAL+FlJS42W+SxMRuBU4srjysYkZRl31gBP6Sijl+rMVrILqJh 3z6XgJ+t9PA9ZtKQd5XQNeGtAn/zQmX8pgGlMFFLIWZCIhEjYBCo2F3wIhUoABK4DY64jzf1QQO Mkm5Y0sxWoQfYOd2bLQ8djGMH+8+ls60duK0CSVOhnRPze/ywnJXiXmU5knTKoEWMYpcgJs8Q5Y H2onmxRAMjHOvBS/DAZEoVcVYdT9RfhWQIPR71a/2PEOsOIU4U7vsyyzEG0hyxketTQXbiZp63D zKm0ZuIsZ4jjNRTjS3jUh7v6pEhSDg0P7af9rmgMUJ+/o4QdTH0ENLxbNtuNRIGBH8FJSn3k6Sx py1AstmeF9bV1VZZEQQA== X-Google-Smtp-Source: AGHT+IG4NPzXYhs8tZ0mhbdhhONCwqNNl1KtiosLD88hjNGxnQuirXZPYl8QCd2QxLsdNQ4zf2mrIw== X-Received: by 2002:a05:6a20:1583:b0:364:14f3:c536 with SMTP id adf61e73a8af0-3898f8f3b25mr5231819637.7.1767850267822; Wed, 07 Jan 2026 21:31:07 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 23/50] tcg/tci: Remove glue TCG_TARGET_REG_BITS renames Date: Thu, 8 Jan 2026 16:29:51 +1100 Message-ID: <20260108053018.626690-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850459517158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850744; cv=none; d=zohomail.com; s=zohoarc; b=GZ7BBt8n5kFv1E46pQuBMyhPKyxhkLb/hsJfTuLquh6aJzJzbIgR8ICu4+MtIiPZyN+jE2+orzCp07Lppg0wUIvFR3EwqcMGYqZpnTrfsqbhSlYkHrcLAtltkl59xnAy4wLU2TfCW+AZgiFI2tenvEEgu3k+WTeyZVnr2sTC7/o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850744; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=WENbCwQhzHJF4JDRsXNXWIq6TYGo1+EheHqXE7oC1LM=; b=ekMED3McyMW7x+9Bwd1sFz80qymcHGu+cL9h3t5XBNU7R6wn64szPv0JYEwwvF1+1IL/uFfphSJj7lLV+csQFTqmJw8gB9a+2IAGrdOq4NsuhLNk5jbgLHMj2bJOl0cEbeDyfBMELUOglLtzRyM6Z1sfUlB0BLauYLLdX0U+YiE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850744919105.97777692902798; Wed, 7 Jan 2026 21:39:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdic8-0007A6-JK; Thu, 08 Jan 2026 00:31:16 -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 1vdic5-0006se-Em for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:13 -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 1vdic3-0005Rp-TN for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:13 -0500 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-bcfd82f55ebso670990a12.1 for ; Wed, 07 Jan 2026 21:31:11 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850270; x=1768455070; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=WENbCwQhzHJF4JDRsXNXWIq6TYGo1+EheHqXE7oC1LM=; b=xMVt/WdhhNhDVBxqUnkwhwa/ROQRZ4fD2jJkdHbA5A9bPj4VCQLKoAEn7kXi1X/PCg UOjy4QUO0bGlCBDj6G+iAMF4kAm0tqi1qEAsfRPiW4eUlYUAZzVhwrzaPthiFdXRK+mS M3cEcbyJM6M/g4eyRQ/9k2GEEikMvFCKIfWherBHwN7Zp7hW2wB7WEy2CP/guhWV8vdH D+g81V/7uoIc1+aBTOnlH0X06A0wtdALsk3rjv0Z1ronIoy6l3bquAtIFje3ZQYs3rFc d3rPSeo36Vso0ti6bQ1FrHqBWPguq1m+5dXfuaEdLRWAxqK15t3K4x69H6kOBoTwqV9V RUiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850270; x=1768455070; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=WENbCwQhzHJF4JDRsXNXWIq6TYGo1+EheHqXE7oC1LM=; b=rsYaDjM3B3l+cf5rdiNC55VTGYQZujGE8cBNMJc5kRf11YcAviLzHvT5WwOmE1Sr4M x4wmq3KK1RyVgg7wjOpAB09wYagbi+egDJjspgTr54JD0EZMU8Pgk+AZA8apQs+ZncUr pvmg/2dlnjjia20hsiSdrN9pNW94vH5M3JTogfPb8x7EjhGuMXF33uVlGMUugUj3ZORm PFkH7ELY86RGtOs/XH1+bGl8qi0qWB78bDXjCGyCS/g+ysujGkCpmyjHMhpYcQEbH/VY ZeMwvlOVckXRSPazrJ5OI3qHiMa9C2yrdCPraSaAhm6Tf+d99KxVaZXy2VmJVf0gt/Z3 +mmg== X-Gm-Message-State: AOJu0YwX6EeuIjnLuBWZJR1Df1eTMgbyj076mu2XkuBpUv287PPEqu2m 6s1UFxGfsavIOYmUJQHj1cuiKEhrAEnkHUZO5GVxQz6LzC0RxGAwSN8SbwHIyFLCFrEGrejrm96 0orng0Io= X-Gm-Gg: AY/fxX5pFmVeJbeOcPnVWAGs+jbeACMYIxWKC9g1cQcOiXJJauuYiF3q7T8SeAn8QUq +d8sl0tZIKQINu1jONt8sgdkw9JCS1MH4zXWJxsiGbCRQwMgVGC6QtoGVXalXcHs3SkIVNIaYUg NT/6kOL6sSVwy50BE8Tzck7h6SWzpFRI8lWZNdAH/HfylRxcejb2MjwnX/dQU2aOlmb0KzlJUHK RhSFWYEz7Bm5BelyPLbng0PZ+Z3IOkLUqHdNSS8qqXhSypgSVMX3EjoIXiQByvnUO+faCPw+wV2 oGo1GWZzo2qnUNvFh/UepxKkEESWCBO8D19g4q49AGv7awXfsTBfTwXc62vSQJs7Xw7fULsuu7T DSTzBakss9LEk8p7zwu1qw+4ul+HBmQDh6x99YMHK/Kvon5dhOAWWEUw2T4btmeVAiXlIfQxYfT fGGR2cx1uUwW6JNvRdNceTU9dUsSj9 X-Google-Smtp-Source: AGHT+IHGbluLjtWRM0Vk7Fb1+Fc3RonZpaJi/4rIcy/+bZn5Syb07uh+dMWlty2UaisNUp/8SDEhHA== X-Received: by 2002:a05:6a21:6f89:b0:371:8e6d:27f9 with SMTP id adf61e73a8af0-38982b4205bmr9079720637.33.1767850270206; Wed, 07 Jan 2026 21:31:10 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 24/50] tcg: Drop TCG_TARGET_REG_BITS test in region.c Date: Thu, 8 Jan 2026 16:29:52 +1100 Message-ID: <20260108053018.626690-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850746587158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850324; cv=none; d=zohomail.com; s=zohoarc; b=nayro4LHn9Tp3VpLYNuRvfjB5Nv2kaar/F6siH1lzCQAPrcNS8zPayfYFZsuDHRrZ7HDtNJzJt8nBG9bbDaRij7rp+dMO0Yh9MHW2t3egqpebl60W9yWGkJxB/bOaE66bDWQouY4NPn6aMWUoRoOLhNMQf4ji8kJW9skgaenQmg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850324; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=BjITdshkEVl/ChRa94+0m/fYbZxOrE3kTvGn6Y7AtAg=; b=UDEUjw6hwJs2/lwUjTPOeOfdyF8O6D/GUgbmPTWYsfY4MHY7kiJsTd7fmMrqN7X+daoqMdio/0lQhnpom5D2Jw5H8Qh0//BaLINU0VIB4ug5yZn75v3Z9HD8/Ojel+cRp8f3hFw6m2AAmkETrAsBf2bCjMOzhGKSYl768sLaHCU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850324557704.1090417121749; Wed, 7 Jan 2026 21:32:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdicC-0007f1-O7; Thu, 08 Jan 2026 00:31: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 1vdicA-0007Qi-JR for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:18 -0500 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdic6-0005SU-Ns for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:18 -0500 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-34c24f4dfb7so1609994a91.0 for ; Wed, 07 Jan 2026 21:31:14 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850273; x=1768455073; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BjITdshkEVl/ChRa94+0m/fYbZxOrE3kTvGn6Y7AtAg=; b=XMm7fpccEkF0lL+iZGefpttwKDdZ94xHXFXJPtlL2tTvlFLgVbDib9C9CUaTmpFktA 5onk9vC9Nq7EoGEkGmlh8IG6h4jRMDbcSPEveorK5alVPq5zVT29BLqbdYsYrG3ImOhX ufka1p22BxczkfGM38aF3AR/1oX1E0idDXvfdZCKC1bz+c1f1NJF8clO/4JQ9JzsQcXq 8sXEfBCOQ9fB0p9xq8Xs/mH963gy5iJQfM3mZ2+41iEo9PvEfGA4Y9hvOG3n8acjsrTQ FE4CCLHyzGNPS/LRcgRqNKo32ZHnyIY3+ap+R8MySwjma7t4n3jJZ1nHQVOEqtjO1CI1 5Yrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850273; x=1768455073; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=BjITdshkEVl/ChRa94+0m/fYbZxOrE3kTvGn6Y7AtAg=; b=ObW7pUnMyjXoaMcM33HQ/Ftvs7NYpKmwx80wbFFyER3MjDwGcHS8HKk1gk9tbSy/Iy l7jYUX4OodOv89SSFgO9ofG/PBz1yIfMMCUuU2Sf/nBQCMosaJpRpd7E2ebCrjgze2Vt IeaYOwP73DYBQcseKU6sUIB4qnnQRrKqiDaFoxWX4Jc0+Z/zrb4iBDBibMRJHe52lIdY uDc2qE2LXRb1qCYXQX217p6Duk8xpd7TQ20hTwM+I+jst/y8wR/DplgAxNG6wgkwmldb qrhXB54Wc5uTPwaYN7M/V3j/+D80sbAze2vL9dP1tWRgoiuTDrnYj9Wra9jWxQpwn293 jn6w== X-Gm-Message-State: AOJu0YwOLN2cOHAFfnH4HHguWTWukWqtnAJ/slsIv2/QFYS23Ma6gbti 5ds2vDx1lCAjF2E6FNoaaS32Bzkgz7JOyawYLWCBz1Pq31J6NMWNpgaO/DWfUS1H5f+uuydeHET C7nOhoLs= X-Gm-Gg: AY/fxX5Q1Qi6WiCCWfMZn2jNVYkJnMeQ4Fsof+Y/R6kSqXlAG6xY0JZgU3LAnUWDgOq 6Y0/oqYRGR0mVnTaTUA3fDzoFNFLqnC5hhqe/FIetHroaallG/Khh3/to9VxBqNNk2CTmM6j05D uMNkrh6t1bYFZ+pN6Ei8YTVHsPw+ueWs5AD0RmsFh7C50tXWUOn1G0wBIuIV3fdwlTWhnmRf9Ik OlItjXUkfCycUl4jR+jXYtKXhN6PqCIVh09RbSOBr/9P0iR8fLg9r1n7k7w3sC5+pfGXkRem5P4 y15BLKvSQ6gUlplVzkvLnOQG3S4rgul+e/26gkMzMeYOtc4LYn1PT5ZcUXi5FVger+6DAcWOmZ9 fk63E3uQ21/5UGdmapO4tfBu/o20XfoIyZkDdXTcpfGescykrVGR06s6NLe40kqzQpTgZ0ljoSx iGQdNDHA0++zAvnMUmOfzvpfp6I7sW X-Google-Smtp-Source: AGHT+IEVE+UBHhp48tSn1hJ8uXxmDTbdVQWPc4ZAqiSmclqglpL4H24nK4KafC0zDU6GXH0WlqEghw== X-Received: by 2002:a05:6a21:99a5:b0:34f:ce39:1f4b with SMTP id adf61e73a8af0-3898f8ddf0amr4963026637.36.1767850272348; Wed, 07 Jan 2026 21:31:12 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 25/50] tcg: Drop TCG_TARGET_REG_BITS tests in tcg-op.c Date: Thu, 8 Jan 2026 16:29:53 +1100 Message-ID: <20260108053018.626690-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850325001158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850304; cv=none; d=zohomail.com; s=zohoarc; b=kB64EFxNWKyDh/AaN5CM0nDqBhn4J+zCzJ4qEenLBP2rk88RBVj5M/otCYoZlH1jVm1BEWJzJOO59lTMTGZabMJ7TJP4Q/+CFs8WVGoirU7fgU62wh00ni4F6r6tvc6GoUnGROGLfAPlX2Qqmxagmm7kTpoPCG78MBszvM0c1Mo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850304; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ij3Ceib4U8wNBcIbPBAFj13cL0r+CB0iw6bbk1bE3xI=; b=WcbbVT5GGPi2AvRmh/tW5r+eqvjtVJm4AXtHiHlJh5CeY4AV897wMvDpfIW5aT5zg8wAk5cP1TIHi7khW974HKMvK7TIHAaIyEbdA0XON5g+X/KYxgDWqARD4WsujQ+zEXOkNyHW0XrXa63pJsJH7qlFzr28vqVZe9rTzMLDsEI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850303976796.8554866347017; Wed, 7 Jan 2026 21:31:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdicB-0007Ts-2N; Thu, 08 Jan 2026 00:31:19 -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 1vdic9-0007IV-A4 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:17 -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 1vdic7-0005Sa-MG for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:17 -0500 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-7b89c1ce9easo2048784b3a.2 for ; Wed, 07 Jan 2026 21:31:15 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850274; x=1768455074; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ij3Ceib4U8wNBcIbPBAFj13cL0r+CB0iw6bbk1bE3xI=; b=W9wJgitbALQfkbHkEPKazzcb63oy65RcMfZFF4otnrod1IbNFP5Jegu9IBzfne67QF D1B3IOtjUyWyBqUo1WvyaHoGBYGTBx/6Sbp036oNpLy8hyte3FAOIGPKbx+RY85ADQI3 aWtA6C8ppCnPRQV9iQ+eZYEttEoQYtOQ94X0fRoi1HqKMme5/DIoNR42n2N1Aup2VSjP HS/h17iZX5EVtIqb/4df43kGS+hZEPF02GlpiqkxYaOWA9HFfkZFqBwGmDtKFFyt83CG 7s3DvE1W2RoMfu2euwoo3d4lXGo28BTx6EBvB+mUG06Vw8OtKg3hTfLd8hACY7JweWr/ jpBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850274; x=1768455074; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ij3Ceib4U8wNBcIbPBAFj13cL0r+CB0iw6bbk1bE3xI=; b=LM1lKIpsUIwGlclCKQxCWhnjsAhTPVZBfwGyC94b0zF3qwcCW6t1t+kbLtFAM3X98F 7iKWyAUeZY+RA3uBQhFqDXzU58QMe0Y/UPWnKzQI4EnJBUTVnqRAB3zlPn8fTP6F/mvV XUfW6VS9XbPofs4dlfn2EiaC/A9jhfaOuNkTGqho1kM/4E12TguZxLzxPiW0FINMRsCB Zl/Jjg3/Rao1b8X3AhC7cZ/7rDQiEhQbxqAtao7XojnlqUU7X+rgaastGMW5gQlUQ8af 2Ggrd0cf+Q8LomG8Z2oTvJBJf0dI7DJAlDJ4i7QWYnakCsxUlSE74Lbj8AqGmck9dGpG Luow== X-Gm-Message-State: AOJu0YzOcg1ZxI6Cnr9Gra2WyOmZmHix57oTowY4eEfvLfTDeD464EKZ r3i3oZbrRuQ3/t7IjcU+g1XUTvjcRZ5FWSeaLMfvhLmHCRECKqxBALjwhizACq1wILq42lK2puP o1+QdBDk= X-Gm-Gg: AY/fxX7tQfyG1OwEUzMNDFix2/apBWE9QY4r3HTuFR9jzAmTDTK/aXTiGON2M0eK4UP EnJ2dqnrXDSFT1fg1qNDPYjdXd0vqyRxV0SY1/mrfe9z6myeH4cDjF3+R/K1gb+Qje1u3IZt3tW KAEg6cVmPbe31WQCKx2uKrnd1DiemqwjX+XnhXYBQ2q3AdtNSQ3SCokb7ORQPnR1mOI1L5o5CLE WC2/NORF5Zr9JYl+TzYHV1x3oG14Plt8bkFNUtI7z/Kd5K7NXgssa3rc2LVzI/Dd6tErkCCrxum 6o+cFx3FoCsVc4jumfkOe+VK0e8p2ZWjmduuPaIA9ggEvNvRSnVqksiS1ZLwqGlBJPkCRe4m6c+ j8FrmJPqxglrLVwPywenBtiAhIlXglVfhOag1LLcc96xX2ibLSXgYZOwpFiA7Zm0+Rx8X2xrOKD y1fdbruV4gEBlzJgsd5bsIQ6sb0ATP X-Google-Smtp-Source: AGHT+IG9jY9Pf4p48VaFEXQLZoLl+M9SLPZQ4jOxjtsa3piqsiu0ufW9ExL+fNzbXaAp4WoJsTm5gg== X-Received: by 2002:a05:6a20:939f:b0:366:14ac:8c76 with SMTP id adf61e73a8af0-3898f9e2dcfmr4687313637.76.1767850274152; Wed, 07 Jan 2026 21:31:14 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 26/50] tcg: Drop TCG_TARGET_REG_BITS tests in tcg-op-gvec.c Date: Thu, 8 Jan 2026 16:29:54 +1100 Message-ID: <20260108053018.626690-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850304992158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850729; cv=none; d=zohomail.com; s=zohoarc; b=CTfmdfAHbjCDWrkexgsy5ginHy9vKdhUEwA873UPXC3A8QF6kG6xl4zLWslWUUi6EUWOWWCoROtCtXVbGT98gLtFCYSddHYsD1i0JDFNw+2NwsTU9aKqGZeizsqhR2vueLjgKGzsnekBRvCrM6Q/rkW+ToWvTBTh5w+dCf7HTHI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850729; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Y2eN2M2zXLrkBzZqE1RRDwRx6eQIrxOFGbY7FxLHFTs=; b=Z+KLaIJ05+3nT2/mO2bL6MmEu8rlsG8rKhJcHdSixyc+F9+gbD7DRk0cBdv2Zu0xzH8YWixb0AXa3z86NlhoYkTut/piezQF5FBdpGk6x4LSsIpeOZOre5+xD4/j4gPX+dXX64htW+27StoRZBHSpJYcOUI9hWmNIWVszj/nqs4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850729821541.7390447786996; Wed, 7 Jan 2026 21:38:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdicE-0007kk-FC; Thu, 08 Jan 2026 00:31:22 -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 1vdicB-0007YY-NQ for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:19 -0500 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdic9-0005Sr-M8 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:19 -0500 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-bc29d64b39dso1165433a12.3 for ; Wed, 07 Jan 2026 21:31:17 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850276; x=1768455076; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Y2eN2M2zXLrkBzZqE1RRDwRx6eQIrxOFGbY7FxLHFTs=; b=qZ50+UyMb7RPZgCuJjB8GbMRY9KeWFVi66UaT5cBNMgouIwvrJbM8uWapTUDZF2GJn X2GJH9gMz2ElHknlvrjUKt6sC9SvwD7Rrsfz86oFkeaV5tMDHWxBTEZtXt2lqUfpW9id jCcyNjaSCXZhaV1rpyKgQF9iA2w0AwJVC6u2tra/FEzx4tqSjewK6TsV4Gu+3k6hLxeB B8vVY9eNBPkLkYDugfH5UyrS6hnd5bJTWWSkCwaKJMkv5HG9iOQfswxZXg7CwDUFjJRU DsskunVgZppV8Z6W4nZoTpdScHoPzkRQaIV5nqf72ChvNHJj0XSxhS6zwwj8EukHsYiK M4vA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850276; x=1768455076; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Y2eN2M2zXLrkBzZqE1RRDwRx6eQIrxOFGbY7FxLHFTs=; b=RkZ6O0WJqMz1l4MTe2YhZbgPyC+sNfYek7wSwU5KRfrT1qIdI7wWqm5tvtaUtrax9U C0NIvTbZ+0pK8DQC7t4HFWPPzgvNCiIdFXBcCZjPhp29mdEWviPm/F8l5CI+MzjYBqA2 DnBgJydAs75f5H1DQPsVIsantug9uhQMmEXTUHqzxrgs3Mf4l2+VCNr7AN1QECPZPXtZ XhkBlhkLUMxQhpiAanCoip4NSsLrWBQnO5gbbmg5eV7hjb9yc6Xww1a9JNDj0DLHrUt6 6smt3IIGDTQZ9lHJRgOvqAYOkZoedXmv8abo+lRo1A0lKjGdEp9nmQzgV+Iz3815itn0 ISZA== X-Gm-Message-State: AOJu0YxwX+QjwbTjRjFRzIQ6CSiEJ9bULJX4Yw40DTqQTLEW9ABujb/6 am7tZV9aQEOhURAhqCOgdbhFfCIwE2nLET6r77tlxK40ECJO4AzDKTojxpFmnOO+qsSiXrHwQLq 3gUl5VS0= X-Gm-Gg: AY/fxX54a0KvNxO2lb7g+RRxOFkrlCIS9ZH708Gla+oX0CXRD+k83jlXGHU12CAwl0I g2Z+SY6lRasrn8bFMcWm01TL3L0uNHfw0tBUuHhdgJ03gyChqX8xv8QO2ErDZ4AXqQhhc2ESnyi fFaOMKWtQg72BVJOSBx1eRdq4sxsTWr15Rym9tR9O0Sg8rFyxsu/XqOtXYAVcKkVa+GcZOo1x27 N0kk5x8qDlj1vs4EhwFDr78LEIXtVuKjcLQ9vrg6T5z+L6UHJuhqWc1J4GyHnzfd8bX5KTFox2s jPM75Sozfgw52LI5MzIK6ywvN1E8vtxxgwm86HZviNH0IhlOKk3fpxgQX5njiFpRI+8w2cx4lV6 dfOUu+rY27szSsXjeZGRDfhCHNB0u4n+BObib21O/wotq9c++5VbT/TLOc1ORGmG6P2XQ4Act7p +VUzJxijzTQHNBax+oMA== X-Google-Smtp-Source: AGHT+IHYEtTH9EOA+5FEaGX78JZzfUIxkEX5/tB0xqqi035eodjnNw25KhryuE1kWHkjDRYNMfsEyg== X-Received: by 2002:a05:6a20:3d83:b0:366:14b0:4b02 with SMTP id adf61e73a8af0-3898f97b01cmr4304854637.62.1767850275873; Wed, 07 Jan 2026 21:31:15 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 27/50] tcg: Drop TCG_TARGET_REG_BITS tests in tcg-op-ldst.c Date: Thu, 8 Jan 2026 16:29:55 +1100 Message-ID: <20260108053018.626690-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850730496158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850774; cv=none; d=zohomail.com; s=zohoarc; b=j0qYjDfnnJLCaYrOdPrr5GRG8LFHMn+yCB4YreyME97KE+1wUb3nok76mVagAmyqL4qMIH4v8M1M2VRMNXo5yamodwnIDpPgMzJaRP+1g5e684PJzPSuw3kQ5wcIeWvZjCrgT85f/u1OIQO79ZBcdafk9rDNABoJq1p+jqxuCUs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850774; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=8JUb/IC3VXJ7EfEj4K4uNgCmIhnBZdI5wy/K68YN5dc=; b=C7IEnF5oOdyQLQL5tl1VWnoCwZ/2764N33idTwI2r96XKL/CDpdl0n3Mz2+dgiXvwnHs95udJ0Ait3mTOCpPAQ24xz1OjOjm73nBgJ05a28ZIebDU6UjnYUhusVpDIQOmewBKY1GJy5QOSNdUnQtpjBPcTgT7iUwE8KXq6uWDJ0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 176785077493474.58196549436525; Wed, 7 Jan 2026 21:39:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdieO-0000t0-Rg; Thu, 08 Jan 2026 00: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 1vdicE-0007ku-5L for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:22 -0500 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdicB-0005TL-F8 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:21 -0500 Received: by mail-pg1-x544.google.com with SMTP id 41be03b00d2f7-c026e074373so1547355a12.1 for ; Wed, 07 Jan 2026 21:31:19 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850278; x=1768455078; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=8JUb/IC3VXJ7EfEj4K4uNgCmIhnBZdI5wy/K68YN5dc=; b=rfNI3rhR8JOtmIz0m31t2vU+Oc4lFFBPldF6FVG8RNki0DxOFGV4ppY+DIV4FKEs8L wOF+uvtAB9rNK7+ZVolhEB54w9FI2iHeVhuVLCooPRs0Fbe7gJHh1gLDekF2Ealo2dhd 8terG0uvhU5W1Fa6cxJAMmxAKZFRG43MrLTA3fkJZoZq4h7YwME3km0Os/X+TWXsT2iA OpkHQBwLLoENkNc2XKZp/QaghBQRZPY6NjhBnxRZfODN0zBfwp4XD6LCm4/YnvFizFij lMj3XtQ4udjLWsElp8Zyrw+tmbrpe0q+lIVZ1WkPjuG0q74JMJUi/g+0JaUEVO4n7XA5 1fbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850278; x=1768455078; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=8JUb/IC3VXJ7EfEj4K4uNgCmIhnBZdI5wy/K68YN5dc=; b=XATJYHwJp45yfuXeP7HF2RSaiT7jxys0DEE5ACNNHrB5Aa8ZRHDaNTMwnCq4C4m5+A RELV0LJ2wKTPplH99tFrPFSgFeQwUVVYRLQbPfXBmAD/W0PAvm6ihkMpgwDwnA3kdgUn poo60TGLUCN9+iJ17TCEd1J3pmtq2MB1msQxyu2aarAi6pE0Omy9pxB5XzMy73vwEgum L4RanMDCtyTc7OiJL0S5oq/p2XkzPW9duqeHzA085HzF7yfeTvo2s0N4i1ZGvRd5XD9j qlg3EbOaqi9JuNFCcrKTn/95v9MwuUPYFuddEyL1LiGW2c52EU17XYEBVgdpxOe8hMxl iyVg== X-Gm-Message-State: AOJu0YxtZWHPJ4HAYy6sQWPcapMKdT6L9O/gYZJx1LRTZ+yu1H2yIo95 Jp89l2hRC31YSv5ETQ+S59W5DAgJf2aDAwDvZ/0xu00wclhIzOkuIfMFVr0ys50xRl4+my6CCgI SO6WvzKPUUw== X-Gm-Gg: AY/fxX4eb0IaBRGVVjuCPzfwLwjHIZ0e7SxUjp2ZYcbyRDwa4/NwPyGB1/Dow2U0wht +16+t7Tk9xiLchI0UwdokXxm/WDjWmYErLvF0iQRqZm+eDxFWCvG96VNAyV37R4up7QURewBXjn QWmi2QcEinjJ32DrNu2ULIkhz73prDgYIZZbx3rRX6gEcJYJFRr8qcFGJF7lwg42crGnmidf2Js q758/6uKEjyWJCc2V1/GxvPxgtR49/pmwPKxbRYmNKRcla32UZYrWXbsSvc2OTvCcW17NiErRBc 1dIqrM7ly5js5/itvwrJHHlt9VkzPFhkahdYlsBbgP63Yo2o/yRvjJnd3NL5M0qMujG/4J6l3E9 SOg0A7kbAJP1JYlz3vfa6svAF8FRHm/0wvzMWjug9SV08eJAQQymu5b8nzmCG9KAuwZ8kiNcLj3 auZZFCOSxcjhBPQ/zuBQ== X-Google-Smtp-Source: AGHT+IHwqIQvpTkfJhNdM6OKFQ4FAaTCunK/psxO5fiYGGWellOIKwxR6yfFrqcqDEcFnKBVeH4cEg== X-Received: by 2002:a05:6a20:9392:b0:389:7d32:c8ad with SMTP id adf61e73a8af0-3898f8fc437mr4574498637.34.1767850277635; Wed, 07 Jan 2026 21:31:17 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 28/50] tcg: Drop TCG_TARGET_REG_BITS tests in tcg.c Date: Thu, 8 Jan 2026 16:29:56 +1100 Message-ID: <20260108053018.626690-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::544; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x544.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850776863158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850735; cv=none; d=zohomail.com; s=zohoarc; b=D89jVRURZu5C4mKwcncWcwMzhtG155EOWRrTaKjgb7Wh4AvAXt1Ke78fx5AjMAEtJpPBbsdhSb0S37Asmf06BkGuJy2okOIQPYjbeB7ddlxmpI4BrjMfEvF1dE3ClLWm43nnd546v9bfqhnceHQKGTIZ80z8g4aeOOxG8syB4tk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850735; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=IDSBq+h5586T4AWBNgU7jaX6pgnbIRhxB8J2QcVJ9c8=; b=a59DonXX6Jt5uoPMfGuTHRipHkWJDaOWpp4l2k9NTtAIeFIBIuLmehKT/8/hb/HREDnKe8FVl/8nQpb9/nchwPlcrcoY4nrERKcjZ/KeJ1b+PPXIX9aSEQG/YSc6v3siHMoCsmAJCaUCKR/DVM7YOQSJtcT02y9KLIlQUKwn2Wg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850735161940.82576824802; Wed, 7 Jan 2026 21:38:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdicr-00086V-0Z; Thu, 08 Jan 2026 00:32: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 1vdicG-0007o4-V8 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:28 -0500 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdicF-0005Tv-1j for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:24 -0500 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-bc0d7255434so1381209a12.0 for ; Wed, 07 Jan 2026 21:31:22 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850281; x=1768455081; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=IDSBq+h5586T4AWBNgU7jaX6pgnbIRhxB8J2QcVJ9c8=; b=e5djzzaHUevMKvQdU4MqC7YjrZ1yW5Zxtybu4NjBMaVxG0SiU/1wj7NF79pmAsuT1b YoEoW8ArxQrLU6fx0Gyu5Rn1MF4ohvJqL5ZRSllLDacztMZxhJkPvp0X+OxwW56oeMe1 OdwFgx1THlDjOxFeWUC+gp40dzDlIqxATVMc1LUYBm0fpo+QCLOjO3nt8/8Zbw7ptlgm /xkMs96QwUgGSBO7b+vcSGNEAZeXq8VaYja6LHXOyLDS9GDutfd091dyFYYXzowvJvWw Q1Wrt0Pm6Ddg57QdlJyp1/fJSH8gSwwC8rCMoLZH15/yTYx78By4UX2LPnffvh7jSG1R LlNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850281; x=1768455081; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=IDSBq+h5586T4AWBNgU7jaX6pgnbIRhxB8J2QcVJ9c8=; b=DaG+iru+DZ4EHDqQXpOb++sOXxyB9o+VFTdrGMv7Yd64QeP7vx+oTKLMOQll0eCh/i PAjpV5jvSABCNjdleCDsoU8/Z0D0EAWaz/plJfCxwmuZz5e5Ci6G7RdheIU6vhZ7qKNr BSzE4Cp5RgEBc3wPKPHBkdvAeJl+xgDHO3sxF3Xk6jfw+8jqPfOZuNbcwwvVkVZX+exu 6JzmyYXDO1i+F9Wur/l89f+10izUmVq5J1aTQEQ7ucFJLpVCC+J1F/DMeGkIh+lCVpkz ymm+Y7IUHh0f/rI1kBGJEgq4wgA1nybuqYZRCT7ueF5gA+pv1i6irHMaGDyOPZfrskfm w/Uw== X-Gm-Message-State: AOJu0Ywj1clLv969tGkzu1rUp7AWC5D9f1YHubsZecUUW2u6SBeAWEsm W0LVQraBP1T76Z+9EP3HobkRG4ghjybAjGtdpBRemEaIQABtHIx+BjEMf8K0Bwsjev6CGF3F7T0 ZaUyJRbA= X-Gm-Gg: AY/fxX5DPfdDUPpECGKlFyFB0sPBDNInTGSDqyLOVva5IHHG/MijRTyM6ugvzGRH+dw R3WvGnAioTiMD/9DFcOVrK3t0MW6qsAbW41H5Bhny0zR9R/hhj/fQFU3LhPWnXF1nM3iSH+XCk3 rOR/F1cupVg6lG8cSWo8OyfR5fdFy6+b/S+1IcgV8wrKz9hLijb4pnjpjEXZlJds72VdS5kJSpL eUzgNcUWlCLPpF4FP2zsUrFBwmIH0oI+/E2c7q2U/neG+Oo4DvDgYhV6bb75q/Ubk/FKGe3GL7D V3vRP9HTLqbwaVY39HhPeFWMOxhZYRjHW0NUKb+8vdAzavqXYFGlG+yCujQyiz25mLugx851FRy oTEauaG8CRRfRpCkwD1zrJYezAIjbcBTk7ydx+yaqjO6jXrXSKcPv4/CcgQOzuKMSp9w31E97Ls aP3P+2VvXISdbMIbNbgB7YR1xj7goj X-Google-Smtp-Source: AGHT+IFlgTQ4CsaiMhvuHDBMPqnkQSneAIG38URT9sRm/344tiwe5OUEvHZ+78vEWf5DIgIhMX3g2Q== X-Received: by 2002:a05:6a20:7fa9:b0:359:62f0:574 with SMTP id adf61e73a8af0-3898f9cd3f3mr4759867637.41.1767850281375; Wed, 07 Jan 2026 21:31:21 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 29/50] tcg: Drop TCG_TARGET_REG_BITS tests in tcg-internal.h Date: Thu, 8 Jan 2026 16:29:57 +1100 Message-ID: <20260108053018.626690-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850736533158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850395; cv=none; d=zohomail.com; s=zohoarc; b=N9g3T9drOxlsOjAzf+stwoohGqA0mY69PflUmt3VDhDmaf9IVnvAjf/4+k/eYS2PDa+UOMB3UCdDjdybyhZoEH4jG3zBfcrseBBDyvKBJVXVgOSgxFOqUFrqcjKdWGRqvk5/jm7Nlrdb2+ksSof2yccFoOHIVMrha+G9P1VDlbg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850395; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=RwZcEsWtXtRWsZkoGnAqaNmx6Eebey0NHBlG9Sj16ps=; b=OP3jBrXIRmZf4AkA095mHuInyrZgfNg6k8l+shhnfkOAlM1DWVcj7llnIYerLWhaxf7RiyHhiXUIsPT8xNK2n0niNKi4vP5UcoFuXU5gy/wNI0q3HcJuGR5PXtmWBFFROKVJp/XVx/IdQ+B9NaK5lzmBZ2S9YSWQayhenGuXYQQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850395583888.866931803124; Wed, 7 Jan 2026 21:33:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdidJ-0008W2-6y; Thu, 08 Jan 2026 00:32: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 1vdicI-0007oB-Cy for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:28 -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 1vdicG-0005UF-OP for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:26 -0500 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-7b9c17dd591so1832577b3a.3 for ; Wed, 07 Jan 2026 21:31:24 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850283; x=1768455083; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=RwZcEsWtXtRWsZkoGnAqaNmx6Eebey0NHBlG9Sj16ps=; b=yGSVw0wLrsFfaFiByNlO1HurxoNwxg8BgDuNAV6nJAbElH/Y89w0IN0VRJ7k2nU8Nh Er+0kFUBuyckg6KA4g8RzhmY7Y9jNOcs9LoTIpS0ettH9BrV4jRVFLLnaVlTr+McKqI2 m8Sd/BfTPfeJPso+2hXDgzVX6GbF7ZnoZqoqc+Tvwg4oX81GHHWxs86LlJCBgniDnxtb srThC5A1MNfU6hFs0GbWzRtWqxFFxChU5js3Fyyri+ivBoOYLs5MeNEVpfeFPlWhHYl3 103WKCU3WAYmwXc09Dmr4dNVMU1UfFiyFAGeNVi55zaL5lo61WScy81qmrlwelZKwt/s 0ZGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850283; x=1768455083; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RwZcEsWtXtRWsZkoGnAqaNmx6Eebey0NHBlG9Sj16ps=; b=stXHjALN/cmhbfE6sDwvszi6qe/ML4/mlz51w52iKyKydjTO4jJ2Dt6MgvI+qmFvNk 89VyBXIkGieaIbLDei4C8EGPgd0VTEuq4qFtbU+Bss8qNCh8bXpkuPpxD6LXxmg9B7BV BZ5aWTn4TymNjdkOKkGxp2StWvAij7T2MS6Av+MZ86ygqF591bQF6RqX/YK5iDT9Bzrp Mbr3lDjw8VzkwUjYpZpaA7ehaXZQNec0Erc0hMsa87KX9PWKKGdyWROXU9kxf4hsua1a hISjp+9TFgKtFMaqF11dBcI8XTCns8mnOQmBauF9qJodAHUBhbYaIfQtBlUpZDhcZJcX NeFQ== X-Gm-Message-State: AOJu0YwPntaMG4jfbAZtZbiuA+mY7dvq5PCAjWYx7qnOoV6ha0zpYpC/ rmpnu2Is75LbiclUbA0jYvBoU2XcMj2KgNOrKmhV6rV7absDUHRRaT70qA6tUR/et/xX9vEfc4f rxM72qkE= X-Gm-Gg: AY/fxX5TOK8QQkVzGES5/368AkhBUCL2Uwr+t7+85u2FOYeCgH1rWTRqk/DcmavdVKu v+mRNntGjQnnf5Kh6TRkAtGCyTX5uLUdU/3lb3QV35Q1hyCWQpTerbYbafYhymoncbXBpJZoQ0r NkGLd4Rc6eMi9aDN1JOOU+uz0OzQzcQyVJUX1y55hkcn+2vAuURtSTRahYnSlMTtP2AFA3mqdk6 i077yoWysZHdSD4UOOnlLrFcobNwWuz3Lw1iE09R/oJz4omUGorD3t+VpxQJrI7q0mvAgOVJO4M cvhdqynb/V7CTLeaupzjBaFDFl1nHENX3oAqsr5SIhVhmEXUFA4mb89Peqf/FYeM3U9tR64RNhd g89jA4Iozg6aw1nvyFRgEGg1fH54+nTyo5wVXk5OMerxJ4npPcY+bqk03T0wNLEonpB5EfLTGem bNBoMOMCMQbfbRaDzIUA== X-Google-Smtp-Source: AGHT+IHS8Elyu7Lvgccc2vdUcEb41nOw47Ppsn3Ct6yiBiWWkQpfGR/OqxbaEeXS89jcEVZA2Fz7Rg== X-Received: by 2002:a05:6a20:9185:b0:366:14b2:310 with SMTP id adf61e73a8af0-3898f9db7cfmr4471318637.67.1767850283201; Wed, 07 Jan 2026 21:31:23 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 30/50] tcg: Drop TCG_TARGET_REG_BITS test in tcg-has.h Date: Thu, 8 Jan 2026 16:29:58 +1100 Message-ID: <20260108053018.626690-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850397307158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850561; cv=none; d=zohomail.com; s=zohoarc; b=juBENIhU34RWhn2eKl1XV9plKKyQ0ajuFoosiwkCAt020+yaPK28qzIGcSTPz3RohiMXXnlkx0HWkP4W75ECHvGOhMnelO3jzwmNtCugGjkvqQyXRFbEKaJk/qDj3zAf7YT+831I0hS6JcHSftUf4q+a7j5+si1psJd2HvD/rZg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850561; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=nmpUZl7uu93xpl03P28ZJOpHBDsxSLhCt5E8UK4/dbM=; b=jrE0PnXlWCmQQp5WvkBJS8SAKSF/9x1E1vih+te31dfyq00N/p6J0uKj1ItQq4ShE6vqg0L26Pa5X1fGT2EdgowJbC+du6uAO4HxGxh7B88bF7s72FiyUULaapIoVoTMSk/X8h1SZoBrVI73dulv5KoVuAbU8xY/RznjgqWGT6s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850561220150.71179308879778; Wed, 7 Jan 2026 21:36:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdick-00082O-Ea; Thu, 08 Jan 2026 00:31:58 -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 1vdicK-0007pV-E6 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:28 -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 1vdicI-0005Ug-Iq for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:28 -0500 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-7aa9be9f03aso1812432b3a.2 for ; Wed, 07 Jan 2026 21:31:26 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850285; x=1768455085; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=nmpUZl7uu93xpl03P28ZJOpHBDsxSLhCt5E8UK4/dbM=; b=gPyZcjv0RMjfq0r1glRAS2MhPRXzp0TwiXGNmiZnsldqcx1LvASIbsRNQSJ6cuZHr3 CHtx4F0k6o2ev6IYqXpkW0xIQqLqKLvb0bpDCfBKd5uMRefFHfCHufTSidx8QemcNNDA Xjr8dbWquprOZWCYjsLSQ/fXdbFHU4AA21p4VC2Rvnr0amFPKq/vxzySIp1T52byZFYK 1EkBPcN2VnrA2FzE/EVACqLqFZYe/X/ZJzZfnxDSRABdPgD6ZmaeFE7Q9V8wB+1gZbHG PIMHzuro8+4VE3NHA89dgvu5i7S/mcJGyyyPde0l3+ivzhgszbxx6od1DESkS2S2oi6B zApw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850285; x=1768455085; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=nmpUZl7uu93xpl03P28ZJOpHBDsxSLhCt5E8UK4/dbM=; b=GDifo5IXA4ZpZjbU5mfrvjAx2uUSKSOowJ5mw0sxYWbW0xXjjbG6/1ugCGgQbkIcRz eQ9achBgscAkpKPAxbVJUtMpu7GW3C3A/6PAfwm+2Kng+uyuIZTEKqGlCYDnr5biDMhr hUIlxH5Cm1MRyRVGkUS3J8CpSYu7h2NcnmSDBiPfCOKf/6ynQ9FDBVMaOAtD/VtKGEH0 RWx6cIdCncU8DvIT0pAu0wZLA0QZ9f76+4eJ9NnK+lOp5zGFivWFDM0otlIoHKkc6yeu YZ67wRwuxIu30eS/gcaYaUKAKg02T3MFKB0WsmyF3YVR0tlWZacXbtW1imSicIZHiwjs Kitw== X-Gm-Message-State: AOJu0YyODtmtSGehm7YQd6YNNtwIV78WDVFwDdehJ1MOVj8dQkwaJBC+ Y9jcQwQomGp3t5AUatcS3gH6AchG29rLdD/hIeLIewbq/o5OYZRENhVHSxJRz0Z58n/zLwhP6LD +RF+OcZQ= X-Gm-Gg: AY/fxX5OklpNZMImWTcDVYWVhOmbpWwtnyzUmNdLbNAZyKwrL/Y7OHmjh0jzYNwGXXy dYgoFJpYtI89VPGsgYqbL7kpHRjLsu4YE1PlvFlb5m23isz477Rdv4CxD5iVBdXWfmyPV7HwOPS Qj+KdQtU7ZL/JPTFMJ5mwLcpzJFzzKsFesG1tEEweM9i2YXlstoUJUKnrNf/ti9rY2aGVE0ValQ ejl0G5e8M5EVK9/LiEnta4qQfIkhWpPrT30ZSbPBmCkEsiBUIeyshXqwTLhBx2KK9z4c+5ypgjX iBXHE0NXsPiGg3DzKu/DBbWPbMPx9A2W7mSOROAQSxm4z2/6nivu8Y0gV9xL7oUqZ7TO66q4EJS FZPBFZhyeaNtBxzMzbVpHdGxoPWUEC3bVAlwKqoT7Eq+gU+vIcNpnqHoVTa/+8SPL7i9nb1UfVm BsYzXAT9DfEMxxcY2quA== X-Google-Smtp-Source: AGHT+IEyRmnbTIiC3ZA4ooyLvpsOKlzyZKaXPGEgmgLWvFrF81n3zaXsnfwPcF/p+U2hDlSCXkH1LA== X-Received: by 2002:a05:6a21:3381:b0:366:14b0:4b04 with SMTP id adf61e73a8af0-3898f97be3emr4587218637.64.1767850285045; Wed, 07 Jan 2026 21:31:25 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 31/50] include/tcg: Drop TCG_TARGET_REG_BITS tests Date: Thu, 8 Jan 2026 16:29:59 +1100 Message-ID: <20260108053018.626690-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850561982158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850775; cv=none; d=zohomail.com; s=zohoarc; b=ONvE+AlDkNvcGtmyFjXk2al2ClmSp4f86hjJ6BATBbt9Fmx9PNR+mNi0FxnwJ5oHrzvwpnjs1c8CXs32pwV4MLuRREG/r7uz6gQKB31RusUGGDGpvxNBhZvDrS5AqZ255yPnnYTvudZpscaLC5xwuXRBjnziGlLpI60hF2JGCvw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850775; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=HNdVDbPSJu0bsdpcMcGgNm7vnYIdjIXTO6+ogoktfFo=; b=lCQU0Lgo3m7rA0arGAOC4Y/TjQ4l67vLDHJkZNtKzkvRdUIIKpuYV/XDwKkxH20vMW1MysUfW7AhuZDHQWeOlT+oFi+8cUQ4PTKMCZLnjKczwstgHr1wQwofresdq6ToBl3i/VHSWltPuRSIeN9JWnTYU0X3Tt4pPFGRFT4BeOQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850775911104.01689465718141; Wed, 7 Jan 2026 21:39:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdieO-0000sl-Km; Thu, 08 Jan 2026 00:33: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 1vdicM-00082V-Cc for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:38 -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 1vdicK-0005VR-Jp for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:30 -0500 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-7ba55660769so1680117b3a.1 for ; Wed, 07 Jan 2026 21:31:28 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850287; x=1768455087; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=HNdVDbPSJu0bsdpcMcGgNm7vnYIdjIXTO6+ogoktfFo=; b=QZxNrw3Y3oyyfHVIMp1QCvaBAzypbex5LFPx1r7GcVN3dii3OqaJua2QXygQAIo1KY 4PEV8+d3sx1XkBISYcXWTIid4Jrkc2Dw28HbyYH/EqH66pz8lM33caiZDXmC8SzM1jBh VYPrzQ6jWe2tAgQYPoAQlOFQD8OAEyPGYwiuzw5vUqfk6jH59jmld+DP18qN7ylhn1DY 8qRx8e58hiGHzUvjmog8euo5PrRFv/MbZRF/ZZQ4oYIX34SrkILhiUurZ3tYCaYMJJk6 fVwfP9CgY6vvLKUVccPsuU+8XFXMfSYoFNNgrz8ywIbyABup3mhulG6pQX/pJoULpvVr DHTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850287; x=1768455087; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=HNdVDbPSJu0bsdpcMcGgNm7vnYIdjIXTO6+ogoktfFo=; b=v0dVLtrRRbJFnXjlekO9Pi84lN9jTtxIMBAso+YfypCEuTg79V6XESGEmzAQ+TTh0x QelRHC9wIQL/Fi4cvBc8JDQJ0QGckKY6y1g3J3PcFUPOneZDEIb77zkJ6bCuA4x+Fitl vEp6pR5ui0N/DFszEBWUZoL2tXe8OAEQs7ZxNm6akCKkOCbVP5UO+WoN1amyxDf6/Iek JsVnXzxJpXOefluHekZwz5mj0naXdLKMWiNec4A46hC7k6NbDXF5BjW9WsuVzLRFbo2w 4PqTCNmWGzc93CrwTwVhQIJXg9VO7fG6q2aCsT8TLEmBsA4ZhDjGwbzYm2ir3+20IWX9 QvwQ== X-Gm-Message-State: AOJu0YxzE4eVClEuinvShWgfX1bl+E+ae/JwzL35nmqFlTZ6mFjMn5Wi wXluSRuWmubgBi7uEZCgHSHzXqsDbYNHjIPLaArzY7hOvfEJ5jNavdPRKW9lsCkXVo4TesrrOFA SYDexqNk= X-Gm-Gg: AY/fxX4PMd6MHYb4nn6MMP8jOvN/mKiFbd93cLqOU0BDSmHwpKNndcifjP3YCjKIlT9 Gxxh8qcbPC6wEjCALYF/Vr36wvouVsqW6c30daHt1bNDrkkRAInMTPUprXQ+hG/pK4HDhALStHy 1LeOvEghs1eqGydYoyvpb81sHhS+z1yDmbVvxIVd7LDZBqxBD22A/wLtmyqrNCyRUR95Lhr2LLE BlEbpfJ7/5GMhi1pTi1n6lYJsZBg6Rmcfj0/aT4ltK7K5LzWOHjhKGtV6NDEkJg1YCrpfawLBIi U/lJoxz4qtTFRpNpR8qrNCi+e7CW6bc+FT6cxy8KGHX7S/UU8BFeCJwi37lqAyTWM+oee7/kYhF 21UIwDis+TqpeDZqprVdI61fPFa82s67N1b5LCvjLG9CQCaJ8HhuH6/00N+iT40QB5E808ytPoB pAqKj0+ijSw9f5jyWJcLV4Qoee8f13 X-Google-Smtp-Source: AGHT+IFLodufoPMFp4gMK0myqTu/wLec1y1njrNpfkJmVF7rskos4zq/h6DowwjkZ0FUefuFPT5zPg== X-Received: by 2002:a05:6a20:6a08:b0:37e:8eea:3e3f with SMTP id adf61e73a8af0-3898f9c28a9mr4421017637.80.1767850286898; Wed, 07 Jan 2026 21:31:26 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 32/50] target/i386/tcg: Drop TCG_TARGET_REG_BITS test Date: Thu, 8 Jan 2026 16:30:00 +1100 Message-ID: <20260108053018.626690-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850776739158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 535844dc09..3530186c8f 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -2093,34 +2093,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850743; cv=none; d=zohomail.com; s=zohoarc; b=Sf4wQaIT75GP5Bz+fxVsYvAJLdmbl4lvje5q3VLyUdbeoVDb9YHwb+FSS8c4e2y3uPHBYdjUcJTy4mrc1/H3HZ64Z09y+EWpcsMCUdooK8xpe5Vc/X5Y/FFq/b75tcl+ekDlI8cG2aBrLFBiIllZbnWGABCUpjtYC5U6yKDhrEM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850743; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=MdgLoN6x1cBTaJH7gh4cM0KUMVcgp66uVrMpd4cKO/c=; b=hP0jYaV/JFHuvSWs32Vv4DOGnYAJlQoH23zGD+ToIFG+/TkMhZXp8Vy2uTebUm5umzgnWD/3gc/CddVsHeCkFAmM24KF4aOuBhIKPDmWOqHGEyYGXxlGUXZb78Z/H70MtpRD/kd5Q3pGZjbS7TtVy9Rpi6QDR22gFh7tPcf5eBs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 176785074398198.37541802266435; Wed, 7 Jan 2026 21:39:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdidM-00005H-Pr; Thu, 08 Jan 2026 00:32:39 -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 1vdicN-00082Z-JT for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:38 -0500 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdicL-0005XY-WF for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:31 -0500 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-b553412a19bso1490706a12.1 for ; Wed, 07 Jan 2026 21:31:29 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850289; x=1768455089; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=MdgLoN6x1cBTaJH7gh4cM0KUMVcgp66uVrMpd4cKO/c=; b=togyrYYbYTg8M7H4I5U4TX5d1C+uEfbEP7WykSSmEnMY1t91Ty0dzT0sMHAJecyIG6 NWMpGqbf6BrzJdGq9GBltB/V1swFsOqmAk8eyPIvUQ6vvJ/tsf4xcCik0PVPg2+fcH46 mb4S5J+A/umFq0cpe38UBqoCHMmBtG14R7D27xlEQuCKrXIBkRZ7I10fKAfTsGrKOh3C faIvOge7fh9uJWtBLC/S1tKBwIRxGs6vjRNOwd89otCdjXqAXFjKRHsMNMJHpsLkwync K4blhQHcvm06a+bHIiloucpivbWV6XD9QUdF8FZtmJrSbczotuuCXnaJpFnOHObBXqQ9 AKdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850289; x=1768455089; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MdgLoN6x1cBTaJH7gh4cM0KUMVcgp66uVrMpd4cKO/c=; b=UPV230MXtpSGKVHyEj6mOdBwgZgqy8yaNZk9GUo6lodUht8IKbhLf7wR2LRDptFS1q lkYd1zeWzbfUC8Jq8RnG6zZwhViZpDucbVCBK3yUw0nKV2GgSWyXp2msRTcoRrIqY4FJ y//Yb/RgvABX/hOJGnLUPGZGjDfUHGUFmxx+pgKuGscsUWo+Izrv5KuewdOBNg80TW5p a2p7Xc2oZ8Nz3yuyecDAKP4ojwxS4AeinNC4ddkGcU9NV8M+blNNZk8DY3DGKVHLIlJh o9XvNiGYBpK+No9crYVDKnrUwcVZc6Ngmi76xNR/dMZ/JoXCgIho/sty4THEM4hZlU0k Ysmg== X-Gm-Message-State: AOJu0Yz4HzjTUqkfVAslVTRRJdPOz43TvHzjTu33zTDDJZjFepoXqMhH IQbCiRNM+k3qC/4dQyZBaVi+xrKGSquzKbw5E7YxoBOWh5u+BGS1Cipkaeo0nBdwXHCi8xzsUYk WOSR9Yn0= X-Gm-Gg: AY/fxX6Bm9MyxcZpGNSwDWWqSLxNyaqyU8TQtlg0wndUp4Q3flmHlYEBNTnPiQwsDKo I0YYonLZXFsX8RP02hxbGiQrDboX+H7Z+vfODjYXMssqdY5J+vsj8iHwEpm47Tm30E4GI/ZBJMg ES15l01Thodz9K18EfzjhUgRG3wDv9Fm9dGgVU5qXtbPDu7HjZ1+o7gqWDcCQPFQDnju1tFRxpE AB0tac9m7UOVZW46qeFW2rvRgR2pxztx5Aua1SyEGJiA0zP2pB6Egpz093RjfUFQZuKQekN4tKU MG5KpkiXi2H/AKmS3BP5L0qDnfZfRv76lpBQ8eJm6vZQHRiH8e4gZl/0yFmgKBshXQ9jJhZMENb LMdFKt5mSbwb9k5loVLfy1FlozaKg6T8f51eNHrd7RC/EPHWy+dSNvrh6SlFZoPTPIfh/rcSn1h Urdkvx5x7qeApjieOZGg== X-Google-Smtp-Source: AGHT+IE1lNqfrhZIVuysOhSuDhmwiG+Ku6HG1cA8XpV6Zg49P0r0+xZiqA8J8TZOCl8KOvCGqploLg== X-Received: by 2002:a05:6a21:27a2:b0:366:1926:1e1d with SMTP id adf61e73a8af0-3898f8f578amr3583919637.4.1767850288609; Wed, 07 Jan 2026 21:31:28 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 33/50] target/riscv: Drop TCG_TARGET_REG_BITS test Date: Thu, 8 Jan 2026 16:30:01 +1100 Message-ID: <20260108053018.626690-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850761828158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850722; cv=none; d=zohomail.com; s=zohoarc; b=HhAGDyUKV8L1KZ42LlDMpllvb6AUempyzNGDwzUsUUH2BVL8u91Ye8RDXi1Gf0d4v0SwBqlHDhUFU6W17YqCzGnIRoJfAL055k8NVUm2ROaLbE7A2BngYzyoG4mFoaa2tQU7kKjmtu99x9hbjQfK81x8h3UdU8SKZZcjE7Zx2po= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850722; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=egVbNojwa9yrj9wN1HcbccivbDY9V6hFbtE9omsyoj8=; b=n8jb9JSw6ovZxjQ4hr6wMaVKu7prcNO3KwFLjU7Q8DJwpDe4S8B7/IbVUzbykyfT4vOSx5KRFvJOnamdljO5OS+DMCsPd86HhXFEKfXevYZe6lIkng7R7qRmxleH/8J/RjxNLHlMYqHSZYNtkSHOu7Vg+279R+EExn6//YHWr68= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 17678507223888.287002250227374; Wed, 7 Jan 2026 21:38:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdieU-0001DR-EA; Thu, 08 Jan 2026 00:33: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 1vdicQ-00084l-Sp for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:39 -0500 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdicO-0005Zr-0B for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:33 -0500 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c47ee987401so714935a12.1 for ; Wed, 07 Jan 2026 21:31:31 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850291; x=1768455091; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=egVbNojwa9yrj9wN1HcbccivbDY9V6hFbtE9omsyoj8=; b=gpel02JbgAfioRtaOmDLdvkrPnggH3jFNP7KD7hC/tqQtBFUt6CYVG0pE2H4eUymEq +riipawhp5FD+TTVUNgbzv3g4pICQUhNkBeRAUG2HOgjW271Frd/wHcr3IocSlVMB0Ya AAdb2zKZ5xYL2ij3G5wXYtlZ/D8/bQwhYwIiURrQCaKbliL7rY2HsOqjn1t8l1nqK/Tg I9ZCaFqzqhTOnf/jLJaChW7S9fv2xcE8KMFj0VeGaB1SZIxPZSv1OfL/ahQ8ULPbMDP9 CQDS7jlsb5FiRDgDBaTNaeSUDdhgeFiCYb833oHIty+J6wQgRzJ4cyca00dZdpJpV2k2 N8jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850291; x=1768455091; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=egVbNojwa9yrj9wN1HcbccivbDY9V6hFbtE9omsyoj8=; b=HFiPbzLd3K5LYzKzLuqkpK8as3CgZvTRg/7JEx2Be8nz2yPa4p4/brq0TnEos5gsvJ 1yCsw6GI47SIoirVcNw4QMli3pzMh4d4NAmE7DjKcbYU+vgHadM2SS00m8ARYf1Jommy jgAjk/KlVkCDIhNYDxMtZ+kXBa2Y9fmE09JlxvGrLujM6tQWWbwWKD8ZmpmpsLYcY6OV /6P6jyB3vh0INTnmQZdByPzEhi9Bya4MrZ4zMQLpiCmwN6uEJZ/3wItHEtY49SrKYX+u KIXO7nDBvihD+JRM5yHK8wsZCWV8f7hz3bQUYBbbmeQmgRU89ThqWPKgjX9AGy3H4vxJ WcDA== X-Gm-Message-State: AOJu0Yz/xSPFbhob+KIkCQVm8h0HrHGspmR3T0cXPBOS4KMQkA3VEMBE 6rPm1QJpAnqCK61qG3U0X6bmvJQVfUI1xN1coXHl+L21D8uK2qrlflYLim4J1IS0Btb/e28icoF PR34xhfY= X-Gm-Gg: AY/fxX51A9KMdulRoiEkaXnS1pynRTi20lNaj17rIK92aiFyCCf3hGRXNGTYthfI9/9 TfizMNeaKweLoMubD3+PwXi3obgJ/u4Q0GjCAN+1eEJSERVCgoATucLHhWHxnzGvx+zAS+2qV58 FJtrR8BW+VxGz6tvK8r9srP5uRNH97R/RNI2pfERsVfSxnPZx9sJmkkBnrOvX50biIrCiVkV/Aa mODOtCrbzIAXOvbUwAv/p/dRGVJ+Xox8qq0p97MNz5wPuSXpFWujJ9KR7o4gBywON1ptfwxlC4O MTTBqZ8D9Rd1bKUZosZCsQwwPuJeOD+OcQbGuaukR7cX+GaYt1IpdXWBTgDIveEcdyKTpMzKR2x UvAkciIGIb6aPwNoeSDZ3/Pf+rR2Sbn/95lMv51S8hLw0L0p5BFf4Qd2+jvnLM+TJrSq7zkYu9D pgks7cHKpL27RpAf5hiw== X-Google-Smtp-Source: AGHT+IGZnZJUUMyBL/j0Kg9POXXNUURNrALphRiO1WSyoCgblBX7/4kCv9kYCUNYO4OuBrzLBrd/LA== X-Received: by 2002:a05:6a20:94c7:b0:366:14b0:4b18 with SMTP id adf61e73a8af0-3898eb0ac5cmr4981015637.35.1767850290482; Wed, 07 Jan 2026 21:31:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 34/50] accel/tcg/runtime: Remove 64-bit shift helpers Date: Thu, 8 Jan 2026 16:30:02 +1100 Message-ID: <20260108053018.626690-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850724486158500 Content-Type: text/plain; charset="utf-8" These were only required for some 32-bit hosts. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850719; cv=none; d=zohomail.com; s=zohoarc; b=jILbDJ8p/nSG1nJ2cSdDLHDdKu6GkoWsNzoNyivfbHAKBnX3jQCVCwvHamYfq8GIRTuFLnZSPAkZyGVIjzhArcMYRwV+P4c1gkTT/GD8yVgWSJmW8mNtX00u823DtF0iO6M22GoOn0Y0BOmDm5lANTyrghWdBquBsAgE2ebTXeg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850719; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ZjgbuWaanDrNExLqWK4KBit4/Io3yfr3ZpZa80ElVWM=; b=U5nSkLddame83odkqws+tVT4ghWYOhAxETWCUBwxtC4vBVkwvI0bQJ3CShk0ZanO8AaG9+ovhJpeH+1MIxt+2F4FL6nAAhBjrT7OddbBF7fWz6iGSbXdMMy7lNEvP2O1CF4DlQ/lm1/M7SkeZ1Q1LiH9APzbGGQfB21vS8kMoNg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850719925255.11607312304022; Wed, 7 Jan 2026 21:38:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdieR-00012Y-3A; Thu, 08 Jan 2026 00:33:39 -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 1vdicS-00084n-4J for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:39 -0500 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdicQ-0005bh-Ju for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:35 -0500 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c0ec27cad8cso1284374a12.1 for ; Wed, 07 Jan 2026 21:31:33 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850292; x=1768455092; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ZjgbuWaanDrNExLqWK4KBit4/Io3yfr3ZpZa80ElVWM=; b=bRjKgrZdRHG2sNCFtyZVU2ZRM/4nJx7mFVQzdDGSOnX0d2h5gx8u1Yfsnw6H7qokTd kW+FrvvHBW7FmIqReXxQv2brG6VTQqfnzt8dlI+8xfjiQdXH72wmaRXU/ZtwOZVCp71B mH1xhlatNayvxFB2R0Sh2E7vlXbV7mEnX4MivdxE0jhUMQvDDmUKZgURX+O3vl1gDCMJ SzVzEQBv5NAvGNu4bwnf8g+CvIvfI2paVeyBU+47rQB3RJsCUqsIvLSkl82gZVMIjkgv e9BU/CVNNSZ7umKdCh2DQxDj4Ckj962msn0ojcCPYgggY31MvDHCrUXogzb+yV+u9CAd qltQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850292; x=1768455092; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ZjgbuWaanDrNExLqWK4KBit4/Io3yfr3ZpZa80ElVWM=; b=V6vzgP148JzRAGNDtNzAihZO28ZwENs/IBxGu+lhajwDNT0FErovjviZzloG9NFBM9 VUV2R6jNhg6MrTiVR3edsKx7v6k5YFXWBCw0u+9uMDzVTCmuUE7pD5p/CxjURKCuhYv3 xfebYp7AZhNeSXIbyhVQTZ5CCn0e8qAHmQclrsuesYwYfE9I2BU8DdTDJgPD57SxVC5L OmHWLAKXej3jrp/rJP35tg/Lw2hEXfF/qdQb4Js9RUNNddVsCd0U0mBiDrVPgpzvxW2u 6bCsnUS5pxiEFGQ4WZPurWoJ5yBlAGRUgxEnOMl0WdL7hvWP8NGvkMxptQ8bet45KjIi +Dxw== X-Gm-Message-State: AOJu0YyFvCwBB29JZJxoJa5r5az29SjFUeRWTWdTVjDrKvRo9rkU7jG7 Gh4w9FmoOg921ntqKCdPxsA+pgRT2MuojB5SUmN7JJzTGDO15Bn1H1HrfYkZ9LzqXqOyy4qDpaN mnLMyU7I= X-Gm-Gg: AY/fxX42tKhEq9QhiyETTEIWTnMcqi8aZY7eA1QuttV8PU3fzUPM0BAv1tsQr7PyV5/ UWPpzJ8htzLKpMx6hb/uMGVBRf2Czd3IFBB040nq64am7/LSFK4/M91k2U59MtGLhz3NPLO0wnG NIoc05sQuscTcLJhRwmFvgrnNH6Fs4ZZZ5ExtRecfu+cR6sXYrW2CD980S3KtB1faaPLeMf2qqP x42L3alV6rMqfmdte63GKXyx5MK/J7HNNB0rrPef6PBKnpOErc01f173BZNSIakv4nE+E139IYb 02A4OPHVHqMOuvy98mqCjrimhAO44JHaRWEC0QGqhbrVC8czCtB8678XCon3zcYpx4SezLkD1G+ Yhb/pwotCMWxm2JCuQ+P+UstEK/HL6gBx6OzTnMurRutkQtDkswdVKHYCreKzVOAgtnpy+WVuaN NCE5m6L860WZhWEqtfMw== X-Google-Smtp-Source: AGHT+IERFBmVOCsOpzn1MP7JYHLhFvrzdV9ovhZFXQuDBll3kEW2kTewWp6Tju3V3wzOpiTg//ho1w== X-Received: by 2002:a05:6a20:12d5:b0:35d:d477:a7e7 with SMTP id adf61e73a8af0-3898f906c7bmr4047572637.22.1767850292126; Wed, 07 Jan 2026 21:31:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 35/50] accel/tcg/runtime: Remove helper_nonatomic_cmpxchgo Date: Thu, 8 Jan 2026 16:30:03 +1100 Message-ID: <20260108053018.626690-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850720482158500 Content-Type: text/plain; charset="utf-8" This were only required for some 32-bit hosts. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850654; cv=none; d=zohomail.com; s=zohoarc; b=Ma/QHWtLnBlCf1pYfg5q2rQzD6ll9g2z6sEX8PYGRKovXyXXlUDgMCpJNBHUTczPyrDqchANuWxJTs64l+lBxvyi/lTpCVJpp1GbJpISek5llsW3uJlbRrbn4kKtyuJrTF+FhhWV501F0eWkY6YuEiV/yqE9kK4E7QlcR1SFjsw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850654; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=u8+rTnkXkDUtFCw2q+QSvHQLDZV/Kh3FfwCQMjynnsY=; b=PwBIv8Yr34tTOAxSMrNMeJl56gpVpiqQ8W9ZyVVTiqD4j9TOE5O17GcHxsxGzg5FbChSlBLF9q3EUWMQI+L8PwYPtW0TpzIzFlgzr2ZbkmmupdcfQKcGtDJ8M74jgzL5dftXPPHc6iM5KbOTz8TY6thQRJmMWrEESo+j+TDQMzY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850654400287.5845602466452; Wed, 7 Jan 2026 21:37:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdieV-0001GM-P9; Thu, 08 Jan 2026 00:33:43 -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 1vdicT-00086N-R3 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:39 -0500 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdicR-0005bs-Jy for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:37 -0500 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-bc09b3d3afeso1201886a12.0 for ; Wed, 07 Jan 2026 21:31:35 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850294; x=1768455094; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=u8+rTnkXkDUtFCw2q+QSvHQLDZV/Kh3FfwCQMjynnsY=; b=igx19PT0wFNB+qDYhTnwdAutBIV99n7z338seutf1rrwFO2SWrkwF5Wuyu9LEsMuxg 65N+mqj3rvMTWsBYKblzdYEDJJNfCl28+K+rnIhyYv3KfX18f/nL++G/s6R+hKV2VA7O W2YlEAqA+vTsghGOVHG8kSHlyJObshKkJlYV2odxbzQbnuvrzP3LZq14lsyDGUJCrDza tLMjz4rz/efThDmE2ElqTlxiy29b16eC/RHtZCyCl1uoZUIsllqgXItok8jqmbmc4zFH qbuYASBsW9TSkArhvWhT0oflqdAwKfzFYaD1Q35qDTY4vjv6QqiK0mYCzvIjQZ4RoQkm 9pVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850294; x=1768455094; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=u8+rTnkXkDUtFCw2q+QSvHQLDZV/Kh3FfwCQMjynnsY=; b=tnSwON7rmHfxbwPw+8fvE2ZEjxd1H2JrYL1Meg6W0betYulE/Nel4p9iiJziLPCdu3 p0tdDUGp46Vw6P7dfU4D6Nzxwg+jyB7iJnalmH/2nl/kmUW+UgufxIhj4tmTaikkXbkz TjA8z2IGT1g+9MemqqGwTF1wnYcOOZmAwdAIYk00+fZoe3s43jpo4eyxd/nGGYsdbiyJ o7Xvtbn21x4kWchBck90lcGwAjVfESORKNnVsuM7w8W+2ikaAX+V9s5X+AJdeyM5/pIh 1n6LuKCK/+T5VMgo1uhQ1I6AnzPBHAQzvFfimSqnn9LCUQfdZW2vRZrVPbmU6wY9A/5E P1rw== X-Gm-Message-State: AOJu0YzHyqpitOgpsM4SkFyN6Szsj24wCceGtiu1OtDZzomYwupxarGk hPvGCQAfI7WRPwkP9gQRr858Z+PwuzAxbzP+XIB+c8B80BcTDHNK1Be0YAMbS/b57cQPh/kmBms rWUidUKM= X-Gm-Gg: AY/fxX6NN6gpXgBRuXw9Z6dHix1JDSvSbPdUlKASQSCbyC4wEEb2+R7j/S+lpPP/EaM /BdjMOdSO83TVrG24kxJFp+JR0I/EdtOBg9Qv3qyNTVZYgAdY4RnF3u0/nGPQxronmE2U/p4muA elucIxzR6RomKPANCBW56jtYtHXhI+xgpfEVYpuLayEkPo7w/bauGof6XS9TYjj28Mj3XRiQBl6 2v41dcwnS0XGDKApD+rd9xtFhfZl4+/vS0//NJn7LzIagqKb+srJlr2iZ+bza1zolX8gFJOxK3T rQwSkmA+YB0S1Jn4Fbigr6hshbU7qm+/RvTvoWECOmG9vkELgfNO0v40+jnAIdP9xeQrQY2ynOv ApkolvbbPLv4BA/rXmrEK/wC5sgv15XylkmbPE2Kg/7gfNU6vtcMDU/8fXgzW8ePGbNn4+b0PsY rz0zuTjr7IHeSrWxXQkA== X-Google-Smtp-Source: AGHT+IGeMSBpvs663rcfjFMRtnX4Zsa5NJaYSMBvECECccOt2jGfQ2SVaXqd5zwjgPzPojZdz3SVOA== X-Received: by 2002:a05:6a21:3381:b0:340:cc06:94f5 with SMTP id adf61e73a8af0-3898f953251mr4671947637.44.1767850293873; Wed, 07 Jan 2026 21:31:33 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 36/50] tcg: Unconditionally define atomic64 helpers Date: Thu, 8 Jan 2026 16:30:04 +1100 Message-ID: <20260108053018.626690-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850656392158500 Content-Type: text/plain; charset="utf-8" CONFIG_ATOMIC64 is a configuration knob for 32-bit hosts. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850745; cv=none; d=zohomail.com; s=zohoarc; b=CnaChnfABrmuPwfyqNOeSVW3C7lzRVBZfGkApNqnIdeaNLUcqfhh8AngVOfAL5Juxc1BY3gE6428crH+kCP0OvHVoPBDL4atJpf3GuAfAqXYAXZ1esDlTQ4pSKOHKI3GUnRPma6ykG/rUKMfppVWkcQaSmnrU+fn0qfUHFlo1wI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850745; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=BaMS1Q7uVDIqfS9U0jqVYCBj77vprpNmbd6fJDUAIVs=; b=bkRrTUpoAUpzA9ybMsZ741O188YysJYCQUt76tiZq6Jy/EMgnhpoBYx9n26TMkldaiGaq260dEtnrwLiT5Y60Ho53CqmQM3B/Bv82lEiDrsR++9ipSmGL9tu8jU0vJ0dHjDQmww7V6wcO8kaKJZp8xKSeSwWiwIQC4OZpwYdXgE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850745636332.82544403535746; Wed, 7 Jan 2026 21:39:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdieO-0000sM-IJ; Thu, 08 Jan 2026 00:33: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 1vdicV-00086X-Db for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:51 -0500 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdicT-0005e1-7c for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:39 -0500 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-c06cb8004e8so1283096a12.0 for ; Wed, 07 Jan 2026 21:31:36 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850296; x=1768455096; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BaMS1Q7uVDIqfS9U0jqVYCBj77vprpNmbd6fJDUAIVs=; b=ZFLCwmMZUNumClDaCeCJdQ12Xh5mrhzw3n0C2dkKI6+tviQOtXSn3fOhr3v4LcxLyp H2K+gvG+28f/Yw9WUQj7AqLbPFouRG8qIfp8IKZSQU0Mubp1j7ijWDHmRSAj6hSvpdPl TGJgur/061yoPtWRwkMmF3hEuOKmKhbJyygnX8bX9FCK5BB59qNB3Hbc5AKrKrzTpxFW XyQB/tAYVwQU6hw7m/wgdHtXgsuiT+98Bp2WDfJaSf5gYoSM8tcH3WN9pTpUd6sZ4nnk sP+OqVPjKyLi3xQIY5HVMzC94IATLmlI7WdXJtkFTqiA40PaAw+zW4COqdAclYK5MTGB DjUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850296; x=1768455096; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=BaMS1Q7uVDIqfS9U0jqVYCBj77vprpNmbd6fJDUAIVs=; b=CV4wb3bZxv+AR1G4oup+EnXrpxgVJcgnFyj2d7tIAqQDVIW0R195EmvJ/KtQdC51tJ zFhiRtIQ7OL0V4fb+Wr89CtNIQwiVUJdrlthDxWMpdizu2j2sdjuok7+tuuJC1tcdc9+ s71S4QYVwvrikBjUa7uNs+UFo4IQapPi6dRMvWETcbhh/9JYMnh9zzLDoFUB/cN2MwRZ yQbqTAh/rxyhd62qzyJkKId6nr5ZLPOQcZs57mqB99EjhPS+j4Rs/37xwQn/W+m6DYfP nVJ8N4IYmBonvGVzYXy007qK1KWW9dJQ+xEAikEfuyPT4Qs0epEywNyVuQ+salsqyQcE cHLg== X-Gm-Message-State: AOJu0YzSmTQZknkkZA3fOfEczcN53Cs572kcvB6ol7q1WA22oWOBYqym qnHVwbo9+16hUDpLIkGCeh0P0LlCdORXCndzR2P9RZmKmMu/gZ2Ndn5ei0nw+N5pQJcUBcKTTah eRDKBc1M= X-Gm-Gg: AY/fxX4Jf1EnJFWlKAezzPNr34V1mZpp5mJyXGl49YfCksI/+mBcw6Ipj2Ff1dv6WOf nevOOQLn1YrwSnmARtXC7uv1RDikhFbskWi6utK2Nh+Er4yc32/VvDGvmkmA9igvGH8VP4Om7Yd l8Wc3iKpo86q2gSftCxt+7NrPfBaVBhzg9dm/mMOtRFpYwd3m0nx8xP5D5ECiEqhwaYaKhlxtiX QmboCEnpiJE5MI6G+kEHz7MPwNr7zHVkXMPDP06L+81LJEIbYWHPGUteVHQRRHJyKGSptjf6iT/ gaELPrLR0w886GSR17hRVPhFMKBZW8Utfivyj2QamsdLL1vaj/27x+igSfw7+oeZZaO3yEgdivC +OOullN4erGEFvVlfz00sfmirUAepfIXK9x4pYJmjS2ighQWqEjj1M8wc0UCHLfpSuJ8t2eANDb PL8MmY1soXQwCivhG3bg4+q3QZK1MP X-Google-Smtp-Source: AGHT+IEqHrMuAk96Z0aNgXqPEyv4lsIM5+KDnaeqeoQDpTHnkcUrRNTlFPTd6Xv4FbFBgitcNVPrNQ== X-Received: by 2002:a05:6300:210b:b0:366:14af:9bc0 with SMTP id adf61e73a8af0-3898fa13db1mr4763564637.74.1767850295733; Wed, 07 Jan 2026 21:31:35 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 37/50] accel/tcg: Drop CONFIG_ATOMIC64 checks from ldst_atomicicy.c.inc Date: Thu, 8 Jan 2026 16:30:05 +1100 Message-ID: <20260108053018.626690-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850746677158500 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. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850654; cv=none; d=zohomail.com; s=zohoarc; b=ALqzr1Nusle/ePQxrIYz18KzPavDUulGvLqiBZnk6lxMBGt1XnuRFOHwynXKRuPxOHH/JQe61M8gsozb5/3m54H++29K3ta22vIZMhGd9dSLlc+yMv1cW91HtLrJhLT2lqgv0lU/5sh43GVLu+uiDys3kmfpCYfJZCSRsQ6f8uc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850654; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=QSvSmwU9u2bwYxytywsrfABtfwUSb5K0ZRbLt7j0Qic=; b=B3CpSnBxEsBm+lfJCmpcHpcZEsQMbRVZ7J2GtEfVlAahoVfTRUnvifEY6QvtF75C1hDLr05RZGzhNRFAo0v6p/REzYjN/mzmx3sn7D3flKeHeocFgmE/MUCGfy2w3Xx69SKB43FuV03X02+/cBnG+65WIb6YfTFeGII6XEvy+BY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850654245849.4292910580195; Wed, 7 Jan 2026 21:37:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdieZ-0001Lb-2w; Thu, 08 Jan 2026 00:33: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 1vdicW-00086Z-CN for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:50 -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 1vdicU-0005eN-VH for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:40 -0500 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-b6ce6d1d3dcso1399696a12.3 for ; Wed, 07 Jan 2026 21:31:38 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850298; x=1768455098; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=QSvSmwU9u2bwYxytywsrfABtfwUSb5K0ZRbLt7j0Qic=; b=E6HvMzvDLLO2Z5+CTHVpuKCxk1hJaIyodZ0/rp+kNgEE5U68Y1pdwQVAN93mILlISb a+pe4JI+TsicKPIJ85kaZCHdqFif8/rCKH6p3QYxCX/+sdxMZ/GQuVcN7GybC2l7X/Xx JC01kmBP+L9+SAg2crLs0lzQ9L4gu2mU8FZBMFRN4tcVDgUY/l2mULC++uoRUs4emh2n Jpp4OEaYIiJBpKqQyYLARCCYB8aQk6mgBj+kGgxSgvXH1ZbSdpouQ3NOd5qK4monO4v7 4TQ9a2gE+eLC6T2yxh7+Oe77qGgvj307nOzcGbCFRNSkJ6PWdKTQsk43iTyQhu1PIMIm t0Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850298; x=1768455098; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=QSvSmwU9u2bwYxytywsrfABtfwUSb5K0ZRbLt7j0Qic=; b=rL4tuD5BQ/ItYFOyFAvf9zzN6X/cnE4lbG1V/WHYdW05ADNOlrQnF7pYMYmsrbqXX4 jeox+h+QSYJMGpjcCAPgRAR7DNaV3GUM07EO3mhzyH07DQkSIYn1hCmKqzBnu4PGLfQn tdhG57zdNx+SmUdfA9JJdoyXqW4+yaQguruQEdxqfgvJEIW89Tt9227KgZvdOvek6h5T ehXgrfleeA2zShbsWuDhG/68SL97fcna0dYZZcR+16Utmd5Sd5eSqzm3lKz9ZsSCSD8q Ayug7nyr1u3M5OPO/+Azn3scdYXrS+org42eUcOaNUYTP7r3mo+i1Rsf23A670BMgccz 4DbA== X-Gm-Message-State: AOJu0YxlobMuv5qz6mfBvO7VBpGOUTceiRG3lUUHOtE/M6amc+tdGiV5 OH1phJXQ52ShhhX8IcNuTiOM6YyL48gNaxAeSHXTGGVorXcN5ub69Z66OKPnI7W7NizR1S/y5nm EkI/4LoY= X-Gm-Gg: AY/fxX7DtjysaPscED4AxnW8mDT9lV76nY+Npv/i+CIaczcJT4XLJoBQw61/5T+bFG7 35mo+oUqxMKp9kSV0sioV58/ST+6C7+OAHXEzdkrUAqRAPTP+GmQWABdWcWRETPjrqN+YBgD92q 8TwcUikh+4G8knzToYlQ3/Z3G17Bf+0BtoQRgoUyA6JC8YWDqn7KZ322IkjSn+iKjp+GNGJm4yG XLR+XfPad5f3URYjCP6twDeEOKocJBy+DBHJK8elW3Sv9CChDIDOWrKZdzm6JyhtDCGgOJ3JCoD Bl94SjPS8j4PIO3MGVP2nxboin+0Xw3YFqxMilwQxHgz0S9PGEIMVzkWkQHTqNm/CU3vJupwyZ4 gil/+THBOIj7L6apPyv2nVaURA4HC1zKHIlvfG68XsY/SMg1R5wfZf2y38fDP6nIuayaCQhpf0+ 7L7Ixv6B5jirn08n4Wiw== X-Google-Smtp-Source: AGHT+IGUsSSMMdRdEpcDAGS8y7Dz1eUhLxYCw4oTCjcipkxNVJsROy68DGEL172dGjsZLxWEH9CcNg== X-Received: by 2002:a05:6a21:339f:b0:35e:11ff:45b4 with SMTP id adf61e73a8af0-3898f91d225mr5143170637.21.1767850297551; Wed, 07 Jan 2026 21:31:37 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 38/50] accel/tcg: Drop CONFIG_ATOMIC64 test from translator.c Date: Thu, 8 Jan 2026 16:30:06 +1100 Message-ID: <20260108053018.626690-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850656360158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850700; cv=none; d=zohomail.com; s=zohoarc; b=U28Z4SQB0wKGggnldJRH7AqMLXDk0HhACjiU/zTyaSYJrJDrTxXaOqH4EyQMFGDOthLcnVatTP33Z9Z/RChmFdLGZO+tAmt7lqQJz3fLBh4uKsC5ONwEi82tssm2SjBycXRNuethdUXVCs4xeJnSMtKb0cfmvSqrRVlPsBE1whs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850700; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=/nW4XYiLmggvfmphVZFuQuCaVORzFI4OKStPas9rXNQ=; b=EQ5PS8KeX8/Vyq83IpJGo/bTQNNH0rt93TnMzbaDf2tKQo3QaAbW/MxobKwN9EujoxbTbagGDfIPJQJdlXm97fsyrzv/jkiTINKqNGdKV5ySSBbPyHubqcQdW1Kh5EaLWiLnbzOOHMGy6x0P7D3VZXbW1MLrs1Gx+ixgMGbnAIk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850700216751.625246593695; Wed, 7 Jan 2026 21:38:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdieR-00014f-FE; Thu, 08 Jan 2026 00:33:39 -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 1vdicZ-00086o-2e for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:50 -0500 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdicW-0005eg-RY for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:31:42 -0500 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-bc0d7255434so1381318a12.0 for ; Wed, 07 Jan 2026 21:31:40 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c4cc05cd9d9sm7036552a12.16.2026.01.07.21.31.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:31:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850299; x=1768455099; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=/nW4XYiLmggvfmphVZFuQuCaVORzFI4OKStPas9rXNQ=; b=gcOHy57skG8RZSLQprtczOccolHVX0NUw+Bnb6jegPOJv4gpxTQ47UgX8QTT+/2HyX 2NplsfKpGST5izbmHJLHrRXzatFI3HGZNhcuxRA+Jv0AOOKW8gJtziQIsgetl/qe7G3H 2vY0QGPotHWIvoksGyz4tWm6X6KhFRZ4geaykMR8fSA0am+MvVhzq0KWThsWVcwDX0Sq iX13ymm+Ysj8qoL3J4CHllvQvb/qKE0GbvxJwf6ITlARWY4IdlSWLRGqgnE7HaNFELUc 7rvXTPhVRYgaTFpGIitaG2oN0XI5a5htf09WCHaE8Pgh2fNSZfBJGr97NQ3I/BrsFrui 6zmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850299; x=1768455099; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=/nW4XYiLmggvfmphVZFuQuCaVORzFI4OKStPas9rXNQ=; b=T1Dyp2KKfIm5ubq7JHUoHC6qPd0kF4p4OugzymNVeyaIWauJb5TDoXAcNSDGm5cARc gGwQlGR/nJbC4BHrmaQ/Xy8KPkx0jF4+hqdkttt4u/N88n0O4fxAI7heBU2mqW9CtuQP uWIHidH0Kt/UDHNcsU1JiLfN2OFfm2EYhAKjWEhs0zJgG6l2iiqyZEjtUuSbH/Px8q1o +jpRGzbgwtfEoC4Kv6OSX4I7sl1FYZc/mq7EVskGl8OQjhoTvpnR3m+NrBXfP0yIAJ7/ WV9PZBlT9/Ym+w41IuKkdpTfrqiiW9C9WCrYgJCP9EoMp8w174sn9PTxsc9uj6uy9WZ+ 83gg== X-Gm-Message-State: AOJu0YwBt3N2k9315LcBNaw7XSgNG8yWuzIp9UcV83MVrboWCvmB9ctx kuPp+XV86Tnb349MvSQprFrF5HOJ7aaVFJyVS2t+0mHwiaYEFB73kadA+al4bpCFZyDuXBVsydD VpB1nPeA= X-Gm-Gg: AY/fxX5dgfoO/UCz1zF1/WnIRwGrTPmKgzfGSCnYce3gYdWRFNdEkmsmH8/SEpNAlC4 cVFZLOjWduBMMdz1w1bQW8uU/7FA5maqW1VEuRV/bXQ7Si6IbA+GLGzeViPHLl2DzY1Xz/Buutt O+HGdGEKIxhprZkTubvEUeI6EAZ6d8fmBlg4WPHwPtbu+UrsvG2JC6c4ZM/uVba97O3eInw1z+k ny22zwp/lmzqQNlW9eeyL1Jch2Ft5UZJofVgY7fLG8v2+xABgubFc42cNFDTxckDvfPg/oye5RY EjNJ8W9Y9AACxhXzIIgdKK4rh+R7Z5vHMMeKScTlNe4K5xEk61gRF6eoytxUHK6xVDFPTtGOqF7 OStaS6Y3maWhfSd93yAlgJNC2DV5V9qWzWluCVBFfroh4s8nQ7E59oGpgY32aiGQxrYhHdOW9we Djnga/0iP3VHdYpV2fQQ== X-Google-Smtp-Source: AGHT+IG3vzhuJmWJnWUfHpQypkg8vd5TvIVL7D7jSyklu4DNWTlieXe8Xda1whYVgysFJDMeMVatcw== X-Received: by 2002:a05:6a20:158a:b0:343:72ff:af80 with SMTP id adf61e73a8af0-3898f9f9d3dmr5104215637.58.1767850299393; Wed, 07 Jan 2026 21:31:39 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 39/50] linux-user/arm: Drop CONFIG_ATOMIC64 test Date: Thu, 8 Jan 2026 16:30:07 +1100 Message-ID: <20260108053018.626690-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::531; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x531.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850702442158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850723; cv=none; d=zohomail.com; s=zohoarc; b=kHwtbok8/2wm4zsEdAynrNvcaaAgMvSwpAdMQcwWwK9GoypMxbu7cpbiklsvUsQQJ5YX6e29JKqqMUSCTnuMBRh8ypHJIy+aZGVObNRnEAAcDdK0siCU+JrCEeiISDaeqFdVD7xEO3D2RhfAnsFe/IWO0P1LBW9NZoqotqgJPo0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850723; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=GW82N8hyUsRQ+e2I2fodb/3OyOkI8Sxoz9ABKF/EoTc=; b=HvrbNHf+gBnC5UHd2pZwS714prbzw/sQ3ma2pZUTskocyfxVrtjQrTukBVE7QM2fdDFWRyps7bB54iQ43MWEfr6ujjdgDJWLanBEW+sCtwsVbwtjyUn4tFo8yq92jKx+fPpydz4niWCfTaxXn36blMz8h717h/3meTDTUesAQy8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850723103337.7647363034846; Wed, 7 Jan 2026 21:38:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdifa-0004Mr-Lc; Thu, 08 Jan 2026 00: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 1vdifY-0004Ga-Es for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:48 -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 1vdifW-0005wS-Bl for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:47 -0500 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2a0ac29fca1so22126405ad.2 for ; Wed, 07 Jan 2026 21:34:45 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:34:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850484; x=1768455284; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=GW82N8hyUsRQ+e2I2fodb/3OyOkI8Sxoz9ABKF/EoTc=; b=NIzALj2wk6a5L9cGlgfnCCcjCS7SaBe5WK8glWGXnqLKS3P2CpUzKrMP6vj2qkSS2e 7D6R2sgV3PWyMJNUkKp9tJkvE9MH6RcKEM4umaS+R57+dfVfYby0YuN/zClzdL/28x6g H39Mq8X3Nett53fc0ROlvpvcb31ytnQfXxyAVXFwIbsLP9nOK14TCd8wybCSl3zvblAx tvX0pNHceCpCgtkqwpHy6DYyb6PSZopIRqua3F9GaqYbj/Ew5Mxc0G9NH7I8y6eHy6rp 4l69+g3vBpnR1j8zhmWQCbTRzuFL5DCu+A6JmKqmq4C5wwFpeoczT/5jXgohDmwelaS5 3ZyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850484; x=1768455284; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=GW82N8hyUsRQ+e2I2fodb/3OyOkI8Sxoz9ABKF/EoTc=; b=i+2rDYxDVOp6zdmm0MhoNqHMHfcxq8SPcK3jl4Mljj3zkcgF/kobVp6FKSgMvgxXwJ MbssMVUXSfPAy1V02lmasmdtJn86gwERd30i6cG8ol5HNYLUvrMO1APYskxePPPVTHrw 0PL5UpFEFJJGdCpia9GEkSNKZXQQuqCn8cwsm7dZW8LJD1swI2GT1ut5BIhoZG+x6be3 sCsMmLFoA8djOjP/OuLJFkOzAHt2fHic2JA8HJcv/Zhm3lNMT1dsdrXSHakk/IaWkfJj LjdHkp0m70e8aoVfYXnVCzkFRBMff/sxGRTZFz8EmR4eWLxbObMh0PSsPFVwpzISHVQO FxJg== X-Gm-Message-State: AOJu0YxmseR2eUOLO1gBv0JNXWKWoShhZB2D390wXvS+OP1MmT2aiyjm 6xycLyZc7ChIw2jDfnEgKRJZBLtn3+U+H5KPl3mDTWYMVKouQMM2GVGe3jMuRWhi5Rtj+1MH3hs 7oqLqoNg= X-Gm-Gg: AY/fxX4iWVax+obBZYTA55QoNiJjP86fReR+t8CkVpL0FDxLOuqacOs4CKZBuuOp1Sk /xMnWDeTGoa0vFdXD0D4EKA3/1Lwo3lbi/QCRfqvXc5vJc1TykaI8aV+3YOawzspUYCHoIJIpo8 M3z8FgBUdV0q7zhqmjga6fQ2kAX2ITPkhuslCMj/e1am3vfOJEy3GtjaVvvhpWHVf0Soe7qQK/3 6+d2bSD+a540OikydiaLUkDT7q/eZep9omDrABpOFL3OOPGoYu//TWLMNqzYYP7BbryXXBK6j8h N5zO2mlk5R7rZeVWjh7kXhfzuSoM41pYlZAmQZT8sDaCemp0D4m1RJZlhMPH3ezNdtepDvySSa/ BTVwAG20AuKtsAYMdBlFNhU0t9NvTGPtG3sHg3cCsVj+yiOBr8vzbL2ma/fg1ZiNQ9xZ9Ef6GLu M/LKg9bG27Zcw7vu8BPg== X-Google-Smtp-Source: AGHT+IFJguRbAH68pJvFjTCBHFmvLgFS5aBAl0cZ60zQe1LWVcEi8sfR34YKzUtFcTGlnCIXJiCdOQ== X-Received: by 2002:a17:902:e807:b0:2a1:e19:ff0 with SMTP id d9443c01a7336-2a3ee4b3165mr44371345ad.39.1767850484448; Wed, 07 Jan 2026 21:34:44 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 40/50] linux-user/hppa: Drop CONFIG_ATOMIC64 test Date: Thu, 8 Jan 2026 16:30:08 +1100 Message-ID: <20260108053018.626690-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850724507158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850731; cv=none; d=zohomail.com; s=zohoarc; b=Ktlb6RVbyFuZYbBKIoUFwABstBGaflkMocTMHSYZSrF4wY6HxTHTAzwgGaJjYa17K/+9/7rUm/8tB+J1IhMfgdFU6CQNMq+w7EUVC09GRSK47XHwevnn7wI1zPSHrpKd9+Xd5R5zOXoG4p/z5XDPzzSoqloeeqNqHFQfbF6VxVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850731; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=YCqXvzFIqjc08NCGDsf9z7Z2T4jUqc4uXckHUm5PTfs=; b=hw+0ioD6VehgL2NKakiErOfwb5aJpFIQ46Fr2ytQ7PP/ydwSbWioC9mpSygeCA7FoVgVjPXqSuL8pSIK+qXYMvtY7WTo2Q4mfTiNrpdg02Xiq1HY+ZarOvFDOsjKUm7C3YSE0XI5Vrp5zPUGCzvygHuUuoX7Dn8q3w27MyoqnfI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850731725652.5674240657571; Wed, 7 Jan 2026 21:38:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdifc-0004Q8-Fx; Thu, 08 Jan 2026 00:34: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 1vdifa-0004N7-A1 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:50 -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 1vdifY-0005wj-BX for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:49 -0500 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2a0833b5aeeso31472735ad.1 for ; Wed, 07 Jan 2026 21:34:47 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:34:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850486; x=1768455286; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=YCqXvzFIqjc08NCGDsf9z7Z2T4jUqc4uXckHUm5PTfs=; b=KndBtjRYCfUfvsiqi2Xeump1XC31l3vb2gL6ZAFb0qqzFU9GDofjqtFTGtn0xOwp25 gnFIqUCpE6uJ3KFUZSrpUS6JiAPtCuhEEKui+tK3vN2yUUvOmmrTK8dYW+Usy78VKvtd 2jRqH7sT+P+t1llMyvl/2eJ+D2AfoWEPrtgEoEEh6qchlKNGOZAnfSaPVryAi38H8Bm9 pwaaitI54eCUwGWFYNW2C+2ixxDYV0dEeAmhDDyNy6DXKzX7+xHbR/kxTmpEzzenp3Dt xjWzBhbUlDDJyF8EJyQtDP1aITXSN9GQVvjQJJh8iybRsnrdeM02M0SaU9Hxwk3ZeXUO UY+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850486; x=1768455286; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=YCqXvzFIqjc08NCGDsf9z7Z2T4jUqc4uXckHUm5PTfs=; b=qGHuB2n7kaXMqluWlKIYmtcVs+++r7MdRPhTfSM182nrH/jHzLuFthAGoPV7sMBTAa v0xoplHrKOef+j5raTYxzMG2QXMDem6Vg4ji+DAZLtehUlSqJOka3U1eeM4HUtj/567+ DEAQcDqDifAhxnqC5IF2fd2pTq6dSuMmQrGPTftYiu98JYD/KH7OcVou9efyVhsZbiVj ofChMj61nuYuu+9ju6IfWq58syxOobMensxv+i6wtbJhDpsQxEdP3980dyVxP8aoQiRz GU1oL8vVSt//cdQNpe2jO233o0QJSAB5LNY7DpK6UjK9UbIM1t3vIH0zL0xZf9w1z7Gw xpXg== X-Gm-Message-State: AOJu0YwUdbExTMTizVYh/eT6y4ydueWVaG8wJzr2HiXv4pOW+v+3yEG9 bIyVzlJpSuSobwhf+TLB+b6xvDUh9Tg+dCcME6cYVVRpOhH+i2uwWTZqPsmVaO4TP/wqNuzkHzz ExxX3HJg= X-Gm-Gg: AY/fxX4HL6hYKDqWYMc4mIre/SO2BPGYkDodGZlMuKpZOGGAUMZFfRKC5+xer2ZY7vt 8FYd+FxEeE9C/iZi7hvKQ3gRsLz0If6MVOWeqFE07Q7omaWoaQMuOJa8eGZFzwSe1nfLaCM6iNh 8mOUwijzm61vnUYWHUkpRUZhachOlZ3mq3RNiDoURDDYfcvZCFZxyJrcTkZu6H4Gi6/HRsG0OyK C9aXmBEQhdGxL0ni3vijN3ui2BDTqRGOokVpWES2A+XcVA2cSrVDSaMt8j/WgNZpMVNhYmLXOJ+ exPBq8a6YaFeb8hggd40FjdaeaLvJ2AgFTI7Wyysp1oJI7XXmd4bkAXqKOZDwHsxO0D/23zCPp3 YU1DE3R7NXJIwA0nxIY2ehX55hbj+TAmaXqT4Ak2mnkZUOPpY+Fr7L3pKL9Phv2AAsLXixNVDmI BIQm9f9UpXUVGW2athmi/LattaQtPy X-Google-Smtp-Source: AGHT+IHCSITnsjTMZTWhm9D9e+os+zHXXrcJ6PalOcfXri8fwoDbHgNzERStrz11CGrh52v8Wj0R+Q== X-Received: by 2002:a17:903:17cc:b0:2a0:d629:9035 with SMTP id d9443c01a7336-2a3ee42491dmr50131785ad.3.1767850486175; Wed, 07 Jan 2026 21:34:46 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 41/50] target/arm: Drop CONFIG_ATOMIC64 tests Date: Thu, 8 Jan 2026 16:30:09 +1100 Message-ID: <20260108053018.626690-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850732530158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 2e6b149b2d..5b918aa359 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -759,20 +759,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 { @@ -800,7 +792,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 @@ -905,17 +897,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850748; cv=none; d=zohomail.com; s=zohoarc; b=Ee55J0TRij3wTfR5mJ1hTO7iA8/3ZaAALRsneixVvKOoy0n31gf1pfKYdi6dSAfU9Y8JNkymWB9NyfyE0lHnMci737Z4fIiHEzSm1e9Xw8Nxhrp77yG8KeAiiUoHEDcxsPaCnUyf30zWC3SMm0p2nYxPRxtEHH1o+tdFUI+uBMY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850748; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=j4z0oCAPZUFyYtst2gbg7Turc0axxuEQJrBWN3rdQkE=; b=hx5XUNP4hxfbCfHO0v8l218FzCdS0qDemfUaWKuzGsRT05nbAdUiJMU4+Zf4TW1tJc2//Mv7/5vCR27wd1th5SSNWY91m/FYBYMVnmIav9GkNhySfCoT4WpLA0EwInWGW+xz8ptLtLLIGIxjmQlN51bAfSSdjFLyuarlPephJs8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850748101521.9085686127275; Wed, 7 Jan 2026 21:39:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdife-0004Vk-H2; Thu, 08 Jan 2026 00:34:54 -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 1vdifb-0004PD-In for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:51 -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 1vdifZ-0005x5-LV for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:51 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2a0bb2f093aso22176795ad.3 for ; Wed, 07 Jan 2026 21:34:49 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:34:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850488; x=1768455288; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=j4z0oCAPZUFyYtst2gbg7Turc0axxuEQJrBWN3rdQkE=; b=oHD13aKSic8jlCyFCHYKq71ElRMCNIuAV5pkgUvcwALOIbFgxwe1Coq37o99u6efrj nJkujLp+eMXuCHMRdWNxs9/oFyWPAlqzyaLgKuC8SnbG5KXNyn1JI+IQUnUOURgj7468 LnfPVyp7uKVAcJAEjvbj46zNZ5Rwl4Aeg8v9/uteo+v2kYGuOLlf0PPkZyBk9lQHqYDO crNZOnQeU0xtzeZZsEofgbyLBAnrdFAHMs7f94uvVKqpJTND59edMkVuevt1cWEZY1xt yzO5AskM2+umx7P1FE/sEYCVXuydu4Rfpx6FXs/jBEehQCeuGsoiH3k9FUK0zh4Zeabc ds3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850488; x=1768455288; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=j4z0oCAPZUFyYtst2gbg7Turc0axxuEQJrBWN3rdQkE=; b=wQjV9iGRaAbpUFFHA1X/vMe6FuAq78eM+Hog9CGcIAaeJyRJHJEyITL9WuDdGaCAQ/ LeFBuNxc+xDg5/24fEfgIuiwR+72dKm7+HW3fMYO8nxT0jRtAqZpEsuKL2AQRb/wHpW/ /R0QaMB/dkyiI/0lMCXztMYyTSSqT0BdBMnyJmpow3D+CvSxIeK8B5nY4MlVDRF0pwm2 AfCSyUROPT1w7llSqE03fsSjUWc4IuZIw6Da9ij+b1XcxO4OLuaf9LVBv2g81D2AHIeq b7PNfulPYhatEUegWF1NbQZEtOqWhwS8eMAOHVgciuG1gc3vSWl+8xNeqH0XZpPE295R 9c/Q== X-Gm-Message-State: AOJu0YyZhv7hxE0QfAF9eELrqo8kb3XFy8V/LW3nP42FKcvQvUANnjx9 UDJjhqVswUIZL/sdnz9p95vetc1fG+o97wq8P/65HrSsfJlHkRl83zUb/B84xzITBYrtNxNXFUZ GaBAgZF4= X-Gm-Gg: AY/fxX6fp8tvAVi2hGAgFQ8cxee8GEf0W7tRoyHq99iHoEuGTL29d21XY9RQymwlDPH xvxkO9V0r1cP1enf/q1mZ1MNSQQ360psM3b2B7jn1tPCFei+nb6XKcENcAh5rLp4LhuEZ2PxgN5 dbNHlwBAM/LTSURqeecY64pe8+SUb0u2Xf4O7bVkw0xAHGcfLF8Myh+cicbRTGoIgbWhKtQVcjQ 9BM1HCPxzkVAHAwlQ9wQo4MSqElTQYxiQ07+3iqHE6HTkkVb+jOKwB6jED0iSD8fi1AOlyCcnET GoTAckZ7WMw37wUAio0ea75v799RwZl6XJAAoRcoBbDaXgZ/vXUuCoAJlBGTrJ/par7nfksRfZR 40N7MchoR7wa2nY/NRg9jQaeb74Tdy3e73zs5gWfDJNJhJ9RC1oIAyEwVHBahSQWQiEwyrqyS8w UKRUry5tRF9d1ayjNbug== X-Google-Smtp-Source: AGHT+IH8XIf2EA4aCTWoj8u1Pft6zHH94Qwd2u023Je9imASwmv3oHLW130a6N/BRhxB4tO16iADew== X-Received: by 2002:a17:902:ce07:b0:2a0:a92c:2cb6 with SMTP id d9443c01a7336-2a3ee4aadb3mr47496445ad.36.1767850488003; Wed, 07 Jan 2026 21:34:48 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 42/50] target/hppa: Drop CONFIG_ATOMIC64 test Date: Thu, 8 Jan 2026 16:30:10 +1100 Message-ID: <20260108053018.626690-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850748610158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 0458378abb..a0d733020f 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850740; cv=none; d=zohomail.com; s=zohoarc; b=mssOk6Z7ynl1ZLo+sSEcOe+SnAxhnqe95Sjt/56Qpn1kUZQYquNP/A95gGLgH+FUE3HgA4Xit5NI4sWcLr3IB6fSviltIbfmHqQc9tt+hfNJXXkKk9ZuN2szY2J/LIxwnUa/GcDLrXtZWmYKM/TrLlLNA85Lao5AzcwTqv4cI9k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850740; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=iPCUPgmqCPlQV857vKt3p+PMVqLWxwQcBCKjihbg3eo=; b=MSY1q0OmlS/WaEzXZ8HRRDXv50sUHlpTSVoxYaZHcL7J1IBx25LfgDo7qLX4/JaeX8KCU8DUhnXUyvWLDsj1fJH0y07xIvKPNPrjjm9x4LyziaQY0pvJnvVAEbSmmKKVqv/wyT6+OHSPNJbaXZSzy9QqzTBard+6i/gNcPNRnWM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850740925517.7748753110117; Wed, 7 Jan 2026 21:39:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdifi-0004al-Px; Thu, 08 Jan 2026 00:35:00 -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 1vdifd-0004SC-67 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:53 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vdifb-0005xP-Iu for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:52 -0500 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2a137692691so21562955ad.0 for ; Wed, 07 Jan 2026 21:34:51 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:34:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850490; x=1768455290; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=iPCUPgmqCPlQV857vKt3p+PMVqLWxwQcBCKjihbg3eo=; b=mEbB5duMqLYoefUX+m80lEYOWKTp+QLJ8O9krBcTRQP5n1PYcDWWIQdjRw3cE9h3rk yiH/B1ybR02i0N13X5ICmxFiv3XXjdbiTj6jOy9xGbXQiyrd1wz62NZXsk5LJfhEdZED tJf1e7Ekto6hKpfCPrNTEbIxkLmn23Zw7vkNMobwORQZx213Fdzwzs2NSQl7P4bTlSIj 6KPcY+p8y6cfDIrOC42pmiYhB3AXT+d43zoKOVrCuz8qU4D3XzlDy9YZpELWjPjj0jUa KnKM4TeaIkGuNexmOkwV1amg5pIWbO6T7UbttyCR+1nh+mOuJOS+o2ExCBmYYLK4+dIU m9oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850490; x=1768455290; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=iPCUPgmqCPlQV857vKt3p+PMVqLWxwQcBCKjihbg3eo=; b=rAtFcSsazQvtz39ykXv1+Dirgsc2XpkTdxqaq0ing4u+aU4P8I0+mwUs6YpSxyMOgR tXW4GogU7glikBpCUDZz3gohi54BfFVLNtVZ3sIoVMuj5jSZX2VdIYnJS98EhegC1Akn cOiebtyLJGMGmEPAYA54k1c+n4KWcRToUlMDIoQvMNf+JGFAQAg1YpEcO+RjG+/Otcts 3BhKOtUzLKewMe8PQiDvjX2nyaNzFwLH6lXD4iZzOOApCFpLw8H0/CVK1TY0sA0QSmYt QqdpSGgD/lq08+JlKwzewkA0BGQ3IdbgoC44Tnb5ZtMqxnkB89dJlGHOV7TTQ5wQVULI oVPw== X-Gm-Message-State: AOJu0Ywjn+hueLl66Tt4PRA0gNX3NXIKWMqohmnL9WNT/ETH1iyzoEaL Nut6HKZ0mTO2M3r3kN3YrDOxHA1NYENSM4ZFtBP+yu73fi3GqmejWuU+6lzfff/xJOOZgQSyRCa p3wWgiKk= X-Gm-Gg: AY/fxX60VSwsGWcKtuR0tDvLUXdReQFkk8jwNrb8tNzgBrDatY4y+oyPOyOkiu+1tom 9ER8LiSCF/Qc3pCclhUJ7P0zcrcYlBes/7g+nEZUyO3iJWtoShNpgDE8t6EC5pwt43gGZrCfCZ3 Ty0RtPK1kfIN9qorRs8tvLn8OLvQ2BgHhoeHYcIwm/BD2irFr2twS6NcZhorNdmQC5j43cwc65Q Rop1pwO5fotq0HXv7kx+SbsqFn8YZH7wf311WGiek4J3hKHrjHtccQVzAyr3oCd4yb+0MWFXLnm 9Xl5dilOrQbUHrk2zDpBJzRQEY0gCk0uwBksPmXmBtwmwMOFVftHx2yijY+h9mV2hyKztrFQ6pD AOTLERCeHEO4rEHl/IO1KSaAoJbU0uyLcWir6We25goQeXvQ2umFNMCZns7rzeiroIqfKBcOtTQ k5cqe7qbjjHDyUi1RJmA== X-Google-Smtp-Source: AGHT+IHbUBkF+rrIgYIe/bh0oGoGWNs4Rwo953FbBBm0DV3FvD0lWrhTGy9tc+Zfzr7tHj/d0Ld30A== X-Received: by 2002:a17:903:478d:b0:2a0:b438:fc15 with SMTP id d9443c01a7336-2a3ee468407mr47089545ad.11.1767850489855; Wed, 07 Jan 2026 21:34:49 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 43/50] target/m68k: Drop CONFIG_ATOMIC64 tests Date: Thu, 8 Jan 2026 16:30:11 +1100 Message-ID: <20260108053018.626690-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850742582158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 e9c20a8e03..3f1d943afe 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850547; cv=none; d=zohomail.com; s=zohoarc; b=Kt1oC569gr8njADeyni6uooE8fBm2P50m+X5UL0I0QZ4MQcSC7D/Laxl2qFJ8DOaVqlqaJsvtppulISadtHr1m5Cue0jvrSU2xIYIiSvozfoeS0BksirDKFpSxCvdTyUBiqJtE/LqkiGdf60Aj+QsBxvjUEgEr5CKI1GOxTajwo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850547; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=B/4oj2GsZJcXpd++hq5CTy6xeZctYxVL7BQLCGdqiBo=; b=R43BUYK+klcnf83YYAbWMo7cGwFIa/LPSAQy0XufaENozz3lLwtu0IsQWpoAyq02o2lCtKpQ8ZA4q+c4z1fJNVFHPwHDvLmg3yZHbP8OxXzpMQS//GPi3qs1JU2jcQ/puNLna+VZqvcAhqLIqRhZzd11Xf1nIwNq+pBYIYqJsVo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850546891179.39329337016272; Wed, 7 Jan 2026 21:35:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdifh-0004ae-Of; Thu, 08 Jan 2026 00:34:58 -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 1vdife-0004Xd-R1 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:54 -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 1vdifd-0005xr-63 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:54 -0500 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-29f0f875bc5so26868095ad.3 for ; Wed, 07 Jan 2026 21:34:52 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:34:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850492; x=1768455292; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=B/4oj2GsZJcXpd++hq5CTy6xeZctYxVL7BQLCGdqiBo=; b=IkBUakBtwY7cpt8WPKC2jOVysiAOppZIeylXQxPL0m9JfGfa1re3jL3CuamTAVwn04 HHoDHmTcLUYMkhjCwdLvl3Q3GlLz+TSPlVjCO/86N8tZtdn13L9H4FYnPvQS8OgfIsFf lp/yckwfNMPJjUKB5M9HoudUh2z7TxYnK03B5lubKyCvJ08Nh4EK7xBF/DGpmy6O1UC7 LbWCVpGhkZZhsE3rlIIFPhUhiHSPXq2QPAt0uhMfrCB9Fby/LiKqS0NR5cyIzbfbSSBW QLfGL9TBcSAR0DMwwtIK7VXRVtf7Z/SXEc8r2b/sqNmH3eoWWG6nAKcJgXejLL5Ph6be Pg9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850492; x=1768455292; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=B/4oj2GsZJcXpd++hq5CTy6xeZctYxVL7BQLCGdqiBo=; b=DrxUzg9iiN92FiQlnI5+Pm44Rv9lSdGr3bYpdwTB0oM6I/MGOecUOLPf4+Gz5XTDob XrQ3xZn4J1WWsH3vR6a9jxndLXmAIx3JE0wORWp3dprHAmv/2wY4HIaaW6XXp7ssgENL 8cdn0WW5KFLH865g6AOJEztcY1qtsxbqlaMJqeqUUJYhVenGW5VkXh1WNDj4elhNTaVZ 2tebQcHSpHpijVEODnNNx4liuDCUMU5VMmsLpb5DgHfCjYE5k+yB6ALP5Yqw18OImOA3 pG7PI2PLOKuekskNW6Px3TsyZv8ltOqp4nbDWk1ASnrGUxZrB1uSlBChUMCQvzwJUdya gOgw== X-Gm-Message-State: AOJu0YyoQ5ga/m41XimEgsN3w3dF43r2iS7i5gNJNxyzVyPDrCVip3bQ eC527gvL/7GUbhmGu4RtDQosRCXYrJffKpeRUf9g0sQsjIzNDO8jZLLSgCdrn3hWpO6zv2TX5cs JOJb3a/s= X-Gm-Gg: AY/fxX7wJ4IVV8dCMjMiCmFE79ygC1hs6huNJiNmSHgMg9O3M7FeFz8/tniIkalQmjV RMV2ykS0a79ySd857oZTKASwyG2Tdwhm3Oquei8mTECuoy97qJqXdFkIgG1UXeIlQzRdYcxrucx ZnzF/2j//V4wc5cHPXvsv1vTY5C7rLg2s7uB+EA4VDJ5CVGqECkzUNOzWMGCPRxQ7E+8KFFfHTQ lLwFFQzanAwqJqu6wt5Dk8nADvvXnVonfEaS776kbpP0IYyYxYZ/89TuN8kvapPxsy9JzwyoFRX 8WulplFd+enaQSe/913N8G1fzG/Ffe1SNx7DykVMdNXBNb3S0x7h7E7oY6rctybxyEnFOeeJp3c ZZuf9DEKbeOcygTrNj8304tpV6WgbFRBmwIq/uLFkrnY8TGkuSmXSzWj42re1JEtFwUby5jHjG4 V3iuBtRoTYX1qC5ARrBQ== X-Google-Smtp-Source: AGHT+IFKz7b4+OBxN58CQKFUVRoI1Y8+YDzwiWmWwKhx/3FJSyG4wNNZ8DQPIFXHta1IbSgy0fX18Q== X-Received: by 2002:a17:903:3508:b0:2a0:d629:903c with SMTP id d9443c01a7336-2a3ee4e8351mr48739175ad.30.1767850491666; Wed, 07 Jan 2026 21:34:51 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 44/50] target/s390x: Drop CONFIG_ATOMIC64 tests Date: Thu, 8 Jan 2026 16:30:12 +1100 Message-ID: <20260108053018.626690-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850547824158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Reviewed-by: Thomas Huth --- 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 9e5bd3ed07..cc0755c91f 100644 --- a/target/s390x/tcg/mem_helper.c +++ b/target/s390x/tcg/mem_helper.c @@ -1814,9 +1814,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); @@ -1855,12 +1853,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850658; cv=none; d=zohomail.com; s=zohoarc; b=ddanyer5uTb7S2hd1YKCDSWCLq1VwGTSqE2j7buxwRb+NsmB/HKcX+VZUvxXrvkwUboeTPgxZyajuW/jYqW0ERMtceeA7xkGMM6fcU8/ig8M50xL7kVJaEfI5+hKfgCZJepF+929iBGrE+WkWwn53E/c47Y3Ha1y0y/vpSMG7qI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850658; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=35C8bc/rqZRoKoFkJ5PyHzq4PX9ela8+R4AsFKxQvAE=; b=ixeCFesj+lFHut8GGrMQpvW5e4jZeKoVzlJfZ6pR1mIPjES146PymT0aef/1S3YdsuWs3Sc4nTR2tkIks/YrbhxZKWspqNKFUrQp8eKupNQzSIUfi2yoLUnVZLjya0k/b2air1Yj8yREHY/rPPJgnmWW1gWoDr6E/zP95Z9C1ls= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850658827963.1407401431782; Wed, 7 Jan 2026 21:37:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdift-0004lp-Ly; Thu, 08 Jan 2026 00:35:09 -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 1vdifi-0004c1-Ep for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35: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 1vdiff-0005yH-Bs for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:57 -0500 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2a0833b5aeeso31473505ad.1 for ; Wed, 07 Jan 2026 21:34:54 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:34:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850494; x=1768455294; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=35C8bc/rqZRoKoFkJ5PyHzq4PX9ela8+R4AsFKxQvAE=; b=dnebkfRMwYBrSpZf7A97R99Q9dGMUsgzsJIxbUtVJpfhbp93D/UfWtaJRapCb9BLyE cLJ6appLBeccn/Gkg8rH9aeBMFMwo4suLgebQJ4anOZ8DFxpQSmzCvTeDxPOA50oA0Og pYg+mHSMt5rnvd7UgJGzSWZ1yzdCSaFrdWHd07BzMD5hACq5XPP+/KrqDt8Z+L6KNpJg D5Pg61W5ccnlKfPFI/0KtoKgw+Q08oTqbCF1QEuMz4bKykh5LyF9wOVi299BaedI0z6E RYIs0aM4Br9/5oT2zvhxSGKjKPP1oOiMyecJcCDqGrXJ6EcquzWv9WWQLjtu2PCUJiCi pWQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850494; x=1768455294; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=35C8bc/rqZRoKoFkJ5PyHzq4PX9ela8+R4AsFKxQvAE=; b=env3huUIiKts47fg5+xm7x0PoVBzQgAErrJI5EEPunu8x2A9/rPDQfmDGgGiHJDcc8 g+avFhZiQ6c9OH3J5gpOUE3IwUG7Ta+jMHqunKJ3YJXdHzBSyHLAlaStJYCozt3+MF/J sRkdLxekkibdDv2osJr9EcbNKIjgJLC3UAUhMYvVXBdFN9caOkRr7QmsvHrNoWcCEGlJ raLRWZQRZ48/8pxaLp5GEJgCPDLxvW5U1WubrM2ooIbZNG3wLF66yFbOHi/bI/Z9epWB +P0UhjgRwQH5TMzWBApUBr5yvqxFLRTzDP8IY+GveAJgg02mh66eRukfZkEVdnemuyTv YvZw== X-Gm-Message-State: AOJu0Yxu/4Zz2lDODkXKujtqhTv7/CGVDthKunJdhEStF8OTHb0mh8kJ D2r+me1/lVaAIpaBb2wxwurzhfakkSxs9HK7wi6POkkL7iU0pOwFz5C2fW4I7mNhP7Q662LinAQ ukiZCKm8= X-Gm-Gg: AY/fxX54qn1JwNwVcxmrt000grQVcvdnCoGVuaBj4uVJWj3Opg8S3aOFLpvteu2nOCn vdBp/uSsXAF6b1cT/VhouEY2/ipMJRMxCx6/BwBitJewufWdIVfgPoozioBleM736iS8qHHKEcs hmQ/RHPKhi/JhL2PWL1zmpvCmSi/2Yl51YYZPV6E9kv+119NLBIMTNSoPe8q/dHWLAvAZRqSj31 hHGEUd5WDXGoZqTzg2v5uN+S2Irff+mQP53Dw4KQ6KLsks0HYPQEbnr0X/duF3WiJtqB82eeB8s V64OrCmi80yaQ/pgLrT7gxCf9Rlc+ZbGYxMHls+5LYYzc+KenlOR5eFm8bu4A6KymsCKP67Xf/X qLF2D+XGJNg5o/jxd/W/6xAc5ncs3XrstBM+4+Wb8Xd6DZBHxbUSolvGoGqeIOWZ82bwZ48Qk6J f3ejzaSdgDyA0jNitet50nKps4sxHz X-Google-Smtp-Source: AGHT+IGM3kPQ284eDy4Ud/h9lyw0uyVQbefl8u9JPns2AUnUbdRBBEHpuvA594kY+NKHQdyx1mp01Q== X-Received: by 2002:a17:903:11cc:b0:2a0:b62e:e012 with SMTP id d9443c01a7336-2a3ee491c36mr47144185ad.38.1767850493611; Wed, 07 Jan 2026 21:34:53 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 45/50] migration: Drop use of Stat64 Date: Thu, 8 Jan 2026 16:30:13 +1100 Message-ID: <20260108053018.626690-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850660462158500 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. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 9d1bf5d276..7d216a0449 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()) { @@ -3422,10 +3422,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 337b415889..e8a8e0fb45 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850722; cv=none; d=zohomail.com; s=zohoarc; b=MiCMDLw0YchRAGZvCO3tJ74ikXoICPDey7qDokwOloIXIWu9QaWKgb4O1VxzfjyIaq68iu5aR1xcSzGF7HFz6AH1ZLoS3pU42MAqLfdkiTiBYGVVtsjXGbfGdLugBoZPWP+ebzpoYSGZhDIlWxcRsQap9hynvRW8h9Oz78uRseE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850722; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=JH+Dy4yoeNETpN5WiSsY0opPeGAFrG8nwZJ4mKF1IoY=; b=DmusdekPWOqIYIYGTcVv0hmcaE1MqFaVKJwH1t7rL0Achirx69wOHhIZ5/VMBVqj5UfXvqBCjH9ERWleE+/UMzCn/JtJ2USIYTXhK/tVNJc32Pmag9QhCFu91LJnVaOKfqh87+XjchqaRCDeHf0P/V73W82vRnG4TZg+sR/tytY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850721989122.49578333079228; Wed, 7 Jan 2026 21:38:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdifu-0004nu-Ot; Thu, 08 Jan 2026 00: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 1vdifi-0004c9-L4 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35:00 -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 1vdifg-0005yi-VA for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:34:58 -0500 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2a0833b5aeeso31473655ad.1 for ; Wed, 07 Jan 2026 21:34:56 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:34:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850496; x=1768455296; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=JH+Dy4yoeNETpN5WiSsY0opPeGAFrG8nwZJ4mKF1IoY=; b=ly8GGS5ULuOUsaMVNElS+c5SHkKiHa9r9NINqaXUNl1s5msqmnfrrsBKgktMkfN1Sv pysZvCJaBUv3kaLNqE7XS2oygUUDJbmVG1RF5f1UffPuaYXdv2eyIkZDb1DuInpJprAq 9w7Dijk2cF3UjM64Le9sMbC5oR+EB8lJTBvRThBTuxdy3DpNf7wmuihe1meuNu8VNT9I i2igf/e+GvWWeKE9BG7Zk/hBdrDuHfDGdt4KDiN3h+tQSa6ZOGWp38BXsoLc+urtM25N LvKhhJu5PxXG7jTyLxUONa7iieQMOuq5KuDKdt4VOt+iC10pjCUxBmouco3kif0d9uVu Fhvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850496; x=1768455296; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=JH+Dy4yoeNETpN5WiSsY0opPeGAFrG8nwZJ4mKF1IoY=; b=DOJQrLZ+a3aVme51lMa41csh093Nh/3mfzCQdlvgbLVsjr/vqv6OxJaHJ+J3YzxVRu UrBQEEMijCDrGGUaDgXqwTquls97OtopJRQDD0IHdtCa/w4pjnrXqcvrGkWhvFVy0NR+ ODxY50VW19LV4sZHKyc2p91tUGaguj0YZEYe04Y6F9Lm4rtK886IOoKkRxDwZ848UcnJ 0sxsWWqCm1Nkf2c1GHeYIkcBOqUW0jrovzvg2yVBOu5GApvvNeMvK5/bHEbzAgkUDBuE 2WHggWgpaC/PXByYrphWFH5DY1iEhnWF+xSOmAIiFQzWYLA30bB4u9mkQLAiIStMEnNq QtbQ== X-Gm-Message-State: AOJu0Ywl3V4DdeLYH1YtrAoHbBc63F+Kb1Xbre8zWXkRmuaTA9E3eL5r lkXWJTgj/eGh9ghuPkMTJWyPIKIBoTcB6DNPFVm6ACW9SZgucvS+MZQ8UPQWf30ZL4Qe2G+cosX V5ekjSHs= X-Gm-Gg: AY/fxX6Z6rCP5OYKzSZlgqkj2TGdaruXlgUTs1ztRzOLUpGedTMRgUNmcj+5bPjuOjB ugzqilZQKTE+XldbWfsNWB80ELXRjefRTyDIC4HYHIiDu1w8T9SLmHn06MjAni8Yd3YKC0fCuPf Iw7ztdiCuOyPPvG9md1RfIN0zzWi9jruJ/BCrKfjPB2n2e9zC06rZEGyUS2gAk/uoPnWmtWp2jF clnTVjYeKZH65UkWuxwwPDuReX4uLRZTJkcSoZnyGZJ5hpDHMeXuUGgc9NerlOjoaBlZk/nfYoj piWPfv3izGYJf5KNhhZSe4ej1+OItRpFlx/zhV2Kec3Aahu1qIXTNv5YVD9rRUwhs1ylvrY8sEb pP+7WZDNLDixqcD1Medf1nK+Lma6WhQBVFnbDs9QfzbT6J2xwGgvE2zdyiLycctd9VUhDW7Bv+i a8qB878691EB4di891ZQ== X-Google-Smtp-Source: AGHT+IFdw/8bwv6pjDs9LnC6r/TdWiGAsnyRp6X2M39e/jmgtW1ygRMUtEGV92GaBpmNkcRULJ4Piw== X-Received: by 2002:a17:902:ce87:b0:2a0:c1f6:6bc2 with SMTP id d9443c01a7336-2a3ee4c1b37mr50973485ad.59.1767850495493; Wed, 07 Jan 2026 21:34:55 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 46/50] block: Drop use of Stat64 Date: Thu, 8 Jan 2026 16:30:14 +1100 Message-ID: <20260108053018.626690-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850724513158500 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. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850720; cv=none; d=zohomail.com; s=zohoarc; b=bk89KwzEiL535jSMqB65mhB/KB1QFgwzpcbU0MarGNKVyIu0vm4g2SjVeitC+hIsGUgebCu11FcCPx6ekSJgNUl/pNufvBUJhiGTKtvCx2wtniE8qHD72kaHQ7rbQ/mnxbYwq7cKNPZXY/V+oU373RbpVBiemc/eUvd/n+DPrBE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850720; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Qk9SB8JO0RESz19bpbP6fq/MmjYYFRiZpkdFfoU416M=; b=RidYscmGF3G0VqUQbV1xQKJccQYKeNdhZ4k6zpACFTxuUEngZbDawyQOSEOboDRXU19LtZfkIfY+aO+SF1wfCxLVSsvl1m6dkZR96FX583bSq3ngX3PDCBJkYGx92wqkYzMrn8nVbhH+5l9Itjgr3AiOSBVWgBaMXLxwuRtTyUQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 176785072020091.39160337622354; Wed, 7 Jan 2026 21:38:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdifz-0004w0-AQ; Thu, 08 Jan 2026 00: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 1vdifl-0004dp-72 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35:02 -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 1vdifj-0005zB-4Z for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35:00 -0500 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2a081c163b0so20987715ad.0 for ; Wed, 07 Jan 2026 21:34:58 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:34:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850498; x=1768455298; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Qk9SB8JO0RESz19bpbP6fq/MmjYYFRiZpkdFfoU416M=; b=psF6Mp1/TlM00DC2nIr+lhHzycIk3cOmOgM81JVpaOsNc58qe+IVWrNldb4ig97uyO 60vEsmyimvyDO5LqjXrp43lI4AoRMdmG0fwkP4Nxd/H2PH3dAcMMSPk48F4xYM6PeVqc 1Dujk1E+glMQZmHIBqOYjlVDtwGo/Kr5F0pv2k4tE2dkLrYt110vjiRDShjuOGMUWQaH 5hkwc/fEotoqR9RWQSpF9n1LU8VGolm9LAluUxXxDe6A2KOFLKWVqUNKMzYuJpSZjVkC QRgcnq+soTC4/Td4TckXI2Z4ZheXnIdzOYriKEaP1VePDk0EkUDqqPcCC2476S4ng7mn N+Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850498; x=1768455298; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Qk9SB8JO0RESz19bpbP6fq/MmjYYFRiZpkdFfoU416M=; b=OWkL9JwUhDRCaC7nl5c6U6L5k/H0pp1vG56MmGFsDgz78OWGARxsEGfBXLeoQBwap2 I6akWNqbXuKWsQGxd24jhhow8qesZc9ErTYpb8l1EJWOmxsbF/xQ6h3xE2FH0CYpdJCh rMwAmJbpwBOrRpLhOmXpwuHPs2OEMjOnNWemxY7krykNDefl+BwYx2PtroURo2qgNXJc vab9oNHMx5lsLdysAsxNA8hohtAaTZGxgllC86qz9P7QwGFcA5pCF9oYgpU0HwOO/yw3 PuMzwiKzHf4suCipWoEKr3qGYxIUJQifJ0v+ZhZvA1TJOVTedOk1va2BKTaq5Q5lU7M7 JcFA== X-Gm-Message-State: AOJu0Yz1RBHUFhX50ERA9zgny9pGKeHHYaDjuj+eTsubZvK67QJK1mjP fobLs4tGsVmiImXBrSbq5PfciK5UcaqilOdzecXiE3Huj3LE7ChL5lXG8HwAxCmt3zvWmiXD4Cr hrsH7VqQ= X-Gm-Gg: AY/fxX7QXtDJGxnBjr5KOcHYT7iYFXdjgNX80KZmL2AA70khdKlL9RHHwhW7B3532yc 6j+IOWheRv9RH9JcC+g+qZGeBn6e+Sa7UYuWHgtaObE5bkiL2+I8Iqi7c25AAo2XU36ZRvWk0a3 m9T3yr8X4oNlIlHIP9WMeAOppsMEr75BqL71+A+ow9LozixGOrsg1uTkqxL48YOc4Qakp5KmgPm dS8fokxVx810Pr1bo8UXxXHhittGe2Lyj0dmN3qy34/6zT9gRtoxcQ6WH+7HOQED7vKIFFWo06f eFGDay+Vrt8r1hRDWvzxYixf8iq05Odzq6xQcHaMfp+7iZpozC6K8n3Qlb46y1OVNh/sipTHbNZ Z7/oh20BiNtPlecwK4Hbqs3MqwdB0yjd2HjF2yKl7CcWvG11TwFdkguxUC4lSpalPjdKi3+Bbzd fK1AIDsscYhTRCpIjhyw== X-Google-Smtp-Source: AGHT+IHAtWA2Gruc/a1XGawTBLRjdqrMwNA9zh3/fKUrqCgqi18G7dbc2ARAUytCMYaiAOryhCJEyw== X-Received: by 2002:a17:903:13c6:b0:2a3:bf5f:936b with SMTP id d9443c01a7336-2a3ee43639fmr40738235ad.26.1767850497358; Wed, 07 Jan 2026 21:34:57 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 47/50] util: Remove stats64 Date: Thu, 8 Jan 2026 16:30:15 +1100 Message-ID: <20260108053018.626690-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850720635158500 Content-Type: text/plain; charset="utf-8" This API is no longer used. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850734; cv=none; d=zohomail.com; s=zohoarc; b=KJbxDeCpIAQGEev9tu01x0rH/1XrFnnKeJFe7eFHbIgSFF/Qy5MuQYI+UDLq2YPK+BghPO/79OMi6IGZCXirf4aiLJTMO9nXtFHLCH1hC6NbIVmZTVWJczx9wQ6/WhqY438ARv69rwET1GIau3Hmyy5W5pNSB6v/JT9nVDqob88= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850734; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=v2qu161usDgTbexXzzoRx8DVaGsr+BfbZP1SAOgGMrw=; b=FddZpiYu9f47Q97FwlPYG2id5P/074ES/EBVwSpqrfxQqftvLYbiSSYqpc94MAc+rVjn+nMEZILliHPyfp/217C1Wi6m9qtUjJYGCSIJKbkzsvRQzzXPMSuaBUcDsfLKKYzQ66+KSXwYQ+OoCi5JxmYFrO04W53vegAXws5Saa0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850734565864.5509148824515; Wed, 7 Jan 2026 21:38:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdig1-000509-VD; Thu, 08 Jan 2026 00:35:18 -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 1vdifn-0004eI-1s for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35:06 -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 1vdifk-0005zW-KX for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35:02 -0500 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2a09757004cso28229895ad.3 for ; Wed, 07 Jan 2026 21:35:00 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:34:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850499; x=1768455299; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=v2qu161usDgTbexXzzoRx8DVaGsr+BfbZP1SAOgGMrw=; b=o8GgIRGhsAuMDzZH5oXTlIqHkDRopXA8dT7f8W52fPPV0YAQAg64kFNDX+l6Bs17UQ fZa/Rb+xVz8+Xc43edBZwczNcwKGO6TvR0SbDjZXsM1uNcOFaGVorpvAU8oi3aF5WQop r8JgKceLimwE2ybSR8SmbhmZmIo1TYDGhb/DCZsELH26srvmBLVQaqHxAsKRp+yN+6gJ hlRDMnlZNzmuA7YS7zxl7uXmBoCFBebaIieR4JZPXXC0pvd6XEJHYypz0tKSfOLv4Qep dESwWkWpWYS2/bKQOfbVbnLAzMGe27kx6AVT6P4Mb0cLm09Uo9NnoyjvBDRXKtA//z6B rgCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850499; x=1768455299; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=v2qu161usDgTbexXzzoRx8DVaGsr+BfbZP1SAOgGMrw=; b=VWxVCyVdMqONwwkZnkvTSlSo3H22M1FcdsN5HJGS0JbokJmgg9WS0cr3URqmopn2O/ 97Hm51F8+zipTe1dHE8SOKEFO7MTPmBEP9Qls6wJA/Eeu18RR8eom/aU8gZnKuiypcuK Nyta3H2TJOWVHzBbRHycZhhVUgoENBHYRuf5Xb3iKvmBVzfCZhOGFSf/gVIP7NmkKGsK eENATkxD01NBwXyW/Ul1d5EFVxyIBUZaXfIWxCVa4MjdT+/O2vid0Jvwa3ocEfijkPtd rCdKQBwHYi51iM3nBnB3n7k16E25KOm1YLP+IOWzwBGnLvkWQc4/NiQVA18gFd7/6WWz G/Lw== X-Gm-Message-State: AOJu0Yx4japg+E92/p0LwuxAomFPXOniV1ZlYRhgkXrS7ceIPXNFsvzf X4JnFxm27likMPa5+GeilW7a1OpWzor/XjmnfsMiz5OnyN0nFthDzQKtex3Tym1Y3/6F9U9Xcbg CXgTpEac= X-Gm-Gg: AY/fxX5EdC7BhBuOjGsekBjBphGzPlmjMmyP6UafjVhhK7qJbOjF9oWKuXY2wxrhd50 oLjybIk9JEYs7KY2tJG8JdJ4IUg1pOfuzSsV32W3L4uR5CGdX4xc8ZMRQCnjDf4oG0tot5n9i8a kbX9N7YW6KiXsXPPIWcS+0PaIFlBmpkIPGWHwIpXcFj3ZIJGBck5mMOT+eH01errB9lUQ6SG74o ZmrqkqrhBttZcuAKHasyQbIHEw0gEIXeTmyhwHhGCVhSwcrHdkzhuvcbeZkMakbK3nD4Pahk9t9 7C3oYDx0rPH651meW8Rycgqc0nx2i94Tdg0XHqfSyc3IIJk31tcnzxtExxHX5QdJt6YCwlJTjIo cJxy4kcJkRtBeB0E40kJhCySIBNWu2xNqpsqHsi952c02IhPuKTNBQf4D2L6jORAdTK6HUfl5po cfXiJZnM4mQLLwndRpUQ== X-Google-Smtp-Source: AGHT+IEjhhcXCfRKYp4tjot8fXuUcTjUQ0Evmq1mGqLOFjz1f8u/vbsmJvXNN88vDLtlxq57ukgQGQ== X-Received: by 2002:a17:902:ce88:b0:298:6a79:397b with SMTP id d9443c01a7336-2a3ee4b8d62mr43844505ad.56.1767850499204; Wed, 07 Jan 2026 21:34:59 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 48/50] include/qemu/atomic: Drop qatomic_{read,set}_[iu]64 Date: Thu, 8 Jan 2026 16:30:16 +1100 Message-ID: <20260108053018.626690-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850736658158500 Content-Type: text/plain; charset="utf-8" Replace all uses with the normal qatomic_{read,set}. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- 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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850752; cv=none; d=zohomail.com; s=zohoarc; b=oGHewgl5cxHrb/W264GIpsLv8gk6Srzw85YwHZW6skSpVvyl6PvZynpK0VtuUTRIGjUN5Nw5Fp7vyy4yMtklugbOz2ymOI3T2cLQvjPMd1394z/TU5B6XD5hR/CijQZ03cD/3OMetrbbZ91yygX0f6FkywoCmSRRFTYMe7bfQOc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850752; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Xf07gkf8loieydewrSi0TqozzzvAcAiesckod9deXKk=; b=Wk1nhHlp2h8rMizyokk4uqRAsXvmYMskwsW/9/nG4UX+lENNCzWrnDKVMkXvEcMTchs52K/LqfwF+9Q2scZFaD8nbqi4U51erMZRVeaPU8QpgUTnYq4iivn8Kz616yHXmJwn8NiniYUEb7huB074SLWw3FBvlHaELY1+SK3wEAk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850752984181.53222156022537; Wed, 7 Jan 2026 21:39:12 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdifv-0004oE-4r; Thu, 08 Jan 2026 00:35:11 -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 1vdifo-0004gP-Dj for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35:06 -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 1vdifm-0005zt-HL for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35:03 -0500 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2a0bb2f093aso22177785ad.3 for ; Wed, 07 Jan 2026 21:35:02 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.34.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:35:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850501; x=1768455301; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Xf07gkf8loieydewrSi0TqozzzvAcAiesckod9deXKk=; b=lLnKQyIn0C8n1AbIn9jztKgU1D3QYc2vyJxAk75qQqYZ1nTmMjF9u7ROZKWbj0zlOV UQY+qqXhrtLA1qPIm+WeNkiP03feixbjVEeLgb1m/lnJjADiHNLMc1nXJCniQ7YlfT4V Nfy6d+K1n9ZgcdTaOOmXh7Rm4EDPtH8kU7mtqakQgZXo3O3t/XcOEycm1EjCo9PD1fgY 7QSyljFvJob1UoigiglpaIcJD8mArKm6rlKPjbbDbsoZUkM9YASQm+atsu7ahyQmcdne Wmu7aQlglt5KEB0ckBF3GiaPrawftey5hLS6htGtdINZCEuMDWO0xdZEe2zEdpYTVnib FPiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850501; x=1768455301; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Xf07gkf8loieydewrSi0TqozzzvAcAiesckod9deXKk=; b=dQ+xet85fB/7gHcvYYVW4zpf1LqU/TkGOiHE5IZxuaCv1Mj+PHw7iFOu/mA/s1Udl2 wvRhxTuk0AVAAzI87paYNdMc9ZOfYqiA8J8DPfZIwcd3q6IJZZgCl82Luy/isfQuBPJy u5j6D8fOBVv1X/9aeUEJVdNWG4UsyHAdTKKdEoqvp+PXyN67XwpCI4k4p/6DvSjENfXw kaOtTnm+FrRCYAjlxAnj193yGKiexUCcVC7TGX/FeIZQ8fRYQdEpZwnzhNtETiIFpwiM lYjGCuMFibP6692u/Iok100KNgmo9nrzOYajKZ+UNz+a1E1dSezt12bzt9heSl0o6Zyx T1bQ== X-Gm-Message-State: AOJu0YwvVdT8DanF27MwUudaZDjPL324Q8lyY5RqQgeb+lOg9oPgF0eI 9xEODDsdUxMfp9nofCIVYTKXoBBrg/4/rVWyhXmplWyAaPPpoMksfAbUS88GJjwyrYEATYS3Qs1 NTpXyZSc= X-Gm-Gg: AY/fxX5axCXt2OLaK0qyfNqMlQ2vJp5TKoLsPA+4RlbH/v1uoByTUMFCNZERW2rgKYl cisUPWlnVI5oOjdvP10U8+L/7jNjKA3ZWIczDKhAaKu6UkN9xGQGcwZxbtHb5JeKvE8GQi71zVu ysasUVXHwsDSeKt0j7P9tXtMmkXavGVn974fyeKhRLmTKBnS9EdSOp1WuFjskAQd0w1mRKKgqOI hnYUFxsHNRvKnLWdKwRjaCJqNMOq3BXXAkQBwURBYEBuJUTKKitl1bVGpj0gLSrc19cycLsANUE g811fiQOcDjjPTPndovtrimCUZPE36DkWUrgiqFDYy+80tFcOTPpP2q8zv2HJ2FVbB26hSXz2BC DjJgP9obj7OAN8glHcYU6IBnO3PigzcmaqK38QzFOrplzcoREeIBrXOUgBaqn9XvN0Q8WHA0fCv v7tseb7xrclRz3k0YmbQ== X-Google-Smtp-Source: AGHT+IH0zhxy2vuwMe0T6+3rs848ckRiWTFrKDOI6/PzJgqkRTPJTulVxa4pq3uzi2BDvFs7QMB4uA== X-Received: by 2002:a17:902:db11:b0:2a3:bf5f:926b with SMTP id d9443c01a7336-2a3ee4c2efbmr50621915ad.47.1767850501019; Wed, 07 Jan 2026 21:35:01 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 49/50] meson: Remove CONFIG_ATOMIC64 Date: Thu, 8 Jan 2026 16:30:17 +1100 Message-ID: <20260108053018.626690-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850754611158500 Content-Type: text/plain; charset="utf-8" This config is no longer used. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- meson.build | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/meson.build b/meson.build index a18b3a5657..86c9cf7a91 100644 --- a/meson.build +++ b/meson.build @@ -2930,22 +2930,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 Sat Jan 10 10:56:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1767850734; cv=none; d=zohomail.com; s=zohoarc; b=eJHO1AMzLeSFuIIsLtfVBsL8/VYrDgncfvAozPQod+FrHs0t3zFmDpuyA0N6H/eW5xQfrm/n2yd3FlB3TUsBEdgUsZaJ1LSe37UPoM5O9yqd53RFr3HEEhpuAbu42rrCmUWFxHgEsspSzWFYPvSSAB2VtLRlKYx+0MEM9TKnNk0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767850734; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=oweSE2rXvT6cBDGVwVx2qlRDFoW9DPuOJraIiqRFGOc=; b=V499Vhn63j4weK5LZyqSDPF/XV0mXES/7jWF5m9CcR3xXuhM1WPhVGApJS3sTTq3kDXt4GtdaGjtyAcNpM2b7cuPoLXUPq3x7Y4Fs/UPvhSQ5EfswSssOC1qCFOBXMMv/pBX/K/scjdkhFNgQRy0gTqUXSL48mXZktyyOMlJnBo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as 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 1767850734265779.2553460252678; Wed, 7 Jan 2026 21:38:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vdifx-0004se-ER; Thu, 08 Jan 2026 00:35:13 -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 1vdifp-0004jM-Ub for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35:08 -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 1vdifo-00062G-F2 for qemu-devel@nongnu.org; Thu, 08 Jan 2026 00:35:05 -0500 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2a0d5c365ceso21862105ad.3 for ; Wed, 07 Jan 2026 21:35:04 -0800 (PST) Received: from stoup.. ([180.233.125.201]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cb2d93sm66341465ad.63.2026.01.07.21.35.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Jan 2026 21:35:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767850503; x=1768455303; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=oweSE2rXvT6cBDGVwVx2qlRDFoW9DPuOJraIiqRFGOc=; b=rzSCfJiLMnRXI0nVSRaIDb1KYb6ArdwZorWFO/Eb0NPVa3JRVRtUsE4rUS4RbBJCiF 53jTyoVXH0B4M29iT/gEHkKCj9rdGq3XM0OonyqjV0dz4GKIX3qgPAeZPuy6nxWqG6mn mD8ZjgIT7H//4km7koOu1d5aa1Z7gf2TrO8X9CEl+9jzB1YDsSc/P56j6P5gtXz/U5CC LZ4fzh3DwG3n7Q/RHnpeGIejxD5iV8I0VB2E0S9wXI9NJsrc9Nb8PFdgKeq4+8xjS4dq JOiWAYJWpKsG6OXttmge1cxHjGuXiJpNX2rDk6IunCVP0tpyjRs/WCLNegoml4gs3iZW JdcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767850503; x=1768455303; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oweSE2rXvT6cBDGVwVx2qlRDFoW9DPuOJraIiqRFGOc=; b=UABfvm0x1zCGh96WTS/Pwet5G1Uk4EB0I5PUgGPCQYmok3oI2JOmTnEGbJDoUp38vb 7Wqmf4bBeMk6d8q4rW++WqcYxzF7DyTgHSNY8PU738drY/Gsc3EYe/IZJ5LsybzXnVwg rROe2FfnRH8eJ8BXxKS2yYMB5Akw26efF3W0m2QK+mB3t23JivXVrQCke3uDt+PTf/e/ pblPZtsq38x0BjCaD6kTOzQrs+Ar7yiWChFQWOP/bsFkW/HsBIkAGM3EUtqH006lfKkM K2VIaSp3WweYaTATEdirmuToNykR49mf65N+QIgacqYhGv4meyHRmVgl2wrpHKYXBkJb wyEQ== X-Gm-Message-State: AOJu0YwsLtpCm5fM+k5YXBe9DB/5p9ItKD2QkgRKH8b+Jvedb3JhVJa8 BYRffo6HIEROQIOabXR3QvoWRtZfWXAh3agDYGHTbChVxpmDYK2gXuNS/xCihkWy2P5gevHGHOm 9dN+yldE= X-Gm-Gg: AY/fxX79AFlM8JwhJBs05sy7x++iXlTptJlIdEnZvL8V5Rt98lP6rUy+4+R6qdTwGwu SfobQjwxolJ/ZiKKzY2iawNMTD2rXuLp6jVB6WboIWEm00csFsSt8G/bXbXVnDo6b+aCZQjQ7vn a3ohGwxrIcLuD8NFtEH3D7g2lJTZjhrijmF8gKYbQOlCfbQ5ZLmnRoLo+z6SjgpDFFZw1jD4BJU fPqhCYPW+4ZGPuEMoOrbBwu9QUV5TM1Ywr4981LyaAREvgkqSGW10CSjLiU86HNp4v0W2E3E2HK qdYFd61XI+e7flWY1z5XfAL6GkgEddPBOfx+TV2pkSDACbsxMhmQ6iGPODKXitzynabDOs1Yy5k 8oWwE+dIdPnUpCaeAWrtEz9p7wyVreHWPcA2IDankfjGsvgjZKUX98HAeyVW7KY3wQM5lXOV7Ux X4XTUWwiQHzcNRLu0DNg== X-Google-Smtp-Source: AGHT+IFaBxbolWsPdYzj+gSFLP+MPtKFDVzH4c8S8w3UTbRQvOqErMSyfOcW+xixRRnKL0pgRJADhQ== X-Received: by 2002:a17:903:3545:b0:2a0:be7d:6501 with SMTP id d9443c01a7336-2a3ee45b7bamr41550345ad.27.1767850502791; Wed, 07 Jan 2026 21:35:02 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 50/50] include/qemu/atomic: Drop aligned_{u}int64_t Date: Thu, 8 Jan 2026 16:30:18 +1100 Message-ID: <20260108053018.626690-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260108053018.626690-1-richard.henderson@linaro.org> References: <20260108053018.626690-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1767850734617158500 Content-Type: text/plain; charset="utf-8" As we no longer support i386 as a host architecture, this abstraction is no longer required. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier --- 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