From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80058.outbound.protection.outlook.com [40.107.8.58]) by sourceware.org (Postfix) with ESMTPS id ED5373857BB2 for ; Fri, 15 Jul 2022 12:57:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org ED5373857BB2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OW5XPwtIR3Lo+3cpTijhnHNdlSZly14AVDY4KXce7oeoU4pfka/lnVPRdvARjxNbHegYbTXS4lGVMfKxsdCvZkG6MhxyWD3M7TXSRjbXhEoCtkVnl3veDU92LFzUdBbgSmee15sx0rh0NMzN3IkWx196kx/JMga2r7nyEo2/0KE5xMOHmA6U/j1YgN6k5RrIN1T4dQkrAUM8eGbOgUbKfnyzFdY/5LGcUwhuZNBKADAgF2gXkl5HYS+3owmR1Wt1fAoJELQDIjgdBU+5bKvSObFcTqB639VQjpNDzGgugo8u9fbFS4aqZfDd2On2brOiMnSpFzBg9qPRimHTaT33Tw== 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=peOQV2qqYjkrzpOV0VhVDQn+Ekm660LotssJsj8tTJI=; b=DQxwuU0/fd4u1eCkuoDfNHTkJI1v4qhqgpFCMe/gtJ6o0KzX9ovzkOk2CqZBtr5ji4p4/LH717s5CohGtkC/Iik5Wd9VDMe9WuGuFgGp9f+WStLgW4fKYxF0muTfrZ8aDgn8x9rMhjsjYaKdLlrEiX7oCwm2ZfZvDDXa/C9jCDfv55Zaq8DCFyf0T7JAj5Jh2KETkM+x5RvF+eA0udySZhMjk9r0buIzztxRFF0HerZelAc6yZWHT78XtCI782tppGrJsBah5nUuY839my1ud3Gw1bR4AAUwRwnKk3mx3B+jzq5bENvGF9RpuaPrKRzEhRX6ndHrXeITChn3N5ZE5w== 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 AM0PR04MB5441.eurprd04.prod.outlook.com (2603:10a6:208:112::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.12; Fri, 15 Jul 2022 12:57:02 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::60ad:4d78:a28a:7df4]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::60ad:4d78:a28a:7df4%4]) with mapi id 15.20.5438.015; Fri, 15 Jul 2022 12:57:02 +0000 Message-ID: <72168667-58cd-1a90-ad26-a89e085e679e@suse.com> Date: Fri, 15 Jul 2022 14:57:00 +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: re-order insn template fields To: Binutils Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0080.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::15) 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: 7dd887aa-d1cf-4c88-69ed-08da666182da X-MS-TrafficTypeDiagnostic: AM0PR04MB5441:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FwBYgdD+1Xoo9GsvuhBVi4Th00IEAT9l0IBf3qjvP8ycE8lXLAFVPDrYjobLZkcW1Vxj6P5GbhdpniPQO7pA0wcxgVDkfE9SJ7LWEXZholR8/aHzLPiSFopa18tXGU34rTG5MeHVq1IQduHAQFazSqoVwRee3RO35SBxz8wGajR6OgV0uvyadF3RMqtLrU5uSNkdWWfPxE9np9gCWt0bIAmk9MBDtUNpMDPo+R83wycIlVLTZ5ob8oQnCX76LkVXKnK+YE9OelxLWWHUwS/ssIgQH2ZVZMNjVDPE5Nux6oQAQassxF0A5gKDiMXtETk876bJLryMIh3QDXuFD45Hii71DfVds+pOYxtZ65BtDEvNTyppHQtvPw0Vd+8/cNXTTp56aOi6KCcKqOAjX0YSfrrVNFPcHQaHZSc9i5DkoekFugj0wIYnbawayOtkn12DYepfwE2XzvRC7gWerQShc4SksE26pPyAGhtDLCOVPmHYbZfpFdySxQqhqGSNm82/h0+S4n6TIPgOuNnNzVWYvyEUfpTCBT2n2E/bHTiMQdjLdp6oMwaxBl7APc6zFPoGEw9Dk7ZlpW4/hXwcEei8PHCZdqGmz0cMrFRx/PxPRkxtmdOj2cbYMX3yzGYaQJ6Nlt6hv3MWXX01YjII4FGvDy9GLLVetl6e4rgAF0OooQ5qyHj5l7Ezo0iY2A2jMWW4UNM834zBJ4CuTclyosHXqBbn9fJbxMTn+NRw4QI1vlFtBBVk0oM99eiGuAo92mBJqGxyBl5Z2YQ2DQRACbX65ZaGYj7mbmAE9Uflz/+N09DGaI9tPh5YSIUunD0IYaWFCK11QF67AoCmzqALe78qFpC3ToDUEUJFeABxOhX5otYHfBvQwKhM7kY9VFEHKrIv 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)(346002)(39860400002)(366004)(396003)(136003)(376002)(8936002)(66946007)(316002)(6916009)(8676002)(86362001)(186003)(31696002)(31686004)(66556008)(66476007)(6486002)(36756003)(6512007)(478600001)(2616005)(4326008)(41300700001)(26005)(2906002)(38100700002)(83380400001)(5660300002)(6506007)(169823001)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eWxvc2pkSHhEYkJwcmRySU8zZHJWMTVFTkZZR25JWE9rUEpiZkpKNGQ5RllV?= =?utf-8?B?bEhpRnBEckhSOWlQbUlMamtTUUdhTkhIclZhd0E5azV1clFjdFJvdS9tOVUy?= =?utf-8?B?UGVhaGg3OUlWZ09lUDZjTk9ScDRmUC9JY3dvRFhRWk5ITzRQNUp6Z2QrZytw?= =?utf-8?B?WDhxMUs1Q2lFQmxrUnB3R3dxZWxHaGRWTEJjRlllOTc0Z0FFcHZDZmpaYTlE?= =?utf-8?B?ckRCeHFabExrcEo1ZFl6U3o0Tm4rcytWTU1lTUY1K3pQSDdDeHNOWUpxd0Z5?= =?utf-8?B?dGMrdktkRFlxNkNmSkhqeUI1dEpsc0dqSXVtSWlGNElGdlFnSERHbG9wY1Ra?= =?utf-8?B?RXgwNFF5OHYyTm4yRGg4aG8rS04yVlhYUzE3d01JNUdYK2UvTnp5VHRqM2ht?= =?utf-8?B?TTAwOElmZ1JMaHZTNExOdTBJVjhXOTJzMlQ0Q2tWVTRhcHVaTVFMRnMxNS9S?= =?utf-8?B?ODgrU2d0dk9Ud3Y2QVBEc044Yk83UEJtUCtEMXZVMDA2UDRHWDg0bEtJMnhp?= =?utf-8?B?S3JEYWxRbkV3RVVjVW9ocGVmS0VEbnR6b2dzdCtCU2dxK2UyQzIxWlh4dUk5?= =?utf-8?B?NkNSZml6eEh5d2lsSEpNQ3IwLzgyNUdVZFZEUDdtZG1yZVk3eEtFa2NBSWFY?= =?utf-8?B?U1d4RStUWHVTNWx6OE9HMGJaWTZDK2k5cXgwQUlTNDhONkZwY3ZqSmJ3RXV6?= =?utf-8?B?clBzOEtqYStYeUJIeXR1ZkF4RTROdHVZWFR6LzFpbytqNUVMMitBK3N2cnZD?= =?utf-8?B?eGh3elhwa3pLRzloSlRzUE1oZDRQUnhCSzQ4cUdzbnVadkhsUWtHek9UTXMz?= =?utf-8?B?UG1xWTArM2QwMFM3N2JVVm9EK00yeS9rOVBOOHNnV0ZjSGM1aWhjZHZkRVF5?= =?utf-8?B?OHR6NDA2cVhkRGpNMHM4UGROV01aTHZWVDRpU2ZqK1YzTWNveENVTW5TcS96?= =?utf-8?B?bGpWUm8rZFV0QkdYZ2tMQmVJaUlxTGE3THVORHh0QmpncThkc2JZS2FSZjBI?= =?utf-8?B?aHBybHZudXp1SUtGMUVGbC92R25nQWQvSzBwaWlqNkJ6T2hVanpxK3R1aWxk?= =?utf-8?B?Q2lBY1AzRXJHZ3ZkQldwL0g5MmJXYy9wOGc3ZEJhOHR1a1FidXphVWZta1g0?= =?utf-8?B?SlRRNmU2KysrQkNmRVY0UUd5MGViSFdHRDNacGhzVmxFUUZ0VHRzOS9pOWV0?= =?utf-8?B?bkI0cldYdEVnT3FXeFlZTXRTcGpyNUxDSENsQjUxYjZLMUUvZ0ovdUlSQzEv?= =?utf-8?B?dE0wcnExM3ZzZVAzNFZjait3NndqMTR5RTdoYTEzY1pEcEdQeDF1SWpPak90?= =?utf-8?B?OHBtZWkyWlMvbThEb21WYXNZMTcwTkwyZkJ2dWNyVk15K1V1c0FpajZ0UU94?= =?utf-8?B?QmtqenppaTZUNDMyOXpXK25MQ25WZDRsWVZuRGRrVGI4K0VCNFUxSHVlbWR5?= =?utf-8?B?RlNUMVVQeEZLSTRPL202eTE2T1BEbEJ1bHhhRzhzVDRQaGZpdWdEREFsNExw?= =?utf-8?B?eTBkcTVCdG5CdjhFRWl1WUlEbWRYRG5XSzNwZG9MY0ZBQlM5blR3NERpVDdt?= =?utf-8?B?dDZxY0E5c2tzUFkzcFJ5OXJHd1lsY3AzUFdJNUh3cGFpb3hZUWd1TDJ6MVJM?= =?utf-8?B?blFYRXJiYWZ4VENJcE94ZFlLT0lteWoxUVNWYm5MdGdmb1RPVlNUcWxwWGRW?= =?utf-8?B?UGhGbEE4ejhBR2Y4TlB6OG1WT3JrNHlPYlBXU1FEQkVNVGduS25hV2hCSW9o?= =?utf-8?B?K044WUF0MXN6TWJBdFczZTVpeXhpRksxNDFuaVlnWG5LNmE5WnZDVkczZm9s?= =?utf-8?B?c1ZWNXFBL29SZ1JnYVFBdXlkeTZ5c25LdDA2NzA5RUVkbFh6L0dLWmhuVWE5?= =?utf-8?B?NHBoZlI2c0YvWDVLbkltMDNHcDNlUmRZMnVWcEZMcklQOWxUNitGWGYzNysz?= =?utf-8?B?RGY4UzQySm41SUFFODdwTEZRdDg3ODBOV3U2dkdtUDJYeEdqOCtDYWk3citk?= =?utf-8?B?cFIyTElZZHRGV0ZyS08yM0pvdXY4M25YSjhzMnlObHVTODNLdVppeVZCMGNr?= =?utf-8?B?bTh3SE9TUmdYcXpORmNTcitnTU5Pb1JXYitwcjNDNHAzdGd5YUxxY0NPcEV2?= =?utf-8?Q?xTb1BUvHsQj0RH85UmGX7t4Mv?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7dd887aa-d1cf-4c88-69ed-08da666182da X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jul 2022 12:57:02.0809 (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: cu3MdXUMj3+b/3b2OJt44jSb6mliLHEhSo0gpHAV8pVYje1sg/ZVJxsf4hmx111u1CtH/wZPj/RSzR4nJEWuOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5441 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: Fri, 15 Jul 2022 12:57:07 -0000 This saves quite a number of shift instructions: The "operands" field can now be retrieved by just masking (no shift), and extracting the "extension_opcode" field now only requires a (signed) right shift, with no prereq left one. (Of course there may be architectures where, in a cross build, there might be no difference at all, e.g. when there are suitable bitfield extraction insns.) --- v2: Add comment to struct insn_template. --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -1444,8 +1444,8 @@ output_i386_opcode (FILE *table, const c fail (_("%s:%d: %s: residual opcode (0x%0*llx) too large\n"), filename, lineno, name, 2 * length, opcode); - fprintf (table, " { \"%s\", 0x%0*llx%s, %s, %lu,\n", - name, 2 * (int)length, opcode, end, extension_opcode, i); + fprintf (table, " { \"%s\", 0x%0*llx%s, %lu, %s,\n", + name, 2 * (int)length, opcode, end, i, extension_opcode); process_i386_opcode_modifier (table, opcode_modifier, space, prefix, operand_types, lineno); --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -915,6 +915,11 @@ typedef struct insn_template /* instruction name sans width suffix ("mov" for movl insns) */ char *name; + /* Bitfield arrangement is such that individual fields can be easily + extracted (in native builds at least) - either by at most a masking + operation (base_opcode, operands), or by just a (signed) right shift + (extension_opcode). Please try to maintain this property. */ + /* base_opcode is the fundamental opcode byte without optional prefix(es). */ unsigned int base_opcode:16; @@ -929,6 +934,12 @@ typedef struct insn_template from all other values above. */ #define Opcode_VexW 0xf /* Operand order controlled by VEX.W. */ + /* how many operands */ + unsigned int operands:3; + + /* spare bits */ + unsigned int :4; + /* (Fake) base opcode value for pseudo prefixes. */ #define PSEUDO_PREFIX 0 @@ -952,9 +963,6 @@ typedef struct insn_template #define Prefix_REX 8 /* {rex} */ #define Prefix_NoOptimize 9 /* {nooptimize} */ - /* how many operands */ - unsigned int operands:3; - /* the bits in opcode_modifier are used to generate the final opcode from the base_opcode. These bits also are used to detect alternate forms of the same instruction */