From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2046.outbound.protection.outlook.com [40.107.105.46]) by sourceware.org (Postfix) with ESMTPS id C4E5C385417E for ; Fri, 13 Jan 2023 11:08:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C4E5C385417E 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=X5K4g648Mx/HR3Dw5WG7cK46zdtEZ49XWbUuiXZskrdhE7TCq69SbNyIQExfbXjOyVuWakunido6tpjlb0ua+llQlliOi5t6WPf5r4hh5FohvMwmuc0P7qE2YaNwMB6l/7n5EwlMh6D7BmGNI4E9yEBsDNfLdMbXalXmIfPnOG2NtnPk/whicSoWW/TdpBSOfLFDRGQ+FeuFWPlBOFNhnjMHFur0UpGA65e7KxUyUj7WMBsKLN8qfbwazicvRWNFDG+iaE78gS8tN3wCy8Ff87lneNoPFrTVG4orqkSup7gQRlSpGdv1QXdoDEiQ9xjI+rBeGS9Y+yVhaT3DjKV+yQ== 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=xRb3PzMLkTe3AHAY61DeV6xodmNrumcN+4pLOQQGgMo=; b=XKxRrXhwfwC53oQ1u7fAfcQXLoltEOGrndnuyrAal8y4u0lfEKgLOxjgSnsy9lY83r2Hfk88DWszAuVOdNWw0+v2FHeF2XF3nOjnhnu8mJzSs+CaS12GTTMhIR//FiHze2Z1HdhNTJtLF5wGgJZ+xPC4myseFAJvE1t0jGuMpaiMUomodm/88TDiznJwEcPGeOo2f/wPk3AQn9Viio3CZnmRCcJbC0TsIuoEC0YWZsBZtQwcZLkbMhx1iPegesEi0rO4eCjf+3zpV3ymDDAr6xFDpDskDMcEhvZwkPh6LcBNN1IdQjFkqnEDmTcmpFOiLOP+LVtajLAPFFFNVjKsUw== 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=xRb3PzMLkTe3AHAY61DeV6xodmNrumcN+4pLOQQGgMo=; b=S84eUB5MBHTFLGJu0GmoxAIv9wycxfXrzU0XnmaZPn7cYrMRdtAnmq+kmYfoqWgXz1bKmXCiydg7S+TE07ej4rko275TOFE0fV2Kc+Y9v9RDII3PUMx38GO31uS4riWXjCh7V7BDCGGSwZO2WLju5z2HpJlTbbkDFG9FaFf1XKxzbeBCSBHLdmsKqPEWTiD+f5GqYI3uMOUf3UZKoX92MlKrVg07wkL5SPilngJtMqmWLR4ejLwB7WjrWP//wg2ELrNeIpCkEIxbgrV81Clz6hdUSmfqiVh2/Hc9Sd4FRSwtqd+VoC8EjFE3bf85kxD0/itaYjB3/D3dTN7Ur7N2tw== 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 PAXPR04MB8845.eurprd04.prod.outlook.com (2603:10a6:102:20c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.13; Fri, 13 Jan 2023 11:08:35 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389%7]) with mapi id 15.20.6002.012; Fri, 13 Jan 2023 11:08:35 +0000 Message-ID: Date: Fri, 13 Jan 2023 12:08:33 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: [PATCH 5/8] x86: avoid strcmp() in a few places 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: FR2P281CA0159.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:99::8) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|PAXPR04MB8845:EE_ X-MS-Office365-Filtering-Correlation-Id: cdb88a12-2e2b-4d62-31ed-08daf556839e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9g5X91RDSgChRtULj64YOlYsI0vZqEUjqN5MUlicUCHbgy6PAn/ng2VShRoYPMcYMqdP1TR6pIzUttMGtBtdP2y7l3CfPJcs4ZfzW+dlPZwIfvk/pJK0YlyCWKh79LDpIkQfkigCVy2Kjzx+JP5E6DCHcGojjpQQIKGOVpMIW0Fta0QGs4UrHVQNbOKjH86oqkI6CanXJ4u2CRRx2HNTmLAmWhuNo/gd/T/4K41FRkp1ntYhD8oJ3qKJihNRNKSONfdsBITlKgs57h6drWWeFr3G356hMGsRVb4Jr5dh+HqKFl/5RuYAxd+idx5BU5bF6jA8U5bQYdjUDCZhnRwzJsWDHLzzktEW3vImioV/PxOxAQAMEc909N1JyS4pg0Q9tXV6UtUiGtG/9MnOnYSjBfo999zzTY003QcIOgATBpJQVtwd35EAXOVdybZvH5qrdmXsLcu9bb+MA3FQLNrV9EKbhprddQAxc8ftjskhnb/VyRRH3EQ83Ml4RyCyMoEjh45tAYR2lNSI7TYVtBdRzfiO1TTM+jJPNGv+WQ2Xh6lpYp12edV3zHrPkKHWppDGcEB0+0v+BxdWZMC5xJxb8a38AYXsAEpfyYwiiB0532iqXLUlyj+rF41MvdfBwD6NyjZ8ELBrtTnY5saXlx/Ss0Tvh91qV6BzMHk8lCq5vlgpkzQis4M11dYoOtrqGX+Rw69HgF3MB3GelzbkinpTyacKL3iyhfYe6oQDbROh92lgv/ZZmX5la/aOBvrEZa2H+9A4gQUYzM7MaclMGuMgmg== 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)(396003)(376002)(346002)(136003)(366004)(451199015)(31686004)(8936002)(5660300002)(41300700001)(4326008)(316002)(2906002)(66946007)(66556008)(6916009)(66476007)(8676002)(478600001)(6486002)(38100700002)(186003)(26005)(6512007)(6506007)(36756003)(31696002)(86362001)(2616005)(83380400001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aU95bVFZeFRoUjhlbi9SMnlzZ2N2Zmx1eXQzYit0c01uMy90cnNpNXJPUGxp?= =?utf-8?B?aFZaMzVzcFlSa1c4VmtGKzlDUXJtbU1KSy80NzNMdEZrbHhNZmo0YlozdzYz?= =?utf-8?B?dUFsd2lCMnhWSVNUWFBSTEgreFJadEJRWS9XQ2JMUDYwQVcvZUlVOVJ0OTJ1?= =?utf-8?B?SSszZjBTR0NjTUx0cDRMUVkyWExna01FTk5LWjluZmF6SlZvWjZXVmN1Uk9m?= =?utf-8?B?VWg4amozZ0o2WWo2aDJ1TFltZG55ZVUwNGErMWxaSEIxb3BIenNGeStXZUZw?= =?utf-8?B?OGM3eS9rc1dHRjNBaUhsSFJJR3RaY21vK1BFQW90NTc2cXRVUnhMeG9pMkdU?= =?utf-8?B?cTM3Y05kWEtMZy9PT2hIK0hBbHVia0tjaXFYNWRvRmsrVmR0a25LV1JMaTM0?= =?utf-8?B?eDczRDVPblRGcVRkUUJBcFBlb25teGFZTVNlSmhPL1JoMUNmb3BScldmeU9w?= =?utf-8?B?di9OT3ljVWpJdkRZZlkwUDVWUDV4bWw1QnZXS2pxT2RFSDM1dkp5ZmlPQUNK?= =?utf-8?B?aUZzaUpjS0UwbzlHQ29LQjB3UEZHRkpNTUkzRzNiNDk5TU9DWHl2UkZjQ1RS?= =?utf-8?B?R1VyeGYwbU5nNzJwYkE5Qm5kVkVlcms4a3p3MHNZUmd4aHJwSSs0Y1NYNFNQ?= =?utf-8?B?eEFXU0k5dUNWbHhjV0RFN1phQ2V3N2dRNGpTOE1nZ3JwVnFsSnZ2WGxPVFFx?= =?utf-8?B?akhYdklXRVJQT2l2c3RWNFNvQm5FSy8wMHcxTllTbmw3NVlCT09uZld5RjM5?= =?utf-8?B?OVBVZVQxRy8yb1ZjWFdoTmp5U0pmUHZUdFRzSU9Oc21sWmVsZHN2TUFoclpq?= =?utf-8?B?blNqazIwUFNWRFRYa0tnTzZyUnJDV1ExQS9rRTN3dUV5bzZxS3ozNUJoZy9R?= =?utf-8?B?SWxEWXdqeW1YNmFxMTNHZ3N3TEFqc0hleWFqNkd0QXdCZzBsVGJHRWlTZmlm?= =?utf-8?B?ZVpqdjRMcjI4cGVmUGtOSlY2bVVSZHlUQjJGOTltUDlYc3lNSXp1NEt3ZUtD?= =?utf-8?B?UWM5QnI2dU5yNHRLb0dWS05JRVdWTXk2ak9qa0V1cTFEc1dJSFExMGpJN0RZ?= =?utf-8?B?M0pBZnBUVDF4dXh3Sy94TFI5RHlpSkxKL0hGOXo5UG1nY01Ud3J3dmd6VExn?= =?utf-8?B?b1lMWkF6MCtJZ0d4V3ExS0NlTWhYWTFHNjNXc2hFU1FSaUd2eC9LeDdxUERp?= =?utf-8?B?TmhOV0ZXNWV3Wnc0SDVjWHhUNDAwRFdpeGREaWg0WUZoTkJNdFBsc2NtWGFx?= =?utf-8?B?Q3hhb0ZqdDZtSGZ4czYvc3VDQk43SnR5VTlMclVIMXVyY3N5Sk5LUlg5S2Nw?= =?utf-8?B?NHpWcHlVV09IOU1nY2hrb2twYUFWcGhKUFdsTGtSQ3ZyUTRHdDUrQ1QxNU9x?= =?utf-8?B?WGlCWG01VFFNL210UXg4U0hHUHVwN3JmY0ZRb01lbzBienVzR000NHQ3SGd0?= =?utf-8?B?c3Y5SVJvbEZwdysyeEp6VlQ3SVhNTVZJTStuWDVGVjdPV0Y3dnFPdlNTTGFB?= =?utf-8?B?WjdtRlRrTU15RzBoeVphUmh1NU1NemdjY3Y3TFo1QUJqNERnQmV0QVEzQTkv?= =?utf-8?B?cHg4Y2p6Qnczb0g0R3dJUU4zRWF6UUNFVXNtQ2ZmQWl0Ym0xeFVoVHg5b2Ro?= =?utf-8?B?clJHMW5xOVZPb25zZWsvSDg2V0xZeWQwcmJ3bk8yam14RmJGb0xDZzJYdUVQ?= =?utf-8?B?dW5vZThsQkhpME1MaDhScC9JMGNKVmFKTTgrMy9PbEtiU2g1V29DZXpyL0Z4?= =?utf-8?B?VjBjUThRTXRxMG4xK1ZmRmphclZKMnU0Syt4Z1E0WHk1MDFCTWlMdjhaemFY?= =?utf-8?B?d3lUS2o1NE1BSXZ1TDJIRi8xbjRzOWw2ZFlUbWJhdG9POVVpd1lhcnl5ZmFY?= =?utf-8?B?RzY5TTRGLzFJbktXRWwwUHBna2pIejhjZTlmQmRMMVljZXd4cmwvbzdUNmhj?= =?utf-8?B?MTFpdkNVcEIzL3ZMQjFlU0xsak1wYm92VXZXbXkwZDE1M2dUdi9TaklVN2g1?= =?utf-8?B?eGEyaWRhdjI5blA5UHI5Zyt4SFBHdTNvOUdTYWwzYjdjZ1BDcERUOGVpL2xR?= =?utf-8?B?bDhKRFdRT0xqK3JHQjJFTXFZVk1TL3d4QzJuaFYyWEJqRmVsVzk4ZStqSjRh?= =?utf-8?Q?sP6QUnfPgG7NuOM/v8vnfS6yZ?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: cdb88a12-2e2b-4d62-31ed-08daf556839e X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2023 11:08:35.1771 (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: /TN05GMxh9Bj23qmbUfy4owbQq1BgasMyKhp5sdQeEQoWxdWyyc3zE4VYmzwR/76Mn6XVwWAyGDRKSojOBLZxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8845 X-Spam-Status: No, score=-3028.7 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: Now that we have identifiers for the mnemonic strings we can avoid strcmp() in a number of places, comparing the offsets into the mnemonic string table instead. While doing this also - convert a leftover strncmp() to startswith() (apparently an oversight when rebasing the original patch introducing the startswith() uses), - use the new shorthand for current_templates->start also elsewhere in md_assemble() (valid up to the point where match_template() is called). --- There are likely further opportunities for improvement, in particular when currently comparing opcode space + opcode: E.g. in want_disp32() we could instead compare against MN_lea, at once improving readability. Thoughts? --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4550,7 +4550,7 @@ load_insn_p (void) return 0; /* pop. */ - if (strcmp (insn_name (&i.tm), "pop") == 0) + if (i.tm.mnem_off == MN_pop) return 1; } @@ -4919,7 +4919,8 @@ md_assemble (char *line) } return; } - if (may_need_pass2 (current_templates->start)) + t = current_templates->start; + if (may_need_pass2 (t)) { /* Make a copy of the full line in case we need to retry. */ copy = xstrdup (line); @@ -4946,14 +4947,14 @@ md_assemble (char *line) AT&T modes. */ if (intel_syntax && i.operands > 1 - && (strcmp (mnemonic, "bound") != 0) - && (strncmp (mnemonic, "invlpg", 6) != 0) + && (t->mnem_off != MN_bound) + && !startswith (mnemonic, "invlpg") && !startswith (mnemonic, "monitor") && !startswith (mnemonic, "mwait") - && (strcmp (mnemonic, "pvalidate") != 0) + && (t->mnem_off != MN_pvalidate) && !startswith (mnemonic, "rmp") - && (strcmp (mnemonic, "tpause") != 0) - && (strcmp (mnemonic, "umwait") != 0) + && (t->mnem_off != MN_tpause) + && (t->mnem_off != MN_umwait) && !(i.operands == 2 && operand_type_check (i.types[0], imm) && operand_type_check (i.types[1], imm))) @@ -4962,15 +4963,14 @@ md_assemble (char *line) /* The order of the immediates should be reversed for 2 immediates extrq and insertq instructions */ if (i.imm_operands == 2 - && (strcmp (mnemonic, "extrq") == 0 - || strcmp (mnemonic, "insertq") == 0)) + && (t->mnem_off == MN_extrq || t->mnem_off == MN_insertq)) swap_2_operands (0, 1); if (i.imm_operands) optimize_imm (); - if (i.disp_operands && !want_disp32 (current_templates->start) - && (!current_templates->start->opcode_modifier.jump + if (i.disp_operands && !want_disp32 (t) + && (!t->opcode_modifier.jump || i.jumpabsolute || i.types[0].bitfield.baseindex)) { for (j = 0; j < i.operands; ++j)