From patchwork Fri Jan 19 11:25:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 189528 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2bc4:b0:101:a8e8:374 with SMTP id hx4csp940161dyb; Fri, 19 Jan 2024 03:25:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IFJ4pC7hG04O1FDL9sP11ZLVwsYwSP8VWAuw6EODbBkYuw4boArMa6Aofpoj+hqVjrfObsM X-Received: by 2002:a05:620a:25d3:b0:783:70fd:d6aa with SMTP id y19-20020a05620a25d300b0078370fdd6aamr1337839qko.95.1705663520136; Fri, 19 Jan 2024 03:25:20 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705663520; cv=pass; d=google.com; s=arc-20160816; b=UEY9zv3WJKjCamQIw2vizgtFjpQRrryR+kWDmj0M4eubm7dMHZLFT8FRj1WrNXWqCP MZGnIYFVeSyvVkeMSAh9PGPC8zg1Rw8Mbm/znyK5HzGb9uqxALsqRcccs96SsaVJvlPE MH4eYB44/n5S33E+gEd2wkrbzW/JULk+uhODhcz7yQDADi4+DkHqTzyXh8/Au/TndeCt 1eUmSVKkK4h4aavPrACMav8rPhXC8/girvOQsiX+VK7dq3Yt14hc8s8F1COO+IE0lB0s 6wdNwGA1a7FR8HtvtNTlxz0TnymHamCaCA5nbratYeVPnYvuKCskBseCA/QbqJlm2Fpa RQ6A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :in-reply-to:autocrypt:references:cc:to:from:content-language :subject:user-agent:mime-version:date:message-id:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=UyjMcO4VlvbIkqoaDXGS/snPA9FAZXNsgDKETiGOtig=; fh=2DbSPqOhyO7CNtGa024QKgSiHKlKGVt2h+1rlgWLnZI=; b=uM9nnOlXFCMu69kD3xoxCm1Kklbi5B5C0RsVxs068dMRImQUXoN3GRbMpl5MRNgp9V GmWUtHVbUUX6vkA61n6h5ruDUXDCuAAv7abTFoZJ/bshJVXHfmRyL9TlkSnyMTdn5dAD NWV5eBxjSHXmBy9am7n260JBZO9A5OEt+1tCkJsjEnWtT0nIvCO9ee+bgTqIXj3npaJh 0KGdw+R0GADWyQRQnEzVkYqp4W9GkX3FDrbVJnDYjug8hxvBffqYfhhZ+Fweb+4uA/mp DTk2DaNium7aOl4AHeuFnDnhjfb9HSoKHUR4sNHt5LU9JbCOGnR7svBZMVezUwiwrfe0 MTGw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@suse.com header.s=google header.b=TNZRLneM; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id ow21-20020a05620a821500b0078328bda904si15513050qkn.499.2024.01.19.03.25.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Jan 2024 03:25:20 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=google header.b=TNZRLneM; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CC55B3857C61 for ; Fri, 19 Jan 2024 11:25:19 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by sourceware.org (Postfix) with ESMTPS id 94F763858001 for ; Fri, 19 Jan 2024 11:25:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 94F763858001 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 94F763858001 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::335 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705663509; cv=none; b=r1cIp0XkY+PZsr3E/HiiSyOWhqxFJhAd2unjomKcY1LTOwatzOLvO0oiRJ3xZi08T5gh/yegJmvRVaS70scm8l4gS9Aw/+mhdx8Xa9Z93ADb/bNyx2LaCQfJyk5nIq296jlZFPWQ56HWF68pDYD7Fd5ou50p9oZqzVos/dU1Cig= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705663509; c=relaxed/simple; bh=tI0fDZPgf5Xw76FgJTzWtRtNa13/r4aYFI7EgHdQJro=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=bslQwBwuFp6rrYHYj3Rb3f34qVfLqXzyG9eZsJQgusTbpDe5kGwfuZ9NxgLoxbKXR3Px0L2FrsWSjY0nzoARrsmjXWy6y/CFaEKQMNpf9qruRhsJLon/b8DlfRz3W8ikDlzE3OuyKh2v4aIQ77P6OP5+E2Us+D29i+MFNLvV1II= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-40e8801221cso5881015e9.1 for ; Fri, 19 Jan 2024 03:25:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1705663505; x=1706268305; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to :from:content-language:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=UyjMcO4VlvbIkqoaDXGS/snPA9FAZXNsgDKETiGOtig=; b=TNZRLneMHSpCZa+fPLMpkLJY4i/Guv1lBdq9qgbsq4LDFtWGKnfGqbr3VmmIOmgYo8 NSP0XFpGFxV7AFlAyg6pojzyeeVkAmM5a6PLF4BdKLPJRpS8Y0vIBKf+HqamgfOvYGDw TwLdcmOpvc3vqNlvqT8wN21SvShfuGhMlvvT39N+n+9tlEguDefl5tODmmGUPYAFioNX 1ndOUJCcSXYQuOZPc2ROKL1JOa7t5Cx4jaVoR8MKZxN9XyxLlP4YDMCADj5CWFzlW/Jx L0sRFFGi4k9bNaX41pHp1PHFmcWCBy6z6szVLx7j2eZ81aySYqc4Xq81yR5WOumGqEQY pQdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705663505; x=1706268305; h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to :from:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=UyjMcO4VlvbIkqoaDXGS/snPA9FAZXNsgDKETiGOtig=; b=QEn55iGjcjw7Cg/2qNb82qGYuDjmmYt9uuSHVyedJmz8lGccQwJaRIKFaQHIRk8U9l t1MtztKUs8BsmNvoeJ4ZJ/LdJIaetf2ZFSon0KSB7mrqYTJmfBjeZPUYFTcSUzlVRYCT 8W9Pjysc76MUXc6KB7/3IWpZ2VbD2Wwxz8uG4kAHUIRmL7tvZDMkqoR0pqmTe4pN6SUt 7zeD0QludKlwdWXziFg59UBllAMcsmKDBLjsJYXt6vA7I8DOI9nv8HswFn5+UngQgirt cJ+OBzeM7UwJ5t2Qc938vl3w6bygug/ikpACN8B1laWcG6C5+4eILp1QZ5SKAMM5w0VE kugg== X-Gm-Message-State: AOJu0YzHass3jT7XZBwS1DIV0wj7pvrF1QvSuFLR30IXFFoOgnPZWabH 0VcewreEoZ6MgxuywX+d+rgAWI7drSoXgQ9JDHwfpPZiynwu0aWfrCxjwe+xhs2WcS38FtccBPk = X-Received: by 2002:a05:600c:4383:b0:40d:87c9:584d with SMTP id e3-20020a05600c438300b0040d87c9584dmr1346348wmn.85.1705663505335; Fri, 19 Jan 2024 03:25:05 -0800 (PST) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id l6-20020a7bc346000000b0040d81ca11casm27999094wmj.28.2024.01.19.03.25.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 19 Jan 2024 03:25:05 -0800 (PST) Message-ID: <2950fba0-7b54-4163-bcc6-aae5fef98810@suse.com> Date: Fri, 19 Jan 2024 12:25:04 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 1/2] x86/APX: no need to have decode go through x86_64_table[] Content-Language: en-US From: Jan Beulich To: Binutils Cc: "H.J. Lu" , Lili Cui References: <86ed7622-73e5-469e-88fd-550dd2e7fca6@suse.com> Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <86ed7622-73e5-469e-88fd-550dd2e7fca6@suse.com> X-Spam-Status: No, score=-3025.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788517830991017343 X-GMAIL-MSGID: 1788517830991017343 As suggested during review already, all such entries have their first slot as Bad_Opcode, so by adding two more enumerators we can avoid doing that decode step altogether. --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -821,6 +821,8 @@ enum USE_PREFIX_TABLE, USE_X86_64_TABLE, USE_X86_64_EVEX_FROM_VEX_TABLE, + USE_X86_64_EVEX_PFX_TABLE, + USE_X86_64_EVEX_W_TABLE, USE_3BYTE_TABLE, USE_XOP_8F_TABLE, USE_VEX_C4_TABLE, @@ -841,6 +843,8 @@ enum #define X86_64_TABLE(I) DIS386 (USE_X86_64_TABLE, (I)) #define X86_64_EVEX_FROM_VEX_TABLE(I) \ DIS386 (USE_X86_64_EVEX_FROM_VEX_TABLE, (I)) +#define X86_64_EVEX_PFX_TABLE(I) DIS386 (USE_X86_64_EVEX_PFX_TABLE, (I)) +#define X86_64_EVEX_W_TABLE(I) DIS386 (USE_X86_64_EVEX_W_TABLE, (I)) #define THREE_BYTE_TABLE(I) DIS386 (USE_3BYTE_TABLE, (I)) #define XOP_8F_TABLE() DIS386 (USE_XOP_8F_TABLE, 0) #define VEX_C4_TABLE() DIS386 (USE_VEX_C4_TABLE, 0) @@ -1317,17 +1321,6 @@ enum X86_64_VEX_0F38EF, X86_64_VEX_MAP7_F8_L_0_W_0_R_0, - - X86_64_EVEX_0F90, - X86_64_EVEX_0F91, - X86_64_EVEX_0F92, - X86_64_EVEX_0F93, - X86_64_EVEX_0F38F2, - X86_64_EVEX_0F38F3, - X86_64_EVEX_0F38F5, - X86_64_EVEX_0F38F6, - X86_64_EVEX_0F38F7, - X86_64_EVEX_0F3AF0, }; enum @@ -4600,8 +4593,6 @@ static const struct dis386 x86_64_table[ { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_MAP7_F8_L_0_W_0_R_0_X86_64) }, }, - -#include "i386-dis-evex-x86-64.h" }; static const struct dis386 three_byte_table[][256] = { @@ -8738,6 +8729,7 @@ get_valid_dis386 (const struct dis386 *d break; case USE_PREFIX_TABLE: + use_prefix_table: if (ins->need_vex) { /* The prefix in VEX is implicit. */ @@ -8808,15 +8800,23 @@ get_valid_dis386 (const struct dis386 *d break; case USE_X86_64_EVEX_FROM_VEX_TABLE: + case USE_X86_64_EVEX_PFX_TABLE: + case USE_X86_64_EVEX_W_TABLE: ins->evex_type = evex_from_vex; - /* EVEX from VEX instrucions require that EVEX.z, EVEX.L’L, EVEX.b and - the lower 2 bits of EVEX.aaa must be 0. */ - if ((ins->vex.mask_register_specifier & 0x3) != 0 + /* EVEX from VEX instructions are 64-bit only and require that EVEX.z, + EVEX.L'L, EVEX.b, and the lower 2 bits of EVEX.aaa must be 0. */ + if (ins->address_mode != mode_64bit + || (ins->vex.mask_register_specifier & 0x3) != 0 || ins->vex.ll != 0 || ins->vex.zeroing != 0 || ins->vex.b) return &bad_opcode; + if (dp->op[0].bytemode == USE_X86_64_EVEX_PFX_TABLE) + goto use_prefix_table; + if (dp->op[0].bytemode == USE_X86_64_EVEX_W_TABLE) + goto use_vex_w_table; + /* Fall through. */ case USE_X86_64_TABLE: vindex = ins->address_mode == mode_64bit ? 1 : 0; @@ -9050,6 +9050,7 @@ get_valid_dis386 (const struct dis386 *d break; case USE_VEX_W_TABLE: + use_vex_w_table: if (!ins->need_vex) abort (); --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -164,10 +164,10 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { Bad_Opcode }, /* 90 */ - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F90) }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F91) }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F92) }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F93) }, + { X86_64_EVEX_W_TABLE (VEX_W_0F90_L_0) }, + { X86_64_EVEX_W_TABLE (VEX_W_0F91_L_0) }, + { X86_64_EVEX_W_TABLE (VEX_W_0F92_L_0) }, + { X86_64_EVEX_W_TABLE (VEX_W_0F93_L_0) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -565,12 +565,12 @@ static const struct dis386 evex_table[][ /* F0 */ { Bad_Opcode }, { Bad_Opcode }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F2) }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F3) }, + { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F2_L_0) }, + { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F3_L_0) }, { Bad_Opcode }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F5) }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F6) }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F38F7) }, + { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F5_L_0) }, + { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F6_L_0) }, + { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F38F7_L_0) }, /* F8 */ { Bad_Opcode }, { Bad_Opcode }, @@ -854,7 +854,7 @@ static const struct dis386 evex_table[][ { Bad_Opcode }, { Bad_Opcode }, /* F0 */ - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_EVEX_0F3AF0) }, + { X86_64_EVEX_PFX_TABLE (PREFIX_VEX_0F3AF0_L_0) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, --- a/opcodes/i386-dis-evex-x86-64.h +++ /dev/null @@ -1,50 +0,0 @@ - /* X86_64_EVEX_0F90 */ - { - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F90_L_0) }, - }, - /* X86_64_EVEX_0F91 */ - { - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F91_L_0) }, - }, - /* X86_64_EVEX_0F92 */ - { - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F92_L_0) }, - }, - /* X86_64_EVEX_0F93 */ - { - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F93_L_0) }, - }, - /* X86_64_EVEX_0F38F2 */ - { - { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38F2_L_0) }, - }, - /* X86_64_EVEX_0F38F3 */ - { - { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38F3_L_0) }, - }, - /* X86_64_EVEX_0F38F5 */ - { - { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38F5_L_0) }, - }, - /* X86_64_EVEX_0F38F6 */ - { - { Bad_Opcode }, - { PREFIX_TABLE(PREFIX_VEX_0F38F6_L_0) }, - }, - /* X86_64_EVEX_0F38F7 */ - { - { Bad_Opcode }, - { PREFIX_TABLE(PREFIX_VEX_0F38F7_L_0) }, - }, - /* X86_64_EVEX_0F3AF0 */ - { - { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3AF0_L_0) }, - }, From patchwork Fri Jan 19 11:25:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 189529 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2bc4:b0:101:a8e8:374 with SMTP id hx4csp940514dyb; Fri, 19 Jan 2024 03:26:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IEgyimw0EpTwcEX+Rvv3IutP2qZ0MVuWPwWFiSIZwJlVHi38WOR/MuHstAin5EGAdad3yxR X-Received: by 2002:a25:2fcb:0:b0:dc2:1c77:ca7 with SMTP id v194-20020a252fcb000000b00dc21c770ca7mr1970516ybv.36.1705663571086; Fri, 19 Jan 2024 03:26:11 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705663571; cv=pass; d=google.com; s=arc-20160816; b=cOAS1GUU/OsIkRQOhob9E/B2B4kj2mobnisqZQd66ZcPP4IuLkEX92PfB2UiEZzdmY qt+/4qPjDuxlFWJA6XR9CXFXUjN0JbLreTv5L+OWUpsGwwBbMxTeoi2SxS7m8C8Kfr8W biPoawvQFlEGfyrA8DsEh5xg1MF6UugFI/hDb2o7OSbiXGWw49Zm7f7/J1zwzJsjFKrm vDojqwX8CR4INTLaWIvgKbbPPEDqD0Lfu9lVwt4eXaFcX81BRcLwPv4xD5SHpJYFhnKp 5mFtGU6Pf7BoiV+LgnBZP9YCZ1dJN15YhVyacLoMATzG9Ni1iduDtwl6doKplfFJsSwa JW9w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :in-reply-to:autocrypt:references:cc:to:from:content-language :subject:user-agent:mime-version:date:message-id:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=N6dzsEGBA1ZjfMAxpa6r6K0/ZnC+5MdmsANV+MBCcd0=; fh=2DbSPqOhyO7CNtGa024QKgSiHKlKGVt2h+1rlgWLnZI=; b=RQDrmBhmgZ6imZI252B/1b2RUUHajEh4gffUlMiX4DpXYXiYEAgicdT+pzDGVDteG/ CphvgJWSyOs1hEzYQXjCwZn4hZMpWHB+rdLzEQK+YlrD1LI0CuyyACDuvbU1EKqBMGU0 uvYlVT+q1SDAdg/NEtHJ9T7yCqVv8MyZgJRkvGSp5p2ypskyP51U+xPM1UhWvx25NqB+ 0r4kbV73m2J3oWDs5/f+ufYmNyItWxq500pSS1pDD6cjjfk7gI1gVQYV21UAIhaaB+yM 45thqR7ZUhi6jSZ1qMaA57ucmRxwAypHCATDsmUlSvjL4BlkFppYYeplxmif1uxw3fve oXXQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@suse.com header.s=google header.b=gMcf+ZQe; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id j19-20020a05620a147300b0078336cfb020si15663915qkl.628.2024.01.19.03.26.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Jan 2024 03:26:11 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=google header.b=gMcf+ZQe; arc=pass (i=1); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C513A3857C77 for ; Fri, 19 Jan 2024 11:26:10 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by sourceware.org (Postfix) with ESMTPS id A4D103858000 for ; Fri, 19 Jan 2024 11:25:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A4D103858000 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A4D103858000 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::336 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705663559; cv=none; b=j5iNu62GYmCpNL9HMwJ9tMIKOFrgX5nd3iP+fY1KBErrL1FwHWm3DhxINBbTUpVz2lNuZeCK5S5ZqnkFOu5HeTj+pZ4juPaHBExmRWvub3dW68tN7X4Dc3V/vj5rCPfd8Vq8sJH2bnyJB+2xZk2RsHboWhWTO5jHmG9RtzAm2Eg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705663559; c=relaxed/simple; bh=CdeChrzgjUJK1kCqKXuQAAgaOLuCgGDG53osyFQBQ9g=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=ejNmwRNYAMF8Kf3tS8WIY6c6eE2DKGWSiJsImXg/o5BFHbq1murZnZ2Za2cvb/TYzTq1f4j6Puw7UR2ecXf4Dyi4zJyz8Sry4jB+Zh2Gfcr98H5gYe97wtn3HM9gViHIIJd4lcVDM7QmV5+UDCjT6gapf3tEfJYMcgeg6YVGo2k= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-40e72a567eeso7347305e9.0 for ; Fri, 19 Jan 2024 03:25:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1705663555; x=1706268355; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to :from:content-language:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=N6dzsEGBA1ZjfMAxpa6r6K0/ZnC+5MdmsANV+MBCcd0=; b=gMcf+ZQeuOivIzWZbD//T23NlE2tsG4SwspftQ17Dh6cw9GcY7a8Qn1dAObyvaHAhe KSYL9Pub7HwqvWzvRuN9TLcl8bxZ7S1Wx5QQRG5199UCl55d01CvimzsSNDQFdpWWANA fkyVIjGf0yd9H/OmhY8sGB7xUygwo+N1t206IUO32m3n7Wdqwkj/XoJ5pgcFTPPVmmgB doX8VZziORYNDSm5NLJIbqW8hTh/s9ok/mc51wKUCHDn7ve7AjtBl8D0jLJY5icVMCf1 2WG+JkJWyAjj0I8SXpq13RB0IzjMdtLWUtCOfmOsI5X9/9voY1c5ExXbZtoMRU2K41vE v4Uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705663555; x=1706268355; h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to :from:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=N6dzsEGBA1ZjfMAxpa6r6K0/ZnC+5MdmsANV+MBCcd0=; b=bi9PwCclpwBrWcmf3iT6fPGJAi+8dJhj9FVppJ/Sgpf+MW/GfjXa1WulTn/cZ11ck9 Ic/I4C8rftqJLDzfl4rfBJccIVxO911c4B/bM9/S+9TfUuuJwC+pGM93+U5sxiqb3HDp XxXsiaqPsy0g6MB0pzRLV0VYHPgJ8a+/HWE1hr8B9qoaUkVwKubErtxAb/Ot+IKN87ru pbqzqNmieKbYXObgMMzj/c3S3NXo27myk+pT8Y7SoyHUQXtRnOokspA3H7+gazV+By18 JOt5HYDiAvlwsXLQTXGR51XAI6SyLxqXm6+kMmEsL2OTRno+B8nMs8s7l3Lr19EDg0Oz fObw== X-Gm-Message-State: AOJu0YxqyiJUpRVrkqXofzHqcQlQykn9SuzfBhahZPmU8pN8m7GZwt5b 5XIBTVtJZIxFIRmthm4yMwL9/jAhyTONr/7DegsYmAXsqcMgVTmzF8ECxjKuuk4HsMuzYeS0/Rg = X-Received: by 2002:a7b:c5c4:0:b0:40e:478a:2220 with SMTP id n4-20020a7bc5c4000000b0040e478a2220mr732387wmk.22.1705663555415; Fri, 19 Jan 2024 03:25:55 -0800 (PST) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id l6-20020a7bc346000000b0040d81ca11casm27999094wmj.28.2024.01.19.03.25.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 19 Jan 2024 03:25:55 -0800 (PST) Message-ID: Date: Fri, 19 Jan 2024 12:25:54 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 2/2] x86/APX: TILE{RELEASE,ZERO} have no EVEX encodings Content-Language: en-US From: Jan Beulich To: Binutils Cc: "H.J. Lu" , Lili Cui References: <86ed7622-73e5-469e-88fd-550dd2e7fca6@suse.com> Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <86ed7622-73e5-469e-88fd-550dd2e7fca6@suse.com> X-Spam-Status: No, score=-3025.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788517884746751681 X-GMAIL-MSGID: 1788517884746751681 Re-using the entire VEX decode hierarchy for the respective major opcode has led to those two also being decoded as-if valid. Follow the earlier USE_X86_64_EVEX_{PFX,W}_TABLE approach to avoid this happening. --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -375,9 +375,9 @@ static const struct dis386 evex_table[][ { "vpsllv%DQ", { XM, Vex, EXx }, PREFIX_DATA }, /* 48 */ { Bad_Opcode }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F3849) }, + { X86_64_EVEX_MEM_W_TABLE (VEX_W_0F3849_X86_64_L_0) }, { Bad_Opcode }, - { X86_64_EVEX_FROM_VEX_TABLE (X86_64_VEX_0F384B) }, + { X86_64_EVEX_MEM_W_TABLE (VEX_W_0F384B_X86_64_L_0) }, { "vrcp14p%XW", { XM, EXx }, PREFIX_DATA }, { "vrcp14s%XW", { XMScalar, VexScalar, EXdq }, PREFIX_DATA }, { "vrsqrt14p%XW", { XM, EXx }, 0 }, --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -823,6 +823,7 @@ enum USE_X86_64_EVEX_FROM_VEX_TABLE, USE_X86_64_EVEX_PFX_TABLE, USE_X86_64_EVEX_W_TABLE, + USE_X86_64_EVEX_MEM_W_TABLE, USE_3BYTE_TABLE, USE_XOP_8F_TABLE, USE_VEX_C4_TABLE, @@ -845,6 +846,7 @@ enum DIS386 (USE_X86_64_EVEX_FROM_VEX_TABLE, (I)) #define X86_64_EVEX_PFX_TABLE(I) DIS386 (USE_X86_64_EVEX_PFX_TABLE, (I)) #define X86_64_EVEX_W_TABLE(I) DIS386 (USE_X86_64_EVEX_W_TABLE, (I)) +#define X86_64_EVEX_MEM_W_TABLE(I) DIS386 (USE_X86_64_EVEX_MEM_W_TABLE, (I)) #define THREE_BYTE_TABLE(I) DIS386 (USE_3BYTE_TABLE, (I)) #define XOP_8F_TABLE() DIS386 (USE_XOP_8F_TABLE, 0) #define VEX_C4_TABLE() DIS386 (USE_VEX_C4_TABLE, 0) @@ -8802,6 +8804,7 @@ get_valid_dis386 (const struct dis386 *d case USE_X86_64_EVEX_FROM_VEX_TABLE: case USE_X86_64_EVEX_PFX_TABLE: case USE_X86_64_EVEX_W_TABLE: + case USE_X86_64_EVEX_MEM_W_TABLE: ins->evex_type = evex_from_vex; /* EVEX from VEX instructions are 64-bit only and require that EVEX.z, EVEX.L'L, EVEX.b, and the lower 2 bits of EVEX.aaa must be 0. */ @@ -8816,6 +8819,12 @@ get_valid_dis386 (const struct dis386 *d goto use_prefix_table; if (dp->op[0].bytemode == USE_X86_64_EVEX_W_TABLE) goto use_vex_w_table; + if (dp->op[0].bytemode == USE_X86_64_EVEX_MEM_W_TABLE) + { + if (ins->modrm.mod == 3) + return &bad_opcode; + goto use_vex_w_table; + } /* Fall through. */ case USE_X86_64_TABLE: