From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2050.outbound.protection.outlook.com [40.107.21.50]) by sourceware.org (Postfix) with ESMTPS id C3FE73856242 for ; Tue, 2 Aug 2022 13:38:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C3FE73856242 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FENGe1ocllInlej4cerSM4IKpcRThQMCAgnCWghrMSGmYGxJf8tsxHo6t1AvlUit+NnDCJctZp3kTYqsDVsqs10iI10tJTxrRU4kPwEwCPQ/RNsbfG0igVQKKYiQ4A36PEQ8fKYWAKAwYJArdOdE9DjhD/qiI99MCn8xl4oN4DF+OXeyPbkwYetTu9g/CP+Ywk3+dKIaQZUjYzQe/kRz38jFc72xhVo1haek8DUHdjAnBOK5OVKif23cBixUCQnOKMgL5e3tThosNV1CL9YW8tHx/mmDO8nTreShVdd9rd3WqqPLMHaZvODbBRXaSPTziT3OJ05NbjHRu+tC7SbQHA== 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=m1Exm6dBYu8mS6ddPyVRB3w5TCmdrsMRUmShCA215ds=; b=dvaR+Ev23MDzKNdRtwV5Knnd7Qt7FkPjUOXa8KRkT1cT+xUGQdO0mEZ7MS6G07v9Q0Lubcs6TL2jehpmoBgeo+yoowsSmIpuh3+HcdZjt2fYMtGaRycDUblxqkhaImbH9FcoP4ylBHg/BIPmvLPV5qtvORSFz37lfLTkkUEhoqWJESKSOFLBQBKrZmircShFqxbY/Qk6aBOHCpe5wAaaOS/VvsYUd/rrFz6wr40kKkbQSsmjotrv+K/RH77whjOSy4fES9VY1FLVaCApePModD44IIOMKL5DocUlvsb84gOx+vKfd30Z3oj2pJKu7jO2b6xunZTinYKAmq6VbEttxg== 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 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AM6PR04MB4215.eurprd04.prod.outlook.com (2603:10a6:209:4f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.16; Tue, 2 Aug 2022 13:38:51 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::1959:dab4:15f1:4acf]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::1959:dab4:15f1:4acf%2]) with mapi id 15.20.5482.016; Tue, 2 Aug 2022 13:38:51 +0000 Message-ID: Date: Tue, 2 Aug 2022 15:38:49 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 From: Jan Beulich Subject: [PATCH v2] x86: also use D for MOVBE To: Binutils Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR2P281CA0006.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a::16) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8a4a4922-d6b8-4e8b-401d-08da748c55d0 X-MS-TrafficTypeDiagnostic: AM6PR04MB4215:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FxfUcqEhtSGTUrVt7KTSflgddd+SrB4mk0t5xdcPkbIE9zkyuXFjRF6T9Aq9Z+n1A+Tt7jbarLk7AIqSADZFyDjUeJszIESNsefNXrJzKw20mS/GKh39F6WxA7BW3MUowrKr1uwvelAWSksK0tn1nmKcYoqZ+SLxhpBSnUKxBLA8Bg6LiJJGksl2hzp3hoMi/Qw7SOpch37NTquM2scuR1kNdk8F3PM3g9JokJmJHg4AfJQb33SvnClPnctvN9lr8Y2prIvIhzuPccAPlXIKqWjc3B8jlo+7bWXsyWn/4lMNZ1ODeNz4aW9HdyAvYigWE6BISgBNbYR0ccMqG9pRD+vhWB9LxNgTS9Gi3h4kwgt2BmxfLCmUBuY4bTcGbMZOTXxROin2MGVU2GeREXSpvOc1jb83jsBcRweo83Q6h7DJZx+g5E31q0/GtyuUQoX28fFj6YluXof5hkdNADC3YbWk4vK5P2pCurGi7GII45gmQ1x8EtvieMn9/tpGwaX9LYjR8hbCqrl4I3UShIu2+8H1ACaGFJcnSkoFDlzOagJFo7O/MbFwHbzGRbpuyHCySw06+T/B8v/FEAqf5W+hK3asiHwL7YzL3pkHFqmKuKb4PbpB1yc/j9sBpk0lrwU9K3w19aUN4yOUI1VjPy2PvZup6E9mL0EYdywxBEKQ5UGMIgld2NR9D+CZF2G5jz0gIxTOk7bza04x0O6egznNEX/ZWghIhtyNWJsyhcnMruIwvKjRets/Jl0U5LC4ahlTvDl5hITG4lSPNhkdHcx/AARXpES34TzTzJMK/NjODy6ak0Lfg0Fa3k4wKJhXA7SpF/OQ7ubzfVtrLMAb/8/7Mw== 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:(13230016)(39860400002)(346002)(136003)(376002)(366004)(396003)(478600001)(31686004)(6916009)(38100700002)(36756003)(6506007)(41300700001)(186003)(2616005)(26005)(6512007)(316002)(6486002)(8936002)(8676002)(31696002)(2906002)(66946007)(86362001)(66476007)(5660300002)(4326008)(66556008)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OGpXODMxanlCbWdDNVFkdnRjS09NdmVNL1RITGZhWENCbS9sbGVJRHhFK3Mw?= =?utf-8?B?ZFpELzNqQXZVSXlaOTMwODdvdzFoQ0E0S0U5WFcxd09iRlJOM3p0c3lCTis2?= =?utf-8?B?MXlWRk1QR015WUFyWVM0VGQzdCtzQ3lJbmNneW40UHRnc1dGTnlwVlN3enkz?= =?utf-8?B?ZUQ4aU5iSkQxTHRpUjd4cWpJQ0piaXY1cm0yQ3pKZXFuekhXQXRKdm91RGZv?= =?utf-8?B?Q21CcjRUTXByN25Yd1d3OGkyNEJDMGZwalBaZWxvMlVKdGxhOUFvVlk0eFJ4?= =?utf-8?B?QU5UWUc2RmFYakVxaTZBQ0pZVEFZejFJR2R2dzVTTi9ZK2c3OWtiVDNjdzA0?= =?utf-8?B?Z09HblMwdXViMENKRXIxRzYwejhQb2Y4UENwOWNBZE55SmUreEJBSUU3QW9U?= =?utf-8?B?ck5DRmY4NXdpTVVTcCsweWhqUGNhVWdjTGhNeGVZZldDdnAwNE9ZT1dqSDY4?= =?utf-8?B?bVJzcmJYSXhxVXZ2S29SQm9TN1hVRm5nM0hweUNUb0xINUNwWHpCaElWclI1?= =?utf-8?B?clVUTzQxQVErNEszVFAwMW1BcmFkb081MlVJOUlOZmsrKzV4d0xTZGhtZVlX?= =?utf-8?B?aVNPNHdiZ1dVRXRvWGR6NDdyV1FiZzdvd3VvWldrbHNVR2duR2tQWDFmQ2VL?= =?utf-8?B?MHV6YmZlS2pLTnFBZml4MGpJY1ZMMUt0ampFSytKWFNST0ZTWUFOZEtSSEov?= =?utf-8?B?QW51YkZrMlh4SHJvSXAxYm5mS1YzM01CNkRGMWxVT3RZRTZmN0ZRQkwyVEtv?= =?utf-8?B?SVlrOEtaWmpkSndMZGtib2hyNVN6TjFwR291blkvMkI0bm5IZzN4Q3NLckNl?= =?utf-8?B?TGpVVnlodnJIOGRkcUpaOUU5MDRuMFdKVEd1S3hrblBqUVlsdkp6Q0tIeGc2?= =?utf-8?B?TVpOVGVrUUNtQVJhcmNQU2QzclM1c29EOFpFeEVLSEREMWdiNHpUK3BpcHJk?= =?utf-8?B?MFZSblh5Zjg5YllxZ0hqN1pHM1crNFRHVkhmK1FtMzdVTmNONks4WDk4cmhw?= =?utf-8?B?c0pnczFPTnQxUGFLeFk0a09GV0M2SURtYTRpNDNjc0I1dnBubGdmZ05FRHRn?= =?utf-8?B?aktZVEkrY3kvOEpJYWczdnVMV1JFeW9JTWVGUlJoRFhyMHNkSzBlc0FaZlpE?= =?utf-8?B?dC9QeEZBNFIxT3IzR0VGSTVjL01nMGFLcTVGaXZqS3NDT3FUQWFOUjVtVzRQ?= =?utf-8?B?dFpDM3AzTk9BUjA2bUhIeUsrMzJNZzFoUmpHZHhMelBhRUNieGlERSt2Z0g0?= =?utf-8?B?dCtzUnJoNVAzZklmeUQxOEdZQzZYZW92UldBc3FEdm41Q1BEU2FaR0xaOGJQ?= =?utf-8?B?ZC9sUkk3dE9jRjlGR1pBSXVobVhpaEtxMFdFeVRwdVhhM2R2SzFTYXBtWVB4?= =?utf-8?B?SVF0ZXFjZ3IrdDEwWHkzQTZEUnFSbUpKMHV5UXdTdFRVZld3dlpGMVA5UnJy?= =?utf-8?B?SGZzY0FCdDNBUnphYXRFQkd6YXRFQ3VZaFBHdFpidURSWGJZWGJwQTF2U1Fp?= =?utf-8?B?cGt2eXNYWTI3MmJ4TnVRUGp2SVI2MFkzZUZ0ZnV0dk5VR3NtSDZNdjBJWWhn?= =?utf-8?B?bzliaCtyN1lETXIwcEpPNEdYdjhZUmw1dHlUZTZ2QlV3d0xhS0VmbVdlcU11?= =?utf-8?B?cm9SYzVLT3U4MnJzV216S3hObzVXZFlRUmpCN2dRVXJPc3EzUytldk1BT01k?= =?utf-8?B?UzUxdU55QkZuSU01N0hSbC9RSUtjcnczSnJNTEJFdEIybVNQV2cwY2I3QmM2?= =?utf-8?B?WnRqSWpLZ2o5Z0JjMGZBQVUydmordlF1MWgreitkWlhqdkk2aFpxTUZ3UTMw?= =?utf-8?B?LzFUUEQ2cTN5V0dXYURMOTIxOEdoY2ViUi9wVWp3L21JTWUyRUhuTUh6RElq?= =?utf-8?B?a2RKRGVrZ0hvaStpVGRqa3YzTlZlVUE5a0c0bEdwZVNEWHJoRGN4Z1JHQ2JQ?= =?utf-8?B?dFY1cEZOOEx2eDZrWHRPM3NwZUVlRkk2SHZ2WkNHSEF0MXZ0VXJuU3VRemhr?= =?utf-8?B?Vi83WXJOYzhPMGg5Q1FSOURaY2l2MzNFQVZpTUFkaWhkdEIwdkJBQlh5MHEv?= =?utf-8?B?RTE2R210a1d4Q1hVTUZkSHg3MHpxSTBMZi80bXAvZUxoY3MyS0VmWmQ3MHNl?= =?utf-8?Q?SL+r/YTyehDk/5zVb0QMbTNUK?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8a4a4922-d6b8-4e8b-401d-08da748c55d0 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2022 13:38:51.1551 (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: 8RE/dJx/dff8De86VuiyyrEHwvBwNk5vtwokkAzne48g1IgJykSWGurwzDhj7G92+uJJKK9ORSiLOKbPCnWhyg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4215 X-Spam-Status: No, score=-3030.5 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Aug 2022 13:38:55 -0000 First of all rename the meanwhile misleading Opcode_SIMD_FloatD, as it has also been used for KMOV* and BNDMOV. Then simplify the condition selecting which form if "reversing" to use - except for the MOV to/from control/debug/test registers all extended opcode space insns use bit 0 (rather than bit 1) to indicate the direction (from/to memory) of an operation. With that, D can simply be set on the first of the two templates, while the other can be dropped. --- v2: Add comment. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -3572,7 +3572,7 @@ build_vex_prefix (const insn_template *t if (i.tm.opcode_modifier.d) i.tm.base_opcode ^= (i.tm.base_opcode & 0xee) != 0x6e - ? Opcode_SIMD_FloatD : Opcode_SIMD_IntD; + ? Opcode_ExtD : Opcode_SIMD_IntD; else /* Use the next insn. */ install_template (&t[1]); } @@ -6757,13 +6757,13 @@ match_template (char mnem_suffix) found_reverse_match = Opcode_VexW; goto check_operands_345; } - else if (operand_types[0].bitfield.xmmword - || operand_types[i.operands - 1].bitfield.xmmword - || operand_types[0].bitfield.class == RegMMX - || operand_types[i.operands - 1].bitfield.class == RegMMX - || is_any_vex_encoding(t)) + else if (t->opcode_modifier.opcodespace != SPACE_BASE + && (t->opcode_modifier.opcodespace != SPACE_0F + /* MOV to/from CR/DR/TR, as an exception, follow + the base opcode space encoding model. */ + || (t->base_opcode | 7) != 0x27)) found_reverse_match = (t->base_opcode & 0xee) != 0x6e - ? Opcode_SIMD_FloatD : Opcode_SIMD_IntD; + ? Opcode_ExtD : Opcode_SIMD_IntD; else found_reverse_match = Opcode_D; if (t->opcode_modifier.floatr) --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -928,7 +928,7 @@ typedef struct insn_template unset if Regmem --> Reg. */ #define Opcode_FloatR 0x8 /* Bit to swap src/dest for float insns. */ #define Opcode_FloatD 0x400 /* Direction bit for float insns. */ -#define Opcode_SIMD_FloatD 0x1 /* Direction bit for SIMD fp insns. */ +#define Opcode_ExtD 0x1 /* Direction bit for extended opcode space insns. */ #define Opcode_SIMD_IntD 0x10 /* Direction bit for SIMD int insns. */ /* The next value is arbitrary, as long as it's non-zero and distinct from all other values above. */ --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -161,8 +161,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, Modrm|No_bSuf|No_sSuf|No_ldSuf, { Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 } -movbe, 0x0f38f1, None, CpuMovbe, Modrm|No_bSuf|No_sSuf|No_ldSuf, { Reg16|Reg32|Reg64, Word|Dword|Qword|Unspecified|BaseIndex } +movbe, 0x0f38f0, None, CpuMovbe, D|Modrm|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