From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372838; cv=none; d=zohomail.com; s=zohoarc; b=FEXN5FvZXN5WWz1bWJwmpE/iUkJsY8eLPy1439hWnM8ucKEFqrLiY7fy5GQUn8jP9zXu299ywdBbb3vVUAbW6Zn3/ncox5MKWd9ZKkBQTCbeyr3lK6JbHHTkVp7aTREbsZB25nIRP2JngCwAYScmqElkxEWc2inEXqq1ClmQWrI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372838; 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=6jBtFYWwdIR8B69gtY/Q+wADcN5do127ZO/G3eZnzAQ=; b=epcjwR/xez/8De/ALanrS6U69a3CU3qlcUbkdtlAXxb/2g3+FML+qvjFX4mp/61oaJ2ZIYpimu9R2uDqS3/ReIjpizxZbu/f73yrZxAMiCPmbaMXqCV/6KntVWcl5MRsccvdcTO4P6qU/kYW5xJWr0atkpwDd4l86ZUA1NGVhLM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176537283860319.150892381571794; Wed, 10 Dec 2025 05:20:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4E-0004oW-S7; Wed, 10 Dec 2025 08:17: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 1vTK42-0004lt-0B for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:07 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK3y-0002xX-53 for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:05 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-621-4Yw7rOD0OpmXr2uiWTcM1A-1; Wed, 10 Dec 2025 08:16:59 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-42e2e3c2cccso5060653f8f.3 for ; Wed, 10 Dec 2025 05:16:58 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7d352a52sm38531284f8f.38.2025.12.10.05.16.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:16:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372620; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6jBtFYWwdIR8B69gtY/Q+wADcN5do127ZO/G3eZnzAQ=; b=BiSRCmPOOdl4YTZ5o4W10uMLTPWf1CWhi8J4S8KTrP0zBK0rlnnRZku6iqpvCee7ANjwPh nKe6wQPo2YCdW7CVKVPaC2Dx8zsJwm1MMd6KggtIMVU7Tq3TK+wd/D855tmvba3u+upSh1 jJhRpxpMloTBHZqSMALTlsLWWG0GMU4= X-MC-Unique: 4Yw7rOD0OpmXr2uiWTcM1A-1 X-Mimecast-MFC-AGG-ID: 4Yw7rOD0OpmXr2uiWTcM1A_1765372618 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372617; x=1765977417; 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=6jBtFYWwdIR8B69gtY/Q+wADcN5do127ZO/G3eZnzAQ=; b=EoP3+rp+BKk0BfB4FNqUgkB+ARfPlXNDwVDZfnDwa4R8GNQSJEYxOY8G6ZnT/c7knw ltoLJZ4znwXFjxJpyFgB8JgvgCRYH/2wwMP0ZHHzcLM2so+qyrwZVbOvt+TXv4VmRTtJ DMyFoq60R5po9XRQ5SxPnveVab/wqT+tLRg2DgWqQFM1dHf0agmPVVeWIEaamYN/wHh5 VxQsLylhdZoC+84NhM/GHHgvAWjXpbJAzFqDDhK3r0OCJfoJNELxkrHxiIcbl2jecCpW t4wISW7aKSi9FHl7RR8N+n+A3j50oL7eZOXrYFEXxIoOEHQ681dL//jiHnndUvEo916s uqlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372617; x=1765977417; 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=6jBtFYWwdIR8B69gtY/Q+wADcN5do127ZO/G3eZnzAQ=; b=l47QelvMdMqsLM2pJJUGKtlTEQ6iqjagzrzpiVZy1IiWE+hmr9w7Ivs+CBIeYj3C3q NszY5gjsFtY7OIbS2m4S8ux2O+o2gqz/vfJkgAJ9S2XhDnPcd3tPQz5+xeLKcX6w+1l2 qgtVfgKi6EiYZENtvvSvp5OdaYv3VikppY8Dki6txeGty1nIsaUPfeQUwI2KiFjkHZJZ dO9hQ5qlw/9JwUxAOlBk40GnfETz82JeesVSvWfH+7x89X3TI//cuB3xvsjRtqRn5xVx 1Tk4yvA7yHroKVAq81BjXslTUInmDWkFPBkYynhY7taXDxshJej3EldRfNI3jJ5oxAR7 575Q== X-Gm-Message-State: AOJu0YzbLF7Sr4CtgEh8XL4z6kITJrDedARGyIC96lDiXsQS93XMOtF3 lfc+gMoox7XmrfQE/re3Cj5fqj0Zs78l/gwQkJ3Rd4LMbK/wZS6/6taVpJ8AlIkupOYGoP7VZe+ MsEKIOKOSasR2cwsTawJMvnVtWvMjV3f7G2yP5MECbv/bQ0EiiIUxW4pT2HioEepuIVDEV7wvlh ODFvITnBR96OjrgYvHlkzJCPfvluzAJWxgxUm/sbfu X-Gm-Gg: AY/fxX7hDB7PZgMweaV3siyZoB22dMxlm/dA77YHsVcGb7eAUqkXp+trliSFZsPgwi1 zl1rEpfFRMGCTOs/QCnZKxr0d5wVmoOIslGVc6aitfdKsLIsTEO6s/c/VuxjsZEWY4uOV1LPBkz 94DAoD8xAvOZPxpjNDNxm1luvcjGSkUfMooUmtJSxK5s3lqlku2iY6ZLQ+WIiD8sTwo4nkx4V9k ARtYJG+ejtg3T/CQmhNzwliAYTKzAmDWTCh8ONQtx5oQwAAwlCQTX43gaJINjpseB/sPPRICmlY FBCaCXOS/MQy1M8yMknm1kDUw6k9LEMCR5s4Ft0ZeU+vKK+H7impRi2NLMUM/ScJFAae/9YHErs j+wJBKzKNx8gynfHwmFdl1q+fGil6ax3/fjb0NzfxISSNwb2KGuCbn3J9Ra+t5orqm+twymr08L eMtJ2MilUGNAJhoHk= X-Received: by 2002:a05:6000:2681:b0:42b:3592:1bbd with SMTP id ffacd0b85a97d-42fa3b01833mr2554515f8f.33.1765372616661; Wed, 10 Dec 2025 05:16:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IHbGGucd7hsJVDgYg8QHJJt4D+DnO+e1hdzwo1iqeAfjMbXjAXPZKkNDNNUwr4QrrHdOFCdiA== X-Received: by 2002:a05:6000:2681:b0:42b:3592:1bbd with SMTP id ffacd0b85a97d-42fa3b01833mr2554483f8f.33.1765372616127; Wed, 10 Dec 2025 05:16:56 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org Subject: [PATCH 01/18] target/i386/tcg: fix check for invalid VSIB instruction Date: Wed, 10 Dec 2025 14:16:36 +0100 Message-ID: <20251210131653.852163-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @redhat.com) X-ZM-MESSAGEID: 1765372839499158500 Content-Type: text/plain; charset="utf-8" VSIB instructions (VEX class 12) must not have an address prefix. Checking s->aflag =3D=3D MO_16 is not enough because in 64-bit mode the address prefix changes aflag to MO_32. Add a specific check bit instead. Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini --- target/i386/tcg/decode-new.h | 3 +++ target/i386/tcg/decode-new.c.inc | 27 +++++++++++++-------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/target/i386/tcg/decode-new.h b/target/i386/tcg/decode-new.h index 7f23d373ea7..38882b5c6ab 100644 --- a/target/i386/tcg/decode-new.h +++ b/target/i386/tcg/decode-new.h @@ -181,6 +181,9 @@ typedef enum X86InsnCheck { /* Vendor-specific checks for Intel/AMD differences */ X86_CHECK_i64_amd =3D 2048, X86_CHECK_o64_intel =3D 4096, + + /* No 0x67 prefix allowed */ + X86_CHECK_no_adr =3D 8192, } X86InsnCheck; =20 typedef enum X86InsnSpecial { diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index 0f8c5d16938..0b85b0f6513 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -623,10 +623,10 @@ static const X86OpEntry opcodes_0F38_00toEF[240] =3D { [0x46] =3D X86_OP_ENTRY3(VPSRAV, V,x, H,x, W,x, vex6 chk(= W0) cpuid(AVX2) p_66), [0x47] =3D X86_OP_ENTRY3(VPSLLV, V,x, H,x, W,x, vex6 cpui= d(AVX2) p_66), =20 - [0x90] =3D X86_OP_ENTRY3(VPGATHERD, V,x, H,x, M,d, vex12 cpuid(AVX2= ) p_66), /* vpgatherdd/q */ - [0x91] =3D X86_OP_ENTRY3(VPGATHERQ, V,x, H,x, M,q, vex12 cpuid(AVX2= ) p_66), /* vpgatherqd/q */ - [0x92] =3D X86_OP_ENTRY3(VPGATHERD, V,x, H,x, M,d, vex12 cpuid(AVX2= ) p_66), /* vgatherdps/d */ - [0x93] =3D X86_OP_ENTRY3(VPGATHERQ, V,x, H,x, M,q, vex12 cpuid(AVX2= ) p_66), /* vgatherqps/d */ + [0x90] =3D X86_OP_ENTRY3(VPGATHERD, V,x, H,x, M,d, vex12 chk(no_adr= ) cpuid(AVX2) p_66), /* vpgatherdd/q */ + [0x91] =3D X86_OP_ENTRY3(VPGATHERQ, V,x, H,x, M,q, vex12 chk(no_adr= ) cpuid(AVX2) p_66), /* vpgatherqd/q */ + [0x92] =3D X86_OP_ENTRY3(VPGATHERD, V,x, H,x, M,d, vex12 chk(no_adr= ) cpuid(AVX2) p_66), /* vgatherdps/d */ + [0x93] =3D X86_OP_ENTRY3(VPGATHERQ, V,x, H,x, M,q, vex12 chk(no_adr= ) cpuid(AVX2) p_66), /* vgatherqps/d */ =20 /* Should be exception type 2 but they do not have legacy SSE equivale= nts? */ [0x96] =3D X86_OP_ENTRY3(VFMADDSUB132Px, V,x, H,x, W,x, vex6 cpuid(F= MA) p_66), @@ -2435,8 +2435,8 @@ static bool validate_vex(DisasContext *s, X86DecodedI= nsn *decode) break; case 12: /* Must have a VSIB byte and no address prefix. */ - assert(s->has_modrm); - if ((s->modrm & 7) !=3D 4 || s->aflag =3D=3D MO_16) { + assert(s->has_modrm && (decode->e.check & X86_CHECK_no_adr)); + if ((s->modrm & 7) !=3D 4) { goto illegal; } =20 @@ -2740,15 +2740,14 @@ static void disas_insn(DisasContext *s, CPUState *c= pu) goto illegal_op; } } - if (decode.e.check & X86_CHECK_prot_or_vm86) { - if (!PE(s)) { - goto illegal_op; - } + if ((decode.e.check & X86_CHECK_prot_or_vm86) && !PE(s)) { + goto illegal_op; } - if (decode.e.check & X86_CHECK_no_vm86) { - if (VM86(s)) { - goto illegal_op; - } + if ((decode.e.check & X86_CHECK_no_vm86) && VM86(s)) { + goto illegal_op; + } + if ((decode.e.check & X86_CHECK_no_adr) && (s->prefix & PREFIX_ADR= )) { + goto illegal_op; } } =20 --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372666; cv=none; d=zohomail.com; s=zohoarc; b=WHjSrb2BRfgebNGN/wwWZ04WGnPOuSOIvfiLnIX0o+H+6J6+xRoWyTLzJmurCdQHhrJc7G5Ab+wz/SmtAhqT/jl3h4yebnqfmsW6pBDqppIW33gKqhww48aLffHHvCfBbyMNzPiJNkO5xqIJ+xXOkCUsQC6OTwMrsZLjia7GkoU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372666; 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=EOEA4Cf29Q+xGQvjsNLZGJMDbKafwDbOsr1rji9RRPQ=; b=lc7DfydU5mWsMUxlAt1ybNj8KRGw3TdJoQAF9F3d5C9iyOZYI4qKvaqm25mPr3sJCvOASWsFjut/TQYK7zHarxwS2PtTwNjZXxPNwvSi9fTYNeG/Nj26SoaoYsGSpZ3hylaDrxxxVEnA/PSq24rnmZP73/b9+rRACgibcRerT+Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372666432700.9873027162114; Wed, 10 Dec 2025 05:17:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4B-0004nX-VX; Wed, 10 Dec 2025 08:17: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 1vTK41-0004ls-Vh for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:07 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK3z-0002xz-Kh for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:05 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-167-LMiMYf7rOdiyTCdKJbOSow-1; Wed, 10 Dec 2025 08:17:01 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-42e2e3c3e1aso3355392f8f.1 for ; Wed, 10 Dec 2025 05:17:00 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7cbe90fdsm36370678f8f.3.2025.12.10.05.16.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:16:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372622; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EOEA4Cf29Q+xGQvjsNLZGJMDbKafwDbOsr1rji9RRPQ=; b=h8P/c4tpesXPhLHq3COUK5t5mE6pncptdcgj2jkgSR7ubx8vBOtsrRVppc3g3EtQIrvmtq 0LNBtRnPCPLtstuHO3YmtVAadxDlCr93Ag+bYEwJDpT98Oi4fTQQvziNZ36afWJeCR2sX4 4HbeiEh9jN7sJ2iAtNjysPdaP1Pr3vw= X-MC-Unique: LMiMYf7rOdiyTCdKJbOSow-1 X-Mimecast-MFC-AGG-ID: LMiMYf7rOdiyTCdKJbOSow_1765372620 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372619; x=1765977419; 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=EOEA4Cf29Q+xGQvjsNLZGJMDbKafwDbOsr1rji9RRPQ=; b=kZfKZW6aFryOsHABxHB9VOKa+lNEqk4Ljb1AWNFySyqkH28aUQsAkaJ4gQQRA2RbnC MG7+AleakSlkkfh+qHS1ESTwR6F+6wFNUNrOFBKA8ebhQO2xoTWGeGLfehgo+OSoLQ2N 4KvHSj1UP0DGoB+ASTYiI17N4hHfEUGObk/yuH57jM7wzLE7vmdSwoQoWnDieJSg7EmD +boQDX/M9+gs6ke3qfk1ljlq8uuH4p2uSMgXG5s2mRgDbJAyvc3o02YhfvFGe+z+iiV1 cGW2WBtmy2G6i9RGEwEntU9wrLZSMWPVoQrP5OZunj2LBnzjuUaemRNbQuu2N9U+m9HA HWRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372619; x=1765977419; 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=EOEA4Cf29Q+xGQvjsNLZGJMDbKafwDbOsr1rji9RRPQ=; b=kFn8GbIYOxm3Chpdn+HTkF8hkBfYT2hiVPb93LyclIwl70E8/H/PkKYiu8wiuD+VET jNlqANR8Vt8jCM+btr7ZYqULJl3hAY5G2iEWtFeylQ+dW3f5K0i02+tw+MKIvt+/SCzz kwr9XFcW+CQyOzzgxQ2UYHzOTZJEYdA70YTsTzEUrdoOQMG8F/vCyKQXrNw/0+i0wu0c VQG1THYHJ3A6rP8trWh39vpAYpDAnS+0H3FV8MfCRKX5xUBx7kFWYlzuZqvB/U8Vdfyq EjQ2CfmU+VETK76rhdpfndniFL488duCypsxnxbysnsywrgyLkfK+m91L/OynE57+jn9 LgEg== X-Gm-Message-State: AOJu0YwA08/KVsH6OeJyhiU+N8R0SldfSfeOZCLwqvmkfo6zJA9YH3zL YmzG0ILZTzAAnjb2jdnBDJSpAIGit62D5j0w0lMGMJCF7xTkmYFaQP9qZ9dsxQMyKLEf/YjkP5s NKxpGEoxDTDmIX6oCC6MkLmz4cFlW1gd3xrrC6EoqcNfryJHl92mRqqcuQT/NboBV2BZm7dhej7 xgJoh6UonyHq8VZHWL0TRRVV5GfrzfrEIFsytl4ABD X-Gm-Gg: AY/fxX7QuyfdtrqUo3lPZUA25eI6zcL4SEw9/P2sKCBB5ju1e+C2OKadtPY00FBKe/p LCg+TxYFF67of2m+iu5wQGt+k+qV+L7RPF4eLIGNgYVoPLPwseQVB15ZsEa7YMNS7SCnaxDDtbS klCXJEd8YZSOdFwx9Zmeuqp2kYiAY/SPrWof0ABAQdo3X+iZJXLhx/Bb/4BNuejloJtpY8tVyza P0Xd8qXBOgHQ94lUiZuqHdIO9alVMT3ALvCRztUbBupLcaBNl2VuOk1jkBiHdExqFvZLv90ZVbm qfFjxSoUcpnhHR+uQvJutJlTHufPE1BqRJT6oeVZk6N/hlX0axgqoRtl61qV//Le1RXVbjqtpzl +y1ZhCerHm7JSkIe7o1vFG9yuASzI/XLDX8wyezzVu/kG0zSVnuAPrS5mT+ru+VkTTDb0NcJTc6 059s3dB9IfrumI0pM= X-Received: by 2002:a05:6000:4023:b0:42c:b8fd:21bb with SMTP id ffacd0b85a97d-42fa3af8bebmr2607707f8f.39.1765372619463; Wed, 10 Dec 2025 05:16:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IGNW+qqJUUS7i4wTIMn/+LMzIOafvXr0U4T7pmvj4NuoJG3Z6UXTqm4jsrvH/OTFQzGEWZ0RQ== X-Received: by 2002:a05:6000:4023:b0:42c:b8fd:21bb with SMTP id ffacd0b85a97d-42fa3af8bebmr2607678f8f.39.1765372619040; Wed, 10 Dec 2025 05:16:59 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org Subject: [PATCH 02/18] target/i386/tcg: ignore V3 in 32-bit mode Date: Wed, 10 Dec 2025 14:16:37 +0100 Message-ID: <20251210131653.852163-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372669176158500 Content-Type: text/plain; charset="utf-8" From the manual: "In 64-bit mode all 4 bits may be used. [...] In 32-bit and 16-bit modes bit 6 must be 1 (if bit 6 is not 1, the 2-byte VEX version will generate LDS instruction and the 3-byte VEX version will ignore this bit)." Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/decode-new.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index 0b85b0f6513..c9b4d5ffa32 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -2665,7 +2665,7 @@ static void disas_insn(DisasContext *s, CPUState *cpu) goto unknown_op; } } - s->vex_v =3D (~vex3 >> 3) & 0xf; + s->vex_v =3D (~vex3 >> 3) & (CODE64(s) ? 15 : 7); s->vex_l =3D (vex3 >> 2) & 1; s->prefix |=3D pp_prefix[vex3 & 3] | PREFIX_VEX; } --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372688; cv=none; d=zohomail.com; s=zohoarc; b=BDX+yvOUa9y9kJq8zQRNJs1NEy96IYQYf7EASujMoCVNdZd/7OlmZR3ix6beFv+Ext7vNDw8sPHzuE/ZghxUAwKNgJUsPnT8Ll+vYwwkCfVLgGyp4fdKEmlkcz0hJLaIq1yygdqzgwku32UUQ0kvNPwyAQh8AYAzxOiW8gfypAQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372688; 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=QH+Y8iuc84iMUyZHmPFJU0rIEXvwiqoYIaZMOnYdPHc=; b=ScCGmbaJPRb7LD9zpTjnIIre4aRmHDrKOrj/JeIuGozP6ojhOP/KcK3ADS31jOWn8m/BDZHMxtrNETYpzcVNk+FU5aP35oKWXfgRXHFW1/05PeMPaqaHjWg4E9zDBJLuqt8d/wcPwi3xLprqYz6148jyAzVyOGIzimrEHjIpgdg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372688536288.24083547119324; Wed, 10 Dec 2025 05:18:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4F-0004og-7X; Wed, 10 Dec 2025 08:17: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 1vTK44-0004m6-0g for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:08 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK42-0002ye-4Q for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:07 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-355-up0V7FkiMneITzidZcFSVA-1; Wed, 10 Dec 2025 08:17:03 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47910af0c8bso47638325e9.2 for ; Wed, 10 Dec 2025 05:17:03 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a7da2d3e9sm39401025e9.17.2025.12.10.05.16.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:16:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QH+Y8iuc84iMUyZHmPFJU0rIEXvwiqoYIaZMOnYdPHc=; b=Huql9+wGs9Vw4F7hVJxAGYoRg/2RK/bmqXkkF6qg2wXXB9clavG5Cut3SdlKitBExnMawn VFtBa8qXiFXQNMdr41cvYlKpPVMjc9gmPjbYmfWy2gsHPH1vhULoetnZpfJRcesIQuj4Ii io7WerTMbb1AOJETLw8X9wIopEc2p7I= X-MC-Unique: up0V7FkiMneITzidZcFSVA-1 X-Mimecast-MFC-AGG-ID: up0V7FkiMneITzidZcFSVA_1765372623 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372622; x=1765977422; 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=QH+Y8iuc84iMUyZHmPFJU0rIEXvwiqoYIaZMOnYdPHc=; b=Ax0eMlfkbZ8aVd+WvwdkgEEb9WQ/QkFjkqmtn4ityNnANmDIwfBvYYbErC5O6Bty+i VC9k2YJuJc4p3EnZGBa87gTVceA9vVxf9IqngRFLxTpQf7riVHYgd6mEDJT0Msjtllpy SyYP0jzwyGjQ4wVafoNOURRhM9+2wpS7WuXmeojPLYM2Vc8dvTtos8H6p+1F/8tVlg5o XE+TM7bu/s1g8QwQKTUlJyiN0I8gw5auQJkRLNqdIHdrx8krW55G7Jwqr8AJWZBzfcVr 78ilMMdZf3rEGLjVw8b0MXOEMMuL2xgMP9eip+phnDN1z7M1nD03h6vBzOe0R0eX/1BX V83w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372622; x=1765977422; 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=QH+Y8iuc84iMUyZHmPFJU0rIEXvwiqoYIaZMOnYdPHc=; b=oD1NYrfyViVO+Dmzi42rXxogSqVsMK2QevVcvR7YgbNsMeoquTIKev+HSDQCsb9nr3 CynLE3beUXNFxNoGAYVVT2tS6vd50khJbbXhyMOn+jp+QjzShU8Juk+963JfVAez4nlA dxX2hU1hNxm0Y/N9D2GQDHGYyLawzdbfGhbvBLEtugpCVNIG6e1Fh2mEQ07WMTgOlGrd XCzmV61xviMVsj5n/uo/CLbQZfm3hchRPvBCnn73UBuem6dXkKIZXQL//gO44739E8XH bftilu1Wcn0tfiZTQrYGK+QmKfKdVLvjiIoai4RVY8Wby9L1gzYMBdSUqqPbg9GrKxdw jeKg== X-Gm-Message-State: AOJu0YzOOS2UJXpa9y7xp2P0SQ7WR7v272QvhTam6YXStEBcEzC0Eob3 4Bs3f5UN7kfWw9eFia3hhWb2vPjWTTJQpFhH+QlvtVDEC+6JykIORHUe8mwkAvUks4PzRz4QLZ+ KIZOkbeKu5/4IZFlXSKAJd0PN2GVlwhx4+wy825CX8W0vW1xHR8L4hrJTij9zlLfXcF5d8Ae3NK YeumTNton+fa8yTQVbJiBrp9dPkwxJqy3tqc2Vel52 X-Gm-Gg: ASbGncstMwwmWiaZULuBS/p3RUelZ4WtAK3JYBme80PhyVHxtFbc5JG1+1V3YxCsrdA OQf6nFQSfz2vQzuQyc1E9dT9oCQNzvvnvaYpZy0XvxLwhRq/EYxqxu7QGmdMHKZPMc9xxFVg7J1 fWRjDhtGyTKLggsknV9piyKOp2KHArN2yFblBplcQP3pA/CQamncIjPcUqnv+6xkL2dpifJUwCi yIwfyTBHrGaXbL5j0n7C7ZAdSSJxfLV15C4iAl5ID1sK4x6h7gvAJlzYx0dEaCTxrLcmTbGFrZi qvTc2BPIEqmG5fEOt82c4qMwhPjDIQTISLxbaizSb5J00fjSVjgSP2Ltd8TeeIj7FgbSDOiAzU1 BIHyDj8k38pvrqBtzYznmpryxX9JvRp+cGgraEG//W2bIyoXQJQOvdwJNYU0bWgEDIl/BuOCNzA 8z1hQC/pXW//GoFc0= X-Received: by 2002:a05:600c:444a:b0:45b:7d77:b592 with SMTP id 5b1f17b1804b1-47a8380c62dmr26142415e9.12.1765372622174; Wed, 10 Dec 2025 05:17:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IEf+aV8DKFmOx+7sXtF15PevEzVJEZPKDusv9hK/HNPUaFFegu0cP/VEPsy+Rs7x4Msc7Q1LA== X-Received: by 2002:a05:600c:444a:b0:45b:7d77:b592 with SMTP id 5b1f17b1804b1-47a8380c62dmr26142035e9.12.1765372621590; Wed, 10 Dec 2025 05:17:01 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 03/18] target/i386/tcg: update cc_op after PUSHF Date: Wed, 10 Dec 2025 14:16:38 +0100 Message-ID: <20251210131653.852163-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372688868158500 Content-Type: text/plain; charset="utf-8" PUSHF needs to compute the full eflags, set the cc_op to CC_OP_EFLAGS. Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/emit.c.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 1a7fab9333a..22e53f5b000 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -3250,6 +3250,8 @@ static void gen_PUSHF(DisasContext *s, X86DecodedInsn= *decode) gen_update_cc_op(s); gen_helper_read_eflags(s->T0, tcg_env); gen_push_v(s, s->T0); + decode->cc_src =3D s->T0; + decode->cc_op =3D CC_OP_EFLAGS; } =20 static MemOp gen_shift_count(DisasContext *s, X86DecodedInsn *decode, --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372844; cv=none; d=zohomail.com; s=zohoarc; b=jC/zvIcqfX5bkyYPJosqhzi3Oon/XHA6Uiv8qFqH+PFo7DVCLR9MEV46Z1Sl2lycergQ20iipjrBN1V2cMFzMPFFs57R1wuTTlvDFbeF1ld2cCeq+SxmwL8+RdTQZZorLzRHmZPwju+E+oIDSuN5BtsMw6kY9+ONTqSEOmMAm9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372844; 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=ByNPD+9j8EtkYKgJbFGTPkBTs1AUYDB++Ljp5NI1P9g=; b=arPw9SJZ7OfHM2hqgm2u0i8fM0mW+Agf6bUqbK5bIiQGoDPNgoeGTogBjuXnSFHGswui0zQFp+8C2kyVVJcUNsDgTOE+BVN5qoBGzSmFSmfvmOeCSEtg2XLbFBtyiDO7bjsZ8F5vGosqhXYEe9jrGA7kFVt0qgDKGKTDwbFrLls= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17653728449221008.1632329185742; Wed, 10 Dec 2025 05:20:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4E-0004o8-FX; Wed, 10 Dec 2025 08:17: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 1vTK46-0004mp-17 for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:11 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK43-0002zf-OF for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:09 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-519-KQhFq4ECPmWH5iiVc6l-RA-1; Wed, 10 Dec 2025 08:17:05 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-42e2e5ef669so5233650f8f.0 for ; Wed, 10 Dec 2025 05:17:05 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7d222506sm40271879f8f.28.2025.12.10.05.17.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372627; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ByNPD+9j8EtkYKgJbFGTPkBTs1AUYDB++Ljp5NI1P9g=; b=IGQ/JouqRuOr5FdKTukkr5xufKjcl42ok1T/2HXLOsmj9jzQSWGndGCR1Ps0RVmlj7jm6C 1+fWNs1HEGxmBL4JewC8M5rb4VXf96JX88cDlz1JEJ97ZsAIM07QjUVzpVvZLy6cpsuGbN OMvrP0D/4zKyCWNmb87c8r9AANE94gc= X-MC-Unique: KQhFq4ECPmWH5iiVc6l-RA-1 X-Mimecast-MFC-AGG-ID: KQhFq4ECPmWH5iiVc6l-RA_1765372624 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372624; x=1765977424; 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=ByNPD+9j8EtkYKgJbFGTPkBTs1AUYDB++Ljp5NI1P9g=; b=bxT/gFDlYRVihcI6yhXfTvJJtX1IBSf4TP4+PeMqN5Q5Ox/tVnPdRMTBObHSVO0Yt9 8KPRwXiCibcG84PgSA4bhVZ/+3MOVMNfB6ZZnxgP3fdLib8M53dVqe2meaDZwkdBC+0g Sb4/PpmI9hisjMo+n8foUISvTKGVnGXkHpliTFM6SkoBoTemUw2H16U69aze/SlM1Owi 77Y3bRbS/kOLn1jlQowk/uCMu4sGMueS4Fuspg832AGFR6ALQeHbjqccIUICuSW3kImi zurg/dxa3P29u2bINpR8lVbW30F7tPxKdh6Lp2+GSfhN1ahHq+twrilJ2lvwnlciVCh8 /Jyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372624; x=1765977424; 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=ByNPD+9j8EtkYKgJbFGTPkBTs1AUYDB++Ljp5NI1P9g=; b=V2axlfQO5pC7mInDg5CLLY8P7fkmzV39B6QbYoKS8Z9i/hs987Bm5dowmve9gXIGMj 23DbecQ189i9XOJTFKf+0+WvZz1lOnUUaZ14/TQmEXmHNa1BQwBKITepwHDEaxONElzP urc73zt0gcO2vvCnSIL/gmfbWHUt4H97Vf+7EzSSjZ4VqQQJ9YP03ujDl5ob6RdO87pf /slFfyUqIJbp9V976tt7O0fJ+Vq9yEJLOrZ7JwLuLufrz7p73mCiYZNPsRe6F6leDceA WsnvIAOrjBlH7kzIYfvYc2QKSKCQjjZqEMGne8AyCgo3Uzc0qOfRLLpvA48vqwdcjGPH RL+w== X-Gm-Message-State: AOJu0YxoXFKa7OfacAJYRPhI5UJtnHn40+OzVLjfBCgxIyn1bo6dauP+ SXcqRyyRqmeyIpUXd1pzMOwOXO4zsUJBTu1iySkkvV5uH8+GRSX+GbWHcPhPWWtKXjWxVqYSL4b n5ndS6jTPYXRJfznItsAVDw0CSVvnd8ErQQZQ6BxsfD0L5pRNTwT+QjHy8FsBd2dP919ilytOXk DmYLcL8RhYbSbv+3KLuuCHtdop4sIsESchgRCYBJFg X-Gm-Gg: AY/fxX4hf9CWVpncdY69xzejUtPAp1rQFmxJb+kaY/CJN6Vu5Cc8/8XzRkDmjOTZNgI vOfQcKgeTKKjbEWAunIfHlSE9sfFQMBMlqgsR0euUJoUac+LWGZhPbbenpmCo3d+qCxDJSHq2LS MsBJtX5GE5Aqq0DWcV/CR4stuH4qPbwNYVSd/vusxrXJZ1YafrLklManoVPqhci8XxWcAFMNpLJ 0Nev6ijROIDtPNyIIFu0WZqIQ2SMgLID1qIuYLxN7adPho6gweWNG6IW0Rm1luhacYQ87ni/6Ba qESlOHuoVoXxb+yJ2WPIDaBN9ccG0XnaTwvye3iP/2yPa3Ejm/vC1xG+optlV2v7zyi/ydPO8PH m/9e4Rb2L5jA5wiWE/lpyYfctRJAIwRsj0P0pS8jr4W5rDOQSl2MGK1+AY3y+JRwgVdXVNlFsXD hZzYyH1/13KfvwWz8= X-Received: by 2002:a05:6000:2dca:b0:42b:4185:e58a with SMTP id ffacd0b85a97d-42fa39d4044mr2615606f8f.14.1765372623973; Wed, 10 Dec 2025 05:17:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IHqkq4qRnapYcG4KqtU1jTToBQBEI21E5d/KPNZz6F6Lt3jTN7THSbi779k3ayfq1RsZdTF9Q== X-Received: by 2002:a05:6000:2dca:b0:42b:4185:e58a with SMTP id ffacd0b85a97d-42fa39d4044mr2615577f8f.14.1765372623496; Wed, 10 Dec 2025 05:17:03 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 04/18] target/i386/tcg: mark more instructions that are invalid in 64-bit mode Date: Wed, 10 Dec 2025 14:16:39 +0100 Message-ID: <20251210131653.852163-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372845496158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/decode-new.c.inc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index c9b4d5ffa32..213dbb9637c 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -1698,9 +1698,9 @@ static const X86OpEntry opcodes_root[256] =3D { [0xD1] =3D X86_OP_GROUP1(group2, E,v), [0xD2] =3D X86_OP_GROUP2(group2, E,b, 1,b), /* CL */ [0xD3] =3D X86_OP_GROUP2(group2, E,v, 1,b), /* CL */ - [0xD4] =3D X86_OP_ENTRY2(AAM, 0,w, I,b), - [0xD5] =3D X86_OP_ENTRY2(AAD, 0,w, I,b), - [0xD6] =3D X86_OP_ENTRYw(SALC, 0,b), + [0xD4] =3D X86_OP_ENTRY2(AAM, 0,w, I,b, chk(i64)), + [0xD5] =3D X86_OP_ENTRY2(AAD, 0,w, I,b, chk(i64)), + [0xD6] =3D X86_OP_ENTRYw(SALC, 0,b, chk(i64)), [0xD7] =3D X86_OP_ENTRY1(XLAT, 0,b, zextT0), /* AL read/written */ =20 [0xE0] =3D X86_OP_ENTRYr(LOOPNE, J,b), /* implicit: CX with aflag size= */ @@ -1834,7 +1834,7 @@ static const X86OpEntry opcodes_root[256] =3D { [0xCB] =3D X86_OP_ENTRY0(RETF), [0xCC] =3D X86_OP_ENTRY0(INT3), [0xCD] =3D X86_OP_ENTRYr(INT, I,b, chk(vm86_iopl)), - [0xCE] =3D X86_OP_ENTRY0(INTO), + [0xCE] =3D X86_OP_ENTRY0(INTO, chk(i64)), [0xCF] =3D X86_OP_ENTRY0(IRET, chk(vm86_iopl) svm(IRET)), =20 /* --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372670; cv=none; d=zohomail.com; s=zohoarc; b=d+6SKxIQ1rjttMWTQOycbO82pb2cBCai6NOOViZ8o/RoHPhv5Vd2hfNFKioqoIEDPbyev1AmfZfdD02I0xaPxnI4jLt6KKNsj18qvgYeP67KGSznsisSrJjRSLyjbo49I8UR0m0VnTY++1WDQzZtLwHynln3oedwDdL9pT6RfjM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372670; 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=BD/p3i1pYSpxH2FTrrqUtcDabzPQWRLo7G81MLtCrgs=; b=MxR3NfLg7zJUZh2Cp7i0z22IrckzQgL7/hVxyWbZHNL0AtzjXJHIPiU29RWvKmvLAhNjtDC0xMwDatc52nEnWhOUbHq3KcJQVCKPkeiP6OSzVaK9MoSfB+EYjrFsolXMGCuCRiTtaot6WpihdSGoo3xJnXV40kjgmeGzt3HXFFY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372670260698.7854705658052; Wed, 10 Dec 2025 05:17:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4J-0004q0-P1; Wed, 10 Dec 2025 08:17:23 -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 1vTK48-0004my-1C for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:13 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK45-00031J-P8 for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:10 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-591-5eefyLdlNUaQUbguQVkrOg-1; Wed, 10 Dec 2025 08:17:07 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477cabba65dso37346685e9.2 for ; Wed, 10 Dec 2025 05:17:07 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a82d35904sm43161185e9.9.2025.12.10.05.17.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372628; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BD/p3i1pYSpxH2FTrrqUtcDabzPQWRLo7G81MLtCrgs=; b=KxsrcWmbijBBpQMmtqdkmZhjIlP/2cWUtOv8ZwWmrdWj95SI98cbZSa4GUlmsOUCAtHeEo GcHdOtSqP3B4FQLPj20UipUUGjmMSUwPY7RAggzsxpf+Kaw+kdXIhqz6KwT8mxUuXLZDjO epclVAzPRd8/nM4oaXnq3G37mUHlrSc= X-MC-Unique: 5eefyLdlNUaQUbguQVkrOg-1 X-Mimecast-MFC-AGG-ID: 5eefyLdlNUaQUbguQVkrOg_1765372626 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372625; x=1765977425; 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=BD/p3i1pYSpxH2FTrrqUtcDabzPQWRLo7G81MLtCrgs=; b=pR0O6JrJIDAIjjAsX5+lfqX0OnIi9spPnooX5x4gj+gA4g51ms4/L61BWwMX5XdDKB dmwz51e5PdiCI1GVdLCmqlsWPlgdiqN6nYQO2EKhyVEUZj2f7PVqs4k1FVR24cJNxA23 /4t1wKynPv0RiNk+BwzQrRnwV2QQ/AcUYKqocVpTOkIoLR32j9hIIZvBUav6yWv6Zznf RiGcxtBjUfwdnVM/Ao7NeE0ELOIJ1WOYYs2YujKrhQ0f1kOxdVTN1uY1DLG7TYFsXv/w E+3Q/SKmVhXcFrx5I82LW5MQjEpRawPbDi0awb1xO0M9aQxRg/vUXsY5x+MRQl7FzcNJ tSbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372625; x=1765977425; 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=BD/p3i1pYSpxH2FTrrqUtcDabzPQWRLo7G81MLtCrgs=; b=bSIg1B4BGykb248ALH+Lzya4Q763On1+5m+W2TRxLtVnt5i36enkm8FAeUZEBbzwjU VM4/c/Smemx8On1Atfpaig2QXfmlHA+4d2H7MCRX7i9WrJUHDWNarlei0SN+SCCRBgqf W1UCyi/KssBRHcHZNrZ26BNU8766bzgWc2szkQIKKioT394VYWe4VqRdUwU6iJLoXK42 y9LreCXjV153W2NPnZDcPaSF2Qtfz4vmnNXaUv0gRjXAbwR4div/NGA7nmimO7BszQr1 E1k5l6e90HOCnl902rDqsBX00CVuy8k3AfR/aYOLdFH9Rl+wLq3EoFx9EzJuwAuMXGKz tgMw== X-Gm-Message-State: AOJu0YzT/lo82nY9znv+jFmLygSwHebB8WuL1FRcARSIWQoeX7ykwAF0 veVQEhc1tWXR8g+fK8PLlCjIkL7p+eiN2vCQBU95CWCiB4Ik4BXa6mSldgyTk88uinSKmNqO01Q wR/K+Xjvd+6WOGNRkxgv4wG4brKDf9MMru9sOyMvlwq71Oc0mWQMKnwUgtkGo+693Y/kGd3cTMZ dnAUtNA1RWbTq0XqaFd3EfgmNV6vfNxGv877rK9AMo X-Gm-Gg: ASbGncvJ9p6057Sk6PqZCuHP83YlGEJlvSwbZA5ZhfJYxjeDg/Q2NykSroBQeIQdGa5 F5hWuyVTymw7bo6whxAfkmku6J8DZ7xbx2Zjx5YfDVogT63UF6RfDwoUxZwSsQhz/v+MdwOAH+Z BdjF71tWT2o77J3ceusIs+BE6RIeWAtBkApMza5IKF6+SJ6nYdv/qNLNUzwrTTWswTbB4pxFSp7 IfkjCg+1CwmMDTRDcfAR0nL5jUC6qajuDEPCO9dV1htil5mVxOBnY+4D/83GkSZZiXeNkvSA3CE +MoC0rpTG1qecFCkhcS2SmW+wwmfkTxPiBSaFtnwQnkwfU7+ig140lvDeSAqurfuinRsl7IY2tI MaDxFha820+lsCegDz7/+AE6TaeaEitb6XWfFjrSPomRkVMGRsHmTbEnAcHLH1hQ9tAdpoKw0A7 mTCowMo3JVQHvs7X8= X-Received: by 2002:a05:600c:6089:b0:477:55c9:c3ea with SMTP id 5b1f17b1804b1-47a837a3110mr20461075e9.35.1765372625684; Wed, 10 Dec 2025 05:17:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IGQx2rPCHVS2/HEnZT+9KcaqjOkQO8dc5sYXmuWAv1UJeOINbg032pVZdvpdYqEeiqpt7tSqQ== X-Received: by 2002:a05:600c:6089:b0:477:55c9:c3ea with SMTP id 5b1f17b1804b1-47a837a3110mr20460845e9.35.1765372625165; Wed, 10 Dec 2025 05:17:05 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 05/18] target/i386/tcg: do not compute all flags for SAHF Date: Wed, 10 Dec 2025 14:16:40 +0100 Message-ID: <20251210131653.852163-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372670896158500 Content-Type: text/plain; charset="utf-8" Only OF is needed, the others are overwritten. Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/emit.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 22e53f5b000..131aefce53c 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -3778,7 +3778,7 @@ static void gen_SAHF(DisasContext *s, X86DecodedInsn = *decode) return gen_illegal_opcode(s); } tcg_gen_shri_tl(s->T0, cpu_regs[R_EAX], 8); - gen_compute_eflags(s); + gen_neg_setcc(s, JCC_O << 1, cpu_cc_src); tcg_gen_andi_tl(cpu_cc_src, cpu_cc_src, CC_O); tcg_gen_andi_tl(s->T0, s->T0, CC_S | CC_Z | CC_A | CC_P | CC_C); tcg_gen_or_tl(cpu_cc_src, cpu_cc_src, s->T0); --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372666; cv=none; d=zohomail.com; s=zohoarc; b=IvITvzsC18zhTXxhUfmKVFyuMJUAiyFjNWo8KT1SdS0H9HHiWN0kywLDa7GtWLTI3zr72wZzbNp2m/Vvh231I0MIuClPoJNWb67je/9PIEM88o4ylL62Z37iuVyMj+WcyL5GDMQ8uEjGvHszAyy0tdLzT1NU9fTvHAmm7GZvz6o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372666; 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=hSg+oVCV3IdL9Yy96Y2wTbbdhygKLBdpYIrlT47bwzc=; b=JfNx0zxpXJR71Z+USW7jxjo7VhC8x+FwlCX+y2AnQP7ACqcCsQXWs92WxnI1dMsKrfHPFnBJEhqR6MzrxPcmPLUJxNhFfjqotVmyvpX/N54PoH4vyGdDotj2hRm5+G9YaJIWxequRQ4NP2LdiVO0uNnD/8q9lP8dBq9OnaHvWVE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372666678791.2196211508735; Wed, 10 Dec 2025 05:17:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4G-0004pX-6x; Wed, 10 Dec 2025 08:17: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 1vTK49-0004nB-Ia for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:13 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK47-00033N-Oz for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:12 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-269-RoS05mViMUSKph6H-VaGDw-1; Wed, 10 Dec 2025 08:17:09 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4779da35d27so66310935e9.3 for ; Wed, 10 Dec 2025 05:17:08 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a82d7f778sm52576995e9.11.2025.12.10.05.17.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372630; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hSg+oVCV3IdL9Yy96Y2wTbbdhygKLBdpYIrlT47bwzc=; b=ST1H0XfH1sVeZCaZ9t6S5zKwDd5/HoBpb7s3DqYnFi1RYi6LEiCgBxC8tjPV2wDqlXBwTu lEABV7QUvowYriJWfk6yEhutOHWME5zY8T+cqO+DC4WRPmnlrtsY7ePrMDLYDTgLlLCrbp qeAd1W9iVKVGqIjmlfCE0Js/J1Lhwf0= X-MC-Unique: RoS05mViMUSKph6H-VaGDw-1 X-Mimecast-MFC-AGG-ID: RoS05mViMUSKph6H-VaGDw_1765372628 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372627; x=1765977427; 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=hSg+oVCV3IdL9Yy96Y2wTbbdhygKLBdpYIrlT47bwzc=; b=oZ6YRbBQDF6ntzIdCLHxp9Dt3RmwGeKlE8+2T90oczpKP/l5sUfRnqU0utk4Dg2xV6 vYAYQjKFY2rNZ+Ql4Hevf50ivh4vGl7G6Nr9B7ivQZoq/ywG+Q8f82hCkSGZepFWD6i1 G5S3UzvmUIv93iMM63VP45b87m0XRDQBWB9V+39fGbekfZxBgwRjjGb+oe0jmklW0M4x NDLyd/58JZcEdi0uMnHg1Asmsot+5gHSEA/xhGSs0u774FuLfFwCVwhGNUowi7SdHytn vvp7VXVNcGkbFsI31BvGiMGu1s0sW0dlTazrkChyfKa21Wy2bEEuimXoY3yOXmH68Mj0 5SyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372627; x=1765977427; 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=hSg+oVCV3IdL9Yy96Y2wTbbdhygKLBdpYIrlT47bwzc=; b=dIUHiYZIyFkkH3xdOHEMFMQjXzWLsvZ13k2sWL0mETKfAo4glO7bKNHVI+0trDngEt HXpU6QTrJeH0LDRQ2KFOAf2UBITUsmx6F+/rD9Ex21ZzJuiI2cTsjuJWntHBVdd+nFPx sjVIRgxXiqt6hZquVgA5cX4yMqo8fJV35zZkbv9LISkxLPtCyYXt/Cxk8uLOUtwagSb6 FYldF0KVV3BnyVwIIYVH9rNRUqxmW7nFtEBmYqH/TT9gdfTx4unGz29S1xn0qR6Ra/B3 ouFqLi1UOS/hEZ56ZBF7oy//PWoJWgFLYImQFNv/EqSxeijxwiEQZwZrZKp5jYuK17aV QO7g== X-Gm-Message-State: AOJu0YwQiDTT58AYrrzO1dKtChjGnWl7J7O1dAlAgFiGY4BLJapp76w7 KWZhnNLHXvG6Rm0sK8BtnW7kyx+CuCvH7uAudmbgmaTiYPHxiUelop87Y3Xb3WyM3RCMMTWivEp GexUvvG+9h+AaHc526opBs3GO+/HgZoV6bEFzbGBGLtNPiFAWEr+6S/KsvYw0wCLN/XIzoYUhw+ N+Fy/yvUjDoTikQ84Nldk4N17zHjtZBtripUPxGuzR X-Gm-Gg: ASbGncsHhQqZW2z8Xw/z6lBDMnNnAwykwF7DAEUvcrogLsqsF90IofBWOn9p6fXz1/C Yqwi3AlJUtqpyfcc9V+IMIzDzCslkNKCzbW6C0/cg45p2lHjFSRHEyvhXwnmnVSzu+mnXYhz3Z4 +aAlkeu7wU6PR8gjFSqBPZkpQKnfAaISBTtVgQI+CbqF+LSn3CSRxl7g0a6okkrxMQpDk/2jQ31 FUqvGI9qMEm95sP4dE3Nkun2bTz2qOtuj8is79rL21lOETEPQN2mhJuWo6cudY3Z8Q7ZnDCDnrY MmJelAkinKqDr1rgfwxzvLLdtjX/w7p0Snqxjots0fXen5rUfD1HzXFYBGN5VUINrluZjPnP+/9 5m5MkZC/6kHJAMQKQQEdGVYali89Q3wIQpI+RtPIu1+qwADD6F1sFmGwMC0IpyfTaOi3vKBckD5 ov65uxeTFJr3DplXU= X-Received: by 2002:a05:600c:4f84:b0:477:7a53:f493 with SMTP id 5b1f17b1804b1-47a8384334emr22469045e9.23.1765372627397; Wed, 10 Dec 2025 05:17:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IE6CL8hKQP8sIHl1dR31fcuE+BwKGjkeoe8gRBLjlPYBwzNZBfjYuk47Ofwa14pinYQVAGwsg== X-Received: by 2002:a05:600c:4f84:b0:477:7a53:f493 with SMTP id 5b1f17b1804b1-47a8384334emr22468635e9.23.1765372626928; Wed, 10 Dec 2025 05:17:06 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 06/18] target/i386/tcg: remove do_decode_0F Date: Wed, 10 Dec 2025 14:16:41 +0100 Message-ID: <20251210131653.852163-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372669164158500 Content-Type: text/plain; charset="utf-8" It is not needed anymore since all prefixes are handled by the new decoder. Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/decode-new.c.inc | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index 213dbb9637c..ea8e26f7f98 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -1430,15 +1430,10 @@ static const X86OpEntry opcodes_0F[256] =3D { [0xff] =3D X86_OP_ENTRYr(UD, nop,v), /* UD0= */ }; =20 -static void do_decode_0F(DisasContext *s, CPUX86State *env, X86OpEntry *en= try, uint8_t *b) -{ - *entry =3D opcodes_0F[*b]; -} - static void decode_0F(DisasContext *s, CPUX86State *env, X86OpEntry *entry= , uint8_t *b) { *b =3D x86_ldub_code(env, s); - do_decode_0F(s, env, entry, b); + *entry =3D opcodes_0F[*b]; } =20 static void decode_63(DisasContext *s, CPUX86State *env, X86OpEntry *entry= , uint8_t *b) --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372805; cv=none; d=zohomail.com; s=zohoarc; b=VNH/TBk4HyWBSHOuP2rEjgi/o6IJZutA8R0/gdDrEiaGwoQm7oWfADjhl8zmqSnCAbK3bEUMHwfT/uwy0lH6wfPKYFDNH/tgXkVNap4rbextCzYlPYmG22rI8YkEjTkT9tYHfLSa8njifzOGioMDwhcJBp10aVj4c6e2XmxmuCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372805; 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=QUiIMweqIC4FNdOKpk92odsMbHq0zM9mduvXORaZgM4=; b=I5zIy2XC2D2MST5Mbnm9Y7v0bpIUIf2eL/lVbWAfufguwAFYqsUXXBnf9vPKlzRvCaFr4zY+PXQ8bFSyIpmyGTW7zuc/WqFfEOPxscz4NUlKrxKGD1pUP4DMkWJhXP0UZocg2rNGxqdzOSJyJ2nmihrPN4lY+C3/UMlS6/rk2DM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372805340601.3758385784121; Wed, 10 Dec 2025 05:20:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4U-0004rr-F9; Wed, 10 Dec 2025 08:17:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4C-0004nx-4w for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:17 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK49-00034W-AT for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:14 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-294-ePS0yuPzNfqJiPH-4sJSsg-1; Wed, 10 Dec 2025 08:17:10 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-477563a0c75so36856055e9.1 for ; Wed, 10 Dec 2025 05:17:10 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a7e41826dsm40132415e9.3.2025.12.10.05.17.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372632; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QUiIMweqIC4FNdOKpk92odsMbHq0zM9mduvXORaZgM4=; b=UCaiYNhMUj1izh+QRJICdRh5h9+oe2UkHCpnoj8uhuCNfNgR291SkPT5qZlX+b8iUzfkq6 BhC17PzRLuZ5SNDIacxSLT/Jb3ACOPABu3UilMW0x+lnteJPS3AOBNyFuGh+aDHzimikT7 ItUL8ElEVUIOtrVtTF6pUOxTLjg/0fo= X-MC-Unique: ePS0yuPzNfqJiPH-4sJSsg-1 X-Mimecast-MFC-AGG-ID: ePS0yuPzNfqJiPH-4sJSsg_1765372629 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372629; x=1765977429; 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=QUiIMweqIC4FNdOKpk92odsMbHq0zM9mduvXORaZgM4=; b=cGOTnL8fJ2gn/j+ey4KgqEIYPsNyAok/YhO6JiMn0pRAizV1LN2/C5Rx9ALaIH10hD vF8ywd0PjPTDHsruSocR+hj7k3XMx0JVL59GjY+3jxuJ9nht4UtMsg8n8UaYBXRT9MoT KBzf221U/PoXNlowChhOpdjI1jA6ynx4xUNoHqNdNYLUpH4XwX5Y5svbc/U+vjY3/d9C gDsXDiK/oYX48ZXoX2CigfnHAeCGF7j3rrTw9YBr2vEHstkbEryEwE647bf4AuJXe1jX mMORPwBthhdZ/EbfZnaEA2O7R3PZXs6oFJw243EOBcNdpTEbwxWEZ3U7oNO4M7QuVFTn OZHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372629; x=1765977429; 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=QUiIMweqIC4FNdOKpk92odsMbHq0zM9mduvXORaZgM4=; b=GKQ7OOd+fu4NN+5LHueg9kHyHTlm4Rwo+3kp+PJStTFZC9diMwZSkDNkSneqDYKZiN pAZRmWp2VIYvabZG24gnYYMX7v6hYlPvtRtYqOUo5rsikP//efMPKDOJq0ycL2M7oSCh 7B8UHeFxZm76ZKIyOsvniMw45gmnQolFu4nMPw6jMdzO3qPVRUgt2+v99ZChdsTAD6NL 5FX6QdyPbO+Sji+EFAJ1e3PEMagm+tMHaXjDiJeAdsXhUM65ApxedfDowBw3xP5yDFym cM8u3ZU+JD/lUfPR18cXN0TzU3KMLrzzNcqHbmZsLjQbWsD6YopvRuPf3Mzk0PiSRgew h+nQ== X-Gm-Message-State: AOJu0Yxyz097EkHRCI93ktfpHuJkDYelAKNuWKFrp2ilXKjNQmfaW0MS cR2af/HYEJOrXsC5ZN01vKrq9rLMCtV+i5yFm2Q+ihVn7DFMGWZwTCQfuFta0HS5PS9gBSlVmbB 7qhsbTcMG7yluQTVxcglMZfhLfgE3tYoUubyiaG+v1+T/sF2S1GnU6tkeXkHiy2MMupAKPmVCf9 icP9OnazBJKqXJc1PD041+NRW/5CsCntk38bP06L37 X-Gm-Gg: ASbGncvNRzywYU+k3zfZ8EW+RKhKoblbh53ngGGZlTh4NamNyfqVy8a+Z5nt9QKeuNd 2PxB1+Ydb59LE0DXJsyjDzhX3u+AtHk81WTnANRsp3O4tiiguQFkibCsNuTQ17i16ku93XaCwpt cscZsAT5R/HqphMCPYkGG953dQoAXQeQzSRCT9OXpVyzVHNC1VwmvfZzpzjCZk84vLIQzsVKVgI bsD7s8Aglyi9jyPU0fNbu9H4no1mGmOOgk4pnQu5OnZI+2BvcAn9vC3Qzg9adQu6Lpds6TKKjJ7 uKonb6bR8VXvrju4zJJbbuOSEqI5E99kKmloo0BjPDuezdCi1vKNKJjG7Ftra+XWef+wQNuz/F5 HTsrkHRfqfpwWv4Bo74l7SWDmbMxLqXYQc9GAV6/xCVfYTRkMjGLPcJA9uvfvXWAIgKIBVDOOTs cSwRCzRWSFbwkLEqc= X-Received: by 2002:a05:600c:6089:b0:470:fe3c:a3b7 with SMTP id 5b1f17b1804b1-47a8376d708mr19194115e9.5.1765372629045; Wed, 10 Dec 2025 05:17:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IHG4ouAFGz3e4wS8TdDjSl6+cNUKr6dF3/5UGMXLxpaQsIdwg6iRLMcHz4EvdJxwCTU7jBRqw== X-Received: by 2002:a05:600c:6089:b0:470:fe3c:a3b7 with SMTP id 5b1f17b1804b1-47a8376d708mr19193955e9.5.1765372628588; Wed, 10 Dec 2025 05:17:08 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 07/18] target/i386/tcg: move and expand misplaced comment Date: Wed, 10 Dec 2025 14:16:42 +0100 Message-ID: <20251210131653.852163-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372807389158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/decode-new.c.inc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index ea8e26f7f98..9d17bae7e75 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -1878,16 +1878,11 @@ static const X86OpEntry opcodes_root[256] =3D { #undef vex12 #undef vex13 =20 -/* - * Decode the fixed part of the opcode and place the last - * in b. - */ static void decode_root(DisasContext *s, CPUX86State *env, X86OpEntry *ent= ry, uint8_t *b) { *entry =3D opcodes_root[*b]; } =20 - static int decode_modrm(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode, X86DecodedOp *op) { @@ -2222,6 +2217,10 @@ static bool decode_insn(DisasContext *s, CPUX86State= *env, X86DecodeFunc decode_ { X86OpEntry *e =3D &decode->e; =20 + /* + * Each step decodes part of the opcode and place the last not-fully-d= ecoded + * byte in decode->b. If the modrm byte is read, it is placed in s->m= odrm. + */ decode_func(s, env, e, &decode->b); while (e->is_decode) { e->is_decode =3D false; --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372906; cv=none; d=zohomail.com; s=zohoarc; b=k7lI1TgiAzGpWvFPfKWxHdq1n1hh+7PZ81XsssJrhq0q4P6lBGYfpQyphejNWlyPuS1sj9Y+knhESeXDpw366s6hhhBEDQ3CdM8vcX36MtXJff1WDxkorROMH9/KSypL6wOU8auENhvA/gfJ4nXv3N+fKk9vYgfpe2eULhfhD4o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372906; 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=+HYm/UyYSx/CQl46QHlKqzDUpapeLZeztYDRM6CSpoc=; b=GkqS/8r5CE2Bn8K3bnPKnpgIYKK5JvRM/dPtyNKzxuEh2wqlKiIuODOb443YDN529mxf2b5zGgFLwlkTXxUjken2lE+mHJ1aGpc4YTRZVQA1/oVO8JjqWImv/z59k/h0UFoZnGgXtU5/3My44va431AtXIeEBrBlWnZihihpJuU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372906743223.1653777194025; Wed, 10 Dec 2025 05:21:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK8M-0004BH-Eg; Wed, 10 Dec 2025 08:21:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK8J-000483-KR for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:21:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK8H-0004Zx-JJ for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:21:31 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-251-koTLtDL1OmOTOwhrr3wEuA-1; Wed, 10 Dec 2025 08:17:12 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47788165c97so41915665e9.0 for ; Wed, 10 Dec 2025 05:17:12 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a82d15f3csm46539085e9.1.2025.12.10.05.17.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372888; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+HYm/UyYSx/CQl46QHlKqzDUpapeLZeztYDRM6CSpoc=; b=Rhw7Vp715YO+sHsW2C05iQ3wBpVSi1Y975Xb4QYL0N4Qz6BJKVINdGGYgV2uTSbUpeT140 hIaroNrNFUeDnEa6IXX8g1nGjkGl6k0XpGBL1JA3Q3Qz45vf9xXqkVW9JJ2SbXhlE3qmwm 2zBGqdAzmW4xP2jzW8rsmGAVSs18Rqw= X-MC-Unique: koTLtDL1OmOTOwhrr3wEuA-1 X-Mimecast-MFC-AGG-ID: koTLtDL1OmOTOwhrr3wEuA_1765372632 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372631; x=1765977431; 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=+HYm/UyYSx/CQl46QHlKqzDUpapeLZeztYDRM6CSpoc=; b=GSEzHDs1FFdJKe7eei1Z64qyO2rn2UlDC0BH23uA9hMG9uGSLfFX7p5DDKOISQEKxE P+Yj6ObMx80YP0Viq9NPoPQq0ajW/zEQLe2vZLwSvCUJYP+kWc0VUR6fTlfEPDPjFUk5 nFmX8m4Vnmj5j2qbmky5S7Jx+hyYOjWbslBHsmlbrZxtXnYnDSNOxDKh58hb7zJUJHVA ICWA4N2zCc85X6nlGIsoznI6ZJDTEQ/oi2IOpKTwaTyZM6m0knshLcrMmMiWn34rS6VQ rkQEkQfmpFEq8S1jQl1Y7wDP2XBPG+PS7gM1fchDGbu46TpL+poyQbvBl+uh4BD4Ay9I 2iDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372631; x=1765977431; 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=+HYm/UyYSx/CQl46QHlKqzDUpapeLZeztYDRM6CSpoc=; b=Tfi5WTTTGmK6FaIi5YlQ56P8X51ko5LpxPcPSm5+di9JTaKHEpuu1C9iLPByK5M/xw wy/qc04UN/KmfEMknpAMVdMNx5XANmY9BLu3KvXbzfDVt/CfIsiuwYT6gnVhcUMdOML8 FHRefxjtdR+ay9K5OuoQBHNXdmjzvJLrAa4GYiboUpYFtT9yqgBgTVxUvnvQvAZGXlHG zyI8AgBfRBuwYSg7k44BbUhbuBN8hZcazGp+GPRgCJZ36p7NoD8hURxDfxNyeZi/PDEN eF3BwtEXbUgrqoCdpBypI8bBcQ9h1z2FtKtg5SZ+VkP8J79u3bDUmIrPd5kSQrf3VMba QqTQ== X-Gm-Message-State: AOJu0YxIZ9q7IJAgBjoR5QVN1P9dftiRxFH2lemadh/UYqfwLk1fbsNv gKl0feUPeKjL8OwutwXfVUxgv+DjbU/SYkq/aFIMBZk1XaAfuxKBGJu1os0g1gbQxFozs4t2S2m 5bo1zkHP95h7cAEfScbZjr43EkIVHy5p1FvK+/v8aS6AlHWnwqyuVlTcroNoIqt26T2fkY/uHjP wj/jX686w6a80yxyNXQczAJZHNzw/HN4QKcXqXTGtf X-Gm-Gg: ASbGnctFmfwhuzqDe3p3CCsdti4qCp+R+qfRRSB4PxZN7T6yBIMw2YI3VoKlPa9+U1f P0mp2vJxsKX1F2t+sWuaCm8TRKmujdgVpvMLmdgbp6HFV4+Wmgo4ijRIvZMyZ6mT4PDF7H7JVfO RQbnTsl9nwi4J9Y6V4Yc//yVWV7vi3RIj2c/dXXUBJiNZmf/t1CaDTVVXiJW74vCRnOfPuulm+T R+esMWRwd6hOySlLgwi3Lm/+LUlfrTBHwWiCbl8q91REBvirx59QWuqyrzn/198dZhAHhB2WzzN +9wTJBV7uRcFxyA1wvip4k2CP2vN3HhWQIQluW8GBrXMobGNPZkZYYYOZqdFV9Tz+acU8r46+jP Wyh+hJ06/ptwu33Zh+CLYMe2jPRh5gGNKrFQCF5XjWzwVOZXpFPMCaDmJ9kVvVn9+T5k2CNWvur fu5xT/00gbL/GmAss= X-Received: by 2002:a05:600c:a68a:b0:479:2f95:5179 with SMTP id 5b1f17b1804b1-47a8379de88mr17317225e9.15.1765372630764; Wed, 10 Dec 2025 05:17:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IECfoV19pI8VZotoIRMGee1WJEiJi37fRZcJ1vZTY/jSNodvnCLhkRHHEkZNk+29BDNAIzGaw== X-Received: by 2002:a05:600c:a68a:b0:479:2f95:5179 with SMTP id 5b1f17b1804b1-47a8379de88mr17316965e9.15.1765372630230; Wed, 10 Dec 2025 05:17:10 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 08/18] target/i386/tcg: simplify effective address calculation Date: Wed, 10 Dec 2025 14:16:43 +0100 Message-ID: <20251210131653.852163-9-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372907754158500 Content-Type: text/plain; charset="utf-8" Split gen_lea_v_seg_dest into three simple phases (extend from 16 bits, add, final extend), with optimization for known-zero bases to avoid back-to-back extensions. Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/translate.c | 64 ++++++++++++------------------------- 1 file changed, 20 insertions(+), 44 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 0cb87d02012..2ab3c2ac663 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -627,54 +627,30 @@ static TCGv eip_cur_tl(DisasContext *s) static void gen_lea_v_seg_dest(DisasContext *s, MemOp aflag, TCGv dest, TC= Gv a0, int def_seg, int ovr_seg) { - switch (aflag) { -#ifdef TARGET_X86_64 - case MO_64: - if (ovr_seg < 0) { - tcg_gen_mov_tl(dest, a0); - return; + int easize; + bool has_base; + + if (ovr_seg < 0) { + ovr_seg =3D def_seg; + } + + has_base =3D ovr_seg >=3D 0 && (ADDSEG(s) || ovr_seg >=3D R_FS); + easize =3D CODE64(s) ? MO_64 : MO_32; + + if (has_base) { + if (aflag < easize) { + /* Truncate before summing base. */ + tcg_gen_ext_tl(dest, a0, aflag); + a0 =3D dest; } - break; -#endif - case MO_32: - /* 32 bit address */ - if (ovr_seg < 0 && ADDSEG(s)) { - ovr_seg =3D def_seg; - } - if (ovr_seg < 0) { - tcg_gen_ext32u_tl(dest, a0); - return; - } - break; - case MO_16: - /* 16 bit address */ - tcg_gen_ext16u_tl(dest, a0); + tcg_gen_add_tl(dest, a0, cpu_seg_base[ovr_seg]); a0 =3D dest; - if (ovr_seg < 0) { - if (ADDSEG(s)) { - ovr_seg =3D def_seg; - } else { - return; - } - } - break; - default: - g_assert_not_reached(); + } else { + /* Possibly one extension, but that's it. */ + easize =3D aflag; } =20 - if (ovr_seg >=3D 0) { - TCGv seg =3D cpu_seg_base[ovr_seg]; - - if (aflag =3D=3D MO_64) { - tcg_gen_add_tl(dest, a0, seg); - } else if (CODE64(s)) { - tcg_gen_ext32u_tl(dest, a0); - tcg_gen_add_tl(dest, dest, seg); - } else { - tcg_gen_add_tl(dest, a0, seg); - tcg_gen_ext32u_tl(dest, dest); - } - } + tcg_gen_ext_tl(dest, a0, easize); } =20 static void gen_lea_v_seg(DisasContext *s, TCGv a0, --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372741; cv=none; d=zohomail.com; s=zohoarc; b=b0AYxPzX9kRGf1tUHyHPTSzDxpt5e19FGP6+fHOy7o409E17bULpQGVZ5yu2h08V4LxGbYfm4i+N0D2xIGNrj/nwwxYmxat/ocb3cDWMZwZT0agclIAKPDZ4h0PbEhAJlFxqVpoDGlmNr+oEekO/mMfHtd9I7FMXV4VHFKzacEQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372741; 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=pbq89kgPm8GFjPP2curBskdd3QXdCCJ3Vto4Vw5h5zw=; b=MPgj44cLKQUFqx91Hi6M0bDllHpk7L2piQ1CzKtGHzBr6/TcScXUtbqHG6rUHoI9sY1j2jq/1HCdLo/P3eKev6TIjp9uw5+d9T3olpxuakYbwPBBkE3jjMXsU2sQ9C6QPdcsO7o2mBowZQzTyLsApD0pUjJlIFyjOs90U0pDFxw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176537274186552.49979655707659; Wed, 10 Dec 2025 05:19:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4M-0004rA-4b; Wed, 10 Dec 2025 08:17:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4F-0004oe-1z for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:19 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4D-0003AU-2F for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:18 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-36-QrH419oyP62OIKnBeYL7sw-1; Wed, 10 Dec 2025 08:17:14 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-477a0ddd1d4so39910175e9.0 for ; Wed, 10 Dec 2025 05:17:13 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a82cb12fbsm44137535e9.0.2025.12.10.05.17.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372635; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pbq89kgPm8GFjPP2curBskdd3QXdCCJ3Vto4Vw5h5zw=; b=GXj1W1CXapvN0T6Wt3jrF5MLXjpAFBPwebFAAxlt+e+kSQj75/SOaV/HngviYC3oYzF0E6 VW7fyWMAjMPqGrPqRIDrIhip8nnWE1XjTyCeAsrRBWGVaGRyXfF6KY1euyPHbRLgcQ6KnN pTwkSktoz2wTYl6Z/oDW048XSQozGoU= X-MC-Unique: QrH419oyP62OIKnBeYL7sw-1 X-Mimecast-MFC-AGG-ID: QrH419oyP62OIKnBeYL7sw_1765372633 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372632; x=1765977432; 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=pbq89kgPm8GFjPP2curBskdd3QXdCCJ3Vto4Vw5h5zw=; b=Ib6h9a9oApgr5+W+0i8b0hMqrHIma8NCGf5XV2cY/SyNCECByLj9gURwkeabD63kOw P4OE+mz5mIvg31coSfveefyQdxX81yNx47d8MRDmQkRK/W/waekrj93loHwsuWulB6pR R0bRJZHCperLKrBC6dYOIiEGfRikRqGH7J2BA91SlkyCmYrZTfKaEx5W7hu08hnJVqBI V0rPzWzBcsygNkTH8BBdDMhKBHmYlp6ogYnMR0m3fB6gK2XHI9W8gsbHAlFTqRYtNFu2 C8O0vVqyk5DMSh+1OWTJdOO/OT6bJYK41YWOqZo3yEVReIhnFojixwNeqJUe89/7DLi9 0CBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372632; x=1765977432; 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=pbq89kgPm8GFjPP2curBskdd3QXdCCJ3Vto4Vw5h5zw=; b=Pnk2XE7tXO4ZcJBth8Ocv5TWUz26xIQqGw4tfaR9Q3C71YfD/qZw90u3T8XntUoY1q cAS6XxX9+HGtQHkOsfacsNxQfuuifIPrNPkNAPAoVKsBivF6Qa8mt+CDa+AgaQZZoaUP H7KkQthjcQZIPd/sVBXeUjU1LdQhrDsw0yLS2W4OqFsHLju5ViBBFy0mO4HlTlZcOKEi oHBgbORkwNTA3wThk2DdMoZ3xOpJ9Tu80XKDsRdZL6oCvhgqbcwAeXIk4RDhSuBT2IRi t50K+SwOItfYN0YhWcqHVPqexrqdwVBV4YASFW0I2AyGxfe/uz5RJ0ANj0KlQpQQEpsb 55wQ== X-Gm-Message-State: AOJu0YzrPu0cp7TyB7PG+/jqCUSOAzPjnDnaPKUg73hMopYmuIEqw0L4 +kmHsG2mp/LqeD08jC69F9iFmExlNDCqW/6FGyEouAHko81aBIpNwdsyOiC3pbrtlHAgnSfmCQa Zv0F+v+YVhoEgSiFqjo+8QJX4qeYnAnizAuM0Qgkxa4tbt8PkBI8v/FDHc2XOoWBGIoJwwftWhk krZeJftBeutE+gib3NfE0OT9m1sM5HnNIg86Bd9FT8 X-Gm-Gg: ASbGncvCA5YLLIYMCT7RKV5/j54OmXr1XsO9h06RNmfBAF14jipu+W3bPITYG0doKKA 4E++vDuAseLfh1fEj6VkR4BJ3X6m2G4INNG14aJ4vNXYzE5+R5GTLcZ8ZW3Pob0I0aZUHOzRqvP Ojegc81ks6I6007t3AWgr3bPTN0mP0HinAqRoxo2V4CR3a8y7JHOLeBDT0j9oBmQLSFFcKn3PnE nhBoLa9mLgcz91hDTaiqbrRMPKkc+DBhxKBOBLZKStbaj+QJvCv9rWdaCi6VjcdrrV8RZ9vJAXp FH+sWetmmhOj4ehRpg1DyKq91QeeccYXQh0Uy9eu+nAm8/NPQhHH/08Df5bw/SJjtuZIt5fVlZc BDqEbeKNfgbVIeQPiI0XYg/y/g9V9ZdINqyqZOrGatPtZm8k5QzVki9zzaJmVmUJpPdofhVHsi3 k7UM5iqbTP++s2KE0= X-Received: by 2002:a05:600c:3e16:b0:477:9d54:58d7 with SMTP id 5b1f17b1804b1-47a8379c15dmr23370265e9.29.1765372632097; Wed, 10 Dec 2025 05:17:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IEBGJD5OUoh1sN4EfxDy1fba7O2u4Q5lKjltZETS4c6sTXQzmhAEbdQvsttmYUaZY0XJs/fbQ== X-Received: by 2002:a05:600c:3e16:b0:477:9d54:58d7 with SMTP id 5b1f17b1804b1-47a8379c15dmr23369965e9.29.1765372631518; Wed, 10 Dec 2025 05:17:11 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 09/18] target/i386/tcg: unnest switch statements in disas_insn_x87 Date: Wed, 10 Dec 2025 14:16:44 +0100 Message-ID: <20251210131653.852163-10-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372743105158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/translate.c | 290 +++++++++++++++++------------------- 1 file changed, 134 insertions(+), 156 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 2ab3c2ac663..c755329b3d9 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2457,36 +2457,32 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) =20 switch (op) { case 0x00 ... 0x07: /* fxxxs */ - case 0x10 ... 0x17: /* fixxxl */ - case 0x20 ... 0x27: /* fxxxl */ - case 0x30 ... 0x37: /* fixxx */ - { - int op1; - op1 =3D op & 7; + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_flds_FT0(tcg_env, s->tmp2_i32); + goto fp_arith_ST0_FT0; =20 - switch (op >> 4) { - case 0: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - gen_helper_flds_FT0(tcg_env, s->tmp2_i32); - break; - case 1: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); - break; - case 2: - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, - s->mem_index, MO_LEUQ); - gen_helper_fldl_FT0(tcg_env, s->tmp1_i64); - break; - case 3: - default: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LESW); - gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); - break; - } + case 0x10 ... 0x17: /* fixxxl */ + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); + goto fp_arith_ST0_FT0; + + case 0x20 ... 0x27: /* fxxxl */ + tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + s->mem_index, MO_LEUQ); + gen_helper_fldl_FT0(tcg_env, s->tmp1_i64); + goto fp_arith_ST0_FT0; + + case 0x30 ... 0x37: /* fixxx */ + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LESW); + gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); + goto fp_arith_ST0_FT0; + +fp_arith_ST0_FT0: + { + int op1 =3D op & 7; =20 gen_helper_fp_arith_ST0_FT0(op1); if (op1 =3D=3D 3) { @@ -2495,88 +2491,78 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) } } break; + case 0x08: /* flds */ - case 0x0a: /* fsts */ - case 0x0b: /* fstps */ - case 0x18 ... 0x1b: /* fildl, fisttpl, fistl, fistpl */ - case 0x28 ... 0x2b: /* fldl, fisttpll, fstl, fstpl */ - case 0x38 ... 0x3b: /* filds, fisttps, fists, fistps */ - switch (op & 7) { - case 0: - switch (op >> 4) { - case 0: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - gen_helper_flds_ST0(tcg_env, s->tmp2_i32); - break; - case 1: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); - break; - case 2: - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, - s->mem_index, MO_LEUQ); - gen_helper_fldl_ST0(tcg_env, s->tmp1_i64); - break; - case 3: - default: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LESW); - gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); - break; - } - break; - case 1: - /* XXX: the corresponding CPUID bit must be tested ! */ - switch (op >> 4) { - case 1: - gen_helper_fisttl_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - break; - case 2: - gen_helper_fisttll_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, - s->mem_index, MO_LEUQ); - break; - case 3: - default: - gen_helper_fistt_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUW); - break; - } + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_flds_ST0(tcg_env, s->tmp2_i32); + break; + case 0x18: /* fildl */ + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); + break; + case 0x28: /* fldl */ + tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + s->mem_index, MO_LEUQ); + gen_helper_fldl_ST0(tcg_env, s->tmp1_i64); + break; + case 0x38: /* filds */ + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LESW); + gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); + break; + + case 0x19: /* fisttpl */ + gen_helper_fisttl_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_fpop(tcg_env); + break; + case 0x29: /* fisttpll */ + gen_helper_fisttll_ST0(s->tmp1_i64, tcg_env); + tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + s->mem_index, MO_LEUQ); + gen_helper_fpop(tcg_env); + break; + case 0x39: /* fisttps */ + gen_helper_fistt_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUW); + gen_helper_fpop(tcg_env); + break; + + case 0x0a: case 0x0b: /* fsts, fstps */ + gen_helper_fsts_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + if ((op & 7) =3D=3D 3) { + gen_helper_fpop(tcg_env); + } + break; + case 0x1a: case 0x1b: /* fistl, fistpl */ + gen_helper_fistl_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + if ((op & 7) =3D=3D 3) { + gen_helper_fpop(tcg_env); + } + break; + case 0x2a: case 0x2b: /* fstl, fstpl */ + gen_helper_fstl_ST0(s->tmp1_i64, tcg_env); + tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + s->mem_index, MO_LEUQ); + if ((op & 7) =3D=3D 3) { + gen_helper_fpop(tcg_env); + } + break; + + case 0x3a: case 0x3b: /* fists, fistps */ + gen_helper_fist_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUW); + if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); - break; - default: - switch (op >> 4) { - case 0: - gen_helper_fsts_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - break; - case 1: - gen_helper_fistl_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - break; - case 2: - gen_helper_fstl_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, - s->mem_index, MO_LEUQ); - break; - case 3: - default: - gen_helper_fist_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUW); - break; - } - if ((op & 7) =3D=3D 3) { - gen_helper_fpop(tcg_env); - } - break; } break; case 0x0c: /* fldenv mem */ @@ -2707,39 +2693,37 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) } break; case 0x0d: /* grp d9/5 */ - { - switch (rm) { - case 0: - gen_helper_fpush(tcg_env); - gen_helper_fld1_ST0(tcg_env); - break; - case 1: - gen_helper_fpush(tcg_env); - gen_helper_fldl2t_ST0(tcg_env); - break; - case 2: - gen_helper_fpush(tcg_env); - gen_helper_fldl2e_ST0(tcg_env); - break; - case 3: - gen_helper_fpush(tcg_env); - gen_helper_fldpi_ST0(tcg_env); - break; - case 4: - gen_helper_fpush(tcg_env); - gen_helper_fldlg2_ST0(tcg_env); - break; - case 5: - gen_helper_fpush(tcg_env); - gen_helper_fldln2_ST0(tcg_env); - break; - case 6: - gen_helper_fpush(tcg_env); - gen_helper_fldz_ST0(tcg_env); - break; - default: - goto illegal_op; - } + switch (rm) { + case 0: + gen_helper_fpush(tcg_env); + gen_helper_fld1_ST0(tcg_env); + break; + case 1: + gen_helper_fpush(tcg_env); + gen_helper_fldl2t_ST0(tcg_env); + break; + case 2: + gen_helper_fpush(tcg_env); + gen_helper_fldl2e_ST0(tcg_env); + break; + case 3: + gen_helper_fpush(tcg_env); + gen_helper_fldpi_ST0(tcg_env); + break; + case 4: + gen_helper_fpush(tcg_env); + gen_helper_fldlg2_ST0(tcg_env); + break; + case 5: + gen_helper_fpush(tcg_env); + gen_helper_fldln2_ST0(tcg_env); + break; + case 6: + gen_helper_fpush(tcg_env); + gen_helper_fldz_ST0(tcg_env); + break; + default: + goto illegal_op; } break; case 0x0e: /* grp d9/6 */ @@ -2801,22 +2785,16 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) } break; case 0x00: case 0x01: case 0x04 ... 0x07: /* fxxx st, sti */ + gen_helper_fmov_FT0_STN(tcg_env, + tcg_constant_i32(opreg)); + gen_helper_fp_arith_ST0_FT0(op & 7); + break; + case 0x20: case 0x21: case 0x24 ... 0x27: /* fxxx sti, st */ case 0x30: case 0x31: case 0x34 ... 0x37: /* fxxxp sti, st */ - { - int op1; - - op1 =3D op & 7; - if (op >=3D 0x20) { - gen_helper_fp_arith_STN_ST0(op1, opreg); - if (op >=3D 0x30) { - gen_helper_fpop(tcg_env); - } - } else { - gen_helper_fmov_FT0_STN(tcg_env, - tcg_constant_i32(opreg)); - gen_helper_fp_arith_ST0_FT0(op1); - } + gen_helper_fp_arith_STN_ST0(op & 7, opreg); + if (op >=3D 0x30) { + gen_helper_fpop(tcg_env); } break; case 0x02: /* fcom */ --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372765; cv=none; d=zohomail.com; s=zohoarc; b=Lpg4h069pxae+wwMRodNxVY0+KPVWri9zaMCgIY+2krMxOu+b7zjKfyqyLzH0zu5dWGsMZK2cwBt/DrENZ4pRfoM4z5Vub6m+f8fh3d6FcUuemeJPSOE9apKWZ0uL4QGGujjUOq8GT5O0J8xzFC71e6yZaa/KcVmRBCMX+M6YOg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372765; 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=cpoQK+0nuozislWPiqikqnKa1Cv0Zspgf159fKre7JA=; b=KiYIwSPZq6TC8zl/ion2jzMt1YWhIhZk0xkKo24GRL/b5bHQwjw+6piVcU5sAw7n8hm2sJ7Gx0IJ/dyGwikagoMnwhMr5AO13hjGrmr6QJbuIUfx2NndlK2I3rUMCXfKMxzWsKxOqINu1PPRC/2gpxSavyilVbxdXzRfX8Mk+LM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372765763804.148256191065; Wed, 10 Dec 2025 05:19:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4U-0004s7-GP; Wed, 10 Dec 2025 08:17:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4I-0004py-HH for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:23 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4G-0003E6-7J for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:21 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-385-0WHtGTYKOLi_pswMQoz_lA-1; Wed, 10 Dec 2025 08:17:15 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-42b2fb13b79so3415858f8f.3 for ; Wed, 10 Dec 2025 05:17:14 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7ca4f219sm35843868f8f.0.2025.12.10.05.17.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372639; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cpoQK+0nuozislWPiqikqnKa1Cv0Zspgf159fKre7JA=; b=awIgbBZ8xTx2eeKy7YyRQl/BMjyKMciLZ/uVzmCUWA/35dUgI1vm76i1kXUxU03LaDuKKF CZIt04lcekKsynDqU2ijaewRIiSEXpe7hIGyoGuL0TEg6zQRE+geS+NkBOANVOmeZHC+23 XX/nsUo/wpZXhsZfGobUs3j3BDUeI/Q= X-MC-Unique: 0WHtGTYKOLi_pswMQoz_lA-1 X-Mimecast-MFC-AGG-ID: 0WHtGTYKOLi_pswMQoz_lA_1765372634 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372633; x=1765977433; 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=cpoQK+0nuozislWPiqikqnKa1Cv0Zspgf159fKre7JA=; b=ReUDEwYlbJDzVRolo9DP21RE9/cHaQkW2JRotRJukvVIyn9rhXAtTTdbQH3Vt1ZsA9 Swwz27d6KbqNa+34ufjP/WL3/p756S139wtDlR8ngxNc6OoMWQcJgUFYtkf//kV5IkSH POxzjdHi7BDQxFUnsvHwgcfdr8wEWIXSkxFi6DBQ4uqG7riwxz6PA0Nh8EiqJP2qZez+ FIo5W8535xq2UE2gvh2NAOl+xJM7ZZYutkNxuMGWR8uquirpXpJDKkBBeq8IsY1ewPpp +IL+Wg9vImKrUyAibbYjl2qOL4iMwpDIkru/ZwSwgtR5DhB1nklDjNNuapiUfQAZ+V2V rCzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372633; x=1765977433; 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=cpoQK+0nuozislWPiqikqnKa1Cv0Zspgf159fKre7JA=; b=YbOyIQ7QS3ptRFzsSpxmvnfgNwh9cHFw+DdYR1O+cbyugxNk9ZaTR5njAUOMrzBFKt 5pvciCI/zZGX87P+aVk/vUwzWZATwEE+PEn59K1t3Qqvz970XTz34/9K/2SgyDxEPuxU 1nmTo5yO4G6YlozgQRZ1vQcQhXiq0x2rrCITCVIynA43tT02tq9bhNkvILdAHO7aHqKc 02/I5yphvZKBmCegI4fuujXbnvsYhbq1lLKYYo89cX6T9ov6wTleGT9yDPi1DwYkCiU4 4QerGVCXKDjuNpSr3qfFLPdbhL8XZlVvWYVp13i15O5mtj9AGpblhXsIZ4OaqV4UFFCV m9fQ== X-Gm-Message-State: AOJu0YwEL4EfBcRK87YkdnT5ryjsLaL/oxCxKHd7TtsFIzo+fA90PdDF wMs0PHVTEJCAGX7Q1J4KiR0X6NACjnQTFVzm1z3AsrhthDOXGg4T2MxcZp6CUPsoVsoUuWv0uKW bM/PRBPvyJBPubsAkUNfA9LYntfHs40GuBW6J/Oto7bgfFmAxf+UC8VRWE3AHfkiwqyjW0p+Tpt no3EYQKCVLvj0OIetTft6eo0fRntM0UJuCZrbgUcUQ X-Gm-Gg: AY/fxX4A0Ip9bEv19L3vksrBLftsirPMnCYfhcnKuYDKgAElg6N/A7FZYEB7ObLeVTI eWM9dora3n0yVv8qPgz4a8g5vpnaWoYOyeHQmWbOzLfsLshSNaOXPY2U6bNHdL1PBP51k+tHyje iQuHNJbmbTuakMFUg2hUJv0gCCgE9/KHrt2AOoKNQvycuwxHVceicw3J/B3EMY9mXylJwrD3Rdb rw4MBDGtRX1oCje/62ywnWfVhUsIJt3ELBH7EPYAGohZmedwWA9whSRbG8Jlxtdik+Obazr5viy DKYjUtLszkIT9umsnv3pL9FTYVcRK66l3/PflmW8pIhCLqhm7roi8TA2FOxwd/2Tg65xF9QhWCx DRKe5pjDYhDPJnaghQ/2ga/GG5/7gjKU0yTDg09rLKCp/YBjSpZZfQRzH1HKjjF5A86hCGNQ3Rz xpzkRXV/uD5c+pu+Y= X-Received: by 2002:a05:6000:402c:b0:42b:2f79:755e with SMTP id ffacd0b85a97d-42fa39d8607mr2803245f8f.3.1765372633215; Wed, 10 Dec 2025 05:17:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IG50R2/eay63rrmwVO+kA7ClBQJfCqD16oMV0WZlRHQ/uYY0g2XmiTn13c5wtYnnSRQyAMMhA== X-Received: by 2002:a05:6000:402c:b0:42b:2f79:755e with SMTP id ffacd0b85a97d-42fa39d8607mr2803208f8f.3.1765372632755; Wed, 10 Dec 2025 05:17:12 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 10/18] target/i386/tcg: move fcom/fcomp differentiation to gen_helper_fp_arith_ST0_FT0 Date: Wed, 10 Dec 2025 14:16:45 +0100 Message-ID: <20251210131653.852163-11-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372767208158500 Content-Type: text/plain; charset="utf-8" There is only one call site for gen_helper_fp_arith_ST0_FT0(), therefore there is no need to check the op1 =3D=3D 3 in the caller. Once this is don= e, eliminate the goto to that call site. Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/translate.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index c755329b3d9..3c55b62bdec 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -1485,6 +1485,7 @@ static void gen_helper_fp_arith_ST0_FT0(int op) break; case 3: gen_helper_fcom_ST0_FT0(tcg_env); + gen_helper_fpop(tcg_env); break; case 4: gen_helper_fsub_ST0_FT0(tcg_env); @@ -2460,36 +2461,28 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, s->mem_index, MO_LEUL); gen_helper_flds_FT0(tcg_env, s->tmp2_i32); - goto fp_arith_ST0_FT0; + gen_helper_fp_arith_ST0_FT0(op & 7); + break; =20 case 0x10 ... 0x17: /* fixxxl */ tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, s->mem_index, MO_LEUL); gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); - goto fp_arith_ST0_FT0; + gen_helper_fp_arith_ST0_FT0(op & 7); + break; =20 case 0x20 ... 0x27: /* fxxxl */ tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); gen_helper_fldl_FT0(tcg_env, s->tmp1_i64); - goto fp_arith_ST0_FT0; + gen_helper_fp_arith_ST0_FT0(op & 7); + break; =20 case 0x30 ... 0x37: /* fixxx */ tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, s->mem_index, MO_LESW); gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); - goto fp_arith_ST0_FT0; - -fp_arith_ST0_FT0: - { - int op1 =3D op & 7; - - gen_helper_fp_arith_ST0_FT0(op1); - if (op1 =3D=3D 3) { - /* fcomp needs pop */ - gen_helper_fpop(tcg_env); - } - } + gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 case 0x08: /* flds */ --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372840; cv=none; d=zohomail.com; s=zohoarc; b=kxvd5IqNdoSmc4jlMr7lCypQ7yAVUIAQPM8KWMsTIa4wXuODETNacDm0ZWoJpvucbREY2ue0hiMY2Eg2lGzuVg8nNsUvv3GilfBOI3E9JzLqSs7oS/k1pE4c/lv2NNoiVtHdUCaxaZ125QfGV9THy/NqlcRJVbD6/+iLcOXjV+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372840; 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=w7AEJmbZf7v9i6z1nQi1Rikw91z3HR65sA3q4HWlvD4=; b=SUDNKS0i0Xv+kTQnmhV2705x6a0GxIG4fIdg6NgvjNuNM4f86gA0X5L3v5iHbDLOvzxCXduzTw7s30vcfF2pJUkIwxQlgw0jNEzgDfC1FKE1uyNafiesbKCk9BUQzOK7ylS8c2acgEPCO9g1GxqyVy91Ffn+E03F+Zx5q42ypMc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372840957680.9236619488441; Wed, 10 Dec 2025 05:20:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4y-0005AR-8Y; Wed, 10 Dec 2025 08:18:04 -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 1vTK4G-0004pp-Dt for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:22 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4E-0003Dd-RX for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:20 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-314--sVhK-PFMaGt2sXH4cGPng-1; Wed, 10 Dec 2025 08:17:16 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-42f9f40a9bbso903471f8f.2 for ; Wed, 10 Dec 2025 05:17:16 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7d353be1sm36602697f8f.39.2025.12.10.05.17.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372638; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w7AEJmbZf7v9i6z1nQi1Rikw91z3HR65sA3q4HWlvD4=; b=TiF/7w3S1x20swz5vfxZUlq0ZCgUZMXInFgnLQQINAhICYgXmf9rsyOO482eim0o5lv8eI PNxed8Kr5E6Vv4R2veFLnCexS28ZAZULl/icCiT+eiJD2KivAxTYMrd3vuv6iFATf0KGD1 piBfQ0DFMynu7HTSniT7Qejh78ZX+Gg= X-MC-Unique: -sVhK-PFMaGt2sXH4cGPng-1 X-Mimecast-MFC-AGG-ID: -sVhK-PFMaGt2sXH4cGPng_1765372635 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372635; x=1765977435; 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=w7AEJmbZf7v9i6z1nQi1Rikw91z3HR65sA3q4HWlvD4=; b=D5SuBOPBJjIgizBkwdpMlJAUO1/plWoPNmRRBR2uwSbAs+5gJabaoN0WlSxyWpv9vW 5QUbI4rGUo2/0atJbeyu3a86/hEmPRt3RNSdrXGEa+9RTvcpnqcWKHjGgYKgDZuKvt8L c+NpM4FhDYgVxfn8a4Yl70NdOwr6cdGh4TeQ81rKyOhi2Q80HY6jGGOLPBZvF9JHskHO q8Jo8w1mFzSILZlIpBGhJXAbvI5slLZuYUCWAU2UNbT8LGvB2zAF409emx515y8SS2+X XO551c+nb7Kv+6hxxGHVk8MDXuYblcAFqHLjHdDf88Ki6W76JoZn78UpEEcQqplyi7l1 F6Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372635; x=1765977435; 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=w7AEJmbZf7v9i6z1nQi1Rikw91z3HR65sA3q4HWlvD4=; b=m8ALZqnICq23jYrYqX/mCzHlQ6+9g6Czbx7/BKeIVZlyxAXdRX0KAUhHj/e4DYP9ty EufFaHORHP2EXk2JQS1eZImMeaCRoc3caBgbaPE2bhjsjrf4CGEDCbeiMKVJadyQ6tn+ noq1qUGHYF4qQPIqhVgogdPYgOEkjHVCW1HwPhqXKK8Db6oR+cd7DT3zHEL8x55FRlNe +Mq16IaAL7chDT64pdnQ3VffcLYLDZBzYJpTpOWJ7fgV3wXuOPKtlTW8Ft8dzJZ/Y6e4 jV2m8wwMI1A7q1GksOSd1j+V/6RyGfa46+bN5q3MOb9dtnfZ1L1nEE0SbjI0Q391TlOM xDIw== X-Gm-Message-State: AOJu0YzTRFHeilzP2cuWm2cBg0UAkuvVVwKFfuIQWWPDXJZRKWE07uM1 fp1qNwjCvArdnspERVm3NbNS/ckHb1uXIY+vNTy7NsVhpofxvfcW8e2t+8d39K6GIrnxitz1O29 rfG6f+y1YMahBqVlyii0prRX7yhV+9DBbneIcJlwMXozqH5/tyZ5ly5VElXsDqB+SdqP4ozak7x xd4Xw68/yTMNVqXT0iYnJ/fFTfmmDsyqAEDex6y5F2 X-Gm-Gg: AY/fxX48TuDkg5EeWIEsCEANO83c48RzaoZk7VABfvjEUnOML1WpSPM+l9LpuumW6Ku 2T++39PwLKG8Vr4JjLL3hM2hDbPStAcR3e2jnG0mEl+KK31QaYNlD/0ZMvo2fvGaNkVPArfTbfv U55FGfB9/ySwcKW5qRL2HqhtNYOu6NpOcG71wxbd13XwjICsTzgzcLPvEDln+kYN6YcgZDABg4i YslI/0z0aW5+grbgTAQQ2Yvgn8Xdi1SY29257U4Kh7ELcFmi8AbdfQX7FF/kHEqiQw9BKbxqX6P +v+SACW5Rufc4zEZucppYYKyDC+8gK/zkx1gQ6gCHy2gSFGpuhZxOyxnRUzay64vAA8bekMv9At HhqOp1Ll/kzK4589YwtcF0xjBlLRPs70ELdaBbSt81twBOFRb4blm1Q+OHXKyY1smOaFRRRlQwH EyMuH3KZFEk0qeXmM= X-Received: by 2002:a05:6000:2dca:b0:426:d54d:224d with SMTP id ffacd0b85a97d-42fa39d8813mr2395876f8f.27.1765372635056; Wed, 10 Dec 2025 05:17:15 -0800 (PST) X-Google-Smtp-Source: AGHT+IHqv0EWeqS28mftM1SugKVcOniDl1yTJDnXhrn/uR0Pgn6+qSseM/I5Q8d8tl9YylqKeDfdHg== X-Received: by 2002:a05:6000:2dca:b0:426:d54d:224d with SMTP id ffacd0b85a97d-42fa39d8813mr2395844f8f.27.1765372634503; Wed, 10 Dec 2025 05:17:14 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 11/18] target/i386/tcg: reuse gen_helper_fp_arith_ST0_FT0 for fcom STn and fcomp STn Date: Wed, 10 Dec 2025 14:16:46 +0100 Message-ID: <20251210131653.852163-12-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372841508158500 Content-Type: text/plain; charset="utf-8" Treat specially the undocumented ops, instead of treating specially the two d8/0 opcodes that have undocumented variants: just call gen_helper_fp_arith_ST0_FT0 for all opcodes in the d8/0 encoding. Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/translate.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 3c55b62bdec..8f50071a4f4 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2777,7 +2777,7 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) break; } break; - case 0x00: case 0x01: case 0x04 ... 0x07: /* fxxx st, sti */ + case 0x00 ... 0x07: /* fxxx st, sti */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fp_arith_ST0_FT0(op & 7); @@ -2790,12 +2790,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) gen_helper_fpop(tcg_env); } break; - case 0x02: /* fcom */ case 0x22: /* fcom2, undocumented op */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fcom_ST0_FT0(tcg_env); break; - case 0x03: /* fcomp */ case 0x23: /* fcomp3, undocumented op */ case 0x32: /* fcomp5, undocumented op */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372749; cv=none; d=zohomail.com; s=zohoarc; b=AfQUIC2zrBO5gLfAmgvWiWCRvTNJ9/eHyCsQbfyOgRup/wEfusZQVf9tHhN4XeefVGK6bbz0HE62HtbdDU2GhzHVkP3reglOOJ4mx1vjZEqC6IH2o5RJjazrGQHgVNEYlLSjLm4kRD2DvU3q06dwhKTFROteziQlxcE2x/gZCi8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372749; 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=3JmnpFRe4llaHNNrdqOS8nOURF1rsOD1zpds34mYAHg=; b=LjyRqrqATYr5HnurUqqueXzp4k0JFGn+pWQfUa8qLpkV0zZ/hH6DAGu4kKqy5CJOrhajBAP27B2Gl2pYYXVT7noU6BcgPgzRfty+woMHi0eG6J9Cyef/8Mhc04BY5AlIpRCs+PEqD7N4rTzvkt9jJ+qQH7Y9XzV8f/cdUg8f700= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372749536349.3620902342898; Wed, 10 Dec 2025 05:19:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4j-0004wo-Ma; Wed, 10 Dec 2025 08:17:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4I-0004pz-H3 for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:23 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4G-0003EC-CI for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:21 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-340-hYf8V-FIPqeNmcGseXIPQg-1; Wed, 10 Dec 2025 08:17:18 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-477cf25ceccso55899355e9.0 for ; Wed, 10 Dec 2025 05:17:18 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a7d98ef5bsm46576075e9.3.2025.12.10.05.17.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372639; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3JmnpFRe4llaHNNrdqOS8nOURF1rsOD1zpds34mYAHg=; b=R7lSwMBYzQBERGVTP5R76WgoAPpRxsJIjhzcCOKYbbVTzvUBtFvMfiD6w/ZP7jiUQ9NINh U3AEQvZXAyXZRVd4ZrzrOCcyyUSl89HnLXn42AqSRtryj/pK1u9Gi61jg2WWaB4/Hj3ZIl ZMWahWWe152V9G6da1+lC8w/Ct7qvwA= X-MC-Unique: hYf8V-FIPqeNmcGseXIPQg-1 X-Mimecast-MFC-AGG-ID: hYf8V-FIPqeNmcGseXIPQg_1765372637 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372637; x=1765977437; 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=3JmnpFRe4llaHNNrdqOS8nOURF1rsOD1zpds34mYAHg=; b=g2ko4kszKaPZB2LyxC0H/9UD9W8dbMUcDgvaOQRuzfxSmOEbV7Lhipawp0wVnP7mLM 5q6W33cZ3mahoRU39/cFPPHHmbNDPad6SNmFsOrFne9pzPJUN41LZdryDoaQ1KEu8AUk Q1JVKh+xap8um9zJjLVDbrFV3aO9gwPDY1JysN49aVR0dY0pxm7ChhfuGavV0jmKrSAd u6/CQB5KC9FcyNcT9lochagvcnKgISEs57RcmFWOAZkkaIfT1qISuZI9J8t33OH03DhX GYnwVshddQJDjIpE8V+3TOXPEG4UlVDhU14yGUxFt5fnTbnE1Q5Qh0yKq5uigNeIPU7q jMeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372637; x=1765977437; 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=3JmnpFRe4llaHNNrdqOS8nOURF1rsOD1zpds34mYAHg=; b=vl+/UvT7EBwYMHrMEMwqp99lDgx99Nuw1G2z9vzWtHxQuVi02+xk2pKOpXX24Lk9DE MdRXmLhrN8OJtdot+zX3R4Qy85DtrhsqGMbL/UukiIhg2GVaUQ7f1h++k3WaIeeQnI3a BwEXQeW0etVlOAm7gdkBosUamgFX66/ibf41PjY7uje3wFR5a+a0qdvkvz8PdRIvSAa+ ZhA1eiZcX7x2bjG+WK9lm40ctJZF/u7eMJrAgrg5FO9KxKwfyG/IHWnhIKFGDFeSF+MQ zJIVIuSo0Zu3i0JtihPILFrgT6IOw4lPzRRdN76WIfrnFk5vcasQAY9kO1xap8310cdN CayA== X-Gm-Message-State: AOJu0YxyW8ALOaOsf/8KFwtBbhID5C84wzWlXKCOpmGfY/TCixJUzZHr /fWFVLiMvoeyVz1nWvBYBz2h62D8N5Qud1jjmyLVph0Agnvy3mgRYpQBF6Eru8Hx8yF9nCxp0rU cvyIzOTrd8tUuOdKll7RyZB08ksp4oNYP7QetTb3tS5gKfsUbJpOb8jnBKmruwJQsN7+7mIeoRP RlPLujifyezMB4iQ+yiApFBjjYtLrCoGEcVQkjeptN X-Gm-Gg: ASbGncvkfrWJSzI0ZMWYuEcV15P44Djo2dZj8swpWfZatEFo81XSINKw1YB7zLLd1AW U7ehmUXcvqfzLJLmZ2qu6lMehV+nF7smyCi7sckp+BJHYKKhUaLMTzS3Q6lku6rTQDGt+WvGZ+F H4SOqOpE4vSkEV7FCtJ+OUNcshQp2l4Txt4/p4MCPXSwSsAGyjxeDjGGqhXHPwW3DODkTT3Jrhj NoB8VZA+d6ryP8jAPCFsD/g79UvscLfAx8LpJUbUaw/65KvN0YU905cI1VavwaDu2QQ9Xu6uVJ5 1rrNZsNNo0sZEBaEET3wIQfNFgpWaR9Eg35i98IqcutqQKckKN/MTId8rnDtpaUpr7AGgsEHHBW dN3EZ+iDfiIWX6l3P0K2ypIrJrhMvlNnEM3/JDMCMx7GPAvYy24RkPOkuGyAMKt4Q2s5iswTCyd BhBPboA8nmwP7mJZA= X-Received: by 2002:a05:600c:3e8d:b0:477:b642:9dc1 with SMTP id 5b1f17b1804b1-47a8378ce43mr20990415e9.20.1765372636792; Wed, 10 Dec 2025 05:17:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IHQQK4stTo0DzT/wd4uNdytQtriJ+l3rE/GxOFljvYo6qq8hcOZbyMEvNjpQeXz8kCzTpSe4Q== X-Received: by 2002:a05:600c:3e8d:b0:477:b642:9dc1 with SMTP id 5b1f17b1804b1-47a8378ce43mr20990145e9.20.1765372636338; Wed, 10 Dec 2025 05:17:16 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 12/18] target/i386/tcg: reuse gen_helper_fp_arith_ST0_FT0 for undocumented fcom/fcomp variants Date: Wed, 10 Dec 2025 14:16:47 +0100 Message-ID: <20251210131653.852163-13-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372751228158500 Content-Type: text/plain; charset="utf-8" For 0x32 hack the op to be fcomp; for the others there isn't even anything = special to do. Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/translate.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 8f50071a4f4..f47bb5de8b3 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2777,7 +2777,12 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) break; } break; + case 0x32: /* fcomp5, undocumented op */ + /* map to fcomp; op & 7 =3D=3D 2 would not pop */ + op =3D 0x03; + /* fallthrough */ case 0x00 ... 0x07: /* fxxx st, sti */ + case 0x22 ... 0x23: /* fcom2 and fcomp3, undocumented ops */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fp_arith_ST0_FT0(op & 7); @@ -2790,16 +2795,6 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) gen_helper_fpop(tcg_env); } break; - case 0x22: /* fcom2, undocumented op */ - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fcom_ST0_FT0(tcg_env); - break; - case 0x23: /* fcomp3, undocumented op */ - case 0x32: /* fcomp5, undocumented op */ - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fcom_ST0_FT0(tcg_env); - gen_helper_fpop(tcg_env); - break; case 0x15: /* da/5 */ switch (rm) { case 1: /* fucompp */ --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372835; cv=none; d=zohomail.com; s=zohoarc; b=QHQcJSu6QGx+WW4aqqt6RUFYDtBlSNpz96mWnKAdSrs6770NzxFsi5fvN1VAoAvLcW36c3ugFw56WmxOHUeJig8oVrW/M4EDfLIhLfGF0b2H4NvcLnYldAkOSyQwKBSeUYxG/An9F8fYHsXY4BvOUggpCiH5UHTfaoaOexi769A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372835; 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=GKpMCAlv7ID015Tk0OkNs/f5DVZhlc+TdWNSgkE0ov8=; b=Coh0n2YlsGeqUrSFcHHSUT3dYvnYqjeMi3HH7HnTlO8Q64BT7Hr52/Tc7ss+ElhbCcLtGz4KWkttwpW2UhnhyY36pRlPl+Aoa/ur3qi/nSNr+xow2KCET1+XCXnu7oUBHeoTas1Jfff/CGoVfHE2o4zKbTZP+HkK8Cfj6jITozM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372835413656.642892590512; Wed, 10 Dec 2025 05:20:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4o-00050U-Ry; Wed, 10 Dec 2025 08:17: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 1vTK4M-0004rL-5V for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4K-0003FI-IJ for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:25 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-259--O7sZKktP3S9dMEdfgYkpg-1; Wed, 10 Dec 2025 08:17:20 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-42b3155274eso3345353f8f.0 for ; Wed, 10 Dec 2025 05:17:20 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7d331df0sm39033279f8f.36.2025.12.10.05.17.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372642; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GKpMCAlv7ID015Tk0OkNs/f5DVZhlc+TdWNSgkE0ov8=; b=K7v59Z5tpmc+KnFfTLABde1JI9bcEvhWaq1VTgumFo+TjTcIZqfMUZ3seGLZ6RvIUK13ld sarYapnCe6MMy/9pFhNCGasSdKmHrFghKgpIjHIREJ6YPdLohaIWG3CQXMium87Zg2ZBPt 7ATphO/i0XRpD5ff16UfKTb5b/DdyIg= X-MC-Unique: -O7sZKktP3S9dMEdfgYkpg-1 X-Mimecast-MFC-AGG-ID: -O7sZKktP3S9dMEdfgYkpg_1765372639 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372639; x=1765977439; 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=GKpMCAlv7ID015Tk0OkNs/f5DVZhlc+TdWNSgkE0ov8=; b=Mz5vt3moEAi9eNK1371zyTxl3O3yHpuF35wFcc5L2mmDaAiQp+8vWKTai2E+FAPdbD enkNxSKyqIJCWx5g6AJNUK7QLzfl65zuvnkkeOVdBkx7cvt83qds8zRgxwR+WQ4+0gmE wd+aOTS4tMHpYvOA3Z4xR5p0Ytsk3gOIjQ9HfkmkXxGbel2Hy5FtzP2QB5UDpYokVd/B 7kVtOrWch27YX9u1zqr0q6aziDXP++dvYaMoQ4RlQwqzx/hhn7GbGVkFQIKHbvtmdYSg 0Y/4UnqmXPJ0oObitt1AtLNiMgOFJ7h/7yT9JsuNgzyhbBwlCkl31np6tI1TplGuWeF5 99LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372639; x=1765977439; 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=GKpMCAlv7ID015Tk0OkNs/f5DVZhlc+TdWNSgkE0ov8=; b=m2jMp2UGQN6Ux0braACo6rl+xoQBDGbtdqhIdV0TxKkoHrzx2uyBolO0OQddVoJn+1 Be/odYTIxb7UhR3RQpTIW/fjXH3NxLBpcqyQQI6GlpHvjDPgmKSt7ohvMEMBlYXoRQvs bjDhKUrqk64ZTYNXMa8GHUDCu9Dw4It09m5hw/7CL63uP1GEkKuef3bsmdnC6U29sdKM 4qNnSlfaUEcYd+hzUxkXjnYGIiaY7bf+ARvE16X4z88sisu7UlQPNDiroEGyRaHbrLKk dj/YqZs10z1utZkzF5b2Sb8sUllWWquj1V6MNlNwK6IdKwoB70rpbACXWEVN6r7bSrmp geHA== X-Gm-Message-State: AOJu0YyNx4TiCVMS9ZKMcLn6NDiDAyY0hkF/QXOmcrInobL8fr6Qqmoo wAh/0ozQFm/X5qvOkNVrtXunT5pQ9u6KPQYXQJY86QwIBEVCzXkLwrL5R3hVLSOa84DShRtRam2 MGAK/Fy5Qe48KDbXBEfFTHqhGKnNQRUrDNODtvLQCXUGojm7/NSKbjcfQhU5mS40lnWiiEN4oad GTrZpsTCtTNqwvro5opJbeLM/hghhRBKU37pGWWiJ3 X-Gm-Gg: AY/fxX6f0XyU4X0c/vp8E4Ft3NE9iNBkqtA5S8wGlL6y+3AyMpxuIt6XDAJOaY1Q7I0 QrlR//HGCG1Um2rWXe4SJ1FZyqRDRKy03F8khyVrOyOqrwrThMRXgSYpKjR/lcSk8Kt+F8NdOZf +9BE4uK/Mdgco9irQwS2Xd/Fk0Y3CusmaTfMDY2x+G4hTJ5bgDOyUgDLf2TUebai0Mqsy3umVn+ h86GnAfEdJXu0JDQv3NmxP/T3MNVhPJ2PJt1RHh9Juj7sn1b8ETmjX2UlABSkXWxkoEdFD9J9ng ENOn8sOOFQDEoFm1fsWUkYbKH6Sk2pUI1OGxz8YasEKTtL9bUrIMR884QaN/hVvuW/p+bROTgPU GxfV42i0cawbcG/6Cn0aRTn21ONrFG03PS67c88L/k8n8P/0gx0OGzLJQO5+jrQ4lN0p7aLC537 z6Cg7Ly9ROlVDr9Pk= X-Received: by 2002:a5d:5f50:0:b0:427:6a3:e72f with SMTP id ffacd0b85a97d-42fa3af8c1dmr2179919f8f.34.1765372638435; Wed, 10 Dec 2025 05:17:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IGHlc21DmntPpgnCrl9kK9EEN0pm0mlwEzOvSAgvcrmC/asDS98u2A3oklU0bM6n84QIjFRKQ== X-Received: by 2002:a5d:5f50:0:b0:427:6a3:e72f with SMTP id ffacd0b85a97d-42fa3af8c1dmr2179890f8f.34.1765372637854; Wed, 10 Dec 2025 05:17:17 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 13/18] target/i386/tcg: unify more pop/no-pop x87 instructions Date: Wed, 10 Dec 2025 14:16:48 +0100 Message-ID: <20251210131653.852163-14-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372837463158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 49 ++++++++++++++----------------------- 1 file changed, 18 insertions(+), 31 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index f47bb5de8b3..8cd70456a51 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2828,44 +2828,55 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) } break; case 0x1d: /* fucomi */ + case 0x3d: /* fucomip */ if (!(s->cpuid_features & CPUID_CMOV)) { goto illegal_op; } gen_update_cc_op(s); gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fucomi_ST0_FT0(tcg_env); + if (op >=3D 0x30) { + gen_helper_fpop(tcg_env); + } assume_cc_op(s, CC_OP_EFLAGS); break; case 0x1e: /* fcomi */ + case 0x3e: /* fcomip */ if (!(s->cpuid_features & CPUID_CMOV)) { goto illegal_op; } gen_update_cc_op(s); gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fcomi_ST0_FT0(tcg_env); + if (op >=3D 0x30) { + gen_helper_fpop(tcg_env); + } assume_cc_op(s, CC_OP_EFLAGS); break; case 0x28: /* ffree sti */ + case 0x38: /* ffreep sti, undocumented op */ gen_helper_ffree_STN(tcg_env, tcg_constant_i32(opreg)); + if (op >=3D 0x30) { + gen_helper_fpop(tcg_env); + } break; case 0x2a: /* fst sti */ - gen_helper_fmov_STN_ST0(tcg_env, tcg_constant_i32(opreg)); - break; case 0x2b: /* fstp sti */ case 0x0b: /* fstp1 sti, undocumented op */ case 0x3a: /* fstp8 sti, undocumented op */ case 0x3b: /* fstp9 sti, undocumented op */ gen_helper_fmov_STN_ST0(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fpop(tcg_env); + if (op !=3D 0x2a) { + gen_helper_fpop(tcg_env); + } break; case 0x2c: /* fucom st(i) */ - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fucom_ST0_FT0(tcg_env); - break; case 0x2d: /* fucomp st(i) */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fucom_ST0_FT0(tcg_env); - gen_helper_fpop(tcg_env); + if (op =3D=3D 0x2d) { + gen_helper_fpop(tcg_env); + } break; case 0x33: /* de/3 */ switch (rm) { @@ -2879,10 +2890,6 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) goto illegal_op; } break; - case 0x38: /* ffreep sti, undocumented op */ - gen_helper_ffree_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fpop(tcg_env); - break; case 0x3c: /* df/4 */ switch (rm) { case 0: @@ -2894,26 +2901,6 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) goto illegal_op; } break; - case 0x3d: /* fucomip */ - if (!(s->cpuid_features & CPUID_CMOV)) { - goto illegal_op; - } - gen_update_cc_op(s); - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fucomi_ST0_FT0(tcg_env); - gen_helper_fpop(tcg_env); - assume_cc_op(s, CC_OP_EFLAGS); - break; - case 0x3e: /* fcomip */ - if (!(s->cpuid_features & CPUID_CMOV)) { - goto illegal_op; - } - gen_update_cc_op(s); - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fcomi_ST0_FT0(tcg_env); - gen_helper_fpop(tcg_env); - assume_cc_op(s, CC_OP_EFLAGS); - break; case 0x10 ... 0x13: /* fcmovxx */ case 0x18 ... 0x1b: { --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372801; cv=none; d=zohomail.com; s=zohoarc; b=UFol9lGim+ZNS3GyDiZhP0YVz2V1+1WIsCfQ/OLxBywVe4J4Eawzep3kE1ISBj7nt8uCWfwg3S8j3+chLHn4VPsmgi8qTPZmo6ER2KMLTlf8zNKfB/2f4CV/9tL6zvArwdU1Vuv6sIzpxeHTDD2nMsEIhfK7pNuipJt5NWR2aDo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372801; 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=RvtC21VjrchOTPeGgasDp/iHcjTVMSPt2U0j8o6v3dI=; b=YWtqtzS7t4d8PQ/Ep78fJOzqer2KYgEGZOA/CxkbaApmG1wYrpHJOoiCY4nc/CB5L931FUX7JspV+JhjOYZkctOelihraJ2CDtQs2+URMNyx23moUyqg1/at8HXjTPfexP5WNkWTdK1qKNDRvkGeWly+hsYePX1tRvePEcuM/Gg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372801836902.6878790885619; Wed, 10 Dec 2025 05:20:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4d-0004tf-BJ; Wed, 10 Dec 2025 08:17: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 1vTK4N-0004rQ-6c for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4K-0003Is-TN for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:26 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-231-RrZfLHVyNh2bl8h7VsPCLw-1; Wed, 10 Dec 2025 08:17:22 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47799717212so44551495e9.3 for ; Wed, 10 Dec 2025 05:17:21 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a82d31cbcsm43715665e9.7.2025.12.10.05.17.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RvtC21VjrchOTPeGgasDp/iHcjTVMSPt2U0j8o6v3dI=; b=Frndk6d4lB8M+MrJIHF27fEZaw/pxNfq87HyfpEt7TzHJvMB6VK49xZNjM4sutai1fT365 8ieQVarF3U2Su2/k5ZQZSASBvDLZmcDbhjmt00LBqOzsFt6B4i/IWO61ZWnyUOIpVoPmea 7UaiJ9GyB/L4HPgK/V07bcOE1S0Ucsk= X-MC-Unique: RrZfLHVyNh2bl8h7VsPCLw-1 X-Mimecast-MFC-AGG-ID: RrZfLHVyNh2bl8h7VsPCLw_1765372641 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372640; x=1765977440; 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=RvtC21VjrchOTPeGgasDp/iHcjTVMSPt2U0j8o6v3dI=; b=WN9TGySWJo51psMgf9CpTQ1VY/oiYYzO7RiQYJWCLBVPQ/EJJJHbe8kn6iQIaQ/Q4D aDa0XNQhixqEZ5anoqRRSSbs1OSROdH7gv98wdY3cznfBRd89wcIR4hxdKmKThjIFzUn oD/KxtP+qe8WwE/8SKkt/ICHDcQVK5J3Pry94EHWcCh2ul+aRji9R5dcVWDzgiUeidAc 8iqM2abebPKHvHgBfgTWEq4Ki3aNL8tmU9n7j1ZUWbhCCOorrOf4Q3STjPaxyedCLVz9 C8QiCiedA0UKvPFCUXdZ3AnQCnQ1rBmlsKkQmyE9BvXSnyH05/0n0h4mhE6WcbQCsKLJ sDyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372640; x=1765977440; 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=RvtC21VjrchOTPeGgasDp/iHcjTVMSPt2U0j8o6v3dI=; b=ltoSm9loBxoInMkIlZ847Y30WuYzDS/pW0mcNaBf3UPEpTzr7FeXX9SsJbpQ11K5Lb hCMycgwxP9y3zkYrveAcl6gyS89B3RthyVV1THYKRP8gNgAoDgDYZbDcrBUKNVrlaWND KYiXmcmBFY0L7xbiUBouIs9H/OG/kxNr0/xAISnt5BGRljlU5zhv1C2kJBBHfGcLMGZ3 QDr9tD9/5+fEbbgNWdtBalDRzRYTbYvEYblO3zcDYlXs5+wODJZsC0sPmBSYyr7oQAzJ NIj33G6tPZj5gzbfBGu+O6oH30UvBFVD6rZl9Yogvits3rvFZ+hPmwDB0wUzR3zANSTU znlQ== X-Gm-Message-State: AOJu0Yz7eWK2RoLusS0S/aNam0agEBFNop7bvcrLxZGZ//xna6uO4s8O E1wiXxXIYhGjHDfzU7NqXFpLMqYfFOpjLntMps6iHHfa8uD8Ig0a69PdgmpbeZ07llh4MiQaKb/ 8eeKl6Gu5ZOc5irUq/RVQrZGcTcaprAAP0ZbYFlgIm0+3vVrOxSU/gP1HKfLTgzxHHRcjcsqezT iLZIXXsxuP61oYiI0kGIwm9jMjg1mrCakew9ME/Qmx X-Gm-Gg: ASbGnctY9PKeougdGgzD6tlmwbPs3VLA4iHuwyEU0jk4DUuuNPI8lpOdzj69RXOxRwL NX2YPTpn+1+IRIjjQ5XjWaYi4ps9iX/yAtrB954+Nqm4UkXuih7kLOOyOMQd6T9yi6RuSOZqLcO ytd2V6nTWWXWZXDcsc/1seaaqfKkpwjpjJy0YleGjevFONESNVxD2maq2AeumHZliZHO4R82XMY xOGfkNzvXDfVRiEb6Ni1boHpDRsoSP7r/C4fmyhs86Rii71UzZGiZ0tdzaJq9GnuxwmCe06QPAw LILR0H+tzJM9X77yjSBbrxOrsPSFBzwL6i64OIW450jMwt+JPpq9F8KYiiJDbirWRe7NGXf86Rx w+6DpWHDsUwXh2la6vRMk1mcdaCEG0Jt0qsCGEkGlwtxTwc64BLokg4mMwBDyl+45VoDfcvO0Hx sNfYHqUfuFm0mlp0w= X-Received: by 2002:a05:600c:1389:b0:471:1765:839c with SMTP id 5b1f17b1804b1-47a8383c89amr20949015e9.20.1765372640030; Wed, 10 Dec 2025 05:17:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IGnpfO14dz0nm50LEguwmY8vBzq7CAa/MIB0feAPcZHqhZwvS2Zx7d3+0cRBZqyJ3QozzyZfQ== X-Received: by 2002:a05:600c:1389:b0:471:1765:839c with SMTP id 5b1f17b1804b1-47a8383c89amr20948635e9.20.1765372639303; Wed, 10 Dec 2025 05:17:19 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 14/18] target/i386/tcg: kill tmp1_i64 Date: Wed, 10 Dec 2025 14:16:49 +0100 Message-ID: <20251210131653.852163-15-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372803354158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/translate.c | 66 ++++++++++++++++++++-------------- target/i386/tcg/emit.c.inc | 72 ++++++++++++++++++++++--------------- 2 files changed, 84 insertions(+), 54 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 8cd70456a51..108276f4008 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -136,7 +136,6 @@ typedef struct DisasContext { =20 /* TCG local register indexes (only used inside old micro ops) */ TCGv_i32 tmp2_i32; - TCGv_i64 tmp1_i64; =20 sigjmp_buf jmpbuf; TCGOp *prev_insn_start; @@ -2365,14 +2364,18 @@ static void gen_jmp_rel_csize(DisasContext *s, int = diff, int tb_num) =20 static inline void gen_ldq_env_A0(DisasContext *s, int offset) { - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, offset); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_qemu_ld_i64(t, s->A0, s->mem_index, MO_LEUQ); + tcg_gen_st_i64(t, tcg_env, offset); } =20 static inline void gen_stq_env_A0(DisasContext *s, int offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, offset); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, tcg_env, offset); + tcg_gen_qemu_st_i64(t, s->A0, s->mem_index, MO_LEUQ); } =20 static inline void gen_ldo_env_A0(DisasContext *s, int offset, bool align) @@ -2452,6 +2455,7 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) TCGv ea =3D gen_lea_modrm_1(s, decode->mem, false); TCGv last_addr =3D tcg_temp_new(); bool update_fdp =3D true; + TCGv_i64 t64; =20 tcg_gen_mov_tl(last_addr, ea); gen_lea_v_seg(s, ea, decode->mem.def_seg, s->override); @@ -2472,9 +2476,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) break; =20 case 0x20 ... 0x27: /* fxxxl */ - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + tcg_gen_qemu_ld_i64(t64, s->A0, s->mem_index, MO_LEUQ); - gen_helper_fldl_FT0(tcg_env, s->tmp1_i64); + gen_helper_fldl_FT0(tcg_env, t64); gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 @@ -2496,9 +2501,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); break; case 0x28: /* fldl */ - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + tcg_gen_qemu_ld_i64(t64, s->A0, s->mem_index, MO_LEUQ); - gen_helper_fldl_ST0(tcg_env, s->tmp1_i64); + gen_helper_fldl_ST0(tcg_env, t64); break; case 0x38: /* filds */ tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, @@ -2513,8 +2519,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) gen_helper_fpop(tcg_env); break; case 0x29: /* fisttpll */ - gen_helper_fisttll_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + gen_helper_fisttll_ST0(t64, tcg_env); + tcg_gen_qemu_st_i64(t64, s->A0, s->mem_index, MO_LEUQ); gen_helper_fpop(tcg_env); break; @@ -2542,8 +2549,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) } break; case 0x2a: case 0x2b: /* fstl, fstpl */ - gen_helper_fstl_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + gen_helper_fstl_ST0(t64, tcg_env); + tcg_gen_qemu_st_i64(t64, s->A0, s->mem_index, MO_LEUQ); if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); @@ -2611,13 +2619,15 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) gen_helper_fpop(tcg_env); break; case 0x3d: /* fildll */ - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + tcg_gen_qemu_ld_i64(t64, s->A0, s->mem_index, MO_LEUQ); - gen_helper_fildll_ST0(tcg_env, s->tmp1_i64); + gen_helper_fildll_ST0(tcg_env, t64); break; case 0x3f: /* fistpll */ - gen_helper_fistll_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + gen_helper_fistll_ST0(t64, tcg_env); + tcg_gen_qemu_st_i64(t64, s->A0, s->mem_index, MO_LEUQ); gen_helper_fpop(tcg_env); break; @@ -2951,6 +2961,7 @@ static void gen_multi0F(DisasContext *s, X86DecodedIn= sn *decode) int modrm =3D s->modrm; MemOp ot; int reg, rm, mod, op; + TCGv_i64 t64; =20 /* now check op code */ switch (b) { @@ -3142,9 +3153,10 @@ static void gen_multi0F(DisasContext *s, X86DecodedI= nsn *decode) || (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)= )) { goto illegal_op; } + t64 =3D tcg_temp_new_i64(); tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_xgetbv(s->tmp1_i64, tcg_env, s->tmp2_i32); - tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], s->tmp1_= i64); + gen_helper_xgetbv(t64, tcg_env, s->tmp2_i32); + tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], t64); break; =20 case 0xd1: /* xsetbv */ @@ -3156,10 +3168,11 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (!check_cpl0(s)) { break; } - tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX], + t64 =3D tcg_temp_new_i64(); + tcg_gen_concat_tl_i64(t64, cpu_regs[R_EAX], cpu_regs[R_EDX]); tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_xsetbv(tcg_env, s->tmp2_i32, s->tmp1_i64); + gen_helper_xsetbv(tcg_env, s->tmp2_i32, t64); /* End TB because translation flags may change. */ s->base.is_jmp =3D DISAS_EOB_NEXT; break; @@ -3319,18 +3332,20 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)) { goto illegal_op; } + t64 =3D tcg_temp_new_i64(); tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_rdpkru(s->tmp1_i64, tcg_env, s->tmp2_i32); - tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], s->tmp1_= i64); + gen_helper_rdpkru(t64, tcg_env, s->tmp2_i32); + tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], t64); break; case 0xef: /* wrpkru */ if (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)) { goto illegal_op; } - tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX], + t64 =3D tcg_temp_new_i64(); + tcg_gen_concat_tl_i64(t64, cpu_regs[R_EAX], cpu_regs[R_EDX]); tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_wrpkru(tcg_env, s->tmp2_i32, s->tmp1_i64); + gen_helper_wrpkru(tcg_env, s->tmp2_i32, t64); break; =20 CASE_MODRM_OP(6): /* lmsw */ @@ -3722,7 +3737,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) dc->T1 =3D tcg_temp_new(); dc->A0 =3D tcg_temp_new(); =20 - dc->tmp1_i64 =3D tcg_temp_new_i64(); dc->tmp2_i32 =3D tcg_temp_new_i32(); dc->cc_srcT =3D tcg_temp_new(); } diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 131aefce53c..8dac4d09da1 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -521,10 +521,12 @@ static void gen_3dnow(DisasContext *s, X86DecodedInsn= *decode) =20 gen_helper_enter_mmx(tcg_env); if (fn =3D=3D FN_3DNOW_MOVE) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset); } else { - fn(tcg_env, OP_PTR0, OP_PTR1); + fn(tcg_env, OP_PTR0, OP_PTR1); } } =20 @@ -2596,10 +2598,11 @@ static void gen_MOVQ(DisasContext *s, X86DecodedIns= n *decode) { int vec_len =3D vector_len(s, decode); int lo_ofs =3D vector_elem_offset(&decode->op[0], MO_64, 0); + TCGv_i64 t =3D tcg_temp_new_i64(); =20 - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset); + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset); if (decode->op[0].has_ea) { - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + tcg_gen_qemu_st_i64(t, s->A0, s->mem_index, MO_LEUQ); } else { /* * tcg_gen_gvec_dup_i64(MO_64, op0.offset, 8, vec_len, s->tmp1_64)= would @@ -2610,7 +2613,7 @@ static void gen_MOVQ(DisasContext *s, X86DecodedInsn = *decode) * it disqualifies using oprsz < maxsz to emulate VEX128. */ tcg_gen_gvec_dup_imm(MO_64, decode->op[0].offset, vec_len, vec_len= , 0); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, lo_ofs); + tcg_gen_st_i64(t, tcg_env, lo_ofs); } } =20 @@ -4505,10 +4508,12 @@ static void gen_VMASKMOVPS_st(DisasContext *s, X86D= ecodedInsn *decode) =20 static void gen_VMOVHPx_ld(DisasContext *s, X86DecodedInsn *decode) { + TCGv_i64 t =3D tcg_temp_new_i64(); + gen_ldq_env_A0(s, decode->op[0].offset + offsetof(XMMReg, XMM_Q(1))); if (decode->op[0].offset !=3D decode->op[1].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offset= of(XMMReg, XMM_Q(0))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(0))); + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset + offsetof(XMMReg,= XMM_Q(0))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(0))); } } =20 @@ -4519,33 +4524,39 @@ static void gen_VMOVHPx_st(DisasContext *s, X86Deco= dedInsn *decode) =20 static void gen_VMOVHPx(DisasContext *s, X86DecodedInsn *decode) { + TCGv_i64 t =3D tcg_temp_new_i64(); + if (decode->op[0].offset !=3D decode->op[2].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset + offset= of(XMMReg, XMM_Q(1))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(1))); + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset + offsetof(XMMReg,= XMM_Q(1))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(1))); } if (decode->op[0].offset !=3D decode->op[1].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offset= of(XMMReg, XMM_Q(0))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(0))); + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset + offsetof(XMMReg,= XMM_Q(0))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(0))); } } =20 static void gen_VMOVHLPS(DisasContext *s, X86DecodedInsn *decode) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset + offsetof(X= MMReg, XMM_Q(1))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(X= MMReg, XMM_Q(0))); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset + offsetof(XMMReg, XMM= _Q(1))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM= _Q(0))); if (decode->op[0].offset !=3D decode->op[1].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offset= of(XMMReg, XMM_Q(1))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(1))); + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset + offsetof(XMMReg,= XMM_Q(1))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(1))); } } =20 static void gen_VMOVLHPS(DisasContext *s, X86DecodedInsn *decode) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(X= MMReg, XMM_Q(1))); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM= _Q(1))); if (decode->op[0].offset !=3D decode->op[1].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offset= of(XMMReg, XMM_Q(0))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(0))); + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset + offsetof(XMMReg,= XMM_Q(0))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(0))); } } =20 @@ -4557,34 +4568,39 @@ static void gen_VMOVLHPS(DisasContext *s, X86Decode= dInsn *decode) static void gen_VMOVLPx(DisasContext *s, X86DecodedInsn *decode) { int vec_len =3D vector_len(s, decode); + TCGv_i64 t =3D tcg_temp_new_i64(); =20 - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset + offsetof(X= MMReg, XMM_Q(0))); + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset + offsetof(XMMReg, XMM= _Q(0))); tcg_gen_gvec_mov(MO_64, decode->op[0].offset, decode->op[1].offset, ve= c_len, vec_len); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(X= MMReg, XMM_Q(0))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM= _Q(0))); } =20 static void gen_VMOVLPx_ld(DisasContext *s, X86DecodedInsn *decode) { int vec_len =3D vector_len(s, decode); + TCGv_i64 t =3D tcg_temp_new_i64(); =20 - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + tcg_gen_qemu_ld_i64(t, s->A0, s->mem_index, MO_LEUQ); tcg_gen_gvec_mov(MO_64, decode->op[0].offset, decode->op[1].offset, ve= c_len, vec_len); - tcg_gen_st_i64(s->tmp1_i64, OP_PTR0, offsetof(ZMMReg, ZMM_Q(0))); + tcg_gen_st_i64(t, OP_PTR0, offsetof(ZMMReg, ZMM_Q(0))); } =20 static void gen_VMOVLPx_st(DisasContext *s, X86DecodedInsn *decode) { - tcg_gen_ld_i64(s->tmp1_i64, OP_PTR2, offsetof(ZMMReg, ZMM_Q(0))); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, OP_PTR2, offsetof(ZMMReg, ZMM_Q(0))); + tcg_gen_qemu_st_i64(t, s->A0, s->mem_index, MO_LEUQ); } =20 static void gen_VMOVSD_ld(DisasContext *s, X86DecodedInsn *decode) { TCGv_i64 zero =3D tcg_constant_i64(0); + TCGv_i64 t =3D tcg_temp_new_i64(); =20 - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + tcg_gen_qemu_ld_i64(t, s->A0, s->mem_index, MO_LEUQ); tcg_gen_st_i64(zero, OP_PTR0, offsetof(ZMMReg, ZMM_Q(1))); - tcg_gen_st_i64(s->tmp1_i64, OP_PTR0, offsetof(ZMMReg, ZMM_Q(0))); + tcg_gen_st_i64(t, OP_PTR0, offsetof(ZMMReg, ZMM_Q(0))); } =20 static void gen_VMOVSS(DisasContext *s, X86DecodedInsn *decode) --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372804; cv=none; d=zohomail.com; s=zohoarc; b=dffO+lz2hjtl/YUvu5in9e3hOLDD5u2Pxc4777tVbiR4Ey4NdRcc4Slu+wR+pw905ozSmaF9MRoKEOxLHWu0nnM0c3iqigZAj/+T2nEiJyybSVx6Yzl05jGpstvr3vWOXdw2/7GJ32HwdkzOecOvd7Rq+oS6WmWzNssAzG1RSTw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372804; 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=CEDNmPZ0zIXe0E5Sxmqf03jGSC4VsBDfs+3B49NLyGA=; b=JZV7HAm67N2JGs7ATg0jiNhheoq8A9Syue9ygq9sdh5oAY+ilNF9Z1eJnngkWzBUfwMZxZS91fm6qMuz0timZrIIKkOSjcqmBBSmMefBAx+GmzTMJLhg8neqxRAX7QxNZVhznLWvSINeJCwg8SKNwuLOhFm0Ed/a7DYIuFpB8BE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372804470200.1384836018443; Wed, 10 Dec 2025 05:20:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4j-000505-VD; Wed, 10 Dec 2025 08:17: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 1vTK4O-0004rV-LT for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4L-0003K5-F1 for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:27 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-329-FbWY5xUsPViswOvIKJBNLA-1; Wed, 10 Dec 2025 08:17:23 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-42b5556d80bso5004833f8f.2 for ; Wed, 10 Dec 2025 05:17:23 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7d2226c5sm38287932f8f.23.2025.12.10.05.17.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CEDNmPZ0zIXe0E5Sxmqf03jGSC4VsBDfs+3B49NLyGA=; b=LBpCfEGVwrGlX0e5LGyWdqJhkjftQc8vMmjhJmsmOAp8h6ULMYI0bmbA5LWHYjODvcV05z t5CE4JF7Y1IVzBxUo5CCI16S1i6j4RLPaUSBnIaDg96BiBnuXHOh9oEWqStLdh5Mg4p56T Q6sTD5EOIcwi9m+eDc0P2rpzsEGslkM= X-MC-Unique: FbWY5xUsPViswOvIKJBNLA-1 X-Mimecast-MFC-AGG-ID: FbWY5xUsPViswOvIKJBNLA_1765372642 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372642; x=1765977442; 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=CEDNmPZ0zIXe0E5Sxmqf03jGSC4VsBDfs+3B49NLyGA=; b=fJCV6y2Kt7e5Tshbbvnd5C6tcFFXRX5DYRrTpiyZwJ2WHz8gb+CB7boQc5IsLuzzCO vNJ0oMzymCtwGDuCFuXuja6y7cPDNWe1AEfPIoz5eDUVchdhPn4OGVCYsDW8KL1VmZ3Y 4l2keINIvVKfEDHjpdwWv6FDDCuwYoKo+HGwJ2phV1glzVUmZ52fqqjY0Rc+zyO3dPcR af5UA+TGyN2wpTi5qSR3BrBaYxp/kHyN3Xn/WnPpzuaDyYyhwusWfHmARrkMY/Abbnad 10p3uY8cZ68i/1NMHZu0V1MpvkuOhiKX2iOA8RmWF/RDhPckRqZ+c8vk8NOeVIWvbaDo Fw8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372642; x=1765977442; 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=CEDNmPZ0zIXe0E5Sxmqf03jGSC4VsBDfs+3B49NLyGA=; b=oj1xhd5eWtlhnvKlxWaeJ+Od6M/6m+DaNJ08G4jOoiRfoX2n+UAFCBCF6HCC01yg0Q 6WSdKZyKHVq9Y51CRUOqEl/J9idPZzIHvch3tQYRGxXQcxFIwDhiQXNflMEkTEOJAJJN 74v90/sEGsVkHplE9q75zhtwPOhbHA91IHTCGs6osk+ZVx1pvq6SS6aqHpZmLLAKyQNK L6hGaQKGc/7ML9K9UtWT7QUNPaIs7AL+e2S4u/JtNA6jMzuLHESJoTI8MQQEV8tcLjg6 SgbL6ZFec62i3oMtWLFUriLI8U1X63/by8RSc4opZh1dwdvS47vRLEf+edkR9tqUzRGu QmmA== X-Gm-Message-State: AOJu0YzL8Chyumd5NfCUMD7wXvnthyJ3rfSafVWowRHF9waBgtDmqRDV XooN8H7v/foPoPi5F7zl8atnY1JTnFE7iuWW5N+Y6kuLNuydEvTqsN8/860/eb6tT15IQhTf79R g+K1iDZIHSVPboKi39YMHvhE8WHyj8YLNbqCw11LwzfX0JYNfARSEo0pRDGti/QzkC4zQtJbHkF XPdVIIMAFzATEpeCTmGnDK9mNjn1OpU864827KtZs4 X-Gm-Gg: AY/fxX4ItxV/WFFXlt1e/VYDCtQDoGxi0ZK+ZZAg3ENoyOBYfgguSQtFf75CpNsHgyS K6eucsX+j3t6Y2szy9GL3FIfruNvdqY/hYFvIm68GOzVw7YJkEHycwROSF9xovx00uD1il/SqVz b6hbLVh2nTYUWK2s9c4OkdtUgT1qEq5oZX9VsEpvGo/pOp3j3CLpbhfyTyCQvH2WkdUALkDP7Sg 3O0eMZuBOyhywt78cyX9yWBv7QCnaFBpKrIAeIU0i5phMn0fnlRLnk2eHPCHbOc1k0UE3m0sleC 30nHSgFaUQQy3bL4axRzCgsrVfJo4rIYFGUwnDFJ4Q96yadUow28fT0oZAH9YQPX3TWOy+Sy88N 8GNPf2dkPOHFkRu/hSHxS9mPm8sDy6k1fmRBw0z49OoTkPUZCllSWjZUKZRddZ+sftKAtmdUWvG PkLB2qRu7nlQquNoI= X-Received: by 2002:a05:6000:40dd:b0:427:697:c2db with SMTP id ffacd0b85a97d-42fa39d3ca1mr2872679f8f.20.1765372641485; Wed, 10 Dec 2025 05:17:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IF8TqX94LSiKCRkw7+rkzRTj7wVl2dr4EIB9Nwm+uypfge23RmENtJDQBzCCzGmMPaV+l5iYw== X-Received: by 2002:a05:6000:40dd:b0:427:697:c2db with SMTP id ffacd0b85a97d-42fa39d3ca1mr2872645f8f.20.1765372640896; Wed, 10 Dec 2025 05:17:20 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 15/18] target/i386/tcg: kill tmp2_i32 Date: Wed, 10 Dec 2025 14:16:50 +0100 Message-ID: <20251210131653.852163-16-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372805333158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/translate.c | 121 +++++++++++++++++++++--------------- 1 file changed, 71 insertions(+), 50 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 108276f4008..e91715af817 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -134,9 +134,6 @@ typedef struct DisasContext { TCGv T0; TCGv T1; =20 - /* TCG local register indexes (only used inside old micro ops) */ - TCGv_i32 tmp2_i32; - sigjmp_buf jmpbuf; TCGOp *prev_insn_start; TCGOp *prev_insn_end; @@ -2455,6 +2452,7 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) TCGv ea =3D gen_lea_modrm_1(s, decode->mem, false); TCGv last_addr =3D tcg_temp_new(); bool update_fdp =3D true; + TCGv_i32 t32; TCGv_i64 t64; =20 tcg_gen_mov_tl(last_addr, ea); @@ -2462,16 +2460,18 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) =20 switch (op) { case 0x00 ... 0x07: /* fxxxs */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUL); - gen_helper_flds_FT0(tcg_env, s->tmp2_i32); + gen_helper_flds_FT0(tcg_env, t32); gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 case 0x10 ... 0x17: /* fixxxl */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUL); - gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); + gen_helper_fildl_FT0(tcg_env, t32); gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 @@ -2484,21 +2484,24 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) break; =20 case 0x30 ... 0x37: /* fixxx */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LESW); - gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); + gen_helper_fildl_FT0(tcg_env, t32); gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 case 0x08: /* flds */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUL); - gen_helper_flds_ST0(tcg_env, s->tmp2_i32); + gen_helper_flds_ST0(tcg_env, t32); break; case 0x18: /* fildl */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUL); - gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); + gen_helper_fildl_ST0(tcg_env, t32); break; case 0x28: /* fldl */ t64 =3D tcg_temp_new_i64(); @@ -2507,14 +2510,16 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) gen_helper_fldl_ST0(tcg_env, t64); break; case 0x38: /* filds */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LESW); - gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); + gen_helper_fildl_ST0(tcg_env, t32); break; =20 case 0x19: /* fisttpl */ - gen_helper_fisttl_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fisttl_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUL); gen_helper_fpop(tcg_env); break; @@ -2526,23 +2531,26 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) gen_helper_fpop(tcg_env); break; case 0x39: /* fisttps */ - gen_helper_fistt_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fistt_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUW); gen_helper_fpop(tcg_env); break; =20 case 0x0a: case 0x0b: /* fsts, fstps */ - gen_helper_fsts_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fsts_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUL); if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); } break; case 0x1a: case 0x1b: /* fistl, fistpl */ - gen_helper_fistl_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fistl_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUL); if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); @@ -2559,8 +2567,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) break; =20 case 0x3a: case 0x3b: /* fists, fistps */ - gen_helper_fist_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fist_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUW); if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); @@ -2572,9 +2581,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) update_fip =3D update_fdp =3D false; break; case 0x0d: /* fldcw mem */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUW); - gen_helper_fldcw(tcg_env, s->tmp2_i32); + gen_helper_fldcw(tcg_env, t32); update_fip =3D update_fdp =3D false; break; case 0x0e: /* fnstenv mem */ @@ -2583,8 +2593,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) update_fip =3D update_fdp =3D false; break; case 0x0f: /* fnstcw mem */ - gen_helper_fnstcw(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fnstcw(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUW); update_fip =3D update_fdp =3D false; break; @@ -2606,8 +2617,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) update_fip =3D update_fdp =3D false; break; case 0x2f: /* fnstsw mem */ - gen_helper_fnstsw(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fnstsw(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUW); update_fip =3D update_fdp =3D false; break; @@ -2638,10 +2650,11 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) if (update_fdp) { int last_seg =3D s->override >=3D 0 ? s->override : decode->me= m.def_seg; =20 - tcg_gen_ld_i32(s->tmp2_i32, tcg_env, + t32 =3D tcg_temp_new_i32(); + tcg_gen_ld_i32(t32, tcg_env, offsetof(CPUX86State, segs[last_seg].selector)); - tcg_gen_st16_i32(s->tmp2_i32, tcg_env, + tcg_gen_st16_i32(t32, tcg_env, offsetof(CPUX86State, fpds)); tcg_gen_st_tl(last_addr, tcg_env, offsetof(CPUX86State, fpdp)); @@ -2903,8 +2916,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) case 0x3c: /* df/4 */ switch (rm) { case 0: - gen_helper_fnstsw(s->tmp2_i32, tcg_env); - tcg_gen_extu_i32_tl(s->T0, s->tmp2_i32); + TCGv_i32 t32 =3D tcg_temp_new_i32(); + gen_helper_fnstsw(t32, tcg_env); + tcg_gen_extu_i32_tl(s->T0, t32); gen_op_mov_reg_v(s, MO_16, R_EAX, s->T0); break; default: @@ -2940,9 +2954,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) } =20 if (update_fip) { - tcg_gen_ld_i32(s->tmp2_i32, tcg_env, + TCGv_i32 t32 =3D tcg_temp_new_i32(); + tcg_gen_ld_i32(t32, tcg_env, offsetof(CPUX86State, segs[R_CS].selector)); - tcg_gen_st16_i32(s->tmp2_i32, tcg_env, + tcg_gen_st16_i32(t32, tcg_env, offsetof(CPUX86State, fpcs)); tcg_gen_st_tl(eip_cur_tl(s), tcg_env, offsetof(CPUX86State, fpip)); @@ -2961,6 +2976,7 @@ static void gen_multi0F(DisasContext *s, X86DecodedIn= sn *decode) int modrm =3D s->modrm; MemOp ot; int reg, rm, mod, op; + TCGv_i32 t32; TCGv_i64 t64; =20 /* now check op code */ @@ -3027,10 +3043,11 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (!PE(s) || VM86(s)) goto illegal_op; if (check_cpl0(s)) { + t32 =3D tcg_temp_new_i32(); gen_svm_check_intercept(s, SVM_EXIT_LDTR_WRITE); gen_ld_modrm(s, decode, MO_16); - tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); - gen_helper_lldt(tcg_env, s->tmp2_i32); + tcg_gen_trunc_tl_i32(t32, s->T0); + gen_helper_lldt(tcg_env, t32); } break; case 1: /* str */ @@ -3049,10 +3066,11 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (!PE(s) || VM86(s)) goto illegal_op; if (check_cpl0(s)) { + t32 =3D tcg_temp_new_i32(); gen_svm_check_intercept(s, SVM_EXIT_TR_WRITE); gen_ld_modrm(s, decode, MO_16); - tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); - gen_helper_ltr(tcg_env, s->tmp2_i32); + tcg_gen_trunc_tl_i32(t32, s->T0); + gen_helper_ltr(tcg_env, t32); } break; case 4: /* verr */ @@ -3153,9 +3171,10 @@ static void gen_multi0F(DisasContext *s, X86DecodedI= nsn *decode) || (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)= )) { goto illegal_op; } + t32 =3D tcg_temp_new_i32(); t64 =3D tcg_temp_new_i64(); - tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_xgetbv(t64, tcg_env, s->tmp2_i32); + tcg_gen_trunc_tl_i32(t32, cpu_regs[R_ECX]); + gen_helper_xgetbv(t64, tcg_env, t32); tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], t64); break; =20 @@ -3168,11 +3187,12 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (!check_cpl0(s)) { break; } + t32 =3D tcg_temp_new_i32(); t64 =3D tcg_temp_new_i64(); tcg_gen_concat_tl_i64(t64, cpu_regs[R_EAX], cpu_regs[R_EDX]); - tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_xsetbv(tcg_env, s->tmp2_i32, t64); + tcg_gen_trunc_tl_i32(t32, cpu_regs[R_ECX]); + gen_helper_xsetbv(tcg_env, t32, t64); /* End TB because translation flags may change. */ s->base.is_jmp =3D DISAS_EOB_NEXT; break; @@ -3332,20 +3352,22 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)) { goto illegal_op; } + t32 =3D tcg_temp_new_i32(); t64 =3D tcg_temp_new_i64(); - tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_rdpkru(t64, tcg_env, s->tmp2_i32); + tcg_gen_trunc_tl_i32(t32, cpu_regs[R_ECX]); + gen_helper_rdpkru(t64, tcg_env, t32); tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], t64); break; case 0xef: /* wrpkru */ if (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)) { goto illegal_op; } + t32 =3D tcg_temp_new_i32(); t64 =3D tcg_temp_new_i64(); tcg_gen_concat_tl_i64(t64, cpu_regs[R_EAX], cpu_regs[R_EDX]); - tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_wrpkru(tcg_env, s->tmp2_i32, t64); + tcg_gen_trunc_tl_i32(t32, cpu_regs[R_ECX]); + gen_helper_wrpkru(tcg_env, t32, t64); break; =20 CASE_MODRM_OP(6): /* lmsw */ @@ -3737,7 +3759,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) dc->T1 =3D tcg_temp_new(); dc->A0 =3D tcg_temp_new(); =20 - dc->tmp2_i32 =3D tcg_temp_new_i32(); dc->cc_srcT =3D tcg_temp_new(); } =20 --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372796; cv=none; d=zohomail.com; s=zohoarc; b=T/87TVHe4danv9UsnlABNTqPWovMYSMjTlOKDP4PsvPCLOnDrHp5JFTC2U+jzmn1x7tSRKiieif4BG+CWUuzBLpCcfBJdaWLEinm1fiFLVk6TknqiUEWcUwIHoUipUrwaxUAjz5MbqD40i5Xx1AwSiaVP3mD+g747WtU9j8VFwI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372796; 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=egQDJl6t4YqyJqQTl1HjJNr6XNUoQaH3/fZv6Qi6H04=; b=Bvxkmd8O3SLKBXn5nnPvKxqkglj2eyUMGLxamz+EBa8XNX0FDdqph5PuYGQ7xsjdfkv57+G5oAEcapILbFRMIaYiIMe8p+U5L7lOr4XY5AIkoJbqdDnS/9w2tE064LuDqljaE2OC7kBoSuNa+RKsOtFG5gFlFgxlmjU1CZCyKYI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372796807902.4150696813189; Wed, 10 Dec 2025 05:19:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4x-0005AM-NK; Wed, 10 Dec 2025 08:18:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4R-0004s8-Mq for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4N-0003Nw-A7 for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:30 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-539-RchannewO0SEzGbPmPxw7Q-1; Wed, 10 Dec 2025 08:17:25 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47777158a85so81487445e9.3 for ; Wed, 10 Dec 2025 05:17:24 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47a82d935d4sm45943955e9.15.2025.12.10.05.17.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372646; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=egQDJl6t4YqyJqQTl1HjJNr6XNUoQaH3/fZv6Qi6H04=; b=dXLB4nhNr5oW1RHphN/gsF/LWfdrrKvYo8zjAuF8C4z/EDF7VWy82CZwDNLcCZ+rgKSDHs nzQLBrjtr64W4U+SRRzF3IBvvCSqw8nEgG8jPbyMqzqiDK9k1Z2p68/eKIUDHmpBvTQ8hK YTx6R3WIiy2aW1UbNGi2w4YrkvTxVJ4= X-MC-Unique: RchannewO0SEzGbPmPxw7Q-1 X-Mimecast-MFC-AGG-ID: RchannewO0SEzGbPmPxw7Q_1765372644 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372643; x=1765977443; 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=egQDJl6t4YqyJqQTl1HjJNr6XNUoQaH3/fZv6Qi6H04=; b=MzQ1hdBZD2nZhuaQdy5UgL2PImzb9uG6tDOMuFbpm2qNVcbQC+iG1DPpi75E3f824G RhL3qQS5aChVZKLZhsNgfUp+K6MxmYATrhQh8hFPcrTMakFCZj4JhzgN8wxkT1peuLr+ kXO2YzAp1OFBEvZGUAKgKc3HI2aR/AcYdUqwmihO40qRFX5oEW79fSBYF7BJCYhQD6LM wmVbtHt5GnzAgequ0HMaGUk90Cm0xhTUB5XvT8eiqYCR9PorjCizcE1JsNZphRM9V4nS 4I2aPg3vkSQYhs0ZYnRDqn9catCGPQVBY2oZSha6+G52IFonOG+Zt67EXG8aI/HuO3/u M/YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372643; x=1765977443; 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=egQDJl6t4YqyJqQTl1HjJNr6XNUoQaH3/fZv6Qi6H04=; b=TdSRYKMsXalwKAxhhDzF35bHiZfAFCGNcqaDosaclexsz1e2ufMHs/v47kWqhPuQQK NL7p3UpWOxVDuyXimZpy/id3RMX/5BQDgEl2iwRC/wi0Kteazu+Hdd9+qKLO1hy+hvZd 9QtljDwT3uAZJiszXVIv8emYjTH80btunpErArTi1TJa6f05ZJH77Dal21kVBSfvfrXd B8JSogCyliD15esXUYb0pHHvKliUEpGkQoTQkn2ENj8gMB/qHZPlaGACRuwS3EaYkklY ru0OcC4GveQsykFO/tWBFNJRXEz3tsyIjCjrzs4N4lx+eOKLLzStBvmYUw0QRp8+89xZ Qbrw== X-Gm-Message-State: AOJu0YzOGU2vYhNl1hf4tySkhgn4zvVIjpTIymjijUlVvkpfT3EhvLF2 L6lZTzwXeeOi5sfN6kuYYhX2wRiCxiNAqKfZrNmnOroHy4/jGOLW+mDXl210wcoqHOTX/5TYnpT GPeIDFjPOqcg576yTfIXPy5LfEZPeZe7xATjhc12H0u8IxyZyR67UQVlGblC65tuREbb7fEDrp+ fPGPpR90Czd5gLOR4qRjXz8ZlKcBqs0PGtPq9ZDuZx X-Gm-Gg: ASbGncsl0AYx9K7vdw0L2esdzvmZ8QhcQMkm5v0TLZgtIu9VVqitYShbmY7SIuS+qpW mjyUw7/ZmeqsbnfrjBhXaTOU85oAbDHmVpRydkWqGO5iNzBQ0z/BkfrMveNV8bAQhoF1UaKxw0f IU6dJH8YxlGZ4tugs2AcJhenCB1T81kNbnXEpThHD6PSS+WH0L7FV6uAqmuCkCc2w0NOUjB1mn9 XIhLYMVZMe6OCuivoQ5hfuIRmVL/Jo8ZuxG2rwAm/CVf2h0oxP+lEFmkgEks6hOsw8PQu4J79gG Mfl9LKdGL8rbVLrgdCdk0qPg3/okNMxmcNdPgcCr/nf9OW3YMqDPhxxRDN6T1Y33eDZKXX37jBj juoWIw1AlPpQZvvP1YgOmirrrq0ryFiCAMMayLyhR7hQ25aUolRvyNuFRQ9vs0wneP2bNEM2UbJ WUdBrc2oogvGsFJ7c= X-Received: by 2002:a05:600c:3e1a:b0:477:7b30:a6fe with SMTP id 5b1f17b1804b1-47a837923b0mr26365495e9.18.1765372643120; Wed, 10 Dec 2025 05:17:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IHpavXF6icWeQFsFzP2fiMUFXhJpfivqca76l8ioMmw2CzjI1p46rZOUG2jW+3p/FXAyZ/mLQ== X-Received: by 2002:a05:600c:3e1a:b0:477:7b30:a6fe with SMTP id 5b1f17b1804b1-47a837923b0mr26364895e9.18.1765372642263; Wed, 10 Dec 2025 05:17:22 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 16/18] target/i386/tcg: commonize code to compute SF/ZF/PF Date: Wed, 10 Dec 2025 14:16:51 +0100 Message-ID: <20251210131653.852163-17-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372797453158500 Content-Type: text/plain; charset="utf-8" PF/ZF/SF are computed the same way for almost all CC_OP values (depending only on the operand size in the case of ZF and SF). The only exception is PF for CC_OP_BLSI* and CC_OP_BMILG*; but AMD documents that PF should be computed normally (rather than being undefined) so that is a kind of bug fix. Put the common code at the end of helper_cc_compute_all, shaving another kB from its text. Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 4 +- target/i386/tcg/cc_helper_template.h.inc | 112 +++------ target/i386/tcg/cc_helper.c | 274 +++++++++++++++-------- 3 files changed, 209 insertions(+), 181 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index cee1f692a1c..ecca38ed0b5 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1495,12 +1495,12 @@ typedef enum { CC_OP_SARL, CC_OP_SARQ, =20 - CC_OP_BMILGB, /* Z,S via CC_DST, C =3D SRC=3D=3D0; O=3D0; P,A undefine= d */ + CC_OP_BMILGB, /* P,Z,S via CC_DST, C =3D SRC=3D=3D0; A=3DO=3D0 */ CC_OP_BMILGW, CC_OP_BMILGL, CC_OP_BMILGQ, =20 - CC_OP_BLSIB, /* Z,S via CC_DST, C =3D SRC!=3D0; O=3D0; P,A undefined */ + CC_OP_BLSIB, /* P,Z,S via CC_DST, C =3D SRC!=3D0; A=3DO=3D0 */ CC_OP_BLSIW, CC_OP_BLSIL, CC_OP_BLSIQ, diff --git a/target/i386/tcg/cc_helper_template.h.inc b/target/i386/tcg/cc_= helper_template.h.inc index d8fd976ca15..af58c2409f7 100644 --- a/target/i386/tcg/cc_helper_template.h.inc +++ b/target/i386/tcg/cc_helper_template.h.inc @@ -1,5 +1,5 @@ /* - * x86 condition code helpers + * x86 condition code helpers for AF/CF/OF * * Copyright (c) 2008 Fabrice Bellard * @@ -44,14 +44,9 @@ =20 /* dynamic flags computation */ =20 -static uint32_t glue(compute_all_cout, SUFFIX)(DATA_TYPE dst, DATA_TYPE ca= rries) +static uint32_t glue(compute_aco_cout, SUFFIX)(DATA_TYPE carries) { - uint32_t af_cf, pf, zf, sf, of; - - /* PF, ZF, SF computed from result. */ - pf =3D compute_pf(dst); - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; + uint32_t af_cf, of; =20 /* * AF, CF, OF computed from carry out vector. To compute AF and CF, r= otate it @@ -62,14 +57,14 @@ static uint32_t glue(compute_all_cout, SUFFIX)(DATA_TYP= E dst, DATA_TYPE carries) */ af_cf =3D ((carries << 1) | (carries >> (DATA_BITS - 1))) & (CC_A | CC= _C); of =3D (lshift(carries, 12 - DATA_BITS) + CC_O / 2) & CC_O; - return pf + zf + sf + af_cf + of; + return af_cf + of; } =20 -static uint32_t glue(compute_all_add, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) +static uint32_t glue(compute_aco_add, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { DATA_TYPE src2 =3D dst - src1; DATA_TYPE carries =3D ADD_COUT_VEC(src1, src2, dst); - return glue(compute_all_cout, SUFFIX)(dst, carries); + return glue(compute_aco_cout, SUFFIX)(carries); } =20 static int glue(compute_c_add, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) @@ -77,12 +72,12 @@ static int glue(compute_c_add, SUFFIX)(DATA_TYPE dst, D= ATA_TYPE src1) return dst < src1; } =20 -static uint32_t glue(compute_all_adc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1, +static uint32_t glue(compute_aco_adc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1, DATA_TYPE src3) { DATA_TYPE src2 =3D dst - src1 - src3; DATA_TYPE carries =3D ADD_COUT_VEC(src1, src2, dst); - return glue(compute_all_cout, SUFFIX)(dst, carries); + return glue(compute_aco_cout, SUFFIX)(carries); } =20 static int glue(compute_c_adc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1, @@ -97,11 +92,11 @@ static int glue(compute_c_adc, SUFFIX)(DATA_TYPE dst, D= ATA_TYPE src1, #endif } =20 -static uint32_t glue(compute_all_sub, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 2) +static uint32_t glue(compute_aco_sub, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 2) { DATA_TYPE src1 =3D dst + src2; DATA_TYPE carries =3D SUB_COUT_VEC(src1, src2, dst); - return glue(compute_all_cout, SUFFIX)(dst, carries); + return glue(compute_aco_cout, SUFFIX)(carries); } =20 static int glue(compute_c_sub, SUFFIX)(DATA_TYPE dst, DATA_TYPE src2) @@ -111,12 +106,12 @@ static int glue(compute_c_sub, SUFFIX)(DATA_TYPE dst,= DATA_TYPE src2) return src1 < src2; } =20 -static uint32_t glue(compute_all_sbb, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 2, +static uint32_t glue(compute_aco_sbb, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 2, DATA_TYPE src3) { DATA_TYPE src1 =3D dst + src2 + src3; DATA_TYPE carries =3D SUB_COUT_VEC(src1, src2, dst); - return glue(compute_all_cout, SUFFIX)(dst, carries); + return glue(compute_aco_cout, SUFFIX)(carries); } =20 static int glue(compute_c_sbb, SUFFIX)(DATA_TYPE dst, DATA_TYPE src2, @@ -134,57 +129,35 @@ static int glue(compute_c_sbb, SUFFIX)(DATA_TYPE dst,= DATA_TYPE src2, #endif } =20 -static uint32_t glue(compute_all_logic, SUFFIX)(DATA_TYPE dst, DATA_TYPE s= rc1) +static uint32_t glue(compute_aco_inc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { - uint32_t cf, pf, af, zf, sf, of; - - cf =3D 0; - pf =3D compute_pf(dst); - af =3D 0; - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; - of =3D 0; - return cf + pf + af + zf + sf + of; -} - -static uint32_t glue(compute_all_inc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) -{ - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D src1; - pf =3D compute_pf(dst); af =3D (dst ^ (dst - 1)) & CC_A; /* bits 0..3 are all clear */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; of =3D (dst =3D=3D SIGN_MASK) * CC_O; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 -static uint32_t glue(compute_all_dec, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) +static uint32_t glue(compute_aco_dec, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D src1; - pf =3D compute_pf(dst); af =3D (dst ^ (dst + 1)) & CC_A; /* bits 0..3 are all set */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; of =3D (dst =3D=3D SIGN_MASK - 1) * CC_O; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 -static uint32_t glue(compute_all_shl, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) +static uint32_t glue(compute_aco_shl, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D (src1 >> (DATA_BITS - 1)) & CC_C; - pf =3D compute_pf(dst); af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; /* of is defined iff shift count =3D=3D 1 */ of =3D lshift(src1 ^ dst, 12 - DATA_BITS) & CC_O; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 static int glue(compute_c_shl, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) @@ -192,47 +165,25 @@ static int glue(compute_c_shl, SUFFIX)(DATA_TYPE dst,= DATA_TYPE src1) return (src1 >> (DATA_BITS - 1)) & CC_C; } =20 -static uint32_t glue(compute_all_sar, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) +static uint32_t glue(compute_aco_sar, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D src1 & 1; - pf =3D compute_pf(dst); af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; /* of is defined iff shift count =3D=3D 1 */ of =3D lshift(src1 ^ dst, 12 - DATA_BITS) & CC_O; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 -/* NOTE: we compute the flags like the P4. On olders CPUs, only OF and - CF are modified and it is slower to do that. Note as well that we - don't truncate SRC1 for computing carry to DATA_TYPE. */ -static uint32_t glue(compute_all_mul, SUFFIX)(DATA_TYPE dst, target_long s= rc1) +static uint32_t glue(compute_aco_bmilg, SUFFIX)(DATA_TYPE dst, DATA_TYPE s= rc1) { - uint32_t cf, pf, af, zf, sf, of; - - cf =3D (src1 !=3D 0); - pf =3D compute_pf(dst); - af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; - of =3D cf * CC_O; - return cf + pf + af + zf + sf + of; -} - -static uint32_t glue(compute_all_bmilg, SUFFIX)(DATA_TYPE dst, DATA_TYPE s= rc1) -{ - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D (src1 =3D=3D 0); - pf =3D 0; /* undefined */ af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; of =3D 0; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 static int glue(compute_c_bmilg, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) @@ -240,17 +191,14 @@ static int glue(compute_c_bmilg, SUFFIX)(DATA_TYPE ds= t, DATA_TYPE src1) return src1 =3D=3D 0; } =20 -static int glue(compute_all_blsi, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) +static int glue(compute_aco_blsi, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) { - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D (src1 !=3D 0); - pf =3D 0; /* undefined */ af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; of =3D 0; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 static int glue(compute_c_blsi, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) diff --git a/target/i386/tcg/cc_helper.c b/target/i386/tcg/cc_helper.c index f1940b40927..2c4170b5b77 100644 --- a/target/i386/tcg/cc_helper.c +++ b/target/i386/tcg/cc_helper.c @@ -73,9 +73,25 @@ target_ulong helper_cc_compute_nz(target_ulong dst, targ= et_ulong src1, } } =20 +/* NOTE: we compute the flags like the P4. On olders CPUs, only OF and + CF are modified and it is slower to do that. Note as well that we + don't truncate SRC1 for computing carry to DATA_TYPE. */ +static inline uint32_t compute_aco_mul(target_long src1) +{ + uint32_t cf, af, of; + + cf =3D (src1 !=3D 0); + af =3D 0; /* undefined */ + of =3D cf * CC_O; + return cf + af + of; +} + target_ulong helper_cc_compute_all(target_ulong dst, target_ulong src1, target_ulong src2, int op) { + uint32_t flags =3D 0; + int shift =3D 0; + switch (op) { default: /* should never happen */ return 0; @@ -85,90 +101,6 @@ target_ulong helper_cc_compute_all(target_ulong dst, ta= rget_ulong src1, case CC_OP_POPCNT: return dst ? 0 : CC_Z; =20 - case CC_OP_MULB: - return compute_all_mulb(dst, src1); - case CC_OP_MULW: - return compute_all_mulw(dst, src1); - case CC_OP_MULL: - return compute_all_mull(dst, src1); - - case CC_OP_ADDB: - return compute_all_addb(dst, src1); - case CC_OP_ADDW: - return compute_all_addw(dst, src1); - case CC_OP_ADDL: - return compute_all_addl(dst, src1); - - case CC_OP_ADCB: - return compute_all_adcb(dst, src1, src2); - case CC_OP_ADCW: - return compute_all_adcw(dst, src1, src2); - case CC_OP_ADCL: - return compute_all_adcl(dst, src1, src2); - - case CC_OP_SUBB: - return compute_all_subb(dst, src1); - case CC_OP_SUBW: - return compute_all_subw(dst, src1); - case CC_OP_SUBL: - return compute_all_subl(dst, src1); - - case CC_OP_SBBB: - return compute_all_sbbb(dst, src1, src2); - case CC_OP_SBBW: - return compute_all_sbbw(dst, src1, src2); - case CC_OP_SBBL: - return compute_all_sbbl(dst, src1, src2); - - case CC_OP_LOGICB: - return compute_all_logicb(dst, src1); - case CC_OP_LOGICW: - return compute_all_logicw(dst, src1); - case CC_OP_LOGICL: - return compute_all_logicl(dst, src1); - - case CC_OP_INCB: - return compute_all_incb(dst, src1); - case CC_OP_INCW: - return compute_all_incw(dst, src1); - case CC_OP_INCL: - return compute_all_incl(dst, src1); - - case CC_OP_DECB: - return compute_all_decb(dst, src1); - case CC_OP_DECW: - return compute_all_decw(dst, src1); - case CC_OP_DECL: - return compute_all_decl(dst, src1); - - case CC_OP_SHLB: - return compute_all_shlb(dst, src1); - case CC_OP_SHLW: - return compute_all_shlw(dst, src1); - case CC_OP_SHLL: - return compute_all_shll(dst, src1); - - case CC_OP_SARB: - return compute_all_sarb(dst, src1); - case CC_OP_SARW: - return compute_all_sarw(dst, src1); - case CC_OP_SARL: - return compute_all_sarl(dst, src1); - - case CC_OP_BMILGB: - return compute_all_bmilgb(dst, src1); - case CC_OP_BMILGW: - return compute_all_bmilgw(dst, src1); - case CC_OP_BMILGL: - return compute_all_bmilgl(dst, src1); - - case CC_OP_BLSIB: - return compute_all_blsib(dst, src1); - case CC_OP_BLSIW: - return compute_all_blsiw(dst, src1); - case CC_OP_BLSIL: - return compute_all_blsil(dst, src1); - case CC_OP_ADCX: return compute_all_adcx(dst, src1, src2); case CC_OP_ADOX: @@ -176,33 +108,181 @@ target_ulong helper_cc_compute_all(target_ulong dst,= target_ulong src1, case CC_OP_ADCOX: return compute_all_adcox(dst, src1, src2); =20 + case CC_OP_MULB: + flags =3D compute_aco_mul(src1); + goto psz_b; + case CC_OP_MULW: + flags =3D compute_aco_mul(src1); + goto psz_w; + case CC_OP_MULL: + flags =3D compute_aco_mul(src1); + goto psz_l; + + case CC_OP_ADDB: + flags =3D compute_aco_addb(dst, src1); + goto psz_b; + case CC_OP_ADDW: + flags =3D compute_aco_addw(dst, src1); + goto psz_w; + case CC_OP_ADDL: + flags =3D compute_aco_addl(dst, src1); + goto psz_l; + + case CC_OP_ADCB: + flags =3D compute_aco_adcb(dst, src1, src2); + goto psz_b; + case CC_OP_ADCW: + flags =3D compute_aco_adcw(dst, src1, src2); + goto psz_w; + case CC_OP_ADCL: + flags =3D compute_aco_adcl(dst, src1, src2); + goto psz_l; + + case CC_OP_SUBB: + flags =3D compute_aco_subb(dst, src1); + goto psz_b; + case CC_OP_SUBW: + flags =3D compute_aco_subw(dst, src1); + goto psz_w; + case CC_OP_SUBL: + flags =3D compute_aco_subl(dst, src1); + goto psz_l; + + case CC_OP_SBBB: + flags =3D compute_aco_sbbb(dst, src1, src2); + goto psz_b; + case CC_OP_SBBW: + flags =3D compute_aco_sbbw(dst, src1, src2); + goto psz_w; + case CC_OP_SBBL: + flags =3D compute_aco_sbbl(dst, src1, src2); + goto psz_l; + + case CC_OP_LOGICB: + flags =3D 0; + goto psz_b; + case CC_OP_LOGICW: + flags =3D 0; + goto psz_w; + case CC_OP_LOGICL: + flags =3D 0; + goto psz_l; + + case CC_OP_INCB: + flags =3D compute_aco_incb(dst, src1); + goto psz_b; + case CC_OP_INCW: + flags =3D compute_aco_incw(dst, src1); + goto psz_w; + case CC_OP_INCL: + flags =3D compute_aco_incl(dst, src1); + goto psz_l; + + case CC_OP_DECB: + flags =3D compute_aco_decb(dst, src1); + goto psz_b; + case CC_OP_DECW: + flags =3D compute_aco_decw(dst, src1); + goto psz_w; + case CC_OP_DECL: + flags =3D compute_aco_decl(dst, src1); + goto psz_l; + + case CC_OP_SHLB: + flags =3D compute_aco_shlb(dst, src1); + goto psz_b; + case CC_OP_SHLW: + flags =3D compute_aco_shlw(dst, src1); + goto psz_w; + case CC_OP_SHLL: + flags =3D compute_aco_shll(dst, src1); + goto psz_l; + + case CC_OP_SARB: + flags =3D compute_aco_sarb(dst, src1); + goto psz_b; + case CC_OP_SARW: + flags =3D compute_aco_sarw(dst, src1); + goto psz_w; + case CC_OP_SARL: + flags =3D compute_aco_sarl(dst, src1); + goto psz_l; + + case CC_OP_BMILGB: + flags =3D compute_aco_bmilgb(dst, src1); + goto psz_b; + case CC_OP_BMILGW: + flags =3D compute_aco_bmilgw(dst, src1); + goto psz_w; + case CC_OP_BMILGL: + flags =3D compute_aco_bmilgl(dst, src1); + goto psz_l; + + case CC_OP_BLSIB: + flags =3D compute_aco_blsib(dst, src1); + goto psz_b; + case CC_OP_BLSIW: + flags =3D compute_aco_blsiw(dst, src1); + goto psz_w; + case CC_OP_BLSIL: + flags =3D compute_aco_blsil(dst, src1); + goto psz_l; + #ifdef TARGET_X86_64 case CC_OP_MULQ: - return compute_all_mulq(dst, src1); + flags =3D compute_aco_mul(src1); + goto psz_q; case CC_OP_ADDQ: - return compute_all_addq(dst, src1); + flags =3D compute_aco_addq(dst, src1); + goto psz_q; case CC_OP_ADCQ: - return compute_all_adcq(dst, src1, src2); + flags =3D compute_aco_adcq(dst, src1, src2); + goto psz_q; case CC_OP_SUBQ: - return compute_all_subq(dst, src1); + flags =3D compute_aco_subq(dst, src1); + goto psz_q; case CC_OP_SBBQ: - return compute_all_sbbq(dst, src1, src2); - case CC_OP_LOGICQ: - return compute_all_logicq(dst, src1); + flags =3D compute_aco_sbbq(dst, src1, src2); + goto psz_q; case CC_OP_INCQ: - return compute_all_incq(dst, src1); + flags =3D compute_aco_incq(dst, src1); + goto psz_q; case CC_OP_DECQ: - return compute_all_decq(dst, src1); + flags =3D compute_aco_decq(dst, src1); + goto psz_q; + case CC_OP_LOGICQ: + flags =3D 0; + goto psz_q; case CC_OP_SHLQ: - return compute_all_shlq(dst, src1); + flags =3D compute_aco_shlq(dst, src1); + goto psz_q; case CC_OP_SARQ: - return compute_all_sarq(dst, src1); + flags =3D compute_aco_sarq(dst, src1); + goto psz_q; case CC_OP_BMILGQ: - return compute_all_bmilgq(dst, src1); + flags =3D compute_aco_bmilgq(dst, src1); + goto psz_q; case CC_OP_BLSIQ: - return compute_all_blsiq(dst, src1); + flags =3D compute_aco_blsiq(dst, src1); + goto psz_q; #endif } + +psz_b: + shift +=3D 8; +psz_w: + shift +=3D 16; +psz_l: +#ifdef TARGET_X86_64 + shift +=3D 32; +psz_q: +#endif + + flags +=3D compute_pf(dst); + dst <<=3D shift; + flags +=3D dst =3D=3D 0 ? CC_Z : 0; + flags +=3D (target_long)dst < 0 ? CC_S : 0; + return flags; } =20 uint32_t cpu_cc_compute_all(CPUX86State *env) --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372796; cv=none; d=zohomail.com; s=zohoarc; b=iHUATI8cApJCKdhy+Cz6IVxglYuvPluy0aV9eets+j6fTnNIAXy6J5Xr/ZczE5vo3sJBtDC3kbcsgvtfAQRLN2mOkFBkqoGPEvGmimPSGVmHJnRjeV1BPTwnJI9z8LPEjFq6Gs271KkVIVbw+uqsjdTUpMUN4Uo9HW5K7t1Bzq8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372796; 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=w13dSM8SN/G/eyeKhZHaUnvdET5uHotxh7kCkFaT+gs=; b=LMFwaQjLv6T1xThmhmeKrETpOvFUrh7lj20YOZjYceiFOCUImJ2B0dLk9pNHVgl0ZZ78S7PY2uqA2k4Q6H99hfz31E1cA18F38U1dkp6gHDND9y4VgPl5VBBb/D38yhAATgThpdu+gtTwWIRYDkNyZTXCbdzJVNXwe+TcpGgMJE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1765372796773800.9545398663181; Wed, 10 Dec 2025 05:19:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4r-000532-JE; Wed, 10 Dec 2025 08:17:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4R-0004sA-Ne for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4O-0003OF-J1 for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:30 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-547-agA4M8gXP6yRbZSAG2-13w-1; Wed, 10 Dec 2025 08:17:26 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-42f9ed47dd8so866914f8f.3 for ; Wed, 10 Dec 2025 05:17:26 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7d2226c5sm38288147f8f.23.2025.12.10.05.17.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372647; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w13dSM8SN/G/eyeKhZHaUnvdET5uHotxh7kCkFaT+gs=; b=ZGnF+gsLfmi6d/86NOphslI7CwCGS4HnSLvccbkmyzq1eRZ/NipHCf6UnBw+7ragbRHGqw 3aVByDMp8QVAdf0Co9Qnptwr42W1rTuxNP0Odkreoi8JoVPFfAb2JvWWU41qTnGZiGjLS3 yz7VyiFHMNOvrjb5xz0P8Db5R9GAIR0= X-MC-Unique: agA4M8gXP6yRbZSAG2-13w-1 X-Mimecast-MFC-AGG-ID: agA4M8gXP6yRbZSAG2-13w_1765372645 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372644; x=1765977444; 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=w13dSM8SN/G/eyeKhZHaUnvdET5uHotxh7kCkFaT+gs=; b=mbqNpdeTeRcMxUM3zx7APgvFheRof9b5W2vYvXQuQ0ypglArA8KIY59TFkYkyiQvPC Go33BN/sFwechA9XkSPjrf8tNIDPuciOLGPpQYcrOCf0Uop/bmQpXat9k9p16kf764cW yB6kXLf2etpWANYtuAqjXX+wORJ7aRogEXh1eLXU2YPOdOxbqBiuNwMUshxJIm802ZWe ZfAj6lO99JY/JKbXG2FmSAw6LIIteAdSJWQ4S8WQRu42CbkbZVj5xa1T9U0wvyUH0++2 Za1d4LsupBWF+/kchEmE3eGpqN9S3dKPLbxPmlOaxe0egWr7hcjP/M2A+JImv2fyAn/5 j62Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372644; x=1765977444; 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=w13dSM8SN/G/eyeKhZHaUnvdET5uHotxh7kCkFaT+gs=; b=CwOqkxgtlP3Ow7FlLph6YDUaFdMbKW48ya0WUmfrP2rnyeZsQzqZAORi5u9VaUPfLY zMk0CYxT+T3iGV9urNDGIe9Mc4xmPe/qpvrtyrMPXP8uJr9TnTy9DqZO44pBCyKHtElY Z005AMolf1VXtFr2VY55iGPSNSEOXCOvNTHIydI8ufEdcJ6Pd3uflpiwRN+X0zSeQbHL 1jLLIpEWFRKxgfBO69a976L+NjkSwW5etDRMTc6MVfp6GFrS50Qj10b5FqT0m9l6N1wI PGCxRoy4W+nxPQnMFEWWCR75jepfWrblqCYkllg+BsJ29zx+ueoAlKVBcPj2zQHKiePh 1zXg== X-Gm-Message-State: AOJu0YzYdCHdWeoCyTrKrdT80Esdrc5mUjp1l5DY/rhK2duSTc8S3+Pe CuEOqDmmhBcVZlBvJ06TiBiGOGFf/MiwUcKRRFRZOu/j5U7pRsMwB/sFFDT66eTKID/T+qOkhpJ gENlOfnZ5dmfgaTAkJT7t7ti522ebhCf9vmYZ4aD7/Vcea5c4qk0AhhkLe7ejjvfszUlKnwS9d2 rZd3j+b//H5rQGWH/pjkq8S8cPmZXBTQ4vSIVBZVP8 X-Gm-Gg: AY/fxX6HE6wkvCeU4srb71zp8O0pLKl2DmeAANViYoV2SlVcDbmLkI6OXawYnftJaIp vUr+ssnE3je8mT75zH8ol0vD5l86sG8KW1hL1f+o/yUT2f8Mewq/ydDZPNiQ8Xuwnk5GAd63YvC XNReMaXGTqU9fvzZLSbT3iB2EnQfJUjTXQrgIdq20Tpj9u2bz5vpZAZiyafkw4AtEaqXUD1c8jF 7VQVwu+BtjgsiOfTg15CQXYh2RcX40Dp5dO8C7+fZx66KVnP0BMQFJEgLJEJJyVydtS69ijInXS 68I0xiHMyV066WAxeYputDvNQRLKSpT4gsI36eNNABdyRxHnESzHk5VM6ntWqP1ejNAosQ1Q/Gc WntiQMqqcf5pYMSXsyWy8b2zRPxDTiaSAadgc5+xbO+6bm+uDq6Yr9+2l+oM3f6ECzNqgE8oF53 gLbzrRCvLEqh+OGQk= X-Received: by 2002:a05:6000:144e:b0:42b:3cdf:9b6c with SMTP id ffacd0b85a97d-42fa39e0177mr2459589f8f.22.1765372644312; Wed, 10 Dec 2025 05:17:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IHDU3SIU8my1KO9Nbc3x/sb7nV2Z5c1EnU4Vza673+efX3CDwpcvxW5uo3Vo5R0IQYIlitu2g== X-Received: by 2002:a05:6000:144e:b0:42b:3cdf:9b6c with SMTP id ffacd0b85a97d-42fa39e0177mr2459550f8f.22.1765372643711; Wed, 10 Dec 2025 05:17:23 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 17/18] target/i386/tcg: add a CCOp for SBB x,x Date: Wed, 10 Dec 2025 14:16:52 +0100 Message-ID: <20251210131653.852163-18-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372797431158500 Content-Type: text/plain; charset="utf-8" This is more efficient both when generating code and when testing flags. Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/cpu.h | 13 ++++++++++++- target/i386/cpu-dump.c | 2 ++ target/i386/tcg/cc_helper.c | 6 ++++++ target/i386/tcg/translate.c | 13 +++++++++++++ target/i386/tcg/emit.c.inc | 33 ++++++--------------------------- 5 files changed, 39 insertions(+), 28 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index ecca38ed0b5..314e773a5d4 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1515,7 +1515,18 @@ typedef enum { CC_OP_POPCNTL__, CC_OP_POPCNTQ__, CC_OP_POPCNT =3D sizeof(target_ulong) =3D=3D 8 ? CC_OP_POPCNTQ__ : CC_= OP_POPCNTL__, -#define CC_OP_LAST_BWLQ CC_OP_POPCNTQ__ + + /* + * Note that only CC_OP_SBB_SELF (i.e. the one with MO_TL size) + * is used or implemented, because the translation produces a + * sign-extended CC_DST. + */ + CC_OP_SBB_SELFB__, /* S/Z/C/A via CC_DST, O clear, P set. */ + CC_OP_SBB_SELFW__, + CC_OP_SBB_SELFL__, + CC_OP_SBB_SELFQ__, + CC_OP_SBB_SELF =3D sizeof(target_ulong) =3D=3D 8 ? CC_OP_SBB_SELFQ__ := CC_OP_SBB_SELFL__, +#define CC_OP_LAST_BWLQ CC_OP_SBB_SELFQ__ =20 CC_OP_DYNAMIC, /* must use dynamic code to get cc_op */ } CCOp; diff --git a/target/i386/cpu-dump.c b/target/i386/cpu-dump.c index 67bf31e0caa..20a3002f013 100644 --- a/target/i386/cpu-dump.c +++ b/target/i386/cpu-dump.c @@ -91,6 +91,8 @@ static const char * const cc_op_str[] =3D { [CC_OP_BMILGQ] =3D "BMILGQ", =20 [CC_OP_POPCNT] =3D "POPCNT", + + [CC_OP_SBB_SELF] =3D "SBBx,x", }; =20 static void diff --git a/target/i386/tcg/cc_helper.c b/target/i386/tcg/cc_helper.c index 2c4170b5b77..91e492196af 100644 --- a/target/i386/tcg/cc_helper.c +++ b/target/i386/tcg/cc_helper.c @@ -100,6 +100,9 @@ target_ulong helper_cc_compute_all(target_ulong dst, ta= rget_ulong src1, return src1; case CC_OP_POPCNT: return dst ? 0 : CC_Z; + case CC_OP_SBB_SELF: + /* dst is either all zeros (--Z-P-) or all ones (-S-APC) */ + return (dst & (CC_Z|CC_A|CC_C|CC_S)) ^ (CC_P | CC_Z); =20 case CC_OP_ADCX: return compute_all_adcx(dst, src1, src2); @@ -326,6 +329,9 @@ target_ulong helper_cc_compute_c(target_ulong dst, targ= et_ulong src1, case CC_OP_MULQ: return src1 !=3D 0; =20 + case CC_OP_SBB_SELF: + return dst & 1; + case CC_OP_ADCX: case CC_OP_ADCOX: return dst; diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index e91715af817..17ad4ccacaf 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -304,6 +304,7 @@ static const uint8_t cc_op_live_[] =3D { [CC_OP_ADOX] =3D USES_CC_SRC | USES_CC_SRC2, [CC_OP_ADCOX] =3D USES_CC_DST | USES_CC_SRC | USES_CC_SRC2, [CC_OP_POPCNT] =3D USES_CC_DST, + [CC_OP_SBB_SELF] =3D USES_CC_DST, }; =20 static uint8_t cc_op_live(CCOp op) @@ -938,6 +939,9 @@ static CCPrepare gen_prepare_eflags_c(DisasContext *s, = TCGv reg) size =3D cc_op_size(s->cc_op); return gen_prepare_val_nz(cpu_cc_src, size, false); =20 + case CC_OP_SBB_SELF: + return (CCPrepare) { .cond =3D TCG_COND_NE, .reg =3D cpu_cc_dst }; + case CC_OP_ADCX: case CC_OP_ADCOX: return (CCPrepare) { .cond =3D TCG_COND_NE, .reg =3D cpu_cc_dst, @@ -999,6 +1003,7 @@ static CCPrepare gen_prepare_eflags_o(DisasContext *s,= TCGv reg) case CC_OP_ADCOX: return (CCPrepare) { .cond =3D TCG_COND_NE, .reg =3D cpu_cc_src2, .no_setcond =3D true }; + case CC_OP_SBB_SELF: case CC_OP_LOGICB ... CC_OP_LOGICQ: case CC_OP_POPCNT: return (CCPrepare) { .cond =3D TCG_COND_NEVER }; @@ -1078,6 +1083,14 @@ static CCPrepare gen_prepare_cc(DisasContext *s, int= b, TCGv reg) } break; =20 + case CC_OP_SBB_SELF: + /* checking for nonzero is usually the most efficient */ + if (jcc_op =3D=3D JCC_L || jcc_op =3D=3D JCC_B || jcc_op =3D=3D JC= C_S) { + jcc_op =3D JCC_Z; + inv =3D !inv; + } + goto slow_jcc; + case CC_OP_LOGICB ... CC_OP_LOGICQ: /* Mostly used for test+jump */ size =3D s->cc_op - CC_OP_LOGICB; diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 8dac4d09da1..0fde3d669d9 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -3876,37 +3876,16 @@ static void gen_SBB(DisasContext *s, X86DecodedInsn= *decode) return; } =20 - c_in =3D tcg_temp_new(); - gen_compute_eflags_c(s, c_in); - - /* - * Here the change is as follows: - * CC_SBB: src1 =3D T0, src2 =3D T0, src3 =3D c_in - * CC_SUB: src1 =3D 0, src2 =3D c_in (no src3) - * - * The difference also does not matter: - * - AF is bit 4 of dst^src1^src2, but bit 4 of src1^src2 is zero in b= oth cases - * therefore AF comes straight from dst (in fact it is c_in) - * - for OF, src1 and src2 have the same sign in both cases, meaning t= here - * can be no overflow - */ + /* SBB x,x has its own CCOp so that's even easier. */ if (decode->e.op2 !=3D X86_TYPE_I && !decode->op[0].has_ea && decode->= op[0].n =3D=3D decode->op[2].n) { - if (s->cc_op =3D=3D CC_OP_DYNAMIC) { - tcg_gen_neg_tl(s->T0, c_in); - } else { - /* - * Do not negate c_in because it will often be dead and only t= he - * instruction generated by negsetcond will survive. - */ - gen_neg_setcc(s, JCC_B << 1, s->T0); - } - tcg_gen_movi_tl(s->cc_srcT, 0); - decode->cc_src =3D c_in; - decode->cc_dst =3D s->T0; - decode->cc_op =3D CC_OP_SUBB + ot; + gen_neg_setcc(s, JCC_B << 1, s->T0); + prepare_update1_cc(decode, s, CC_OP_SBB_SELF); return; } =20 + c_in =3D tcg_temp_new(); + gen_compute_eflags_c(s, c_in); + if (s->prefix & PREFIX_LOCK) { tcg_gen_add_tl(s->T0, s->T1, c_in); tcg_gen_neg_tl(s->T0, s->T0); --=20 2.52.0 From nobody Wed Dec 17 03:27:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1765372698; cv=none; d=zohomail.com; s=zohoarc; b=fbu1Ws2axmfhLk6FbwqPBGsYBMnmkiSTJ00tlKsc5z0XBx9VfghGXQjJd8mRS9RkGgUaAW8dY/FEBJHUedHYTM+Z0N3+XZYbQfpqHg6+InpZ9PqFyldkiUPH0f0XQwjNHt5mlDBr9HMJQUI1lsb78+nxJEDYsqfRl0kmOj725y8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765372698; 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=T58pmygptBEW1S74SQK7LzWey5RYMiEFbwtFfeU0U9k=; b=UzZgMpgmF2eep1/DI2cVlZadlyZh/t0eHGaQwY+b9XYoAW0wMfzlxQaVTPb/st8T6QyfgUTDb6v5PgamDj9qfNJuu5WaQb8s+VMvLU+fgX+95l9mEcoOX5sJLQ45k3MXIKpEmQcDOmqXd1MbqvhPmoJXFT4jWL83Uj0WiwPFQkU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176537269854367.82939844158875; Wed, 10 Dec 2025 05:18:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTK4t-00055v-Uw; Wed, 10 Dec 2025 08:18: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 1vTK4S-0004sH-Gx for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTK4Q-0003PL-5r for qemu-devel@nongnu.org; Wed, 10 Dec 2025 08:17:32 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-658-9l25pSSeOfuS8lLkIPfhZg-1; Wed, 10 Dec 2025 08:17:28 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-42f9e62b4feso489617f8f.0 for ; Wed, 10 Dec 2025 05:17:27 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42f7d331aeasm37524162f8f.37.2025.12.10.05.17.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 05:17:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765372649; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=T58pmygptBEW1S74SQK7LzWey5RYMiEFbwtFfeU0U9k=; b=V4av+D4h0SBfw1AeXA10m5khPMaGq/6sC3B7ZKnLI9ZizHubrHB7xcKzbLvr8xfI1RFXe5 D+0eztcVQkyquKVEvbRfaFMUnP4+S/kep4Up1bpXyqg6eS1r59QdKJUNiFsUeNpQMZgYZq OIhse7JtwxzpudfUz2tlPQwNyAWnRz8= X-MC-Unique: 9l25pSSeOfuS8lLkIPfhZg-1 X-Mimecast-MFC-AGG-ID: 9l25pSSeOfuS8lLkIPfhZg_1765372647 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1765372646; x=1765977446; 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=T58pmygptBEW1S74SQK7LzWey5RYMiEFbwtFfeU0U9k=; b=aQ5G/HFAwz96e74xPtbZv03cmfMfRBwut1TrkDRQ+3W4LGz8yhrZfYGkzZPrHnZVvW WUm/hBKvwOq4XxySsHuBFHRKa7aV5ZHph0jjWeHCtfBpksSbRl89An0JYNX1ityypxOj gzLL8TDK6HZSzIvxs1cKS6z6PChSV6wTjCokTJtDCFbK6mGsDbwCbvg3l27TY9+zWDFL APt29t7tf5CXT4NLk4ZOcv/bNo8ZFuSpBPkVca5fJBsnbpJVEd85P8rj7C0KMs96V1xU RqfLqiK7JSDPWDFRxRe588zXUkmKFWqVMLJF9BARXKTk1Wp6g45qqehF0uoHqdK5/ppz c3+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765372646; x=1765977446; 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=T58pmygptBEW1S74SQK7LzWey5RYMiEFbwtFfeU0U9k=; b=fMyo1CxOBmth5bwmFtpX/ZyhcAGQRJE3BlFu7YCuNapy0jwz5TcgQt/uoQGY8u3823 JN/OGjxzejYu2QtiUzCFIvyoIUtH/9LJ10pztvLrkiSBRcah64Of0g97Xo1uiCu0lum9 5Vy619+k8xJWstChgGG3veB6DJkasWp9IjVw5LxC1Xsv/QrH5s5Ly5PSjocJGjPZTmy0 xoNQb3V8SjIUw0oiKSsGsakmnjB3CX55vPBYhM8HKrRRzMr81u9qHEfQLxitM5VzCH/0 wOq5N2r6XvtoLBo9Cb8xgesosjDdqUIXAOTIuVRyVSrZe+sYg4sBTLtMBsrRZEqEHSsf dRCg== X-Gm-Message-State: AOJu0YwihvBIi+j94GnwabJqP3Y5TziL9yjwB8n4qzZ9hg7Cg22DeMyc Kly5Z4UfOGp2AMqTUYGIA17mRXALwhM3DkNX2MeNHOXw8BRTYtvsS6nWVleGwxtF5OIv+8H8Xmz bGdeaYkF8E03vJ44FhUi5GoZck0VduOgGwi0b9Y5jqIRW8+WduCTUTuP9pEWWULn1OP4bMU1XXN bq04f5nRkU0+ZSkCeryh6mT0nmY/IwDzmuLHUn2QjQ X-Gm-Gg: AY/fxX7vALTEYt6xdAmFyA8/gIGtoXFTXZuI9iBCFe7sFfJXIXN+0lpghGxZGEUTFzN d7m5zUeFCnwBms/spfCytggZsqKGgBXq8zG2hOtFCML1o4xAhQJgStTSB6wt6FSteb4kuUtRi+w ravjcBslZr+SBoTq9ac2X33RkzoTGQFn5fGbmN/roSByGraISbcYuRyibjTUdlx3+Z93fEOTCKR a8m1Oe3f0K++GWOQZgfy0gB92c76NFu4kl/d1vzD+K2BT64OofReiyE2g3rnnPVRD4Ol3iQj/Sd VSC91tg7vWVE7axlPpuHpy/lmpjYv4p5yOOt9IX5KRqJb56P5FbOvnWFIFOgK98ZWfvJX8STm9Y 3hrpuojr+WoJ6nvwWEV5+UISVq7nv1i2sBed5Raa86yodV5wm/KrJq/KAyPfimNhSRnPlD2cRaT cl5ANRH5UKf/LCI6c= X-Received: by 2002:a05:6000:240f:b0:42f:8817:7ee with SMTP id ffacd0b85a97d-42fa0872da8mr6469339f8f.31.1765372645829; Wed, 10 Dec 2025 05:17:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IEs9Y47lAuZfMZNcrNi6UeA02rRHu5q5aUlw+v/5J6llmAv+4Fj1bHvuHGkXiTSgbP7vJhTuA== X-Received: by 2002:a05:6000:240f:b0:42f:8817:7ee with SMTP id ffacd0b85a97d-42fa0872da8mr6469282f8f.31.1765372645000; Wed, 10 Dec 2025 05:17:25 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PATCH 18/18] target/i386/tcg: move fetch code out of translate.c Date: Wed, 10 Dec 2025 14:16:53 +0100 Message-ID: <20251210131653.852163-19-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251210131653.852163-1-pbonzini@redhat.com> References: <20251210131653.852163-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 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=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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 @redhat.com) X-ZM-MESSAGEID: 1765372701161158500 Content-Type: text/plain; charset="utf-8" Let translate.c only concern itself with TCG code generation. Move everyth= ing that uses CPUX86State*, as well as gen_lea_modrm_0 now that it is only used to fill decode->mem, to decode-new.c.inc. While at it also rename gen_lea_modrm_0. Signed-off-by: Paolo Bonzini Reviewed-by: Richard Henderson --- target/i386/tcg/translate.c | 271 ------------------------------ target/i386/tcg/decode-new.c.inc | 277 ++++++++++++++++++++++++++++++- 2 files changed, 274 insertions(+), 274 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 17ad4ccacaf..a905efdfbbd 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -1644,182 +1644,6 @@ static TCGv gen_shiftd_rm_T1(DisasContext *s, MemOp= ot, return cc_src; } =20 -#define X86_MAX_INSN_LENGTH 15 - -static uint64_t advance_pc(CPUX86State *env, DisasContext *s, int num_byte= s) -{ - uint64_t pc =3D s->pc; - - /* This is a subsequent insn that crosses a page boundary. */ - if (s->base.num_insns > 1 && - !translator_is_same_page(&s->base, s->pc + num_bytes - 1)) { - siglongjmp(s->jmpbuf, 2); - } - - s->pc +=3D num_bytes; - if (unlikely(cur_insn_len(s) > X86_MAX_INSN_LENGTH)) { - /* If the instruction's 16th byte is on a different page than the = 1st, a - * page fault on the second page wins over the general protection = fault - * caused by the instruction being too long. - * This can happen even if the operand is only one byte long! - */ - if (((s->pc - 1) ^ (pc - 1)) & TARGET_PAGE_MASK) { - (void)translator_ldub(env, &s->base, - (s->pc - 1) & TARGET_PAGE_MASK); - } - siglongjmp(s->jmpbuf, 1); - } - - return pc; -} - -static inline uint8_t x86_ldub_code(CPUX86State *env, DisasContext *s) -{ - return translator_ldub(env, &s->base, advance_pc(env, s, 1)); -} - -static inline uint16_t x86_lduw_code(CPUX86State *env, DisasContext *s) -{ - return translator_lduw(env, &s->base, advance_pc(env, s, 2)); -} - -static inline uint32_t x86_ldl_code(CPUX86State *env, DisasContext *s) -{ - return translator_ldl(env, &s->base, advance_pc(env, s, 4)); -} - -#ifdef TARGET_X86_64 -static inline uint64_t x86_ldq_code(CPUX86State *env, DisasContext *s) -{ - return translator_ldq(env, &s->base, advance_pc(env, s, 8)); -} -#endif - -/* Decompose an address. */ - -static AddressParts gen_lea_modrm_0(CPUX86State *env, DisasContext *s, - int modrm, bool is_vsib) -{ - int def_seg, base, index, scale, mod, rm; - target_long disp; - bool havesib; - - def_seg =3D R_DS; - index =3D -1; - scale =3D 0; - disp =3D 0; - - mod =3D (modrm >> 6) & 3; - rm =3D modrm & 7; - base =3D rm | REX_B(s); - - if (mod =3D=3D 3) { - /* Normally filtered out earlier, but including this path - simplifies multi-byte nop, as well as bndcl, bndcu, bndcn. */ - goto done; - } - - switch (s->aflag) { - case MO_64: - case MO_32: - havesib =3D 0; - if (rm =3D=3D 4) { - int code =3D x86_ldub_code(env, s); - scale =3D (code >> 6) & 3; - index =3D ((code >> 3) & 7) | REX_X(s); - if (index =3D=3D 4 && !is_vsib) { - index =3D -1; /* no index */ - } - base =3D (code & 7) | REX_B(s); - havesib =3D 1; - } - - switch (mod) { - case 0: - if ((base & 7) =3D=3D 5) { - base =3D -1; - disp =3D (int32_t)x86_ldl_code(env, s); - if (CODE64(s) && !havesib) { - base =3D -2; - disp +=3D s->pc + s->rip_offset; - } - } - break; - case 1: - disp =3D (int8_t)x86_ldub_code(env, s); - break; - default: - case 2: - disp =3D (int32_t)x86_ldl_code(env, s); - break; - } - - /* For correct popl handling with esp. */ - if (base =3D=3D R_ESP && s->popl_esp_hack) { - disp +=3D s->popl_esp_hack; - } - if (base =3D=3D R_EBP || base =3D=3D R_ESP) { - def_seg =3D R_SS; - } - break; - - case MO_16: - if (mod =3D=3D 0) { - if (rm =3D=3D 6) { - base =3D -1; - disp =3D x86_lduw_code(env, s); - break; - } - } else if (mod =3D=3D 1) { - disp =3D (int8_t)x86_ldub_code(env, s); - } else { - disp =3D (int16_t)x86_lduw_code(env, s); - } - - switch (rm) { - case 0: - base =3D R_EBX; - index =3D R_ESI; - break; - case 1: - base =3D R_EBX; - index =3D R_EDI; - break; - case 2: - base =3D R_EBP; - index =3D R_ESI; - def_seg =3D R_SS; - break; - case 3: - base =3D R_EBP; - index =3D R_EDI; - def_seg =3D R_SS; - break; - case 4: - base =3D R_ESI; - break; - case 5: - base =3D R_EDI; - break; - case 6: - base =3D R_EBP; - def_seg =3D R_SS; - break; - default: - case 7: - base =3D R_EBX; - break; - } - break; - - default: - g_assert_not_reached(); - } - - done: - return (AddressParts){ def_seg, base, index, scale, disp }; -} - /* Compute the address, with a minimum number of TCG ops. */ static TCGv gen_lea_modrm_1(DisasContext *s, AddressParts a, bool is_vsib) { @@ -1904,79 +1728,6 @@ static void gen_st_modrm(DisasContext *s, X86Decoded= Insn *decode, MemOp ot) } } =20 -static target_ulong insn_get_addr(CPUX86State *env, DisasContext *s, MemOp= ot) -{ - target_ulong ret; - - switch (ot) { - case MO_8: - ret =3D x86_ldub_code(env, s); - break; - case MO_16: - ret =3D x86_lduw_code(env, s); - break; - case MO_32: - ret =3D x86_ldl_code(env, s); - break; -#ifdef TARGET_X86_64 - case MO_64: - ret =3D x86_ldq_code(env, s); - break; -#endif - default: - g_assert_not_reached(); - } - return ret; -} - -static inline uint32_t insn_get(CPUX86State *env, DisasContext *s, MemOp o= t) -{ - uint32_t ret; - - switch (ot) { - case MO_8: - ret =3D x86_ldub_code(env, s); - break; - case MO_16: - ret =3D x86_lduw_code(env, s); - break; - case MO_32: -#ifdef TARGET_X86_64 - case MO_64: -#endif - ret =3D x86_ldl_code(env, s); - break; - default: - g_assert_not_reached(); - } - return ret; -} - -static target_long insn_get_signed(CPUX86State *env, DisasContext *s, MemO= p ot) -{ - target_long ret; - - switch (ot) { - case MO_8: - ret =3D (int8_t) x86_ldub_code(env, s); - break; - case MO_16: - ret =3D (int16_t) x86_lduw_code(env, s); - break; - case MO_32: - ret =3D (int32_t) x86_ldl_code(env, s); - break; -#ifdef TARGET_X86_64 - case MO_64: - ret =3D x86_ldq_code(env, s); - break; -#endif - default: - g_assert_not_reached(); - } - return ret; -} - static void gen_conditional_jump_labels(DisasContext *s, target_long diff, TCGLabel *not_taken, TCGLabel *tak= en) { @@ -2221,28 +1972,6 @@ static void gen_leave(DisasContext *s) gen_op_mov_reg_v(s, a_ot, R_ESP, s->T1); } =20 -/* Similarly, except that the assumption here is that we don't decode - the instruction at all -- either a missing opcode, an unimplemented - feature, or just a bogus instruction stream. */ -static void gen_unknown_opcode(CPUX86State *env, DisasContext *s) -{ - gen_illegal_opcode(s); - - if (qemu_loglevel_mask(LOG_UNIMP)) { - FILE *logfile =3D qemu_log_trylock(); - if (logfile) { - target_ulong pc =3D s->base.pc_next, end =3D s->pc; - - fprintf(logfile, "ILLOPC: " TARGET_FMT_lx ":", pc); - for (; pc < end; ++pc) { - fprintf(logfile, " %02x", translator_ldub(env, &s->base, p= c)); - } - fprintf(logfile, "\n"); - qemu_log_unlock(logfile); - } - } -} - /* an interrupt is different from an exception because of the privilege checks */ static void gen_interrupt(DisasContext *s, uint8_t intno) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index 9d17bae7e75..b4aa300ab47 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -279,6 +279,130 @@ =20 #define UNKNOWN_OPCODE ((X86OpEntry) {}) =20 +#define X86_MAX_INSN_LENGTH 15 + +static uint64_t advance_pc(CPUX86State *env, DisasContext *s, int num_byte= s) +{ + uint64_t pc =3D s->pc; + + /* This is a subsequent insn that crosses a page boundary. */ + if (s->base.num_insns > 1 && + !translator_is_same_page(&s->base, s->pc + num_bytes - 1)) { + siglongjmp(s->jmpbuf, 2); + } + + s->pc +=3D num_bytes; + if (unlikely(cur_insn_len(s) > X86_MAX_INSN_LENGTH)) { + /* If the instruction's 16th byte is on a different page than the = 1st, a + * page fault on the second page wins over the general protection = fault + * caused by the instruction being too long. + * This can happen even if the operand is only one byte long! + */ + if (((s->pc - 1) ^ (pc - 1)) & TARGET_PAGE_MASK) { + (void)translator_ldub(env, &s->base, + (s->pc - 1) & TARGET_PAGE_MASK); + } + siglongjmp(s->jmpbuf, 1); + } + + return pc; +} + +static inline uint8_t x86_ldub_code(CPUX86State *env, DisasContext *s) +{ + return translator_ldub(env, &s->base, advance_pc(env, s, 1)); +} + +static inline uint16_t x86_lduw_code(CPUX86State *env, DisasContext *s) +{ + return translator_lduw(env, &s->base, advance_pc(env, s, 2)); +} + +static inline uint32_t x86_ldl_code(CPUX86State *env, DisasContext *s) +{ + return translator_ldl(env, &s->base, advance_pc(env, s, 4)); +} + +#ifdef TARGET_X86_64 +static inline uint64_t x86_ldq_code(CPUX86State *env, DisasContext *s) +{ + return translator_ldq(env, &s->base, advance_pc(env, s, 8)); +} +#endif + +static target_ulong insn_get_addr(CPUX86State *env, DisasContext *s, MemOp= ot) +{ + target_ulong ret; + + switch (ot) { + case MO_8: + ret =3D x86_ldub_code(env, s); + break; + case MO_16: + ret =3D x86_lduw_code(env, s); + break; + case MO_32: + ret =3D x86_ldl_code(env, s); + break; +#ifdef TARGET_X86_64 + case MO_64: + ret =3D x86_ldq_code(env, s); + break; +#endif + default: + g_assert_not_reached(); + } + return ret; +} + +static inline uint32_t insn_get(CPUX86State *env, DisasContext *s, MemOp o= t) +{ + uint32_t ret; + + switch (ot) { + case MO_8: + ret =3D x86_ldub_code(env, s); + break; + case MO_16: + ret =3D x86_lduw_code(env, s); + break; + case MO_32: +#ifdef TARGET_X86_64 + case MO_64: +#endif + ret =3D x86_ldl_code(env, s); + break; + default: + g_assert_not_reached(); + } + return ret; +} + +static target_long insn_get_signed(CPUX86State *env, DisasContext *s, MemO= p ot) +{ + target_long ret; + + switch (ot) { + case MO_8: + ret =3D (int8_t) x86_ldub_code(env, s); + break; + case MO_16: + ret =3D (int16_t) x86_lduw_code(env, s); + break; + case MO_32: + ret =3D (int32_t) x86_ldl_code(env, s); + break; +#ifdef TARGET_X86_64 + case MO_64: + ret =3D x86_ldq_code(env, s); + break; +#endif + default: + g_assert_not_reached(); + } + return ret; +} + static uint8_t get_modrm(DisasContext *s, CPUX86State *env) { if (!s->has_modrm) { @@ -1883,6 +2007,130 @@ static void decode_root(DisasContext *s, CPUX86Stat= e *env, X86OpEntry *entry, ui *entry =3D opcodes_root[*b]; } =20 +/* Decompose an address. */ +static AddressParts decode_modrm_address(CPUX86State *env, DisasContext *s, + int modrm, bool is_vsib) +{ + int def_seg, base, index, scale, mod, rm; + target_long disp; + bool havesib; + + def_seg =3D R_DS; + index =3D -1; + scale =3D 0; + disp =3D 0; + + mod =3D (modrm >> 6) & 3; + rm =3D modrm & 7; + base =3D rm | REX_B(s); + + if (mod =3D=3D 3) { + /* Normally filtered out earlier, but including this path + simplifies multi-byte nop, as well as bndcl, bndcu, bndcn. */ + goto done; + } + + switch (s->aflag) { + case MO_64: + case MO_32: + havesib =3D 0; + if (rm =3D=3D 4) { + int code =3D x86_ldub_code(env, s); + scale =3D (code >> 6) & 3; + index =3D ((code >> 3) & 7) | REX_X(s); + if (index =3D=3D 4 && !is_vsib) { + index =3D -1; /* no index */ + } + base =3D (code & 7) | REX_B(s); + havesib =3D 1; + } + + switch (mod) { + case 0: + if ((base & 7) =3D=3D 5) { + base =3D -1; + disp =3D (int32_t)x86_ldl_code(env, s); + if (CODE64(s) && !havesib) { + base =3D -2; + disp +=3D s->pc + s->rip_offset; + } + } + break; + case 1: + disp =3D (int8_t)x86_ldub_code(env, s); + break; + default: + case 2: + disp =3D (int32_t)x86_ldl_code(env, s); + break; + } + + /* For correct popl handling with esp. */ + if (base =3D=3D R_ESP && s->popl_esp_hack) { + disp +=3D s->popl_esp_hack; + } + if (base =3D=3D R_EBP || base =3D=3D R_ESP) { + def_seg =3D R_SS; + } + break; + + case MO_16: + if (mod =3D=3D 0) { + if (rm =3D=3D 6) { + base =3D -1; + disp =3D x86_lduw_code(env, s); + break; + } + } else if (mod =3D=3D 1) { + disp =3D (int8_t)x86_ldub_code(env, s); + } else { + disp =3D (int16_t)x86_lduw_code(env, s); + } + + switch (rm) { + case 0: + base =3D R_EBX; + index =3D R_ESI; + break; + case 1: + base =3D R_EBX; + index =3D R_EDI; + break; + case 2: + base =3D R_EBP; + index =3D R_ESI; + def_seg =3D R_SS; + break; + case 3: + base =3D R_EBP; + index =3D R_EDI; + def_seg =3D R_SS; + break; + case 4: + base =3D R_ESI; + break; + case 5: + base =3D R_EDI; + break; + case 6: + base =3D R_EBP; + def_seg =3D R_SS; + break; + default: + case 7: + base =3D R_EBX; + break; + } + break; + + default: + g_assert_not_reached(); + } + + done: + return (AddressParts){ def_seg, base, index, scale, disp }; +} + static int decode_modrm(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode, X86DecodedOp *op) { @@ -1895,8 +2143,8 @@ static int decode_modrm(DisasContext *s, CPUX86State = *env, } else { op->has_ea =3D true; op->n =3D -1; - decode->mem =3D gen_lea_modrm_0(env, s, modrm, - decode->e.vex_class =3D=3D 12); + decode->mem =3D decode_modrm_address(env, s, get_modrm(s, env), + decode->e.vex_class =3D=3D 12); } return modrm; } @@ -2516,6 +2764,23 @@ illegal: return false; } =20 +static void dump_unknown_opcode(CPUX86State *env, DisasContext *s) +{ + if (qemu_loglevel_mask(LOG_UNIMP)) { + FILE *logfile =3D qemu_log_trylock(); + if (logfile) { + target_ulong pc =3D s->base.pc_next, end =3D s->pc; + + fprintf(logfile, "ILLOPC: " TARGET_FMT_lx ":", pc); + for (; pc < end; ++pc) { + fprintf(logfile, " %02x", translator_ldub(env, &s->base, p= c)); + } + fprintf(logfile, "\n"); + qemu_log_unlock(logfile); + } + } +} + /* * Convert one instruction. s->base.is_jmp is set if the translation must * be stopped. @@ -2902,5 +3167,11 @@ static void disas_insn(DisasContext *s, CPUState *cp= u) gen_illegal_opcode(s); return; unknown_op: - gen_unknown_opcode(env, s); + /* + * Similarly, except that the assumption here is that we don't decode + * the instruction at all -- either a missing opcode, an unimplemented + * feature, or just a bogus instruction stream. + */ + gen_illegal_opcode(s); + dump_unknown_opcode(env, s); } --=20 2.52.0