From nobody Sun Feb 8 21:28:30 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1565410775; cv=none; d=zoho.com; s=zohoarc; b=kRDhK5qNp7EykJldySir/+g2yy+fsNuDIzZbgfzP0niafuv+ZaJj27S+gre+BF+oofzknpzv46iyYZ1iLvSYbU+jSDf/WYsHpsr21JnTJQYVERMcKLYgwmQhZIGPbFumL324pzZNuyGXZoh/74yGsbQPRVDIveOFWUCGkpoWyXk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565410775; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ZHK0e9XvID8Cei/Jt59+/qv7qtS8MQ3X4OU+8rhkUPE=; b=dMWZy/AnGMKcCNRpX+86R3oYnbMhBBqX7l+KokstSv8RoUzGVSu246cL+1pvONrXz4MYzY00SXqgp7vjqu14AX7d2THEKmPrTNkaXVm+EpypOiCcmQgzLLrusocm90RphsVYdpdpBH0AayjxlC0Ft7k6K6CJMyMs5SRfMmILmDs= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565410775043858.8603352443306; Fri, 9 Aug 2019 21:19:35 -0700 (PDT) Received: from localhost ([::1]:34858 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIqs-0002Rm-4g for importer@patchew.org; Sat, 10 Aug 2019 00:19:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34768) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwIkt-0005eZ-Jb for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwIks-0004Lq-Fd for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:23 -0400 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]:42320) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwIks-0004La-Ao for qemu-devel@nongnu.org; Sat, 10 Aug 2019 00:13:22 -0400 Received: by mail-ot1-x341.google.com with SMTP id l15so140514210otn.9 for ; Fri, 09 Aug 2019 21:13:22 -0700 (PDT) Received: from dionysus.attlocal.net (69-222-133-165.lightspeed.tukrga.sbcglobal.net. [69.222.133.165]) by smtp.gmail.com with ESMTPSA id f84sm33383540oig.43.2019.08.09.21.13.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 09 Aug 2019 21:13:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZHK0e9XvID8Cei/Jt59+/qv7qtS8MQ3X4OU+8rhkUPE=; b=ahsESW22KAjIWNotNXHxKR0VkHaaRXzx8cLpmbMyXWLQIULdRN2W3hVpU1soGVw7sO 7OjyfxH7ACbUBzopeND900CMDvTlsE24JzoEi5PBDhhTa6N/Pxt8M8gwntUMG25SA9lL 8xI8Y5OAbY56kvovR1cZgg8v6ZfnlA56w/VEAuRRVyWKeEubohR+0kxhfaABBuncogz/ cAG8TtDZwJ/C8hJ5vrWYnqZQO4DfiKtOGw6j26r5+XHe1+wpYrCua2cTbCVt7mSxVUVl 7l/1VD/1qAyvdf/VHqMBD9aIxrP8/N8XQKo60DLenskp7Q8TKO2gxckuHGyeu0t8A1YC jZyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZHK0e9XvID8Cei/Jt59+/qv7qtS8MQ3X4OU+8rhkUPE=; b=NiULbeEiDaiIDMr1p3mrlmAPLU4cRImpKlHieJD96b5yek3w9W9vAGYnafuStE9Ais SJ0G3vSdcjhGCN1ZKlswC8ytJIA67wn03caYQI4Fba8LNgOe8S7BUbT/M9s93zxQJDqk 06mcwDAU30GyFeLIj81Hjsrfby3GjewRTQjDvF6gkGQ6f8Ziquxa8CbHw9v4ZThrcpR8 ePULVLhwZgo/1c2KMAWilhDSb5iiNU3dW9L6Gw+ZF/+ext/r4ZSFad0ozsLfOBxmVe9d dYlbtkpgRjgZOPWEGsBjug5zqUPMlV4vP2HgkPFoa9w66F284hACh8j9LOGxv69BEJEN JAQA== X-Gm-Message-State: APjAAAUR3oz+TubZ8sVqp8vwMYp604VuKfQzDUwYF2iVxQSHBYJwZcUK dn1IAieJeGQs52iZ9x5fRYBGmN8O X-Google-Smtp-Source: APXvYqz2dsZGnx97vx1eckCs3GgLSgcOiFAq2evuyXwn8di1MQJf3G4X1N6hxIE3+JeB4rLtKxdSgw== X-Received: by 2002:a9d:17e6:: with SMTP id j93mr21134723otj.275.1565410401658; Fri, 09 Aug 2019 21:13:21 -0700 (PDT) From: Jan Bobek To: qemu-devel@nongnu.org Date: Sat, 10 Aug 2019 00:12:31 -0400 Message-Id: <20190810041255.6820-16-jan.bobek@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190810041255.6820-1-jan.bobek@gmail.com> References: <20190810041255.6820-1-jan.bobek@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::341 Subject: [Qemu-devel] [RFC PATCH v2 15/39] target/i386: introduce function ck_cpuid X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Bobek , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Introduce a helper function to take care of instruction CPUID checks. Signed-off-by: Jan Bobek Reviewed-by: Richard Henderson --- target/i386/translate.c | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 03b49411e5..508d584584 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4500,6 +4500,51 @@ static void gen_sse(CPUX86State *env, DisasContext *= s, int b) #define tcg_gen_gvec_cmpgt(vece, dofs, aofs, bofs, oprsz, maxsz) \ tcg_gen_gvec_cmp(TCG_COND_GT, vece, dofs, aofs, bofs, oprsz, maxsz) =20 +enum { + CK_CPUID_MMX =3D 1, + CK_CPUID_3DNOW, + CK_CPUID_SSE, + CK_CPUID_SSE2, + CK_CPUID_SSE3, + CK_CPUID_SSSE3, + CK_CPUID_SSE4_1, + CK_CPUID_SSE4_2, + CK_CPUID_SSE4A, + CK_CPUID_AVX, + CK_CPUID_AVX2, +}; + +static int ck_cpuid(CPUX86State *env, DisasContext *s, int ck_cpuid_feat) +{ + switch (ck_cpuid_feat) { + case CK_CPUID_MMX: + return !(s->cpuid_features & CPUID_MMX) + || !(s->cpuid_ext2_features & CPUID_EXT2_MMX); + case CK_CPUID_3DNOW: + return !(s->cpuid_ext2_features & CPUID_EXT2_3DNOW); + case CK_CPUID_SSE: + return !(s->cpuid_features & CPUID_SSE); + case CK_CPUID_SSE2: + return !(s->cpuid_features & CPUID_SSE2); + case CK_CPUID_SSE3: + return !(s->cpuid_ext_features & CPUID_EXT_SSE3); + case CK_CPUID_SSSE3: + return !(s->cpuid_ext_features & CPUID_EXT_SSSE3); + case CK_CPUID_SSE4_1: + return !(s->cpuid_ext_features & CPUID_EXT_SSE41); + case CK_CPUID_SSE4_2: + return !(s->cpuid_ext_features & CPUID_EXT_SSE42); + case CK_CPUID_SSE4A: + return !(s->cpuid_ext3_features & CPUID_EXT3_SSE4A); + case CK_CPUID_AVX: + return !(s->cpuid_ext_features & CPUID_EXT_AVX); + case CK_CPUID_AVX2: + return !(s->cpuid_7_0_ebx_features & CPUID_7_0_EBX_AVX2); + default: + g_assert_not_reached(); + } +} + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { --=20 2.20.1