From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2073.outbound.protection.outlook.com [40.107.247.73]) by sourceware.org (Postfix) with ESMTPS id 5D84C3853D50 for ; Wed, 23 Nov 2022 10:35:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5D84C3853D50 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=Awn9F4tHcSBmMuQDYMIEzd2r5jA1Qmr3RUrpAZLwNSy3etkWBfyq/ON+ueuWnJB2ZLmMayOTMza6hv3sfRltxMWEBnvRT8m3xWpOk47k+O0+UHX2ZXPmdUDOe+UfWdmmlBvcIXOCVXFpMs34c1bJ8ELIZwKV8g+crdy/DUHh8ke9xHx7XF+ZZ3DTpcgutSISDy9r4rCw1zwTtIU7idsMnddz5pcALLqCaSse6TdMsK79uGRvVc5t5uzSTBPBIbZ0dGmA9h6il6ps/cfI3rC1uLSfsIVQ1C0nuJQgHRDc5V0GdXW+YBk0zVvSecqtz6UtwfRIcTFPNuvCNfVB7h4wUw== 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=opWRivpLZoUkZ3zjOWsLHc1loB90Pij+dpRCsXsYatw=; b=Wu/KpVRJH6ZuBQvJP/Dn8pzgq/AzJSiwR1lOGfTA0buDxkoNPq5SIt6lDCXbFZtEG/4d9NKvl+CGWiIkUIYOdJcz2DBRDKTQgbKc19AfYmuXe5W5KCAP73P5OkndXnVaW4aYadlfE/6lb7BB1yomv36SercGkdcIdV/PigrcAHQKLYUo1N4YeIIFOGyxPFJKzwtOihHyE9J9/vPjrnvri1phW+f4G8IkinPzcIU4gvgVbeQy5pPtMQ0TG2JuYt37cUnMLKRpR5GRaps/lAiPFjk/ND0wbx6pMfR+04z7ZuTorMCh/MFhBR77K2Sgwv8vTFiG7DZM7Pk9Rd+tRSkyyA== 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=opWRivpLZoUkZ3zjOWsLHc1loB90Pij+dpRCsXsYatw=; b=ywiWfOfgksmnJ03HmTWQBwKGz5JrFKH0e1CU8Nr4pxy3To5XeUPA2FMV3XGVkFJ6ty9QRkfXbbYNWau8eofx8g19R8vXLucE0tRDGj6tWBhmzNnsMXjm5r4hVpLHVqiyAZaZ52/D5PWOFYnzy64YtinKaE94iIJ4Az72nusWPUmE5SkqfmjsApptUKa6AdFEdCgv2kBkvLCDjztgNlF4iYFaFLNAUO05//0g8/veoq+QWA3UrFbthlWP6vJwwz3iBv/4LbqJRY0ytr1uCxVBznmgIKWN35Lg8LZshYBKCiP84JFuP0Xif5xwwqgdh3L5B4oXnS5T8QMNybHQc7YZPw== 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 DBAPR04MB7414.eurprd04.prod.outlook.com (2603:10a6:10:1a0::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.9; Wed, 23 Nov 2022 10:35:17 +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:35:17 +0000 Message-ID: <0168ba4a-766c-7cfe-7917-53259f846da0@suse.com> Date: Wed, 23 Nov 2022 11:35:16 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: [PATCH 3/3] x86: widen applicability and use of CheckRegSize 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: FR3P281CA0059.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4b::21) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DBAPR04MB7414:EE_ X-MS-Office365-Filtering-Correlation-Id: ddac9a79-804c-415c-aa59-08dacd3e69e5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oD5ZK/SBa46jNP6zMz9RYfLNOWIsJQU6bg8xDrd4RsaO6EKr2e+YcZBeqINEBM8Wmw9MOfMDT3vfSs2rX3HZ1+f8/2R4+3j7Qt08YfhUncOgFky4r+8bsUUjZcg3ZftzSELOKCBqyglgKLxbTADuClLorBLcN+mIB7uyGAKO/orrs6zwOJ66RH0sBVVUu1OFiFeDnT1udlQGpj/JL2Kq4+d9DRnJ+HI+eZz3V8kdOjib6AUGXaOrfJGeSxKo2aBrV8qLGywGGtQ6McMqWVa33ijHq/vggIId8J6GlIzwyNpBxsDH+niwqn+NsPHSpDBn75HjRzXxDUKkNULih5JWSffb0zxDk/ebPHMYaHQGvIeCC+iwCyHCInasn1ZhQskBCvK9nhEnMwOSnVS6+fTWOYTMzrFUktaiz/VJTnu4xw7JWB3pkOYWln0BAgx9UeZy5h0YDO8VH7WDN4ITWXAG4MjXq5BZYVn/aRYhi1339XLzAcfQ5siRpKyOf9GnPO1CAKIgX5a7uy+F+0+oT3b2knFCR/FMn3XDE99rEWfoYeWKSg3HWy2+jVBwNq35g2tzerGsJj2Rhdx80ZNfdhtd96gYzYkk9JmknpiNeHS3BRkqLzZXV4MWJcn+fdO56QWsnHPeH86BjpXmW7aoUkg6SvtGoyD8tI5/n/WBmPlkI8FfuaHXKqbdEtlBeAbwOmuD+H+50R5XkZDGyhnEpdy11paviSxmJsrcf128bZ4cw40= 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)(39860400002)(366004)(136003)(346002)(396003)(376002)(451199015)(66899015)(2906002)(31686004)(2616005)(66946007)(41300700001)(36756003)(31696002)(86362001)(66556008)(83380400001)(6916009)(38100700002)(4326008)(6486002)(6506007)(8936002)(8676002)(5660300002)(66476007)(186003)(6512007)(26005)(316002)(478600001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WElCRWVhMlFGcGNvTFB6VFVkaHcwL3dQdjVWNnNlSVd0VCtKTHdFc0JRS1Fr?= =?utf-8?B?S3NwblpMeWJaV1ZVUlRycS9OcVZDOHF1bS8wUlA3djBYVEt0QXM4QjAzOFBU?= =?utf-8?B?cmtJM1d4NE8wNEt1dDI4Vnh6L3NYSUpRdkY0NHRqdUYrV00vT2xIdVozYXJ2?= =?utf-8?B?MzY2WEFZR0V3OUJiWVpZdmUwNXZHVTdtbEh3ekEzU3JXcHdXdlJoQ29LRk13?= =?utf-8?B?T2ZMRi9aK0JvZXFoYlFhaFFYS1RqMGJmYWxRR1Y0LzV0UjJuckdRR3VodnpW?= =?utf-8?B?YXc4T0RRTit5c1B4UTBzVEI0Wkx1QThOY2ZMSGFsVDJqd2JtaU9qMENKOCth?= =?utf-8?B?ZC96UzRJRWdvUHBrUEs3ZmNJd2NxNlVjMFBmZFFjUVlrTzMvQ1dWMWNQL0pu?= =?utf-8?B?aFpRdC9iZm9HUGN4VlozM3lBdzd3dXEvTkFBTkx5Y3ZyRHV5eUI2WWdHUDN4?= =?utf-8?B?ek5pRVlzQWlscnhjb2x2UmdtZUNQM0UwOW9wNjgxbmYwOHVUSnM3c0lJUUhH?= =?utf-8?B?aUV6d1BYL0FJZGZpTmV3ZWllUzAxdVhOTGg0dGxiK09GY2ZOMEdBTXp5Y3lk?= =?utf-8?B?eW9TdlJvS05CM2Q5N0VvNEZubE5xRlQwWGpGTUNodDFGZUhzcm9aSmZGSGJj?= =?utf-8?B?a2VCYTFsM1BQNTZuR0RPTmxzbUVoRnZLc2lIQkxycUhWM2NacllaaENzTnEw?= =?utf-8?B?QVM4MjAvemNKb1ZBTXNLTDNqVDJEclFVdGNGb1FZcXB4TjdmL2thT1FlbHI4?= =?utf-8?B?MXNtd0dOUkZzV0d6OU5FMUMyTFgwTEpSYmRia3ROMmdTNEhqY1VPTlN1VmQx?= =?utf-8?B?aEdxWWVtR0c5YWIvZ2JPZXVWYVR0RU1maDREMEpCK1BYa3NkT1dKQ1lCU0Ro?= =?utf-8?B?ZXZiRHN5VUVHSFc3NmZPcHdieWs4TlBBeURtSVUrdUMvMm05SFVoVWNTb2VY?= =?utf-8?B?UjRSYWJuMVpLd0c1aEVwSUpZOUh3OUNwKzMxVkNOQ1c1bzZrV2FNVEJDOVlM?= =?utf-8?B?bVR1bXB3QmVMcXYrbnc3Z1J2NEhrekV1NlJIdXhxZGdNbVl4NHIwOU5kd0RF?= =?utf-8?B?eTNNZzh1ZGdWbmdMdGhLaFkxMzZCOXBDT2VlNWRRMnFwWkM4R280OU1yN3lH?= =?utf-8?B?b0pjR2kxUGlZMzhadFd6S0pBandOM0UxZCt1RGlwWVFTZmVuWndOTTRValNU?= =?utf-8?B?bHJ5LzlZOGJHQXBFRHlJUXNGVHkyYnpqUjh2eVUxcGJ0OThpcXRmMGxlQVRj?= =?utf-8?B?NFNqN3NuSUlSeVgrODJscGpTcFJoSThXNDcvM3pIMjlXUHFqdFJMekpRMUZI?= =?utf-8?B?ZHlWWmhsSmxvNjlQejYzSG5wd2s4OEc3RXRDL01KR3VzQUdsVldENU0rQkRL?= =?utf-8?B?LzUzbC9uRklNOStxVms2L2hzaHF4RkNjZkxPL2NJUjB6RE1reEVoWE1KSFBJ?= =?utf-8?B?czd4Q0huYWp1c3plY1dsSG93TjhyWGtzdG9vQ0JvV3BaSGVjeW9RVEhKT25W?= =?utf-8?B?Z096VjNIcTZSQWVlaEVjQWNDZkFBT3RVU04yOUlvL0Z4WllFSFplclRYVkIr?= =?utf-8?B?U3ZuMGt0bGZRdjF0RGc5UVl1SFd1d3RQZ20zWU9wSkNMQ2pQVE5nc3NDWnRS?= =?utf-8?B?VXJDWkhJSWdvN1F3NGJrM2pBTXpJc1lrQ3JxditJNlRzRS91QnZlOHVRY29V?= =?utf-8?B?T1BzV2ZEU2tYMEVlUDhWZXU3VDNzUy9WcGh6bWROMlBpU2NCUTB1WHl6aVE3?= =?utf-8?B?bVpJUW5aWmRrMmZSNVVoY3ZTb2dzTUVsVDZzbFpQcVBMUVRjSWlibXdlTTQ3?= =?utf-8?B?SFYwWTJlMUZyMVBOb1Mxc0FjUXh6WFI2Ry9abVdyampuQTNURFZUL2VUckdm?= =?utf-8?B?T0JvZ0RlYjNvWjhwaGlEZnc2dUdrSEs4TExGR1pROGV5OUtsdHV3TW0yVDRE?= =?utf-8?B?WmhwaDNidnluQ0w0Ty9iU1VZUjVQM2E5SVFuRHlLYTBjdURpVmVzcjg5Wnc5?= =?utf-8?B?bzJpUVBqNDd5M1UrSE1tbm5vR1gxOFpJSkZLRStqQk12TWZSQnFTdG5qVkk2?= =?utf-8?B?OGM3MDV3TXpGNzRXUFkzSnRKVmlYOUVGblhReGRzTWVQR0VBL2R0UmZIei85?= =?utf-8?Q?GVvXM/RRPuqmP8uBECXr4hzk+?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddac9a79-804c-415c-aa59-08dacd3e69e5 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:35:17.5921 (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: do9d0ztwWm+JigXkXlF+NaDYwXXmGHh3eqXCwzo86+aB7Z4jCCdA0AQqwp5vf7yotsK1JSrLnQnyIX1MKqvrgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR04MB7414 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: First of all make operand_type_register_match() apply to all sized operands, i.e. in Intel Syntax also to respective memory ones. This addresses gas wrongly accepting certain SIMD insns where register and memory operand sizes should match but don't. This apparently has affected all templates with one memory-only operand and one or more register ones, both permitting at least two sizes, due to CheckRegSize not taking effect. Then also add CheckRegSize to a couple of non-SIMD templates matching that same pattern of memory-only vs register operands. This replaces bogus (for Intel Syntax) diagnostics referring to a wrong suffix (when none was used at all) by "type mismatch" ones, just like already emitted for insns where the template allows a register operand alongside a memory one at any particular position. This also is a prereq to limiting (ideally eliminating in the long run) suffix "derivation" in Intel Syntax mode. While making the code adjustment also flip order of checks to do the cheaper one first in both cases. --- CheckRegSize now firmly isn't an appropriate name anymore - perhaps we want to rename it to e.g. CheckSizes or CheckOperandSize (and then better in a prereq patch)? --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -2192,7 +2192,7 @@ operand_type_match (i386_operand_type ov /* If given types g0 and g1 are registers they must be of the same type unless the expected operand type register overlap is null. - Some Intel syntax memory operand size checking also happens here. */ + Intel syntax sized memory operands are also checked here. */ static INLINE int operand_type_register_match (i386_operand_type g0, @@ -2202,18 +2202,14 @@ operand_type_register_match (i386_operan { if (g0.bitfield.class != Reg && g0.bitfield.class != RegSIMD - && (!operand_type_check (g0, anymem) - || g0.bitfield.unspecified - || (t0.bitfield.class != Reg - && t0.bitfield.class != RegSIMD))) + && (g0.bitfield.unspecified + || !operand_type_check (g0, anymem))) return 1; if (g1.bitfield.class != Reg && g1.bitfield.class != RegSIMD - && (!operand_type_check (g1, anymem) - || g1.bitfield.unspecified - || (t1.bitfield.class != Reg - && t1.bitfield.class != RegSIMD))) + && (g1.bitfield.unspecified + || !operand_type_check (g1, anymem))) return 1; if (g0.bitfield.byte == g1.bitfield.byte --- a/gas/testsuite/gas/i386/intelbad.l +++ b/gas/testsuite/gas/i386/intelbad.l @@ -169,3 +169,27 @@ .*:192: Error: .* .*:193: Error: .* .*:194: Error: .* +.*:196: Error: .* +.*:197: Error: .* +.*:199: Error: .* +.*:200: Error: .* +.*:202: Error: .* +.*:203: Error: .* +.*:205: Error: .* +.*:206: Error: .* +.*:208: Error: .* +.*:209: Error: .* +.*:211: Error: .* +.*:212: Error: .* +.*:214: Error: .* +.*:215: Error: .* +.*:217: Error: .* +.*:218: Error: .* +.*:220: Error: .* +.*:221: Error: .* +.*:223: Error: .* +.*:224: Error: .* +.*:226: Error: .* +.*:227: Error: .* +.*:229: Error: .* +.*:230: Error: .* --- a/gas/testsuite/gas/i386/intelbad.s +++ b/gas/testsuite/gas/i386/intelbad.s @@ -192,3 +192,39 @@ start: lsl ax, eax lsl eax, dword ptr [eax] lsl ax, dword ptr [eax] + + mov eax, word ptr [eax] + mov eax, qword ptr [eax] + + mov eax, word ptr [0x12345678] + mov eax, qword ptr [0x12345678] + + xchg eax, word ptr [eax] + xchg eax, qword ptr [eax] + + add eax, word ptr [eax] + add eax, qword ptr [eax] + + test eax, word ptr [eax] + test eax, qword ptr [eax] + + test word ptr [eax], eax + test qword ptr [eax], eax + + movnti word ptr [eax], eax + movnti qword ptr [eax], eax + + movbe eax, word ptr [eax] + movbe eax, qword ptr [eax] + + vmovntdq xmmword ptr [eax], ymm0 + vmovntdq zmmword ptr [eax], ymm0 + + vmovntdqa ymm0, xmmword ptr [eax] + vmovntdqa ymm0, zmmword ptr [eax] + + movdiri word ptr [eax], eax + movdiri qword ptr [eax], eax + + aadd word ptr [eax], eax + aadd qword ptr [eax], eax --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -142,9 +142,9 @@ ### MARKER ### // Move instructions. -mov, 0xa0, None, CpuNo64, D|W|No_sSuf|No_qSuf|No_ldSuf, { Disp16|Disp32|Unspecified|Byte|Word|Dword, Acc|Byte|Word|Dword } -mov, 0xa0, None, Cpu64, D|W|No_sSuf|No_ldSuf, { Disp64|Unspecified|Byte|Word|Dword|Qword, Acc|Byte|Word|Dword|Qword } -movabs, 0xa0, None, Cpu64, D|W|No_sSuf|No_ldSuf, { Disp64|Unspecified|Byte|Word|Dword|Qword, Acc|Byte|Word|Dword|Qword } +mov, 0xa0, None, CpuNo64, D|W|CheckRegSize|No_sSuf|No_qSuf|No_ldSuf, { Disp16|Disp32|Unspecified|Byte|Word|Dword, Acc|Byte|Word|Dword } +mov, 0xa0, None, Cpu64, D|W|CheckRegSize|No_sSuf|No_ldSuf, { Disp64|Unspecified|Byte|Word|Dword|Qword, Acc|Byte|Word|Dword|Qword } +movabs, 0xa0, None, Cpu64, D|W|CheckRegSize|No_sSuf|No_ldSuf, { Disp64|Unspecified|Byte|Word|Dword|Qword, Acc|Byte|Word|Dword|Qword } movq, 0xa1, None, Cpu64, D|Size64|NoSuf, { Disp64|Unspecified|Qword, Acc|Qword } mov, 0x88, None, 0, D|W|CheckRegSize|Modrm|No_sSuf|No_ldSuf|HLEPrefixRelease, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex } movq, 0x89, None, Cpu64, D|Modrm|Size64|NoSuf|HLEPrefixRelease, { Reg64, Reg64|Unspecified|Qword|BaseIndex } @@ -176,7 +176,7 @@ movq, 0xf21, None, Cpu64, D|RegMem|Size6 mov, 0xf24, None, Cpu386|CpuNo64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_ldSuf, { Test, Reg32 } // Move after swapping the bytes -movbe, 0x0f38f0, None, CpuMovbe, D|Modrm|No_bSuf|No_sSuf|No_ldSuf, { Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } +movbe, 0x0f38f0, None, CpuMovbe, D|Modrm|CheckRegSize|No_bSuf|No_sSuf|No_ldSuf, { Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } // Move with sign extend. // "movsbl" & "movsbw" must not be unified into "movsb" to avoid @@ -302,7 +302,7 @@ cmp, 0x3c, None, 0, W|No_sSuf|No_ldSuf, cmp, 0x80, 7, 0, W|Modrm|No_sSuf|No_ldSuf, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex } test, 0x84, None, 0, W|CheckRegSize|Modrm|No_sSuf|No_ldSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|Byte|Word|Dword|Qword|BaseIndex } -test, 0x84, None, 0, W|Modrm|No_sSuf|No_ldSuf, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 } +test, 0x84, None, 0, W|CheckRegSize|Modrm|No_sSuf|No_ldSuf, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 } test, 0xa8, None, 0, W|No_sSuf|No_ldSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword } test, 0xf6, 0, 0, W|Modrm|No_sSuf|No_ldSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex } @@ -970,7 +970,7 @@ fucompi, 0xdfe8, None, Cpu687, NoSuf, { // Pentium4 extensions. -movnti, 0xfc3, None, CpuSSE2, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex } +movnti, 0xfc3, None, CpuSSE2, Modrm|CheckRegSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex } clflush, 0xfae, 7, CpuClflush, Modrm|Anysize|IgnoreSize|NoSuf, { BaseIndex } lfence, 0xfaee8, None, CpuSSE2, NoSuf, {} mfence, 0xfaef0, None, CpuSSE2, NoSuf, {} @@ -3053,7 +3053,7 @@ cldemote, 0x0f1c, 0, CpuCLDEMOTE, Modrm| // MOVDIR[I,64B] instructions. -movdiri, 0xf38f9, None, CpuMOVDIRI, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex } +movdiri, 0xf38f9, None, CpuMOVDIRI, Modrm|CheckRegSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_ldSuf, { Reg32|Reg64, Dword|Qword|Unspecified|BaseIndex } movdir64b, 0x660f38f8, None, CpuMOVDIR64B, Modrm|AddrPrefixOpReg|NoSuf, { Unspecified|BaseIndex, Reg16|Reg32|Reg64 } // MOVEDIR instructions end.