From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2081.outbound.protection.outlook.com [40.107.20.81]) by sourceware.org (Postfix) with ESMTPS id 5B27C3858D32 for ; Wed, 23 Nov 2022 10:33:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5B27C3858D32 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-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FFCo+EnPF3nckTlERhXfPuRt85zbCaFvwe3cygCNI3v/lbTf7TRCwOmjbHUrAjBgQKeDSo2Q2Xe8xH+KHOK0yEmt0ZUiHj4fTzNFbQE1CKECaLxC5SBwp7ILEZQdj+7CpjMUBMXwau5RpCi6j4rzoiTW4FTT0CZz+pW8EjMq04sw/+FtgNyOwl4u+9bn9P8AwJN9FE6ATSgV0aLi/JiaB7AwgGdNwJEUlR2wcOAztztdSqvHOBYYXQ+nicekGmbXFfrCrJXp8yZEXiMwNAXBXuVhNITp6Od8DDcMMJ1hovLNabvTO5r4X3+pzswlNare+hLy2emVdCnu/Jeu8sQMTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=niXPRi8JelGxWhGbU/tXH+UInkX9jai0qIKaaT5/9HM=; b=Hyy5BB2SL42mrsVMnO1W4WVXWv9h991k9sRdhA8C+nVdsH2DVT+00UjN1tBJNggPMqaV8+AbynujRVUMjG+gEztZoV2dc3Z1jWIK+fBxxrJ0vYlW3AG9wZdKkvqfZ7nAok1jmNCYFfnBsRZK0Dimh/ceGqKf+LB+iBu12HHHNr1oTNufK6mAwFmDFOD3ew7+pcVJT2dCrPcYv4F/Whmpds8gvK+0HS1CVEq0+kT7IWse5P8mmSP69xihOQNBJsMmViX10+IrjlNphwtfNkLPFlAOu7xWmtqmb6hjGoJc7oZ4vfxJsSKzxp7il3fNhZRs/cmH1O3hoeAsIeAtCNiL5w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=niXPRi8JelGxWhGbU/tXH+UInkX9jai0qIKaaT5/9HM=; b=loG6Ur/YRh0z3FOrStxW2eBhlc023NHuLUNCz92Mm1qnupnDuWfNqnvfK/tBWFOCG1G4MG+/JhvYaFMMkt+LVrB8Hno297Xlp0LzWJ5kIh/CNKZ8lt1jdRz+yLDwAzf4vQjShHVsCNXHclC0BogBTdpH5+5BA+iXdV9RyPkvsL5IwzxLHhT15QOQBLljB8CcJZ8j3DcDqY9sLZE4SkEwZpvxT/lFGk8SdJuBpdhqdXhEZeOPRYFmSr26cLW7kpqVykRT43i8vPRLiwxQYZHw0+M2L+LVyuvJ2kbarG7YlES21X5U21gmhstrI61j/mAOenzDY4SrzXnz16rMcUI7GQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by DB9PR04MB9426.eurprd04.prod.outlook.com (2603:10a6:10:36a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.15; Wed, 23 Nov 2022 10:33:40 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8%4]) with mapi id 15.20.5834.015; Wed, 23 Nov 2022 10:33:39 +0000 Message-ID: <40d1240c-154b-ecea-c391-9fab12129b2b@suse.com> Date: Wed, 23 Nov 2022 11:33:38 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: [PATCH 1/3] x86: correct handling of LAR and LSL Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0076.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::14) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DB9PR04MB9426:EE_ X-MS-Office365-Filtering-Correlation-Id: a69c89f4-b932-4dab-ac25-08dacd3e2f8d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FV0lmSoLewSm9UKPny4MRw/QVlAxgxqQYzAWgLBxAZWGe2pAzrCjf+HfwH2HSMGm3Jjlbf5pwvyFJ4PamPUYVChYw0BnPNhJWzYtvsKjtWUefklSpDGn9us8hfuhSRSYlZ35hkyXq5W4MckT+4+1SvHkDFZsH6Fwzr6EZjSNK14aJMPonO5S7DkA3twND9WOX/uF/7fTvM6NmQyouCq9t2hvjmciW/BOZG1W0T5GV0EQo7uKWpT431R7QVPmm8fn9xFxuLQh75DmHDAr0YnDBnalt1quBcXklWvNnp7LIZgvtC8mwXt+DTSethDNe0hqPg2Q/OkUgrz+jd2PDm0Au1tcwbD5taIFtFXqEkxtoPnimp9zrYyRjmrsZPLaBJcmOCOCyU02N/jdQlFldNBoid0LY1qbBNLiF5jOCFJoyCOQFSJ8IpWYWyeYL9HjK5/WwPPGsgmM7LEdQBA3wZNTcHrFUo1ptHPflqzJxkvUWWEfFKbp5WtRthH8+jHfOT8OBCn6d1Rp3Jjy0guSg9n/qvfj5KX6IcOwMaMplDs4AF56zjM7TDLxkSoku4a86Yr7O16+iYUzHeZwHbg4jrh0UJ1Slgxl4Ycm2Gx3wT008jr03q7Gpw+RbMxx323MvAFFDNhthDPU+UrDK6wQev9iXZCyieXiQUflWPHdvxoae2hB7FaHQuyGj+wuJ9A7KDm4mStljUBfBIyhRi60LHbMbF+sj+sWWdNJTHQhblWV8nU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(39860400002)(346002)(366004)(376002)(396003)(451199015)(31686004)(31696002)(36756003)(41300700001)(66946007)(66476007)(186003)(2616005)(66556008)(86362001)(2906002)(38100700002)(6506007)(6916009)(8936002)(5660300002)(26005)(4326008)(8676002)(316002)(6486002)(478600001)(6512007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?T2VwUjA2TnpHTms2OEpETFpBb3VqV0lKRktHU2lmVXFSNjVzYzh0R0R5MExz?= =?utf-8?B?Umc0WW1mY2ZJa3lHeVVpS0JkNWZtd2dKYnI4cTAxMm9Hak5hYlA0dzZNSGls?= =?utf-8?B?ekl0VzhKdWRmT0dRVWgxNkFWY1ZhUVliQlgweC8zV1JxTjRteFh1S3VoWXpG?= =?utf-8?B?SUNmMDJUbVpwb2J4elpZSFBCaEZnS2M5SzNteHJmMGoxbGdNMjNLei9qNlk3?= =?utf-8?B?RmR3SnJoUlhicExmSDZiYVdBWi9taGZMYURqRnZ5Q0M3aFpFc1E1VUxxQlM5?= =?utf-8?B?S08xY1I2SVRQSGFFbTVuVzBlamxRK3YycS8vNExxVnBVSFdqWlJEcWVKWlNq?= =?utf-8?B?UkxmM1I1TUpRR0d3MWQzVTdiaWtud044Um0vWFhqbEpwdE9ZYUNEdVBVQXly?= =?utf-8?B?dFJpdWlBVmtCTGdpdHA4bFdYeDVBM2k3eVpvdWorTWdpQXV4Y29wSi9oenR1?= =?utf-8?B?cmZ3UmQ1ekFaN25XNDZiMFFSS3MvZEtSbHpXNXk1M2FzRUhjRVNkNkwxaTg5?= =?utf-8?B?NFZOcHZoU3ZTZEorU3dERTkvSzhpckNNQzBLTVE1U1hQSVN5NzBMMkdTVEJZ?= =?utf-8?B?a0JiOWU2NXpXNS9wbFV4S1E1Q2YvcllReU1oN0JkenVYeUR5Sk9Pa3lQV2JC?= =?utf-8?B?V0J2NTdHSU1nR05rWU9YTTZkNllMa3dncjJYc3dXOVlGUURsUmErYiszNkhB?= =?utf-8?B?QVMyOHV2a3JzWlA1V2R4L3FZUjVzVEFVaHE0YkUyblZMRFdyZWZwaDlXVFpy?= =?utf-8?B?Z2ViaTg3MDFoOVZIRDg1U2hvSVVlSFh2N0JNclBDRFVKWG9QNnpJUWdEZUc0?= =?utf-8?B?OFR3Rzhod3JnY1dSbUl2ZUZXSEhWbDZpS0I0OHZTSzVyUkRpRzRkQUZFaDg3?= =?utf-8?B?OWlzSGh3a3FLV3lwQ0V5dmRabk4zcVJxbW8rSTJQckt3VUF4V2dkT0Fkc0wz?= =?utf-8?B?TURkMjdpUUhLcERYRDJHU3FUdTdzNW9pSWhFTDFEQ04xZHNYckZ1WkYvNkhn?= =?utf-8?B?UkVBWkdqRXFIZkdyeHE2MENhdk14aUZqZllTVmtnWTZzaS92R2Z6ZWNhejFP?= =?utf-8?B?M3FkRHg4NjRxNm1RUDVPZ0piNjZvSnVXVHRBemtMLzN3MEtiVjNGTVdLQmZu?= =?utf-8?B?RjI2VHVWSkt3Rk0rY2xCRWFVaVZnV1hrY1JBcFlBRWdJdU5ianhFbld2UnlW?= =?utf-8?B?VGszTkxTWGR3RVQyd20vZHA3WGpzUys1QmNUN0s2MXhnUS91YVgxYXF2Tk5K?= =?utf-8?B?K0J3NFR4MUswV2lBZERrcnNBRE1PMkhMekxORTV4UU9tWi83SVJTUmRQNWNk?= =?utf-8?B?QnhSTmlBdU5INm4zZmwyMXZWTlk0MDVVaVVlR05PdURiMFBxdDJLa1lmRTQz?= =?utf-8?B?dXVHeUJ0U0Raai9UMWQxc1Vjb3B3NFByV0hkUnhvbHJTNWMvNEhZNGhJREt1?= =?utf-8?B?WnRyeXJpWEY2a1FTYjNCQ2M0bVh1OVNjRDR3UjFMd0czMHY5TFZHV1ZIRUxk?= =?utf-8?B?VGlralJYSm5CaUt3T09kVktuVnk4NnRJWS9lOTM3RDA1NGdBdkJXOVkvcFVB?= =?utf-8?B?QWdaNkxvMkpxM3dSRm5sdHlyc3lSU2pxYkQwQnFDdjYrWU5YeVMwekMvUTYz?= =?utf-8?B?L3NuU3FoTFovaXgvdjlyU24rczA2Z2lsTmxBWjFFT0h2b3I5M1EwT1AzY2hJ?= =?utf-8?B?ZDlQYTF0T2xNNWpJOXRvTnU2cVlEM0gzZi9TVkx1SGRyaFEwQVd3ODg1S3RX?= =?utf-8?B?YlIvVFAyMVRzMEdDZ1dqdlB6Q1hGak9xVTZCM21xWWFpYlZKaWNUMFZKeXMx?= =?utf-8?B?NHEzTW0wTk42NkZ0QkVFM0ZRNEloQjJhVStIeDFidFIzZzJlOE1SY2lCSVB6?= =?utf-8?B?R3V5dm9qZWtiRzlHOVl4VWV1RU9JeUd0REFyZEtMMVBweVcrREZocUkyTitn?= =?utf-8?B?Nm5ETERsbXBmdEtrWE9DTHI1WlBJbjREV0pQZnZzWE9mWjJVK2RjU0NISTMz?= =?utf-8?B?Nys1RFU1YW9zUFRjV1dxalpwZHRja2tFRlk5QTRoRnZHcjVJZFJDRllzTmtW?= =?utf-8?B?SUJpK3F4b3AyaFlkcHFieThYQ1laenNDZFl6aWxHd0FvQXhtZjU2a2J2ck9V?= =?utf-8?Q?vd7zykEsxo8B2W1HTH2/Kq1Qw?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a69c89f4-b932-4dab-ac25-08dacd3e2f8d X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Nov 2022 10:33:39.7076 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Cz5joKao2YfcIkbcrQ8+sY+N0FB0WruKyDWgxYG3IBOGWFthRYWt3uORqBx8T3qYcXWwsrNXWjSu2p1JZY9H3g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9426 X-Spam-Status: No, score=-3029.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Both uniformly only ever take 16-bit memory operands while at the same time requiring matching (in size) register operands, which then also should disassemble that way. This in particular requires splitting each of the templates for the assembler and separating decode of the register and memory forms in the disassembler. --- a/gas/config/tc-i386-intel.c +++ b/gas/config/tc-i386-intel.c @@ -697,7 +697,9 @@ i386_intel_operand (char *operand_string i.types[this_operand].bitfield.word = 1; if (got_a_float == 2) /* "fi..." */ suffix = SHORT_MNEM_SUFFIX; - else + else if ((current_templates->start->base_opcode | 1) != 0x03 + || (current_templates->start->opcode_modifier.opcodespace + != SPACE_0F)) /* lar, lsl */ suffix = WORD_MNEM_SUFFIX; break; --- a/gas/testsuite/gas/i386/intel.d +++ b/gas/testsuite/gas/i386/intel.d @@ -698,6 +698,14 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%edx [ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovp -0x6f6f6f70\(%eax\),%dx [ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnp -0x6f6f6f70\(%eax\),%dx +[ ]*[a-f0-9]+: 0f 02 c0 lar %eax,%eax +[ ]*[a-f0-9]+: 66 0f 02 c0 lar %ax,%ax +[ ]*[a-f0-9]+: 0f 02 00 lar \(%eax\),%eax +[ ]*[a-f0-9]+: 66 0f 02 00 lar \(%eax\),%ax +[ ]*[a-f0-9]+: 0f 03 c0 lsl %eax,%eax +[ ]*[a-f0-9]+: 66 0f 03 c0 lsl %ax,%ax +[ ]*[a-f0-9]+: 0f 03 00 lsl \(%eax\),%eax +[ ]*[a-f0-9]+: 66 0f 03 00 lsl \(%eax\),%ax [ ]*[a-f0-9]+: 8b 04 04 mov \(%esp,%eax(,1)?\),%eax [ ]*[a-f0-9]+: 8b 04 20 mov \(%eax(,%eiz)?(,1)?\),%eax [ ]*[a-f0-9]+: c4 e2 69 92 04 08 vgatherdps %xmm2,\(%eax,%xmm1(,1)?\),%xmm0 --- a/gas/testsuite/gas/i386/intel.s +++ b/gas/testsuite/gas/i386/intel.s @@ -699,6 +699,16 @@ fidivr dword ptr [ebx] cmovpe dx, 0x90909090[eax] cmovpo dx, 0x90909090[eax] + lar eax, eax + lar ax, ax + lar eax, word ptr [eax] + lar ax, word ptr [eax] + + lsl eax, eax + lsl ax, ax + lsl eax, word ptr [eax] + lsl ax, word ptr [eax] + # Check base/index swapping .allow_index_reg mov eax, [eax+esp] --- a/gas/testsuite/gas/i386/intel-intel.d +++ b/gas/testsuite/gas/i386/intel-intel.d @@ -232,8 +232,8 @@ Disassembly of section .text: [ ]*[a-f0-9]+: e5 90 + in eax,0x90 [ ]*[a-f0-9]+: e6 90 + out 0x90,al [ ]*[a-f0-9]+: e7 90 + out 0x90,eax -[ ]*[a-f0-9]+: e8 90 90 90 90 + call 90909373 -[ ]*[a-f0-9]+: e9 90 90 90 90 + jmp 90909378 +[ ]*[a-f0-9]+: e8 90 90 90 90 + call 90909... +[ ]*[a-f0-9]+: e9 90 90 90 90 + jmp 90909... [ ]*[a-f0-9]+: ea 90 90 90 90 90 90 jmp 0x9090:0x90909090 [ ]*[a-f0-9]+: eb 90 + jmp 281 [ ]*[a-f0-9]+: ec + in al,dx @@ -308,22 +308,22 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 77 + emms [ ]*[a-f0-9]+: 0f 7e 90 90 90 90 90 movd DWORD PTR \[eax-0x6f6f6f70\],mm2 [ ]*[a-f0-9]+: 0f 7f 90 90 90 90 90 movq QWORD PTR \[eax-0x6f6f6f70\],mm2 -[ ]*[a-f0-9]+: 0f 80 90 90 90 90 + jo 909094e6 -[ ]*[a-f0-9]+: 0f 81 90 90 90 90 + jno 909094ec -[ ]*[a-f0-9]+: 0f 82 90 90 90 90 + jb 909094f2 -[ ]*[a-f0-9]+: 0f 83 90 90 90 90 + jae 909094f8 -[ ]*[a-f0-9]+: 0f 84 90 90 90 90 + je 909094fe -[ ]*[a-f0-9]+: 0f 85 90 90 90 90 + jne 90909504 -[ ]*[a-f0-9]+: 0f 86 90 90 90 90 + jbe 9090950a -[ ]*[a-f0-9]+: 0f 87 90 90 90 90 + ja 90909510 -[ ]*[a-f0-9]+: 0f 88 90 90 90 90 + js 90909516 -[ ]*[a-f0-9]+: 0f 89 90 90 90 90 + jns 9090951c -[ ]*[a-f0-9]+: 0f 8a 90 90 90 90 + jp 90909522 -[ ]*[a-f0-9]+: 0f 8b 90 90 90 90 + jnp 90909528 -[ ]*[a-f0-9]+: 0f 8c 90 90 90 90 + jl 9090952e -[ ]*[a-f0-9]+: 0f 8d 90 90 90 90 + jge 90909534 -[ ]*[a-f0-9]+: 0f 8e 90 90 90 90 + jle 9090953a -[ ]*[a-f0-9]+: 0f 8f 90 90 90 90 + jg 90909540 +[ ]*[a-f0-9]+: 0f 80 90 90 90 90 + jo 90909... +[ ]*[a-f0-9]+: 0f 81 90 90 90 90 + jno 90909... +[ ]*[a-f0-9]+: 0f 82 90 90 90 90 + jb 90909... +[ ]*[a-f0-9]+: 0f 83 90 90 90 90 + jae 90909... +[ ]*[a-f0-9]+: 0f 84 90 90 90 90 + je 90909... +[ ]*[a-f0-9]+: 0f 85 90 90 90 90 + jne 90909... +[ ]*[a-f0-9]+: 0f 86 90 90 90 90 + jbe 90909... +[ ]*[a-f0-9]+: 0f 87 90 90 90 90 + ja 90909... +[ ]*[a-f0-9]+: 0f 88 90 90 90 90 + js 90909... +[ ]*[a-f0-9]+: 0f 89 90 90 90 90 + jns 90909... +[ ]*[a-f0-9]+: 0f 8a 90 90 90 90 + jp 90909... +[ ]*[a-f0-9]+: 0f 8b 90 90 90 90 + jnp 90909... +[ ]*[a-f0-9]+: 0f 8c 90 90 90 90 + jl 90909... +[ ]*[a-f0-9]+: 0f 8d 90 90 90 90 + jge 90909... +[ ]*[a-f0-9]+: 0f 8e 90 90 90 90 + jle 90909... +[ ]*[a-f0-9]+: 0f 8f 90 90 90 90 + jg 90909... [ ]*[a-f0-9]+: 0f 90 80 90 90 90 90 seto BYTE PTR \[eax-0x6f6f6f70\] [ ]*[a-f0-9]+: 0f 91 80 90 90 90 90 setno BYTE PTR \[eax-0x6f6f6f70\] [ ]*[a-f0-9]+: 0f 92 80 90 90 90 90 setb BYTE PTR \[eax-0x6f6f6f70\] @@ -532,7 +532,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 66 d3 90 90 90 90 90 rcl WORD PTR \[eax-0x6f6f6f70\],cl [ ]*[a-f0-9]+: 66 e5 90 + in ax,0x90 [ ]*[a-f0-9]+: 66 e7 90 + out 0x90,ax -[ ]*[a-f0-9]+: 66 e8 8f 90 + callw 9922 +[ ]*[a-f0-9]+: 66 e8 8f 90 + callw 9... [ ]*[a-f0-9]+: 66 ea 90 90 90 90 + jmp 0x9090:0x9090 [ ]*[a-f0-9]+: 66 ed + in ax,dx [ ]*[a-f0-9]+: 66 ef + out dx,ax @@ -699,6 +699,14 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 0f 4b 90 90 90 90 90 cmovnp edx,DWORD PTR \[eax-0x6f6f6f70\] [ ]*[a-f0-9]+: 66 0f 4a 90 90 90 90 90 cmovp dx,WORD PTR \[eax-0x6f6f6f70\] [ ]*[a-f0-9]+: 66 0f 4b 90 90 90 90 90 cmovnp dx,WORD PTR \[eax-0x6f6f6f70\] +[ ]*[a-f0-9]+: 0f 02 c0 + lar eax,eax +[ ]*[a-f0-9]+: 66 0f 02 c0 + lar ax,ax +[ ]*[a-f0-9]+: 0f 02 00 + lar eax,WORD PTR \[eax\] +[ ]*[a-f0-9]+: 66 0f 02 00 + lar ax,WORD PTR \[eax\] +[ ]*[a-f0-9]+: 0f 03 c0 + lsl eax,eax +[ ]*[a-f0-9]+: 66 0f 03 c0 + lsl ax,ax +[ ]*[a-f0-9]+: 0f 03 00 + lsl eax,WORD PTR \[eax\] +[ ]*[a-f0-9]+: 66 0f 03 00 + lsl ax,WORD PTR \[eax\] [ ]*[a-f0-9]+: 8b 04 04 + mov eax,DWORD PTR \[esp\+eax\*1\] [ ]*[a-f0-9]+: 8b 04 20 + mov eax,DWORD PTR \[eax\+eiz\*1\] [ ]*[a-f0-9]+: c4 e2 69 92 04 08 + vgatherdps xmm0,DWORD PTR \[eax\+xmm1\*1\],xmm2 --- a/gas/testsuite/gas/i386/intelbad.l +++ b/gas/testsuite/gas/i386/intelbad.l @@ -161,3 +161,11 @@ .*:181: Error: .* .*:183: Error: .* .*:184: Error: .* +.*:186: Error: .* +.*:187: Error: .* +.*:188: Error: .* +.*:189: Error: .* +.*:191: Error: .* +.*:192: Error: .* +.*:193: Error: .* +.*:194: Error: .* --- a/gas/testsuite/gas/i386/intelbad.s +++ b/gas/testsuite/gas/i386/intelbad.s @@ -182,3 +182,13 @@ start: fild far ptr [ebx] fist near ptr [ebx] + + lar eax, ax + lar ax, eax + lar eax, dword ptr [eax] + lar ax, dword ptr [eax] + + lsl eax, ax + lsl ax, eax + lsl eax, dword ptr [eax] + lsl ax, dword ptr [eax] --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -833,6 +833,8 @@ enum MOD_0F01_REG_3, MOD_0F01_REG_5, MOD_0F01_REG_7, + MOD_0F02, + MOD_0F03, MOD_0F12_PREFIX_0, MOD_0F12_PREFIX_2, MOD_0F13, @@ -2115,8 +2117,8 @@ static const struct dis386 dis386_twobyt /* 00 */ { REG_TABLE (REG_0F00 ) }, { REG_TABLE (REG_0F01 ) }, - { "larS", { Gv, Ew }, 0 }, - { "lslS", { Gv, Ew }, 0 }, + { MOD_TABLE (MOD_0F02) }, + { MOD_TABLE (MOD_0F03) }, { Bad_Opcode }, { "syscall", { XX }, 0 }, { "clts", { XX }, 0 }, @@ -8198,6 +8200,16 @@ static const struct dis386 mod_table[][2 { RM_TABLE (RM_0F01_REG_7_MOD_3) }, }, { + /* MOD_0F02 */ + { "larS", { Gv, Mw }, 0 }, + { "larS", { Gv, Ev }, 0 }, + }, + { + /* MOD_0F03 */ + { "lslS", { Gv, Mw }, 0 }, + { "lslS", { Gv, Ev }, 0 }, + }, + { /* MOD_0F12_PREFIX_0 */ { "movlpX", { XM, EXq }, 0 }, { "movhlps", { XM, EXq }, 0 }, --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -574,14 +574,16 @@ nop, 0x90, None, 0, NoSuf|RepPrefixOk, { // Protection control. arpl, 0x63, None, Cpu286|CpuNo64, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg16, Reg16|Word|Unspecified|BaseIndex } -lar, 0xf02, None, Cpu286, Modrm|No_bSuf|No_sSuf|No_ldSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } +lar, 0xf02, None, Cpu286, Modrm|CheckRegSize|No_bSuf|No_sSuf|No_ldSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 } +lar, 0xf02, None, Cpu286, Modrm|No_bSuf|No_sSuf|No_ldSuf, { Word|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } lgdt, 0xf01, 2, Cpu286|CpuNo64, Modrm|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Fword|Unspecified|BaseIndex } lgdt, 0xf01, 2, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { Tbyte|Unspecified|BaseIndex } lidt, 0xf01, 3, Cpu286|CpuNo64, Modrm|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Fword|Unspecified|BaseIndex } lidt, 0xf01, 3, Cpu64, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_ldSuf|NoRex64, { Tbyte|Unspecified|BaseIndex } lldt, 0xf00, 2, Cpu286, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg16|Word|Unspecified|BaseIndex } lmsw, 0xf01, 6, Cpu286, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg16|Word|Unspecified|BaseIndex } -lsl, 0xf03, None, Cpu286, Modrm|No_bSuf|No_sSuf|No_ldSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } +lsl, 0xf03, None, Cpu286, Modrm|CheckRegSize|No_bSuf|No_sSuf|No_ldSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 } +lsl, 0xf03, None, Cpu286, Modrm|No_bSuf|No_sSuf|No_ldSuf, { Word|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } ltr, 0xf00, 3, Cpu286, Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Reg16|Word|Unspecified|BaseIndex } sgdt, 0xf01, 0, Cpu286|CpuNo64, Modrm|No_bSuf|No_sSuf|No_qSuf|No_ldSuf, { Fword|Unspecified|BaseIndex }